Oman VAT primer — Royal Decree 121/2020
5% standard rate effective 16 April 2021. Three categories (standard / zero-rated / exempt). 11-digit Tax Registration Number (TRN). Compliant tax invoice format. Quarterly filing for most entities. Dated rate versioning so historic invoices use the rate that was in force on issue date.
The 3 VAT categories
| Category | Rate | Examples (illustrative) |
|---|---|---|
| Standard-rated | 5% | Most goods + services. Audit fees. Consultancy. Bookkeeping. General trade. |
| Zero-rated | 0% | Exports outside GCC · international transport · investment in gold/silver · certain financial services · qualifying medicines + medical equipment · qualifying food items · oil + gas + their derivatives |
| Exempt | (no VAT applied; no input VAT recovery) | Residential rental · certain financial services · qualifying healthcare · qualifying education |
This is illustrative. The full schedule is in the Royal Decree + OTA Executive Regulations + ministerial decisions. Audit firms must keep a current schedule in their methodology library.
Zero-rated vs Exempt — the critical difference
| Aspect | Zero-rated | Exempt |
|---|---|---|
| Output VAT charged | 0% | None |
| Input VAT recoverable | YES — full | NO |
| Reported on VAT return | YES (zero-rated bucket) | YES (exempt bucket) |
| Qualifies for export refund | YES | NO |
For audit firm clients in mixed-supply situations (some zero, some exempt), input-VAT apportionment is required. AuditPro's apportionment formula is documented per client.
VAT registration thresholds
- Mandatory: turnover > OMR 38,500 in any 12-month rolling period
- Voluntary: turnover > OMR 19,250 — can opt in
- Below 19,250: not eligible to register
Once registered, OTA issues an 11-digit TRN starting with country code OM1. Format: OM1XXXXXXXXX.
Compliant tax invoice format
Per RD 121/2020 Article 12 + Executive Regulations, every tax invoice must contain:
The phrase "Tax Invoice"
Prominent on the document. Not "Invoice" or "Bill" alone.
Sequential invoice number
Per supplier. Atomic. Never reused.
Issue date
Drives the VAT period the invoice falls into.
Supplier name + address + TRN
Full legal name, registered address, 11-digit OM TRN.
Customer name + address + TRN (if registered)
If customer is VAT-registered. If not, name + address suffice.
Description of goods/services
Sufficiently detailed that nature is clear. "Audit fee FY 2025" not just "Service".
Unit price excluding VAT
Per line.
VAT rate + VAT amount per line
5% / 0% / exempt clearly labeled.
Total excluding VAT, total VAT, total including VAT
Roll-up at footer.
Currency (if not OMR)
And the OMR equivalent at FX rate.
The branded tax invoice PDF template (chapter 8) implements all 10. Don't customise the template without re-validating compliance.
The TRN format
11 digits starting with OM1. Example: OM1100012345. Light validation on input — exact 11 chars, alphanumeric, starts with OM1. Stored on:
companies.vat_trn— firm's own TRNclients.vat_trn— each VAT-registered client- Required on tax invoice PDFs for both supplier + customer
Filing frequency
| Turnover band | Frequency | Deadline |
|---|---|---|
| Standard | Quarterly | 30 days after quarter-end (Q1 due 30 April, Q2 due 30 July, etc.) |
| Large taxpayers (announced by OTA) | Monthly | 30 days after month-end |
| Small (per OTA discretion) | Annual / quarterly | Per OTA notice |
Late filing penalty: OMR 500 + 1% per month interest on tax payable. Tracking deadlines via M20 Compliance Calendar is essential.
Dated rate versioning
The system supports rate-versioning so historic invoices reflect the rate in force on their issue date. Currently only one rate (5% from 16-Apr-2021), but the architecture is ready for future rate changes.
Stored in vat_rates table:
category— standard / zero / exemptrate— DECIMAL(5,2) e.g. 5.00effective_from·effective_tolabel— "Standard 5%" etc.
Lookup is VatService::resolveRate($category, $issueDate) — returns the rate row whose dates contain the issue date. Rolling forward is just an UPDATE to the previous row's effective_to + INSERT of the new row.
Reverse charge mechanism
For services imported by a VAT-registered Oman entity from a non-resident supplier, the recipient self-accounts (output VAT + input VAT in same return, net effect zero if fully recoverable). The system supports this via:
invoices.is_reverse_chargeflag- VAT shown on PDF as informational only ("VAT to be self-accounted by recipient under reverse charge per Article X")
- Reports flag reverse-charge supplies separately
Open Settings → References → VAT Rates. The standard 5% row from 16-Apr-2021 is there. If a rate change is announced (say to 6% from 1-Jan-2027), add a new row + set the old row's effective_to to 31-Dec-2026. Future invoices auto-pick the new rate; historic ones unaffected.
VAT exemptions are NOT a free pass — exempt suppliers can't recover input VAT, so they bear the cost. Always check whether the client is in mixed-supply situation. Apportion input VAT correctly. Audit-firm clients often miss this and over-claim refunds, which OTA reverses with penalties.
OTA periodically issues ministerial decisions adding / amending zero-rated and exempt categories. Subscribe to OTA bulletins, update the firm's VAT methodology library quarterly. Standardise across all client engagements — inconsistent treatment is a red flag.