Actions and results
What each Tax button and automatic behaviour does, with worked numbers and what the system refuses.
On this page (21)
TaxesFiscal positionsInvoice (Sales)Vendor bill (Purchase)Credit noteSimulatorDeterminationsWithholdingCorporate taxReturnsReturn recordAdjustmentsTax registerTax to ledgerDocuments against the ledgerAny tax masterRegistrationsCountry packagesOverviewApplications > Tax > FeaturesApplications > Tax > Fields
Taxes
| Action | When | What you do | What happens |
|---|---|---|---|
| Install the UAE pack | New test company with no tax codes | Finance > Configuration > Taxes > Install a country's taxes > AE | Codes SR 5%, ZR 0%, EX 0%, OS 0%, RC 5% (purchase, reverse charge), IM 5% (import), BL 5% (0% recoverable) added with rates from 2018-01-01; running it again adds nothing ('already present') |
| Install the KSA pack | Second test company | Install SA | KSA codes installed (15% standard etc. as the pack defines); existing codes untouched |
| Dated rate change | Code SR 5% from 2018-01-01 open-ended | Close the window at 2026-12-31; add 6% from 2027-01-01 (test only); invoice dated 2026-12-31 and 2027-01-01 | First invoice charges 5%, second 6% (rate frozen on the line by document date) |
| Overlapping rate refused | SR 5% open-ended | Add 6% from 2027-01-01 without closing | Refused: 'SR already has a rate covering 2027-01-01. Close the existing window first.' |
| No rate for the date | Code with a rate only from 2027 | Use it on a 2026 invoice | Refused: '<code> has no rate for 2026-...' |
Fiscal positions
| Action | When | What you do | What happens |
|---|---|---|---|
| Export position by country | Position EXPORT automatic, Tax country SA, SR -> ZR; customer with tax country SA | Create an invoice line with SR | Line is charged ZR 0%; VAT 0.00; a domestic customer still gets SR 5% |
| Assigned beats automatic | Customer assigned position B; an automatic position A matches its country | Invoice the customer | Position B applies |
| Registered only | Position with Registered only = Yes | Invoice a customer without a TRN, then one with a TRN | Applies only to the one with a TRN |
| Remove the tax | SR -> Nothing at all | Invoice | Line carries no tax code at all (not zero rated) and does not appear on the return |
| Account substitution | Revenue 4000 -> 4100 for the position | Post an invoice to that customer | Revenue posts to 4100 |
Invoice (Sales)
| Action | When | What you do | What happens |
|---|---|---|---|
| Standard VAT | Line 1,000.00 with SR 5% | Post | Net 1,000.00, VAT 50.00, total 1,050.00; Dr Receivable 1,050 / Cr Revenue 1,000 / Cr Output VAT 50 |
| Zero rated vs exempt vs out of scope | Three lines 100.00 each: ZR, EX, OS | Post; open the tax register | VAT 0.00 on each; register shows three different treatments (zero / exempt / out_of_scope) - they land in different return boxes |
| Unrecoverable VAT on goods capitalised | Settings: Unrecoverable VAT on goods into cost ON; bill for stocked goods with BL | Post the bill | The non-recoverable VAT is added to the goods' cost (journal names it) |
| Cash rounding line is no supply | Invoice with a CASHROUND line | Prepare a return | The rounding line is not on the return |
| Determination at save | Settings: Documents take their tax code from rules ON; an active rule | Create an invoice line with no tax code; save | The line gets the rule's code at save |
| Determination frozen at posting | Same | Post the invoice; open the document meta / Determinations | A determination with source 'document' is recorded; its number is kept on the invoice |
| Settings off | Documents take their tax code from rules OFF | Save a line without a tax code | No code is filled by rules |
Vendor bill (Purchase)
| Action | When | What you do | What happens |
|---|---|---|---|
| Recoverable input tax | Bill line 1,000.00 SR 5% | Post | Dr Expense 1,000 / Dr Input VAT 50 / Cr Payable 1,050 |
| Blocked (non-recoverable) input tax | Bill line 1,000.00 with BL (5%, 0% recoverable) | Post | Supplier owed 1,050; the 50 is moved from input VAT to expense: net effect Dr Expense 1,050 / Cr Payable 1,050 |
| Reverse charge books output and input | Bill from a foreign supplier, line 1,000.00 with RC 5% (100% recoverable) | Post | Bill total 1,000.00 (supplier owed the net); journal: Dr Expense 1,000 / Cr Payable 1,000, plus Cr Output VAT 50 / Dr Input VAT 50 (net zero) |
| Reverse charge partly recoverable | RC code with recovery 50%; line 1,000 | Post | Output VAT 50 credited; input VAT 25 debited; 25 to expense |
Credit note
| Action | When | What you do | What happens |
|---|---|---|---|
| Credit note keeps the original rate | Invoice dated before a rate change (5%); rate later 6% (test) | Raise and post a credit note today | Credit note charges 5% (priced at the original invoice's date) |
Simulator
| Action | When | What you do | What happens |
|---|---|---|---|
| Rule decides zero rating for export | Active registration AE; active rule P10: ship_to_country ne AE -> ZR (exclusive) | Simulate: sale, today, ship-to SA, line 1,000 | Line ZR 0%, tax 0.00, explanation 'Rule <CODE> v1: ...'; estimate (nothing recorded) |
| Domestic falls to the next rule | Also rule P100: side eq sale -> SR | Simulate ship-to AE | SR 5%: tax 50.00 on 1,000 |
| Missing decisive fact refused | Rule P10 needs ship_to_country | Simulate without ship-to | Refused: 'Rule <CODE> needs ship_to_country to decide line 1. Give it rather than letting the tax be guessed.' |
| Rule conflict refused | Two exclusive rules at P10 giving different codes both match | Simulate | Refused: 'Rules A and B both decide line 1 at priority 10. Resolve the conflict; no rule is picked arbitrarily.' |
| No rule, no code | No rule matches; tax code 'By the rules' | Simulate | Refused: 'No rule decides line 1 and it names no tax code. Nothing is defaulted.' |
| Registration not in force | Registration valid until 2025-12-31 only | Simulate a 2026 date | Refused: 'The AE VAT registration ended on 2025-12-31; nothing covers 2026-...' |
| No registration at all | Company with no registration | Simulate | Works, with warning 'No AE VAT registration is recorded for this company.' |
| Certificate required | Rule gives EX only with a certificate; customer without one | Simulate | Refused: 'Rule <CODE> gives EX only with a valid exemption certificate, and none covers <date>.'; add and activate a certificate -> EX given |
| Tax-inclusive amounts | Amounts include tax ticked | Line 1,050.00 at SR | Net 1,000.00, tax 50.00, gross 1,050.00 |
| Line vs document rounding | Policy A: line; Policy B: document, 2 places, half up | Three lines 0.10 at 5% under each | Line rounding: 0.01 x 3 = 0.03 (0.005 each rounds up); document rounding: total 0.015 -> 0.02, spread to the largest remainders (0.01, 0.01, 0.00) |
| Classification drives a rule | Product class MED (members MED-001); rule product_class eq MED -> ZR | Simulate with product MED-001 | ZR; facts show product_class [MED] |
| Buyer registered fact | Rule buyer_registered eq true -> X | Simulate for a customer with a TRN vs without | Rule applies only to the customer with a TRN |
| Return boxes shown | Active AE form with boxes | Simulate | Each line lists the boxes it would count in (e.g. FORM:1a) |
| Record a determination | Record determination | Saved with a number, facts, rules with revisions, input/output SHA-256; listed in Determinations |
Determinations
| Action | When | What you do | What happens |
|---|---|---|---|
| Same input = same record | Record the same request twice (same source) | Second answer 'replayed' - same number, no new record | |
| Verify against today's rules | A recorded determination; then archive its rule and activate a different one | Open > Check against today's rules | 'The frozen record matches its hash.' and 'Today's rules would answer differently: ...' |
Withholding
| Action | When | What you do | What happens |
|---|---|---|---|
| Withholding over a threshold with accumulation | Rule: yearly threshold 50,000, rate 5% | Work out 30,000 (record); then 40,000 for the same payee and year | First: subject 0, withheld 0.00. Second: accumulated 30,000, subject 20,000, withheld 1,000.00, net payment 39,000.00 |
| Rule outside its dates | Rule valid from next year | Work out today | Refused: '<CODE> does not apply on <date>.' |
Corporate tax
| Action | When | What you do | What happens |
|---|---|---|---|
| Workpaper from the ledger | Posted income 1,000,000 and expense 500,000 in 2026; policy 9% above 375,000 | New workpaper 2026-01-01 to 2026-12-31 with the policy | Accounting profit 500,000.00; taxable 500,000.00; tax = (500,000 - 375,000) x 9% = 11,250.00 |
| Adjustments | Draft workpaper | Edit adjustments: permanent +20,000 'Entertainment disallowed' | Taxable 520,000.00; tax 13,050.00 |
| No rate, no tax | Policy with rate 0 (or none) | Create workpaper | Taxable shown; tax 0.00 'No rate configured: no tax worked out' |
| Review recomputes; approve; reopen | Workpaper by A | B reviews (recomputed from the ledger); C approves; (before approving) B reopens | States move Draft > Reviewed > Approved; reopen returns to Draft |
Returns
| Action | When | What you do | What happens |
|---|---|---|---|
| Create a return | Active registration AE and active AE VAT form | Tax > Returns > New: registration, form, 1 Jul - 30 Sep | Draft return with a number; version 1 |
| Overlapping period refused | Return for Q3 exists | New return 1 Sep - 31 Oct | Refused: '<number> already covers part of this period. Amend it instead.' |
Return record
| Action | When | What you do | What happens |
|---|---|---|---|
| Prepare fills the boxes | Q3: invoice 1,000 + 50 SR; credit note 100 + 5; bill 400 + 20 recoverable; RC bill 1,000 (50/50) | Prepare | Output tax 50 - 5 + 50 (reverse charge) = 95.00; recoverable 20 + 50 = 70.00; payable 25.00; source lines listed with their boxes; snapshot SHA-256 |
| Box mapping by treatment and place of supply | Form boxes: 1a standard AUH, 1b standard DXB, 2 zero rated, 3 exempt | Invoices with place_of_supply AUH and DXB, a ZR and an EX line; prepare | Each net amount lands only in its own box |
| Notes reduce the box | Credit note in the period | Prepare | Credit note amounts are negative in the boxes |
| Ledger reconciliation | Only invoice-driven tax in the period | Prepare; open Reconciliation | Return output/recoverable equal ledger; difference 0.00 |
| Unexplained difference blocks approval | Form tolerance 0; a document's journal edited/posted with different tax (or manual tax journal linked) | Prepare; review; approve | Approve refused: 'The return differs from the tax accounts by <x>. Explain the difference before approval.' |
| Explain then approve | Same | Send back to draft; Explain difference; prepare; review; approve (different people) | Approved |
| Lines without a tax code block approval | A posted line with no tax code in the period | Prepare; try to approve | Exception 'n posted lines carry no tax code and fit no box.' listed; approval refused |
| Registration not covering the period | Registration ending mid-period | Prepare | Exception 'Registration <CODE> does not cover the whole period.'; approval refused |
| Prepare again recalculates | Prepared return; post another invoice in the period | Prepare again | Boxes and lines updated; new hash |
| Review | Prepared by A | B: Review | Reviewed by B |
| Send back | Prepared or reviewed | Reviewer: Send back (reject) | Draft again; reviewer cleared |
| Approve | Reviewed by B, no blockers | C: Approve | Approved by C; event tax.return_approved.v1; locked |
| Submit with authority reference | Approved | Submit with reference FTA-SUB-0001 | Submitted; submitted by/at recorded; event tax.return_submitted.v1 |
| Acknowledge | Submitted | Acknowledgement with reference FTA-ACK-0001 | Acknowledged; reference stored |
| Amend creates a new version | Submitted Q3 v1; a late invoice dated in Q3 posted | Amend with a reason; prepare v2 | v1 becomes 'Amended' (superseded); v2 draft linked; after prepare the Amendment bridge shows before/after/change per box |
| Carry forward a refund | Q2 submitted with payable -3,000.00 (refundable) | Prepare Q3 | Carried forward in 3,000.00; payable reduced by it |
| Approved is never edited | Approved return | Explain difference / PUT boxes (API) | Refused: 'An approved or submitted return is not edited. Amend it: a new version is linked to this one.' |
| Wrong-state actions | Approve a draft; submit a reviewed return (API) | 'A draft return cannot be approved.' / 'A reviewed return cannot be submitted.' | |
| Group return | Tax groups ON; group G with company A (from 1 Jan) and B (from 1 Aug); registration with group code G | Prepare Q3 for the group registration | A's lines for Jul-Sep and B's only from 1 Aug |
Adjustments
| Action | When | What you do | What happens |
|---|---|---|---|
| Bad-debt relief | Invoice 1,050 (50 VAT) dated 7+ months ago, written off in Accounting; settings 6 months | Bad-debt relief: invoice, customer told on, blank amount, reason; Propose | Proposed: net -1,000, tax -50 on the invoice's code(s) in proportion |
| Bad-debt relief too early | Invoice dated 2 months ago | Propose | Refused: 'Relief can be claimed from <date>: 6 months after the date of supply (<date>).' |
| Post bad-debt relief (another person) | Proposed by A | B: Post | Journal Dr Output VAT 50 / Cr Write-off account 50; state posted; the return of its period shows -50 output |
| Customer paid: recovery | Posted relief | Customer paid: reverse; another person posts | Recovery posted: Dr Write-off 50 / Cr Output VAT 50; the relief shows Reversed; a second reverse is refused 'That relief is already being reversed.' |
| Import VAT reverse charged | Code IM 5% | Import VAT: declaration DXB-IMP-1, customs value 20,000, method reverse charge; Propose; another person posts | Tax 1,000.00; journal Dr Input VAT 1,000 / Cr Output VAT 1,000; return shows both |
| Import VAT paid at the border | Paid from account 1110 (bank) | Method Paid; post | Dr Input VAT 1,000 / Cr 1110 1,000 |
| Declared VAT check | Customs value 20,000, VAT 900 | Refused: "The declaration's VAT 900.00 is not 5.0000% of 20000.00 (1000.00); check the value or the tax code." | |
| Reject | Proposed adjustment | Reject with a reason | Rejected; reason appended ' | rejected: ...'; nothing posted |
Tax register
| Action | When | What you do | What happens |
|---|---|---|---|
| Register totals | Posted documents in the period | Open Tax register | Output, Input, Recoverable and Net payable equal the return's figures for the same period |
Tax to ledger
| Action | When | What you do | What happens |
|---|---|---|---|
| Reconciles | Normal postings | Open Tax to ledger | Documents = Ledger per account; difference 0.00 |
Documents against the ledger
| Action | When | What you do | What happens |
|---|---|---|---|
| Per-document check | One imported/old document whose journal differs | Open the ledger check | '1 documents do not tie' and that document listed with register vs ledger |
Any tax master
| Action | When | What you do | What happens |
|---|---|---|---|
| Activate by somebody else | A creates a rule | A: Activate; B: Activate | A refused: 'Somebody other than the person who prepared this determination rule must decide it.'; B: Active |
| Active is not edited | Active registration | Edit (API) | Refused: 'An active tax registration is not edited. Archive it and create a new one.' |
Registrations
| Action | When | What you do | What happens |
|---|---|---|---|
| Overlapping registration refused | Active AE VAT registration open-ended | Activate a second AE VAT one from today | Refused: '<CODE> already covers these dates for this tax and branch.' |
Country packages
| Action | When | What you do | What happens |
|---|---|---|---|
| Package needs a legal source | No active legal source for AE | Activate an AE package | Refused: 'A country package rests on at least one active legal source...'; after activating a source it activates and emits tax.package_activated.v1 |
Overview
| Action | When | What you do | What happens |
|---|---|---|---|
| Exceptions | Registration ending in 20 days; certificate ending in 10 days; posted line with no tax code this quarter | Open Overview | Each shows in Exceptions with Blocks/Check and opens its list |
Applications > Tax > Features
| Action | When | What you do | What happens |
|---|---|---|---|
| Determination off | Admins A and B | A: Determination Off; propose; B approves; open Simulate (direct link), POST simulate | Menus Simulate/Determinations hidden; API refused as turned off |
| Corporate tax off blocked | A draft workpaper | Propose Corporate tax Off | Blocked '1 workpaper(s) are not approved yet. Approve them first.' |
| Tax groups off blocked | Active registration with a group code | Propose Tax groups Off | Blocked '... file as a group. Archive or change them first.' |
| Return controls protected | Try to turn off 'Return approval controls and ledger check' | Locked |
Applications > Tax > Fields
| Action | When | What you do | What happens |
|---|---|---|---|
| Authority reference required | Set Required (approved); submit a return without a reference | Refused: "Enter the authority's reference: this company requires it on submission." |