Veri*Factu
Cuando emites una venta, Bilteo genera su registro de facturación Veri*Factu, lo encadena con el anterior mediante una huella y lo remite a la AEAT. Es automático: no tienes que construir ni firmar nada.
Qué genera Bilteo
- Un registro de alta (
RegistroAlta) al emitir una venta. - Un registro de anulación (
RegistroAnulacion) al anular una emitida. - Cada registro incluye una huella SHA-256 calculada sobre sus campos clave y la huella del registro anterior del tenant → forman una cadena inalterable.
Factura A (alta) ──huella──▶ Factura B (alta) ──huella──▶ Factura A (anulación) ─▶ …
└── encadenamiento por tenant: cada registro referencia la huella del previoRemisión y estados del registro
La generación y el envío están desacoplados: el registro nace pendiente y un proceso posterior lo remite a la AEAT. Su estado refleja la respuesta:
| Estado | Significado |
|---|---|
pending | Generado, pendiente de envío. |
in-process | Enviado, esperando respuesta. |
accepted | Aceptado por la AEAT. |
accepted_error | Aceptado con errores (registrado). |
rejected | Rechazado (no registrado en la AEAT). |
unknown_response | Sin respuesta firme: error de transporte o respuesta no interpretable. response_code indica la causa (SOAP_CLIENT, HTTP_<status>, INVALID_JSON, INVALID_TYPE). No es un rechazo fiscal; requiere revisión. |
Los errores transitorios de red o de la AEAT no cambian el estado: el registro vuelve a pending y se reintenta solo.
Un registro con respuesta firme (rejected, accepted o accepted_error) puede subsanarse.
No hagas polling: usa webhooks
En vez de consultar el estado en bucle, suscríbete a verifactu.accepted / verifactu.rejected y Bilteo te avisa cuando la AEAT responde. Ver Webhooks.
Código QR
Cada factura emitida lleva su QR de cotejo de la AEAT (NIF, nº de serie, fecha e importe total), que permite al receptor verificarla. Bilteo lo incrusta al renderizar el PDF.
Lectura de los registros
Con el scope verifactu:read puedes consultar los registros y su estado vía la API. Ver la Referencia.
En pruebas
En un tenant de pruebas la remisión va a la homologación de la AEAT, nunca a producción. Incluso puedes desactivar la generación del registro para probar solo tu integración. Ver Entorno de pruebas.