Verifactu
Verifactu is a standarized digital format for submitting all invoices issued in Spain.
Thanks to our API, complying is as easy as sending your sale or refund data to Quaderno in a single API call. You will receive a JSON response with the signed PDF of the document, which contains a QR code to ease later verification.
To enable the integration in your account, you need to upload a digital certificate issued to the same NIF and name that appear in your Quaderno account. Make sure to review your configuration on Settings > Business Data. This certificate will be used to sign the invoices and credit notes sent to Verifactu.
Sending sales and refunds data
Spanish-based accounts can send their sales and refund data to Quaderno as usual using our Transactions API.
These guides will guide you through the process:
When the Verifactu integration is enabled, Quaderno will automatically send all invoices and credit notes to the corresponding tax administration.. Here's an example, just POST this payload to the /transactions endpoint:
{
"type": "sale",
"currency": "EUR",
"customer": {
"first_name": "Luis",
"last_name": "García",
"street_line_1": "Calle Alcalá",
"city": "Madrid",
"postal_code": "28014",
"country": "ES",
"tax_id": "00000000T"
},
"evidence": {
"billing_country": "ES",
"ip_address": "255.255.255.255",
"bank_country": "ES"
},
"items": [
{
"description": "Suscripción mensual a contenido digital",
"amount": 9.90,
"product_code": "DIG_ES_001",
"tax": {
"country": "ES",
"rate": 21.0,
"tax_code": "eservice",
"name": "IVA"
}
}
],
"payment": {
"method": "credit_card"
},
"processor": "aPaymentProcessor",
"processor_id": "pp_0123456789"
}
Generated invoices will display their verification ID and a QR code, allowing your customers to confirm the status of the invoice with the AEAT.
Accessing Verifactu responses
You can read Verifactu responses in all credits
and invoices
sent to Verifactu. The deliveries
list will contain all the information, including Verifactu's error messages. Any document with errors will also be shown in the Inbox section of your Quaderno account.
For example, retrieving an invoice with a GET call to /invoices/{id} :
curl --request GET
--url https://sandbox-quadernoapp.com/api/invoices/92732431 \
--header 'Authorization: Basic API_KEY' \
Will return a response with a list of deliveries
, like so:
"deliveries": [
{
"delivered_at": 1753956912,
"recipient": "verifactu",
"service_response": {
"csv": "A-DEMO1754048596",
"datos_presentacion": {
"nif_presentador": "00000000T",
"timestamp_presentacion": "2025-07-31 10:15:12 UTC"
},
"cabecera": {
"obligado_emision": {
"nombre_razon": "Su Empresa S.L.",
"nif": "00000000T"
}
},
"tiempo_espera_envio": "60",
"estado_envio": "Correcto",
"respuesta_linea": {
"id_factura": {
"id_emisor_factura": "00000000T",
"num_serie_factura": "00001",
"fecha_expedicion_factura": "31-07-2025"
},
"operacion": {
"tipo_operacion": "Alta",
"subsanacion": "N",
"rechazo_previo": "N"
},
"estado_registro": "Correcto"
},
"@xmlns:tik_r": "https://www2.agenciatributaria.gob.es/static_files/common/internet/dep/aplicaciones/es/aeat/tike/cont/ws/RespuestaSuministro.xsd",
"@xmlns:tik": "https://www2.agenciatributaria.gob.es/static_files/common/internet/dep/aplicaciones/es/aeat/tike/cont/ws/SuministroInformacion.xsd"
},
"type": "Registration"
}
]
Testing in Sandbox
You can test the Verifactu integration in our Sandbox environment. The Sandbox simulates the behavior of the production environment, allowing you to test your integration without sending real data to AEAT.
Limitations
Once you enable the Verifactu integration, there are some limitations to keep in mind:
- you won't be able use Custom templates on your invoices.
- you won't be able to assign a custom
number
orissue_date
on the Billing API. - once connected, the Verifactu integration cannot be disabled. If you need to stop sending invoices to Verifactu, please contact our support team.
- AEAT validates your customer's NIF and name, so you will need to ensure that you collect the correct details in your checkout. Any document with no NIF under 400€ will automatically create a Receipt or simplified invoice instead of a full invoice.
These limitations are a requirement from the AEAT.