Shopify app
GoRoute: Peppol E-Invoicing turns every paid business order on a Shopify store into the legally required e-invoice and delivers it over the Peppol network. GoRoute is the access point, so issuing, delivery and the delivery answer are one service. A buyer who is not on the network is emailed the invoice as a PDF, with the e-invoice file alongside it. Refunds and cancellations raise credit notes.
This guide covers installation, the four set-up steps, the blocks a merchant must switch on, what happens to an order, plans and billing, and what every state on an order means.
Who it is forโ
The app issues for a business registered in Belgium, Germany, the Netherlands, Australia, New Zealand or Oman. Customers can be anywhere: a business customer in another country is invoiced on its own VAT or business number, read from that number's own country prefix.
It requires the Shopify Online Store sales channel, because the VAT-number field is a theme app extension. It works on every Shopify plan. On Shopify Plus the field can also sit inside the checkout itself; on every other plan Shopify does not allow apps into the checkout steps, so the field goes on the cart page instead, with an optional prompt for shoppers who check out from the cart drawer. Both write the same data to the order.
Installโ
Install from the Shopify App Store listing for GoRoute: Peppol E-Invoicing. Shopify shows the permissions the app asks for (read and write orders; read customers, companies and payment terms); press Install.
The app then lives under Apps in the Shopify admin, and that is also where you reopen it afterwards. The app's own site at connect.goroute.ai describes it and links to the App Store listing; it is not somewhere you install from.
The app opens on Home, which counts the set-up steps left and, once set up, shows what was issued, delivered and needs attention this month.
Set-upโ
Open Set-up & settings from the app's navigation. Four steps, in order.
1. Countryโ
Choose the country the business is registered in and press Save country. From this answer the app knows which identifier to ask business customers for, which document buyers accept, and what to check on the store. A country that is not on the list cannot be invoiced yet.
2. Connect a GoRoute accountโ
Press Connect to GoRoute. You are taken to GoRoute to sign in or create an account, approve the store once, and come straight back. The account starts on the Free plan.
Before you press Connect to GoRoute, choose an Environment: Production (real invoices, delivered on the Peppol network) or Test (for evaluation; nothing reaches a real buyer or tax authority). Sign in to the GoRoute account that lives in the environment you chose: an account on Production does not exist on Test. A real store has Production selected. A Shopify development store has Test (recommended) selected: documents issued there reach the test network only, and test buyers such as DE000000020 exist there. Choose Production instead if your GoRoute account is on the live network. If Shopify does not say what kind of store it is, nothing is selected, and you choose before you connect.
3. Business detailsโ
Enter the registered business name, the VAT or business number, and the address that appears on invoices, and press Save business details. This also registers the store's identifier on the Peppol network so the store can receive documents. The Store readiness panel on the same page shows each thing sending and receiving depends on, checked live against the network, and offers a fix where one is needed.
A New Zealand store enters two numbers here: the NZBN and the GST number, which is your IRD number. The NZBN is your Peppol address and legal identifier. The GST number is the GST registration your invoices show. Until the GST number is saved, invoices carry no GST number, and the Business details complete check in Store readiness names it as missing. If you saved your GST number in the NZBN field before it had a field of its own, the page now shows it in the GST number field: enter your NZBN and save, because no invoice can be issued until you do.
Other settings here:
- Logo URL: a public PNG or JPG shown at the top of every invoice PDF.
- Issue the invoice when the order is paid or fulfilled.
- PDF language: English, or Arabic and English for Oman.
- Delivery notes: only when asked from the order, one on every fulfilment, or never.
- Email the customer the invoice PDF. The e-invoice file is sent with it. In Oman this email is a copy for the customer and never the delivery: the invoice reaches the buyer over the Fawtara network and the Tax Authority either way.
4. Turn the app on in the storefront and adminโ
Shopify never places an app's blocks for a merchant. Until these are switched on, the app is installed but invisible: business customers have nowhere to type their VAT number, so every order is invoiced as a consumer sale, and the order page shows nothing about the invoice.
The VAT-number field. Press Add the VAT field to the cart page. The theme editor opens on the cart page with the VAT number block already added; move it where you want it and press Save there. The field asks for the VAT or business number and the registered business name. Most themes also open a cart drawer with its own Check out, from which a shopper can pay without ever seeing the cart page. For those shoppers, press Turn on the drawer prompt: once the cart holds something, the app shows a small prompt of its own with the same field. It closes for the rest of the visit if the shopper dismisses it, is not shown once a VAT number is on the cart, and never appears on a page where the block is placed. On Shopify Plus, open Settings โ Checkout โ Customize, open the apps panel and add GoRoute VAT number to the Contact section.
The invoice on the Thank you and Order status pages. Open Settings โ Checkout โ Customize, switch to the Thank you and Order status tabs at the top of the editor, add GoRoute invoice after checkout on each, and save. The customer then sees the invoice as soon as it is issued and can download it again later.
The invoice block on the order page. Open any order, press Add block in the right-hand column, and choose GoRoute: Peppol E-Invoicing. It stays on every order from then on and shows the invoice number, how it was sent, whether it was delivered, and the PDF, with buttons to issue, retry or download. Printing works without this block: GoRoute is already under More actions โ Print on every order and on the orders list.
What happens to an orderโ
- The order is paid (or fulfilled, per step 3). Shopify tells the app.
- The buyer is identified. The app reads the VAT or business number the buyer gave in the cart, the checkout field on Plus, or an order attribute named
vat_number, and reads it as its own country's number. A German number on a Belgian store is a German business, not a broken Belgian one. - A business sale needs the buyer's registered name. It comes from the company account that placed the order, the billing address's company field, the business-name field beside the VAT number, or the shipping address's company, in that order. Without a name the order is marked Failed with the reason, and pressing Issue now after adding one issues it.
- The invoice is issued in the format the seller's country requires, validated before anything leaves. One order can only ever produce one invoice.
- It is delivered. A buyer on the Peppol network receives it in their accounting software. Anyone else is emailed two files: a PDF to read, and the e-invoice itself as a separate XML attachment. What the PDF contains depends on the seller's country. For a German or Dutch seller the e-invoice is also carried inside the PDF โ EN 16931 data in a PDF/A-3, going by the name that market knows: ZUGFeRD for a German seller, EN 16931 for a Dutch one. For an Australian or New Zealand seller no such combined file is made: the PDF is a plain one, and the e-invoice is the XML attachment beside it. Belgium does not accept email between businesses, and the order says so rather than pretending the invoice arrived. An Omani invoice is never delivered by email โ it always goes over the Fawtara network and to the Tax Authority. The customer is still emailed a copy of it when the merchant has Email the customer the invoice PDF switched on.
- The answer comes back onto the order: the invoice number, the channel, and the delivery state, as tags and as the block on the order page.
A sale to a consumer, with no VAT number, is deliberately not invoiced outside Oman, and the order says so. In Oman a consumer sale becomes a simplified tax invoice with the Fawtara QR code, reported to the Tax Authority.
Company accounts, net terms and PO numbersโ
Since 2 April 2026 Shopify's company accounts, net payment terms and PO numbers are on every paid plan (Basic, Grow, Advanced and Plus), so a B2B order no longer needs a Plus store. When a company account places the order:
- The company is the buyer. Its registered name, its tax ID and the billing address of the location that bought are what the invoice carries, ahead of anything typed into the cart or the checkout. The VAT-number field is still read for a company whose account holds no tax ID.
- Net terms set the due date. Net 30 on the order is a due date thirty days out on the invoice; terms due on a fixed date carry that date. Where the terms have no date yet โ due on fulfilment, before the order ships โ the days count from the issue date, and an order with no terms is due the day it is issued, as before. A credit note is due when it is issued.
- The PO number is the invoice's order reference. The buyer's accounts payable matches the e-invoice to their purchase order by it; the buyer reference stays the Shopify order number. A credit note carries the same PO.
Reading the terms needs the payment terms permission (read_payment_terms), which the app asks for since this was added. A store that installed earlier is asked to approve it the next time the merchant opens the app; until then invoices are due on their issue date and everything else is unchanged.
Credit notes, pro forma invoices and delivery notesโ
- A refund credits what was refunded; a cancellation credits in full. Each credit note cites the original invoice and travels the same way it went. Refund in the Shopify admin as normal; the document follows.
- A pro forma invoice can be raised from the order for a buyer who needs a document before paying. One per order, replaced rather than duplicated, and labelled plainly as not a tax invoice.
- A delivery note is raised per fulfilment with its despatch date and tracking reference, with or without prices.
Pro forma invoices and delivery notes are not tax documents: they are never transmitted, never reported, and never counted against the plan allowance.
Documentsโ
The Documents page lists every invoice and credit note the store has issued, with the PDF and the XML, the channel and the delivery state. From here a merchant can issue an order that has nothing yet, retry one that failed, email a PDF again, and download or email in bulk. The order page's block links here for that order.
What the customer seesโ
- The cart: the VAT-number and business-name fields, on the cart page or in the app's prompt, with a line under them saying whether the number was recognised on the network and how the invoice will arrive.
- The Thank you page and the Order status page: the invoice, once issued, with a download.
- The customer account: each order's invoice, so a buyer who lost the email fetches the PDF themselves.
Plans and billingโ
Plans are chosen, changed and cancelled on Shopify and appear on the store's Shopify bill. The app's Plan page shows the current plan and this month's usage and links to Shopify's plan picker.
| Plan | A month | Documents a month |
|---|---|---|
| Free | $0 | 50 |
| Starter | $19 | 250 |
| Growth | $49 | 1,000, 30 days free first |
| Business | $99 | 5,000 |
| Agency | $249 | 20,000, shared across your stores |
- Every plan includes every country and every feature. Nothing is charged per document within the allowance.
- Free stops at its allowance: the next document is held, not lost. When the month turns or the plan changes, retry it from the Documents page โ see the Held row under Order states.
- A paid plan is never stopped. Past the allowance each further document is billed at $0.05, added to the same Shopify bill.
- A document is a tax invoice or a credit note. Pro forma invoices and delivery notes do not count.
- Plans are monthly only: Shopify cannot add a per-document rate to a plan with a yearly option.
- Development stores are never charged: Shopify marks every charge on them as a test charge.
Order statesโ
| State on the order | Meaning | What to do |
|---|---|---|
| Sent, Delivered over Peppol | Issued and accepted by the buyer's access point. | Nothing. |
| Sent, Sent by email | The buyer is not on the network; the PDF and the e-invoice file went by email. | Nothing. |
| Sent, Being delivered | Handed to the network; the answer has not come back yet. | Wait; the state updates by itself. |
| Delivery failed | The network refused or could not reach the buyer. | Check the buyer's number on the Documents page and retry. |
| Failed: needs the buyer's registered name | A business sale with a VAT number but no company name anywhere on the order. | Add the company to the billing or shipping address, then Issue now. |
| Skipped: consumer sale | No VAT number was given, so no e-invoice is required. | Nothing, or add the buyer's number to the order and press Issue now. |
| Not invoiced: invalid number | The number does not match its country's format. | Correct it on the order, then Issue now. |
| Held | Free plan allowance used up. The document is kept, not lost. | Once the allowance renews at the turn of the month, or you choose a plan, press Retry on the document in the Documents page. A held document is not released on its own. |
Order attributesโ
The fields write two attributes onto the cart, which arrive on the order as custom attributes and can be set by other apps or by hand:
| Attribute | Content |
|---|---|
vat_number | The buyer's VAT or business number, with its country prefix. |
company_name | The buyer's registered business name. |
The app also accepts a VAT number under goroute_vat_number, vat, abn, nzbn, gst_number, gst, vatin or tax_id, and a company name under goroute_company, company or business_name. In New Zealand the NZBN is used wherever it is given, and a GST number given beside it, for example under gst_number, is carried as the buyer's GST number. Always include the NZBN: at present an order that carries a GST number and no NZBN is not issued, and stays in the Documents list as waiting.
Uninstallingโ
Uninstalling the app removes its blocks and embed from the store and, within 48 hours, the store's data from the app: the connection, the business details and the document records. Documents already issued remain in the GoRoute account they were issued under. Reinstalling starts from step 1.
Data and privacyโ
The app reads the buyer's name, email and address from an order because a compliant e-invoice must carry them, and the buyer's VAT number because a business invoice is issued to it. On a company account's order it also reads the company's name, tax ID and billing address, the payment terms and the PO number, because the invoice's buyer, due date and order reference come from them. It never reads phone numbers. Customer data lives only as invoice content on the transaction, under the GoRoute privacy policy; the app itself keeps only shop and document references, returned or removed by Shopify's compliance webhooks and deleted on uninstall.
Supportโ
Write to admin@goroute.ai. Include the store's .myshopify.com domain and the order number.