Verifactu
Verifactu (also known as Veri*factu) is the standardized digital format for submitting all invoices issued in Spain to the tax administration.
Thanks to our API, complying is as easy as sending your sales and refund data to Quaderno in a single API call. Quaderno will then automatically send the invoices to the corresponding tax administration. You'll also receive a JSON response with the signed PDF of the document, which includes a QR code for easy verification.
You can test the Verifactu integration in our Sandbox environment, which simulates the production environment without sending real data to the AEAT.
Getting started
To enable the integration in your account, you need to upload a digital certificate issued to the same tax ID and name that appear in your Quaderno account.
Follow these steps to get started:
- Upload your electronic certificate on the Certificates page.
- Connect the Verifactu integration from the Integrations page.
Sending sales and refunds data
Once the integration is enabled, you can send your sales and refund data to Quaderno as usual using our Transactions API.
When the Verifactu integration is enabled, Quaderno will automatically send all invoices and credit notes to the corresponding tax administration.
Here's an example of a payload to POST 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"
}
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.
For example, if you make this call to retrieve an invoice:
curl --request GET \
--url https://sandbox-quadernoapp.com/api/invoices/92732431
--header 'Authorization: Basic API_KEY'
The response will include a deliveries
list, 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"
}
]
Any documents with errors will also appear in the Inbox page of your Quaderno account.
Limitations
Once you enable the Verifactu integration, keep these limitations in mind:
- You won't be able to assign a custom
number
orissue_date
to invoices or receipts. They will be assigned automatically. - For full invoices to Spanish customers, Quaderno will validate that the customer's name and NIF are registered with the Spanish Tax Agency. If the validation fails, the invoice will be saved as a draft, requiring you to manually correct the customer details in the account inbox before it can be sent.
- You won't be able to use custom templates on your invoices.
- The Verifactu integration cannot be disabled. If you need to stop sending invoices, you must contact our support team.
All these limitations are requirements from the Spanish Tax Agency (AEAT).