Introduction
Prerequisites
To issue your first VERI*FACTU invoice, you must have had registered at least one supplier. Make sure you read and implemented the VERI*FACTU supplier registration guide before continuing with this guide.Setup
Add a new workflow to your workspace for issuing invoices. You can start with the template below.- Template
- Code
- Build from scratch
Workflow ID at hand, you’ll use it later.
Issue an Invoice
Upload an Invoice
regime:ES- Add the
es-verifactu-v1addon supplier: Use the details of the supplier you’ve registered before.
B2C Standard Invoice
B2C Standard Invoice
B2B Standard Invoice
B2B Standard Invoice
Empty.
Empty invoice
Send the Invoice to the VERI*FACTU invoice workflow
workflow_id: use the Workflow ID of the _VERI*FACTU invoice: workflow we created during setupsilo_entry_id: use the Silo Entry ID of the invoice you’ve just uploaded.
Sent when the workflow completes successfully.
Sent invoice

Example VERI*FACTU invoice with QR
Issue a Credit Note (Rectificativa por Diferencias)
In Spain, one way to correct an invoice is by issuing a credit note, known as a Rectificativa por Diferencias. An alternative method is to issue a Rectificativa por Sustitución, which involves creating a new invoice with the type corrective. The difference between the two is subtle but important:- A credit note adjusts the value of the original invoice.
- A corrective invoice replaces the original invoice entirely.
- Issue a credit note for €20, or
- Issue a corrective invoice for €80.
Upload a Credit Note
regime:ES- Add the
es-verifactu-v1addon supplier: use the same supplier details as in the original invoicetype:credit-notepreceding: references the original invoice, within it, you must include:uuid: the UUID of the original invoice (optional but recommended)type: type of the original invoiceissue_date: the date of the original invoiceseries: the series of the original invoicecode: the code of the original invoice
Empty. If you’ve included the uuid of the invoice in preceding, you’ll see a link to the credit note we’ve just created in the Related tab of the invoice.
Link to the credit note
Send the Credit Note to the VERI*FACTU invoice workflow
workflow_id: use the Workflow ID of the _VERI*FACTU invoice _workflow we created during setupsilo_entry_id: use the The Silo Entry ID of the credit note you’ve just uploaded.
Sent when the workflow completes successfully.Issue a Corrective Invoice (Rectificativa por Sustitución)
Upload a Corrective Invoice
corrective. So the process is very similar to uploading an invoice. Use the Create an entry endpoint to upload a corrective invoice. Include an invoice object in the data, with these required fields:regime:ES- Add the
es-verifactu-v1addon supplier_id: use the same supplier details as in the original invoicetype:correctivepreceding: references the original invoice, within it, you must include:uuid: the UUID of the original invoice (optional but recommended)type: type of the original invoiceissue_date: the date of the original invoiceseries: the series of the original invoicecode: the code of the original invoicetax: the tax section of the original invoice, you can copy it from the original invoice
Empty. If you’ve included the uuid of the invoice in preceding, you’ll see a link to the corrective invoice we’ve just created in the Related tab of the invoice.
Link to the corrective invoice
Send the Corrective Invoice to the VERI*FACTU invoice workflow
workflow_id: use the Workflow ID of the VERI*FACTU invoice workflow we created during setupsilo_entry_id: use the The Silo Entry ID of the corrective invoice you’ve just uploaded.
Sent when the workflow completes successfully.Cancel an Invoice
VERI*FACTU also allows you to cancel an invoice. In general, you should only cancel an invoice if it hasn’t been handed to the customer nor accepted by the tax authority. Different from a credit note or a corrective, canceling an invoice doesn’t produce a second document, which means you don’t have a paper to hand to your customer to show the cancellation. That’s why, if the invoice has been handed to the customer, we recommend issuing a credit note instead.Add a cancel invoice workflow (only once)
- Template
- Code
- Build from scratch
Send to cancellation workflow
Void when the workflow completes successfully.FAQ
Is VERI*FACTU compliance mandatory in Spain?
Is VERI*FACTU compliance mandatory in Spain?
How can I correct an invoice?
How can I correct an invoice?
- The recommended approach is to issue a GOBL Invoice with the type
credit-noteordebit-note, which in VERI*FACTU translates to a “Factura Rectificativa por Diferencias”. - If the above approach does not apply, you can issue an invoice of type
corrective, which in VERI*FACTU translates to a “Factura Rectificativa por Sustitución”. - Lastly, you can use the
Cancel VERI\*FACTU (Spain)step, which will void the invoice in the tax authority. This should only be used under special circumstances and not as part of a regular workflow.
What should I do if an invoice is rejected by VERI*FACTU?
What should I do if an invoice is rejected by VERI*FACTU?
What is the VERI*FACTU chain?
What is the VERI*FACTU chain?
Can invoices have an issue date in the past in VERI*FACTU?
Can invoices have an issue date in the past in VERI*FACTU?
What are the most common errors when submitting invoices to VERI*FACTU?
What are the most common errors when submitting invoices to VERI*FACTU?
es-verifactu-v1 addon validations. These prevent most of the typical problems before they reach the submission stage.Among the errors that aren’t yet validated on our side, the five most frequent ones are:4104: Error en la cabecera: el valor del campo NIF del bloque ObligadoEmision no está identificado.→ The issuer’s name must match what’s registered for that NIF (tax ID).4102: El XML no cumple el esquema. Falta informar campo obligatorio.→ Usually occurs when a required field is missing in the XML, often within the Desglose (taxes) section.1110: El NIF no está identificado en el censo de la AEAT.→ The provided NIF (tax ID) isn’t found in the AEAT registry (often due to typos or testing data).3000: Registro de facturación duplicado.→ Triggered when issuing the same invoice series/code twice.2001: El NIF del bloque Destinatarios no está identificado en el censo de la AEAT.→ Similar to 1110, but applies to the NIF (tax ID) of the customer.
Once a VERI*FACTU invoice is issued, can I get the QR code image url?
Once a VERI*FACTU invoice is issued, can I get the QR code image url?
The “QR” code must have a size between 30x30 and 40x40 millimeters and follow the specifications of the ISO/IEC 18004:2015 standard. For the generation of the “QR” code, the M (medium) error correction level shall be used.Generate your own QR code image as follows:
Obtain the VERI*FACTU URL
- API: fetch the entry and get
data -> head -> stamps -> verifactu-qr. - Console: in the invoice entry click on the kebab
···menu and select View Headers.
Generate the QR image
Store or use the image