Compliance · · 7 min read

Verifactu for Online Shops: Tickets, QR Codes and Refunds

What Verifactu does to each paid order in an online shop: a ticket or full invoice, the QR code, credit invoices for refunds and your certificate, on Shopify.

What does Verifactu mean for an online shop?

Every paid order has to leave your shop as an invoice made by an invoicing system that follows the Verifactu rules: a ticket for a consumer, a full invoice for a business, each with a QR code and each with a record the Tax Agency can receive. In Verifactu mode that record goes to the Tax Agency (Agencia Tributaria, AEAT) at the moment the invoice is issued. The rules come from Royal Decree 1007/2023 and apply before 1 January 2027 to corporate income tax payers and before 1 July 2027 to other taxpayers in scope. On 5 October 2026 the Ministry of Finance announced a plan to postpone both to October 2028; that is an announcement, not law, and Is Verifactu postponed to 2028? explains where it stands.

For a shop, the practical questions are narrow: what each order turns into, what the buyer sees, what happens on a refund and what you need to connect. GoRoute's Shopify app, Verifactu: Facturas y tickets, is built around exactly those, and this page uses its documentation as the only source for what the app does. The app is on the Shopify App Store.

What does each paid order become?

A simplified invoice (ticket) if the customer is a consumer, a full invoice if the customer gives a Spanish NIF or a valid EU VAT number. The app decides from what the order carries, and sends the Verifactu record to the Tax Agency after each issue.

Order situation What the app does
Customer without a NIF (consumer) Issues a simplified invoice and sends its Verifactu record. With no name, the customer appears as "Consumidor final".
Customer with a valid NIF or EU VAT number Issues a full invoice to that NIF and sends the record; the customer receives the PDF if you have switched on email delivery.
NIF given but no company name Treats the buyer as a self-employed person and issues a full invoice with the name from the billing address, or the shipping address if the billing one has none.
Invalid NIF Issues nothing and marks the order "Fallida" (failed) with the reason; you correct the NIF and issue it again.
Consumer above the ticket limit Holds the invoice: the customer's NIF is needed.
Shopify test order, or an order of zero value No invoice, no record sent.
Order cancelled before invoicing Nothing is issued.

By default an invoice is numbered with the order number (order #1005 gives INV-1005), and a shop that already has a series can continue it from a set prefix and number. Each order has one invoice.

When is a ticket enough, and when do I need the customer's NIF?

A ticket is enough for a consumer up to a limit; above it the customer's NIF is required. The app's settings use EUR 3,000 for retail and for the activities named in article 4 of the invoicing regulation, and EUR 400 for any other activity, as its documentation states. Past the limit the invoice is held until the NIF arrives.

The second half of the question is how a business customer gives you the NIF. The app provides a field for it. On Shopify plans that are not Shopify Plus it is a block on the cart page that you add through the theme editor; on Shopify Plus it goes on the checkout page itself. Without that field, no business customer can give a NIF, and every order is issued as a ticket. The documentation notes that the cart block's text comes in English ("Buying for a business? Add your VAT number") and can be changed in the theme editor.

Where does the QR code go?

On every invoice the app issues, ticket or full invoice. From the moment the rules apply to a business, each invoice it issues carries a QR code that holds some of the invoice's data and a web address at the Tax Agency. In Verifactu mode the code also lets the buyer check the invoice against what the Tax Agency already holds, and the invoice carries a legend marking it as verifiable. The buyer can see the invoice on the order's Thank you and Order status pages when you add the app's block there, and receives the PDF by email if you switch that on.

What happens when I refund an order?

Each refund produces a corrective invoice (factura rectificativa) against the original invoice, for the amount returned. The app numbers these with a CN- prefix, followed by the order number and refund number, and a corrective invoice never exceeds what remains to be credited on the invoice. If you cancel an order that was already invoiced, the app issues the corrective invoice for what is left; if the order had no invoice, there is nothing to correct.

There is a second case that is not a refund. If an invoice or ticket went out with the wrong VAT rate and the customer paid the correct amount, no money needs to go back, and the app's Corregir IVA (correct VAT) function issues a substitute corrective invoice that replaces the original in full, with a series prefixed RS-. It records the invoice as corrected and shows the replacement. The documentation says not to use this function when money was returned to the customer: use the refund path instead.

Five steps showing what the Verifactu app does with a paid Shopify order. One, the order is paid. Two, the app issues a simplified invoice if the customer is a consumer or a full invoice if the customer gave a NIF. Three, the invoice carries the Verifactu QR code. Four, GoRoute sends the invoice record to the Tax Agency with the shop's certificate. Five, a refund later produces a corrective invoice for the amount returned.
The shop does step one. The rest is the app's work, and a refund adds a corrective invoice.

What do I need to connect the shop?

A company or sole trader with a tax domicile in Spain, a qualified digital certificate, a GoRoute account and a Shopify store. The documentation lists them:

  1. Tax domicile in Spain, either common territory or the Canary Islands (for the Canaries, the shop must already charge the IGIC in its Shopify taxes).
  2. A qualified company certificate (for example from the FNMT) exported as a .p12 or .pfx file with its password: the one you already use at the Tax Agency's electronic office. GoRoute encrypts it on arrival and uses it only to send your records to the Tax Agency. If it expires or you remove it, invoices keep being issued and recorded and wait for sending until you upload a new one.
  3. A GoRoute account. The app connects your store to it; the account starts on the free plan.
  4. A confirmation that Verifactu applies to you, covered below.

Before going live you can connect to the Tax Agency's test service: the app checks the connection with your certificate and can send a test invoice and cancel it, with no tax effect. Shopify development stores can connect only to the test environment.

Does Verifactu apply to every shop?

No. Two groups are outside it, and the app asks you to confirm you are in neither. Verifactu does not apply to businesses that keep their VAT books through the immediate VAT information system (SII), and not to businesses with their tax domicile in the Basque Country or Navarre, where TicketBAI or the regional treasury's own system applies. Verifactu, SII or TicketBAI sets out who falls where.

Two further points keep the picture straight. Consumer tickets are inside Verifactu but outside Spain's new business-to-business e-invoicing mandate, which exempts simplified invoices; the B2B mandate guide covers the dates. And "certified" is the wrong word for any Verifactu product: no outside body certifies these systems, and the producer declares compliance for each version of its own software, so GoRoute does not describe the app as certified.

How do you start?

Install the app from the Shopify App Store, connect your GoRoute account, enter your company details and upload your certificate. The documentation walks through the four setup steps and what appears in the Documentos page for each order. The shortest route:

E-invoicing in Spain covers the wider rules, and E-invoicing for Shopify covers GoRoute's other store apps.


Sources: GoRoute's Verifactu (Shopify) guide for everything the app does; the Tax Agency's Verifactu page for the QR code, the verifiable legend and the self-declaration of producers; Real Decreto 1007/2023 for scope; Real Decreto-ley 15/2025 for the dates; the Ministry of Finance's note of 5 October 2026 for the announced postponement. Read on 6 November 2026. This page describes the rules and the product; it is not tax or legal advice. GoRoute operates certified Peppol Access Point POP000991.

Frequently asked questions

What does Verifactu mean for an online shop?
Every paid order has to become an invoice produced by a system that creates a tamper-evident record, carries a QR code and, in Verifactu mode, sends that record to the Tax Agency as it is issued. A consumer gets a simplified invoice (a ticket); a business that gives its NIF gets a full invoice.
Does a refund need its own invoice?
Yes. A refund is documented with a corrective invoice (factura rectificativa) against the original. GoRoute's Shopify app creates one for each refund, for the amount returned, and it never exceeds what remains to be credited on the invoice.
Do I need a digital certificate?
To send records to the Tax Agency with the app, yes: a qualified company certificate (for example from the FNMT) exported as a .p12 or .pfx file, the same one used at the Tax Agency's electronic office. If it expires, invoices are still issued and recorded and wait to be sent until a new certificate is uploaded.
Is the GoRoute app certified for Verifactu?
There is no external certification body or register of approved products. The producer declares compliance for each version of its own software. This page does not call any product certified.
Which shops can use it?
Businesses and self-employed people with a tax domicile in Spain, in common territory or in the Canary Islands, that do not keep their VAT books through the SII and are not domiciled in the Basque Country or Navarre. The app asks the merchant to confirm both.
Do I still have to comply on 1 January 2027 if the Ministry postpones Verifactu?
The postponement to October 2028 has been announced and is not law. Until a legal text changes the dates, corporate income tax payers must have an adapted system before 1 January 2027 and other taxpayers before 1 July 2027.

Related posts

Building on Peppol?

GoRoute is a certified Peppol Access Point & SMP. Book a demo or read the docs to get started.

Book a demo Read the docs