Description
From 2027, VAT-registered businesses in Oman must issue e-invoices. Tax Authority Decision No. 189/2026 sets 1 April 2027 for businesses above OMR 5,000,000 in annual supplies and 1 October 2027 for every remaining VAT registrant. Selling online does not exempt a store from either date.
GoRoute E-Invoicing connects your WooCommerce store to GoRoute, an accredited Fawtara service provider and certified Peppol Access Point (POP000991). Connect the store once; every paid order is invoiced correctly from then on, and the tax report is filed with the Oman Tax Authority without anyone touching it.
Consumer orders
- A simplified tax invoice with the Fawtara QR code, built to the Tax Authority’s specification.
- Shown on the order-received page, in the order email and under My Account, with a verify link and a PDF.
- The Tax Data Document is filed with the Authority automatically.
Business customers
- An optional VAT number field at checkout. An order with an Oman VAT number becomes a full tax invoice, delivered to the buyer’s e-invoicing address over the Peppol network.
- Delivery status on the order, a PDF for every document, and a credit note on refund that cites the original invoice.
- A buyer not yet on the network is filed with the Authority under the address the Solution Architecture defines, and you send them the PDF from the order page.
- A network lookup on the settings page tells you whether any VAT number, yours or a customer’s, is registered to receive e-invoices.
Refunds, retries and reports
- Every refund raises a credit note. Partial refunds credit only the refunded lines.
- 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 and a daily digest lists anything that needs a person.
- A monthly E-Invoice report gives the net, VAT and gross figures for the VAT return, with a CSV export.
How to send an invoice
A consumer sale (B2C). The customer checks out and pays, leaving the VAT number field empty. The moment the order is paid, or you mark it Completed, the simplified tax invoice with the Fawtara QR is issued and the tax report filed. The customer sees the QR on the order-received page, in the email and under My Account; you see it in the GoRoute E-Invoice box on the order. For an order you create by hand: add the items, set the billing country to Oman, click Recalculate so VAT is applied, then set it to Completed.
A business sale (B2B). The customer enters their Oman VAT number and company name at checkout, or you type them into the billing form of an order you create. The plugin checks whether that VAT number is registered on the network. Registered: a full tax invoice is delivered to the buyer’s e-invoicing address over Peppol and the order shows the delivery state. Not registered yet: the invoice is filed with the Tax Authority under the address the Solution Architecture defines, the order shows “Reported to the Tax Authority”, and you send the customer the PDF from the order page. A business invoice carries no QR.
A refund. Refund in WooCommerce as usual; a credit note referencing the invoice is issued and delivered or filed the same way. The full step-by-step guide, with what to do when something is refused, is under WooCommerce E-Invoicing guide.
Before the first invoice
A Store readiness panel checks the five things a truthful Oman tax document depends on: a connection to GoRoute, your VAT number registered on the network, taxes on with the Oman 5% rate, the site clock on Muscat time, and prices in rials to three decimals. Each red row has its fix beside it, including a one-click Oman VAT rate. Products in zero-rated or exempt tax classes are declared correctly on the invoice.
Requires a GoRoute account
The plugin is free. A GoRoute subscription is what issues the documents; plans start at OMR 25 per month including 1,000 documents. Press “Connect to GoRoute” on the settings page to create an account or sign in, and the store is connected in one step. Create an account at https://goroute.ai/ if you prefer to do that first.
External Services
This plugin connects to the GoRoute e-invoicing API at https://goroute.ai to issue tax documents. It is useless without it, by design: the compliance rules, validation and QR construction live on the service so they stay current when Oman changes a rule.
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, email, company, address and VAT number if present.
- On “Connect to GoRoute”: your store’s address and name, so GoRoute can issue the store its own key.
- On “Test connection” and “Look up”: a single authenticated read to verify the key or to ask whether a VAT number is on the network.
- 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, a verification URL, the QR code as an inline image stored on the order, delivery status for business documents, and PDFs on request. The plugin loads no remote scripts, styles or images.
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 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? Set the store’s default item classification on the same page. A customer who enters a VAT number at checkout then receives a full tax invoice over Peppol.
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 Omani 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. An order with a valid Oman VAT number gets a full tax invoice to that buyer, delivered to their e-invoicing address through the Peppol network by GoRoute, and the order shows the delivery status. Orders without a VAT number get the simplified tax invoice with the Fawtara QR code.
-
What if the business customer is not on the e-invoicing network yet?
-
The invoice is still issued. Oman’s rollout is gradual, and the Solution Architecture provides for exactly this case: the document is filed with the Tax Authority under the substitute address for a buyer not yet on the network, and you send the customer the PDF, which the order page lets you download. The order shows “Reported to the Tax Authority” rather than “Delivered”, and 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 Oman VAT number, 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?
-
Taxes on with the Oman 5% rate, the site clock on Muscat time, prices in rials to three decimals, and the store’s own VAT number registered on the network. 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 Oman 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 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 Tax Authority 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 as you choose. 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 on a refund?
-
A credit note is issued referencing the original invoice and 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
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.
