Skip to main content

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.

tip

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:

  1. Upload your electronic certificate on the Certificates page.
  2. 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 or issue_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).