Sandbox sobre la preproducción de la AEAT · sin tarjeta · Primera factura en 5 minutos
verifactu.co

API REST · España

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

01 Qué construyes tú Y qué no

El reglamento tiene dos mitades. Solo una es tu producto.

Tuyo y solo tuyo

Emitir la factura

Numerar, calcular impuestos, aplicar descuentos, imprimir, guardar, cobrar. Nadie puede hacerlo por ti: es lo que te diferencia.

Idéntico para todo el mundo

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.

Esa segunda mitad no vende una sola licencia más de tu software. Pero si la haces mal, la huella queda mal para siempre: es irreversible y no se arregla recalculando.
02 La llamada POST /v1/registros

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.

POST https://api.verifactu.co/v1/registrosidempotente por Idempotency-Key
Petición
curl -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" }
  }'
Respuesta · 201 Created
{
  "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"
}
La 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.
03 Por qué no es síncrono Colas, reintentos, control de flujo

Hacienda te dice cuántos segundos esperar. Hay que obedecer.

01

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.

02

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.

03

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.

04

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.

FAQ Preguntas Respuestas directas
¿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