La API de VeriFactu para tu ERP, SaaS o TPV
Una llamada HTTP por factura. Nosotros calculamos la huella encadenada, montamos el XML contra los esquemas oficiales, remitimos a la AEAT por un canal autenticado con certificado electrónico y te devolvemos el QR, la leyenda y el CSV.
¿Qué es una API de VeriFactu?
Un servicio al que tu software envía los datos de cada factura y que se encarga de generar el registro de facturación, calcular su huella encadenada, remitirlo a la AEAT y devolver el QR y el CSV de verificación.
Te evita implementar el reglamento entero: el formato exacto de la huella, los esquemas XML, la autenticación con certificado, el catálogo de errores, los reintentos y el control de flujo del artículo 16. Tu software sigue emitiendo las facturas como hasta ahora.
Fuente: Real Decreto 1007/2023, de 5 de diciembre · Orden HAC/1177/2024, de 17 de octubre
El reglamento tiene dos mitades. Solo una es tu producto.
Emitir la factura
Numerar, calcular impuestos, aplicar descuentos, imprimir, guardar, cobrar. Nadie puede hacerlo por ti: es lo que te diferencia.
Hablar con Hacienda
Huella con el formato exacto, encadenamiento, XML contra los esquemas, remisión autenticada, interpretación de la respuesta, reintentos y control de flujo. Cero diferenciación y todas las trampas.
Mandas la factura que ya tienes. Nada más.
Fíjate en lo que no envías: ninguna huella, ningún encadenamiento, ninguna marca de tiempo. Eso lo calcula el motor, que es el único que conoce el estado de la cadena de ese emisor.
https://api.verifactu.co/v1/registrosidempotente por Idempotency-Keycurl -X POST https://api.verifactu.co/v1/registros \ -H "Authorization: Bearer sk_test_..." \ -H "Idempotency-Key: F2026-0184" \ -H "Content-Type: application/json" \ -d '{ "emisor": { "nif": "B12345678" }, "numero": "F2026/0184", "fecha": "2026-08-26", "tipo": "F1", "base": 100.00, "cuota": 7.00, "total": 107.00, "impuesto": "IGIC", "destinatario": { "nif": "12345678Z", "nombre": "CLIENTE DEMO SL" } }'
{
"id": "reg_9fK2mQ",
"estado": "pendiente",
"huella": "3C464DAF61ACB827C65FDA19F352A4E3BDC2C640E9E9FC4CC058073F38F12F60",
"huella_anterior": "A91C...E4",
"generado_en": "2026-08-26T10:15:00+01:00",
"qr": "https://www2.agenciatributaria.gob.es/wlpl/TIKE-CONT/ValidarQR?nif=...",
"leyenda": "Factura verificable en la sede electrónica de la AEAT"
}huella, el qr y la leyenda son lo que tienes que imprimir en la factura. El estado todavía es pendiente: la remisión a la AEAT no es síncrona, y fingir que lo es es la primera decisión de arquitectura que se toma mal.Hacienda te dice cuántos segundos esperar. Hay que obedecer.
El artículo 16 manda
Cada respuesta de la AEAT trae un TiempoEsperaEnvio. Es el número de segundos que debes esperar antes del siguiente envío. Ignorarlo no te da un error elegante: te deja sin servicio justo en hora punta.
Los fallos transitorios se reintentan solos
Espera creciente de 5, 15, 45, 135 y 405 minutos, con tope de un día y seis intentos. Un corte de red se resuelve solo; un servicio caído no se machaca.
Los rechazos de contenido NO se reintentan
Un NIF que no cuadra con el censo va a fallar las seis veces. Reintentarlo solo esconde el problema: se marca para que alguien lo mire.
La cadena no se bifurca
Dos facturas simultáneas del mismo emisor podrían encadenarse al mismo registro anterior. El motor serializa por emisor: es la razón de que la cola exista.
Cada uno de estos nos costó días. Están documentados uno a uno.
El productor no consta en el censo
NIF y razón social del fabricante se contrastan juntos. El nombre comercial no vale.
1177IdSistemaInformatico incorrecto
Admite dos caracteres. Y lo eliges tú, no te lo asigna Hacienda.
4104El nombre del emisor no coincide
La razón social exacta del censo, no el rótulo del local. El rechazo número uno.
·El formato de los importes
«12» y «12.00» dan huellas distintas. La AEAT recalcula desde el XML.
·El QR apunta a preproducción
No falla nada visible: el cliente escanea y su factura «no consta».
·El endpoint equivocado
El SOAP vive en www1 y el validador del QR en www2. No son intercambiables.
¿Necesito instalar certificados en mi servidor?
No. En la modalidad de representación remitimos con nuestro certificado y tu servidor solo habla HTTPS con nuestra API. Si tu cliente prefiere remitir con el suyo, lo custodiamos nosotros cifrado: tampoco baja a tu infraestructura.
¿Qué pasa si envío dos veces la misma factura?
Nada. La cabecera Idempotency-Key hace que el segundo POST devuelva el registro ya creado en lugar de duplicarlo. Sin esa cabecera sí crearías dos registros distintos, y en una cadena de huellas eso no se deshace.
¿Puedo calcular yo la huella y mandárosla?
No, y es deliberado. La huella depende del último registro de ese emisor, y ese estado vive en el motor. Si dos procesos tuyos calculan a la vez contra el mismo «anterior», la cadena se bifurca y no hay vuelta atrás.
¿La API soporta anulaciones y rectificativas?
Sí. La anulación es un registro propio que entra en la misma cadena (no borra nada) y las rectificativas son tipos R1 a R5, con su propio encadenamiento con la factura rectificada.
¿Qué devuelve la AEAT cuando acepta?
Un CSV (Código Seguro de Verificación) y el estado del envío. Te lo entregamos en el registro y por webhook en cuanto llega.
¿Funciona con IGIC e IPSI?
Sí, desde el primer día, con sus tipos y su QR. El campo impuesto acepta IVA, IGIC e IPSI.
Última revisión normativa: Especificaciones de huella AEAT v0.1.2 Revisado por el equipo técnico de verifactu.co