How the Nigeria VAT calculator is verified
Inputs
| Input | Field | Type |
|---|---|---|
| Amount (₦) | amount | number |
| This amount is | direction | string |
| What is being supplied | category | string |
| Your business bought from a non-resident that did not charge VAT (s.150(2)) | reverseCharge | boolean |
| Your annual turnover (₦) | annualTurnover | number |
| Your total fixed assets (₦) | fixedAssets | number |
| The business provides professional services | professionalServices | boolean |
The formula
Each derived value below is computed by the Valem engine from the expression shown, in this order. Nothing else runs — there is no hidden code path.
| Derived value | Field | Formula (JSONata) |
|---|---|---|
| Rate | rate | category = 'standard' ? $const.vatRate : $const.zeroRate |
| Effective Rate | effectiveRate | reverseCharge ? 0 : rate |
| Value excluding VAT | netAmount | direction = 'remove' ? $round(amount / (1 + effectiveRate), 2) : $round(amount, 2) |
| VAT charged | vatAmount | $round(netAmount * effectiveRate, 2) |
| VAT you self-account and remit (s.150(2)) | selfAccountedVat | reverseCharge ? $round(netAmount * rate, 2) : 0 |
| Gross | grossAmount | $round(netAmount + vatAmount, 2) |
| Must register, charge VAT and file monthly | mustRegister | $n(annualTurnover) > $const.smallBusinessTurnover or $n(fixedAssets) > $const.smallBusinessFixedAssets or professionalServices |
Rates and thresholds
The expressions above read these as $const. They are the figures the annual refresh replaces, so they live as data rather than being written into the formulas — which is what makes a year-on-year change a one-line diff instead of an edit to arithmetic.
| Constant | Value |
|---|---|
vatRate | 0.075 |
zeroRate | 0 |
smallBusinessTurnover | 100000000 |
smallBusinessFixedAssets | 250000000 |
Test vectors (9)
Every case is executed against this model on each build, by the Java engine and independently by a JavaScript one. A mismatch of a single cent fails the build, so the page cannot ship advertising a figure the model no longer produces.
Case 1 — V1 ₦100,000 of taxable goods: 7.5% = ₦7,500
given amount | 100000 |
|---|---|
given direction | add |
given category | standard |
given reverseCharge | no |
given annualTurnover | 0 |
given fixedAssets | 0 |
given professionalServices | no |
expect vatAmount | 7500 |
expect grossAmount | 107500 |
expect effectiveRate | 0.075 |
Case 2 — V2 ₦107,500 including VAT back to ₦100,000
given amount | 107500 |
|---|---|
given direction | remove |
given category | standard |
given reverseCharge | no |
given annualTurnover | 0 |
given fixedAssets | 0 |
given professionalServices | no |
expect netAmount | 100000 |
expect vatAmount | 7500 |
Case 3 — V3 zero-rated basic food: 0%
given amount | 100000 |
|---|---|
given direction | add |
given category | zeroRated |
given reverseCharge | no |
given annualTurnover | 0 |
given fixedAssets | 0 |
given professionalServices | no |
expect rate | 0 |
expect vatAmount | 0 |
expect grossAmount | 100000 |
Case 4 — V4 an exempt supply of land carries no VAT
given amount | 100000 |
|---|---|
given direction | add |
given category | exempt |
given reverseCharge | no |
given annualTurnover | 0 |
given fixedAssets | 0 |
given professionalServices | no |
expect vatAmount | 0 |
expect grossAmount | 100000 |
Case 5 — V5 ₦200,000 of services from a non-resident: the buyer self-accounts ₦15,000
given amount | 200000 |
|---|---|
given direction | add |
given category | standard |
given reverseCharge | yes |
given annualTurnover | 0 |
given fixedAssets | 0 |
given professionalServices | no |
expect vatAmount | 0 |
expect selfAccountedVat | 15000 |
expect grossAmount | 200000 |
Case 6 — V6 turnover of exactly ₦100 million is still a small business
given amount | 100000 |
|---|---|
given direction | add |
given category | standard |
given reverseCharge | no |
given annualTurnover | 100000000 |
given fixedAssets | 0 |
given professionalServices | no |
expect mustRegister | false |
Case 7 — V7 ₦1 above ₦100 million must register
given amount | 100000 |
|---|---|
given direction | add |
given category | standard |
given reverseCharge | no |
given annualTurnover | 100000001 |
given fixedAssets | 0 |
given professionalServices | no |
expect mustRegister | true |
Case 8 — V8 professional services are never a small business
given amount | 100000 |
|---|---|
given direction | add |
given category | standard |
given reverseCharge | no |
given annualTurnover | 5000000 |
given fixedAssets | 0 |
given professionalServices | yes |
expect mustRegister | true |
Case 9 — V9 fixed assets above ₦250 million must register
given amount | 100000 |
|---|---|
given direction | add |
given category | standard |
given reverseCharge | no |
given annualTurnover | 5000000 |
given fixedAssets | 250000001 |
given professionalServices | no |
expect mustRegister | true |
Sources
- Nigeria Tax Act 2025 (Act No. 7, in force 1 Jan 2026) ss.147, 185, 186: 7.5%, exempt, 0% · checked 2026-11-01
- Nigeria Tax Administration Act 2025 ss.22(4)-(5), 147: small business ₦100m / ₦250m · checked 2026-11-01
Check it yourself — and reuse it
The whole model as JSON — inputs, outputs, formulas, vectors and sources in one re-runnable document.
This model is published under CC BY 4.0: use it, adapt it, build on it, with attribution. The licence covers the model — the expression of each rule and the arrangement of the catalog. The rates and thresholds are law, and nobody licenses those; the sources above are where they come from.
← Back to the Nigeria VAT calculator
Built with Valem — a live, verifiable calculator you can fork and embed.