Description
Governments are making structured e-invoices mandatory between businesses. Belgium has required them since 1 January 2026. Oman’s dates are 1 April and 1 October 2027. Germany, Singapore and others are phasing them in. A PDF by email no longer counts.
GoRoute E-Invoicing connects your WooCommerce store to GoRoute, a certified Peppol Access Point (POP000991) and an accredited service provider in Oman, Australia and New Zealand. Choose the country your business is registered in, connect once, and every paid order is handled correctly from then on.
Set-up in five steps
A set-up wizard opens on first activation and can be run again at any time: where is your business registered; connect to GoRoute; your business name and identifier, checked in your country’s format; store readiness with each fix beside its row; send a test invoice. Nothing else to configure.
Choose your country, and the rest follows
- The VAT or business-number field at checkout, in your country’s format, checked as the customer types.
- Business versus consumer detection from that one field.
- The right e-invoicing identifier, document format and network for your country.
- A structured e-invoice delivered to the buyer’s e-invoicing system over the Peppol network.
- A credit note for every refund, and for a cancellation, that cites the original invoice.
- Delivery status on the order: being delivered, delivered, or what needs you.
- A PDF and the XML for every document, and the document UUID with a copy control.
- Plain-language errors and a daily digest of anything that needs a person.
You never see UBL, PINT or Peppol. You see an order that was invoiced.
Countries
- Belgium: B2B e-invoicing over Peppol (BIS Billing 3.0), mandatory since 1 January 2026. Belgian VAT number at checkout, checked against VIES and the Peppol network. Consumer sales need no e-invoice and get none.
- Germany: EN 16931 invoices (Peppol BIS Billing 3.0) to business customers over Peppol; German VAT number at checkout, checked against VIES.
- Netherlands: Peppol BIS Billing 3.0 to business customers; Dutch VAT number at checkout, checked against VIES.
- Australia: PINT A-NZ invoices over Peppol; ABN at checkout with its check digit verified; GST.
- New Zealand: PINT A-NZ invoices over Peppol; NZBN at checkout with its check digit verified; GST.
- Oman: Fawtara. Consumers get a simplified tax invoice with the Fawtara QR; businesses a full tax invoice over Peppol; the tax report is filed with the Tax Authority automatically. Everything the plugin did for Oman before 2.0, unchanged.
- Coming: Singapore (once GoRoute generates the PINT SG document InvoiceNow expects), Ireland, Austria, Luxembourg and the Nordics. Countries that route invoices through a national platform instead of Peppol (France, Italy, Poland, Romania) are shown as coming soon and cannot be selected yet.
A country is offered only once GoRoute has delivered a test invoice to a real participant there.
At the checkout
A business customer types their VAT number and company name. The plugin checks the number’s format, an EU number against the VIES register, and then asks the Peppol network whether that business can receive e-invoices and under which identifier. The customer is told how their invoice will arrive before they place the order, and you see the same answer on the order.
Refunds, retries and reports
- Every refund on an invoiced order raises a credit note. Partial refunds credit only the refunded lines. A cancelled order is credited in full by itself.
- A changed buyer on an invoiced order is flagged, and one click credits the invoice and issues a new one to the right buyer.
- The invoice PDF is attached to the order emails and the credit note PDF to the refund emails.
- Duplicate submissions are impossible: a retried or double-clicked order returns the same invoice.
- If GoRoute cannot be reached, the checkout is never blocked; issuing retries in the background.
- A monthly E-Invoice report gives the net, VAT and gross figures for the VAT return, with a CSV export.
Watch it working
A sixteen-minute walkthrough on an Oman store: connecting, a consumer sale with the QR receipt, a business sale delivered over Peppol, a refund with its credit note, and where every document lands on the dashboard. A Belgian store works the same way without the consumer receipt.
Before the first invoice
A Store readiness panel checks what a truthful invoice depends on in your country: the country chosen, a connection to GoRoute, your identifier registered on the network, taxes on with your country’s standard rate, the store address in your country, and prices in your currency with the right decimals. Each red row has its fix beside it.
What this plugin does not claim
It generates and transmits structured e-invoices for the countries listed above and validates them against the applicable Peppol rules. Whether a given business is inside a mandate, and what else that mandate asks of it, is for the business and its adviser to confirm.
Requires a GoRoute account
The plugin is free. A GoRoute subscription is what issues the documents. Plans start free with a monthly allowance of documents and scale by volume; press “Connect to GoRoute” on the settings page to create an account.
External Services
This plugin connects to the GoRoute e-invoicing API at https://goroute.ai to issue documents. It is useless without it, by design: the compliance rules, validation and delivery live on the platform, so a rule change in your country reaches every store the same day with no plugin update.
What is sent, and when
- On each paid order and each refund: the order’s line items (name, quantity, net price, tax rate and category, SKU), totals, currency, your legal seller name and VAT number, and the customer’s billing name, company, address, email and VAT number where given.
- On “Connect to GoRoute”: your store’s address and name, so GoRoute can issue the store its own key.
- On “Test connection”, at checkout when a VAT number is typed, and on “Look up”: a single authenticated read to verify the key or to ask whether a VAT number is on the network.
- For an EU store, a VAT number typed at checkout is also checked against the European Commission’s VIES service (https://ec.europa.eu/taxation_customs/vies/), which receives the country code and number only.
- On deactivation, only if you press Send in the short “why are you leaving” box: your answer, an email address if you give one, this site’s address, the country and plugin version, by your site’s own mail to admin@goroute.ai. Skip sends nothing.
- Nothing is sent at any other time, and nothing is sent by a store that has not been connected.
What comes back
The invoice number, the document UUID, delivery status for business documents, PDFs and XML on request, and for Oman the verification URL and the QR code as an inline image stored on the order. The plugin loads no remote scripts, styles or images from any third party; the only outbound calls are the API calls above.
Service provider: GoRoute (ClayDesk LLC / Union Digital Technologies SPC). Terms: https://goroute.ai/terms.html. Privacy: https://goroute.ai/privacy.html.
Screenshots











Blocks
This plugin provides 1 block.
- GoRoute E-Invoice The e-invoice for the order on this page: the Fawtara QR receipt for a consumer, the tax invoice notice and PDF for a business customer.
Installation
- Install the plugin from the WordPress plugin directory, or upload the zip under Plugins Add New Upload Plugin, and activate it.
- Open WooCommerce GoRoute E-Invoicing, choose where your business is registered, and press “Connect to GoRoute”.
- Sign in to GoRoute, or create an account, and approve the connection. You come back with the key, your legal name and VAT number filled in and delivery updates switched on. Prefer a key from your dashboard? Paste it into the API key field instead.
- Check that the Store readiness rows are green, then place a test order.
- Selling to businesses too? A customer who enters a VAT number at checkout gets a structured e-invoice delivered over Peppol; nothing else to set up. Oman stores also pick the type of service or the customs code under “Business invoices: what you sell”.
FAQ
-
How do I connect the store to GoRoute?
-
Press “Connect to GoRoute” on the settings page, sign in or create your GoRoute account, and approve. GoRoute issues the store its own key and sends back your organisation’s legal name and VAT number; the plugin also switches on real-time delivery updates. The key is never shown or typed. Revoke it any time under API Keys in the GoRoute dashboard; “Disconnect” on the settings page forgets it locally.
-
Does it handle business customers?
-
Yes. The checkout carries an optional VAT number field in your country’s format. An order with a valid VAT number gets a structured e-invoice to that buyer, delivered to their e-invoicing system through the Peppol network by GoRoute, and the order shows the delivery status. Orders without a VAT number are consumer sales: in Oman they get the simplified tax invoice with the Fawtara QR; in Belgium they need no e-invoice and get none.
-
Which countries are supported?
-
Belgium and Oman in 2.0. Germany, Singapore, Australia and New Zealand come next, then the Netherlands, Ireland, Austria and the Nordics. Countries that route invoices through a national platform rather than Peppol (France, Italy, Poland, Romania) are listed as coming soon and cannot be selected. A country is offered only once GoRoute has delivered a test invoice to a real participant there.
-
Does GoRoute need to be an accredited provider in my country?
-
Not for Peppol countries such as Belgium: any certified Peppol Access Point may deliver there, and GoRoute is one (POP000991). Where a country requires a national accreditation to register local businesses, GoRoute holds it for Oman, Australia and New Zealand. Countries where a Peppol Access Point is not enough are the ones shown as coming soon.
-
Is my store legally compliant once I install this?
-
The plugin generates and transmits structured e-invoices for the supported countries and validates them against the applicable Peppol rules. Whether your business is inside a mandate, and what else that mandate asks of it, is for you and your adviser to confirm; no plugin can promise that.
-
What if the business customer is not on the e-invoicing network yet?
-
In Belgium the e-invoice cannot be delivered, and the order says so. Often the buyer is registered under their enterprise number rather than their VAT number; the plugin tries both. Ask the customer which identifier their accounting software receives e-invoices under and enter it on the order, or send them the PDF. In Oman the invoice is still issued: the Solution Architecture provides for this case, the document is filed with the Tax Authority under the substitute address, the order shows “Reported to the Tax Authority”, and you send the customer the PDF from the order page; the customer’s confirmation carries the PDF link.
-
How do I check whether a VAT number is on the network?
-
WooCommerce GoRoute E-Invoicing Network lookup. Enter any VAT number in your country’s format, yours or a customer’s, and the answer says whether it is registered to receive e-invoices and under which business name. A pending business order also shows this for its buyer before the invoice is issued.
-
Yes. Connect each store; each gets its own key. Invoice numbers must be unique across the account, so give the second store a document number prefix under GoRoute E-Invoicing (INV-SHOP2-101 instead of INV-101). Stores that belong to different legal entities should use different GoRoute organisations, one per VAT number.
-
What does the store need before the first invoice?
-
The country chosen, taxes on with your country’s standard rate (21% in Belgium, 5% in Oman), the store address in your country, prices in your currency with the right decimals, and the store’s own VAT number registered on the network. Oman stores also need the site clock on Muscat time. The Store readiness panel at the top of the settings page checks all of these and offers the fix beside each one, including a one-click VAT rate. An order that would claim 0% VAT on a standard-rated item is refused with a plain explanation rather than filed.
-
I sell both goods and services (Oman).
-
Set the store default to whichever you sell more of, then give the other products their own classification on the product’s General tab: “Services” with the type of service from the list, or “Goods” with the 12-digit customs (HS) code. A product left on “Store default” follows the store setting. Only business invoices need this; consumer receipts do not.
-
I sell zero-rated or exempt goods.
-
Put those products in a WooCommerce tax class and map the class under GoRoute E-Invoicing VAT categories. Zero-rated and exempt lines are then declared as such on the invoice with the reason code the invoice format expects. Unmapped classes are standard rated.
-
Can customers download a PDF?
-
Yes. Every invoice and credit note has a PDF link on the order-confirmation page, in the order email and under My Account Orders, in English, or Arabic for Oman stores. No login is needed; the link is signed and unguessable.
-
Is there a shortcode or block?
-
Yes.
[goroute_invoice]and the “GoRoute E-Invoice” block render the invoice for the order on the page, for stores with a custom thank-you page. Passorder="123"to show a specific order to someone allowed to see it. -
How do I get the monthly figures for the VAT return?
-
WooCommerce E-Invoice report lists every document of a month with net, VAT and gross, invoices and credit notes, consumer and business, and exports it as CSV.
-
What happens if an order is edited after its invoice was issued?
-
The tax document does not change with an edit. The order is flagged once, with the total it was issued for, and the fix is a refund, which raises a credit note.
-
Do I need to change my theme or checkout?
-
No. The plugin hooks the order events WooCommerce already fires. The VAT number field is added to the block checkout and the classic checkout without touching your theme.
-
What happens when an order is cancelled after it was invoiced?
-
The invoice has already been delivered (in Oman, filed with the Tax Authority), so it is credited: a credit note for the full amount, or for what the order’s refunds left, is issued when the status changes to Cancelled. It appears in the GoRoute E-Invoice box with its own PDF, and in the monthly report.
-
The customer gave the wrong VAT number. Can I change it on the order?
-
You can change the order, but not the invoice: an issued document never changes once delivered. The box flags the difference and offers Re-bill, which credits the issued invoice in full and issues a new one to the buyer the order names now. Both documents stay on the order.
-
Where is the invoice UUID?
-
Under the document number in the GoRoute E-Invoice box, for the invoice and every credit note, with a Copy control. It is the identifier the buyer’s system, and in Oman the Tax Authority, keys on.
-
Can I download the XML that was filed?
-
Yes: “XML” beside every Download PDF. It is the signed UBL exactly as it was sent, the tax record itself.
-
Does the customer get the PDF by email?
-
Yes, by default. The invoice PDF is attached to the order emails and the credit note PDF to the refund emails; the setting is under Customer emails.
-
What happens on a refund?
-
A credit note is issued referencing the original invoice (and, in Oman, reported). Partial refunds credit only the refunded lines. For a business customer the credit note is delivered over Peppol like the invoice.
-
What if GoRoute is unreachable when an order is paid?
-
The checkout is never blocked. Issuing retries automatically with backoff, the order note records each attempt, the receipt follows by email once issued, and the daily digest tells you if anything is still waiting.
Reviews
There are no reviews for this plugin.
Contributors & Developers
“GoRoute E-Invoicing for WooCommerce” is open source software. The following people have contributed to this plugin.
ContributorsTranslate “GoRoute E-Invoicing for WooCommerce” into your language.
Interested in development?
Browse the code, check out the SVN repository, or subscribe to the development log by RSS.
Changelog
2.1.6
- Store readiness re-asks the network within ten minutes after a “not registered” answer, and “Check again” in the set-up always asks afresh, so a registration completed a moment ago shows green a moment later.
2.1.5
- On the Plugins screen the “Rate us” stars are WordPress’s own rating stars, and Documentation opens the guide for the chosen country.
- Deactivating asks why, once, in a small box: send an answer or skip; the plugin deactivates either way.
2.1.4
- The checkout hint always answers: the network’s answer comes first, the EU VAT register is advisory, and an outage is said in words instead of silence.
2.1.3
- The set-up always begins at step 1. Answered steps show their answer with a Continue button, so every store walks the same path; the connection step shows the connected organisation when there is one.
2.1.2
- The set-up opens on a welcome screen: what the plugin does, an animated picture of an order’s journey, where the store stands, and one button that starts, continues or reviews the set-up. Nothing speaks in a country’s terms before a country is chosen.
- Every set-up page carries the GoRoute mark and closes with three cards: all settings (once set-up is complete), the step-by-step guide, and help.
- The menu entry is “GoRoute set-up”.
2.1.1
- The country is changed only in the set-up wizard, which re-runs the steps the change invalidates; the settings page shows it with a Change link instead of a dropdown that took effect only on save.
- Until set-up is complete, the settings page opens the wizard at the first unfinished step. A store configured before the wizard existed is complete without a click.
- A store identifier that is not valid for the chosen country is flagged in Store readiness with a link to enter the right one, instead of passing on an old network answer.
2.1.0
- Germany, the Netherlands, Australia and New Zealand can be chosen. Each is proven by a delivered test invoice and credit note on the Peppol test network before it appears.
- ABN and NZBN check digits are verified at checkout and in settings; GST wording for Australia and New Zealand.
- A set-up wizard: country, connection, business identity, readiness, test invoice. Opens once on first activation; the settings page links to it.
- The settings page and the network lookup speak in the chosen country’s terms.
2.0.0
- One plugin for every country GoRoute delivers to. A new setting, “Where is your business registered?”, sets the VAT number format at checkout, the e-invoicing identifier, the document format and network, the tax-rate check and what a consumer sale gets.
- Belgium: Belgian VAT number at checkout, checked against VIES and the Peppol network under the enterprise-number and VAT schemes; business invoices as Peppol BIS Billing 3.0; consumer sales need no e-invoice and are marked so.
- Oman stores are recognised on upgrade and set to Oman automatically; receipts, numbers and QR codes are unchanged.
- Countries not yet offered are listed as coming soon and cannot be selected.
- The setup guide, the readiness panel and every message speak in the chosen country’s terms.
- Dutch and French translations for Belgian stores.
1.4.0
- The document UUID is shown under every invoice and credit note, with a Copy control, and stored at issue.
- “XML” beside every PDF: the signed UBL exactly as filed.
- A cancelled order is credited in full by itself; a partly refunded one for what is left.
- A changed VAT number on an invoiced order is flagged, and “Re-bill” credits the invoice and issues a new one to the buyer the order names now.
- The Tax Authority’s answer to each tax report, accepted or rejected, shows under the document and reaches the daily digest.
- The invoice PDF rides on the order emails, the credit note PDF on the refund emails (setting under Customer emails).
- At the checkout, a valid VAT number is checked against the network at once and the customer is told how their invoice will arrive.
- An “E-invoice: needs attention” filter on the Orders list, and a warning sign on orders that no longer match their document.
- A business invoice needs the buyer’s company name; a blank one is refused in words instead of filing a document with a person’s name on it.
- “Issue the invoice” setting: when paid (the default, now also when a bank-transfer or cash order is moved to Processing) or when marked Completed.
- The document number prefix explains that the number series must not collide with anything else invoicing from the same account.
1.3.7
- A “Rate us” link on the Plugins list and a footer note on the plugin’s own screens.
- FAQ: a store that sells both goods and services.
1.3.6
- A delivery that fails because the receiving side could not look the buyer up in the registry, usually a momentary fault, is retried automatically after one, five and thirty minutes before the order asks for a person. The order box shows when the next retry is due.
- The reachability check before a business invoice asks the network live instead of a cached answer.
- The order panel is placed at the top of the right column by default; the webhook secret is masked on the settings page.
1.3.5
- The type of service for business invoices is chosen from the Tax Authority’s list (CL-12-OM, twenty entries such as “86000000 — Education and Training Services”) instead of typed; a typed code the Authority does not know was the reason a business invoice on a real store was refused. Goods keep the 12-digit customs (HS) code, checked on save. Same picker on the product’s General tab.
- A missing or invalid classification is explained on the order page with where to set it.
1.3.4
- The order box updates itself for ninety seconds after a business document is issued, so “Being delivered” flips to “Delivered to the buyer via Peppol at 14:48” without a reload. “Delivered” carries the time the buyer’s system acknowledged the document.
- A document still unacknowledged after a minute says “Still waiting for the buyer’s system to acknowledge” instead of a bare “Being delivered”.
1.3.3
- A business invoice the platform refuses on validation is now shown as refused, with the platform’s reasons in words on the order page, instead of being recorded as issued with no document behind it. Such a refusal is not retried; fix the cause and use Issue now.
- An order that an earlier version recorded as issued without a document behind it now says so and offers Issue now.
1.3.2
- A step-by-step guide under WooCommerce E-Invoicing guide: before the first invoice, a consumer sale, a business sale from the checkout or from a hand-made order, refunds, buyers not on the network, checking what was sent, and what each refusal means. Linked from the settings page and the Plugins list.
- The directory description carries a condensed “How to send an invoice”.
1.3.1
- The Oman-time check accepts any timezone at UTC+4 (Muscat, Dubai, or a manual offset) and names the site’s zone and how far off it is.
- When an order carries no VAT line, the refusal now says why for that order: taxes off, the 5% rate missing, or a billing country other than Oman on an order created by hand, with the exact steps (Pending country Recalculate complete Issue now).
1.3.0
- One-button connection: “Connect to GoRoute” signs the merchant in to GoRoute, asks for approval, and returns with a store-specific key, the legal name and VAT number filled in, and delivery updates switched on. The key is minted by GoRoute and exchanged server to server; it never appears on screen. Pasting a key still works.
- “Connected to your organisation” and Disconnect on the settings page; the first-run notice leads straight to Connect.
- Document number prefix for a second store on the same GoRoute account, so the two stores’ invoice numbers cannot collide.
- Delivery updates subscribe to the platform’s real event names; a refused registration is explained on the settings page.
1.2.0
- Store readiness panel: taxes and the Oman 5% rate (one click), Muscat time, OMR to three decimals, the store’s VAT number registered on the network. The same checks appear under WooCommerce Status.
- VAT categories: WooCommerce tax classes map to standard, zero rated or exempt, with optional reason codes. An invoice that would claim 0% VAT on a standard-rated item is refused in words instead of filed.
- Customers get a signed PDF link for every invoice and credit note on the order-confirmation page, in the order email and under My Account; English or Arabic.
- My Account Orders View shows the invoice; the
[goroute_invoice]shortcode and a “GoRoute E-Invoice” block for custom thank-you pages. - Bulk action “Issue e-invoices” on the Orders list for orders completed before the store was connected.
- E-Invoice report: the month’s documents with net, VAT and gross, and a CSV export.
- Retries and delivery polling run on Action Scheduler, visible under WooCommerce Status Scheduled Actions; a daily digest email lists orders needing attention.
- Real-time delivery updates through a signed GoRoute webhook, connected from the settings page.
- An order edited after its invoice was issued is flagged once with the total it was issued for.
1.1.0
- Business customers. A VAT number field at checkout (block and classic) and on the order. An order with a VAT number gets a full tax invoice delivered to the buyer’s e-invoicing address over Peppol, with delivery status on the order; refunds raise a credit note to the buyer. Orders without one keep getting the simplified receipt with the Fawtara QR.
- Store default item type and classification code for business invoices, with a per-product override on the product’s General tab.
- Network lookup on the settings page: is a VAT number registered to receive e-invoices? The same check runs before every business invoice.
- A business buyer who is not on the network yet still gets an invoice: it is filed with the Tax Authority under the substitute address the Solution Architecture defines, the order shows “Reported to the Tax Authority”, and the PDF can be downloaded from the order page to send to the customer.
- Download PDF for every business invoice and credit note; credit notes show their own delivery state; a failed delivery can be retried from the order page.
1.0.3
- An order with no items or a zero total is no longer sent for invoicing; the order shows “Nothing to invoice” instead of a validation error, and nothing is retried.
- An E-Invoice column on the Orders list; the order box shows a verify link and any credit notes; a first-run notice points to the settings until the store is connected; the legal seller name and VAT number are checked on save.
- Validation refusals from the platform are shown in words rather than as raw JSON.
1.0.2
- Corrected the privacy policy URL in External Services, which returned a 404.
- Removed the bundled Arabic translation files; translations are served from translate.wordpress.org.
- The QR image is accepted only as a PNG data URI, the only form the service emits.
- Queued retry events are cleared on deactivation.
1.0.1
- Hardening for the plugin directory review: the QR is validated as an image data URI before it is ever printed, the admin QR alt text is translatable, and the retry handler’s nonce ordering is documented.
- readme: External Services states what the service returns and that nothing remote is loaded.
1.0.0
- First release: issue on payment, credit note on refund, QR on the thank-you page and in order emails, admin status box with retry, HPOS compatible.
