Tu primera factura verificada en cinco minutos
Cinco llamadas cURL, copiables tal cual. Contra el entorno de preproducción de la AEAT, sin certificado, sin tarjeta y sin emitir nada real.
¿Cuánto se tarda en integrar VeriFactu por API?
La primera factura verificada contra la preproducción de la AEAT son cinco llamadas HTTP. Una integración completa en un ERP existente suele estar en días, no en meses.
Lo que consume el tiempo de una integración directa contra la AEAT no es el código: es el catálogo de rechazos, el formato exacto de la huella, los esquemas XML y el control de flujo. Esa parte es la que te ahorras.
Todo esto ocurre contra el entorno de preproducción de la AEAT. No se emite ninguna factura real y no hace falta certificado.
# 1 · Comprueba que la clave funciona curl https://api.verifactu.co/v1/emisores \\ -H "Authorization: Bearer sk_test_..." # → 200 OK · {"datos": [], "total": 0}
# 2 · Da de alta un emisor de pruebas # En sandbox usa un NIF de prueba: no toca el censo real. curl -X POST https://api.verifactu.co/v1/emisores \\ -H "Authorization: Bearer sk_test_..." \\ -d '{ "nif": "89890001K", "nombre": "EMISOR DE PRUEBAS SL", "modalidad": "representacion" }' # → 201 Created · {"id": "emi_3kD1", "nif": "89890001K", ...}
# 3 · Registra tu primera factura curl -X POST https://api.verifactu.co/v1/registros \\ -H "Authorization: Bearer sk_test_..." \\ -H "Idempotency-Key: DEMO-0001" \\ -d '{ "emisor": { "nif": "89890001K" }, "numero": "DEMO/0001", "fecha": "2026-08-26", "tipo": "F1", "base": 100.00, "cuota": 21.00, "total": 121.00, "impuesto": "IVA" }' # → 201 Created # {"id":"reg_...","estado":"pendiente","huella":"9E1F...","qr":"https://prewww2..."}
# 4 · Mira la cadena que se sometió a SHA-256 # Es lo primero que hay que revisar si algo no cuadra. curl https://api.verifactu.co/v1/registros/reg_.../cadena \\ -H "Authorization: Bearer sk_test_..." # → IDEmisorFactura=89890001K&NumSerieFactura=DEMO/0001 # &FechaExpedicionFactura=26-08-2026&TipoFactura=F1 # &CuotaTotal=21.00&ImporteTotal=121.00&Huella= # &FechaHoraHusoGenRegistro=2026-08-26T10:15:00+02:00
# 5 · Espera el resultado de la AEAT curl https://api.verifactu.co/v1/registros/reg_... \\ -H "Authorization: Bearer sk_test_..." # → {"estado":"aceptado","csv":"A1B2C3D4E5F6", # "aeat":{"estado_envio":"Correcto"}} # En producción no hagas polling: registra un webhook.
Con el 201 ya puedes imprimir. No esperes a la AEAT.
La huella y el QR se calculan en el acto y no cambian con el resultado de la remisión. Bloquear la impresión de la factura hasta que Hacienda conteste es un error de diseño: la remisión puede tardar por control de flujo.
| Elemento | De dónde sale |
|---|---|
| Código QR | El campo qr: una URL al validador de la AEAT que codificas como QR. |
| Leyenda | El campo leyenda, junto al QR, cuando remites en modalidad VERI*FACTU. |
| Huella | El campo huella. No es obligatorio imprimirla, pero ayuda en soporte. |
Webhooks
Deja de hacer polling: que te avisemos cuando la AEAT conteste.
→Tu lenguaje
PHP, Python, Node, .NET, Java y VB6, con ejemplos completos.
→Errores de la AEAT
El diccionario de rechazos, uno a uno, con el ejemplo que falla.
→La huella
Cómo se calcula, campo a campo, contra los ejemplos oficiales.
→IGIC
Canarias, con sus tipos y su casuística.
→Sandbox
NIFs de prueba y qué cambia respecto a producción.
Última revisión normativa: Especificaciones de huella AEAT v0.1.2 Revisado por el equipo técnico de verifactu.co