Actions and results

What each Tax button and automatic behaviour does, with worked numbers and what the system refuses.

On this page (21)

Taxes

ActionWhenWhat you doWhat happens
Install the UAE packNew test company with no tax codesFinance > Configuration > Taxes > Install a country's taxes > AECodes 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 packSecond test companyInstall SAKSA codes installed (15% standard etc. as the pack defines); existing codes untouched
Dated rate changeCode SR 5% from 2018-01-01 open-endedClose the window at 2026-12-31; add 6% from 2027-01-01 (test only); invoice dated 2026-12-31 and 2027-01-01First invoice charges 5%, second 6% (rate frozen on the line by document date)
Overlapping rate refusedSR 5% open-endedAdd 6% from 2027-01-01 without closingRefused: 'SR already has a rate covering 2027-01-01. Close the existing window first.'
No rate for the dateCode with a rate only from 2027Use it on a 2026 invoiceRefused: '<code> has no rate for 2026-...'

Fiscal positions

ActionWhenWhat you doWhat happens
Export position by countryPosition EXPORT automatic, Tax country SA, SR -> ZR; customer with tax country SACreate an invoice line with SRLine is charged ZR 0%; VAT 0.00; a domestic customer still gets SR 5%
Assigned beats automaticCustomer assigned position B; an automatic position A matches its countryInvoice the customerPosition B applies
Registered onlyPosition with Registered only = YesInvoice a customer without a TRN, then one with a TRNApplies only to the one with a TRN
Remove the taxSR -> Nothing at allInvoiceLine carries no tax code at all (not zero rated) and does not appear on the return
Account substitutionRevenue 4000 -> 4100 for the positionPost an invoice to that customerRevenue posts to 4100

Invoice (Sales)

ActionWhenWhat you doWhat happens
Standard VATLine 1,000.00 with SR 5%PostNet 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 scopeThree lines 100.00 each: ZR, EX, OSPost; open the tax registerVAT 0.00 on each; register shows three different treatments (zero / exempt / out_of_scope) - they land in different return boxes
Unrecoverable VAT on goods capitalisedSettings: Unrecoverable VAT on goods into cost ON; bill for stocked goods with BLPost the billThe non-recoverable VAT is added to the goods' cost (journal names it)
Cash rounding line is no supplyInvoice with a CASHROUND linePrepare a returnThe rounding line is not on the return
Determination at saveSettings: Documents take their tax code from rules ON; an active ruleCreate an invoice line with no tax code; saveThe line gets the rule's code at save
Determination frozen at postingSamePost the invoice; open the document meta / DeterminationsA determination with source 'document' is recorded; its number is kept on the invoice
Settings offDocuments take their tax code from rules OFFSave a line without a tax codeNo code is filled by rules

Vendor bill (Purchase)

ActionWhenWhat you doWhat happens
Recoverable input taxBill line 1,000.00 SR 5%PostDr Expense 1,000 / Dr Input VAT 50 / Cr Payable 1,050
Blocked (non-recoverable) input taxBill line 1,000.00 with BL (5%, 0% recoverable)PostSupplier 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 inputBill from a foreign supplier, line 1,000.00 with RC 5% (100% recoverable)PostBill 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 recoverableRC code with recovery 50%; line 1,000PostOutput VAT 50 credited; input VAT 25 debited; 25 to expense

Credit note

ActionWhenWhat you doWhat happens
Credit note keeps the original rateInvoice dated before a rate change (5%); rate later 6% (test)Raise and post a credit note todayCredit note charges 5% (priced at the original invoice's date)

Simulator

ActionWhenWhat you doWhat happens
Rule decides zero rating for exportActive registration AE; active rule P10: ship_to_country ne AE -> ZR (exclusive)Simulate: sale, today, ship-to SA, line 1,000Line ZR 0%, tax 0.00, explanation 'Rule <CODE> v1: ...'; estimate (nothing recorded)
Domestic falls to the next ruleAlso rule P100: side eq sale -> SRSimulate ship-to AESR 5%: tax 50.00 on 1,000
Missing decisive fact refusedRule P10 needs ship_to_countrySimulate without ship-toRefused: 'Rule <CODE> needs ship_to_country to decide line 1. Give it rather than letting the tax be guessed.'
Rule conflict refusedTwo exclusive rules at P10 giving different codes both matchSimulateRefused: 'Rules A and B both decide line 1 at priority 10. Resolve the conflict; no rule is picked arbitrarily.'
No rule, no codeNo rule matches; tax code 'By the rules'SimulateRefused: 'No rule decides line 1 and it names no tax code. Nothing is defaulted.'
Registration not in forceRegistration valid until 2025-12-31 onlySimulate a 2026 dateRefused: 'The AE VAT registration ended on 2025-12-31; nothing covers 2026-...'
No registration at allCompany with no registrationSimulateWorks, with warning 'No AE VAT registration is recorded for this company.'
Certificate requiredRule gives EX only with a certificate; customer without oneSimulateRefused: 'Rule <CODE> gives EX only with a valid exemption certificate, and none covers <date>.'; add and activate a certificate -> EX given
Tax-inclusive amountsAmounts include tax tickedLine 1,050.00 at SRNet 1,000.00, tax 50.00, gross 1,050.00
Line vs document roundingPolicy A: line; Policy B: document, 2 places, half upThree lines 0.10 at 5% under eachLine 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 ruleProduct class MED (members MED-001); rule product_class eq MED -> ZRSimulate with product MED-001ZR; facts show product_class [MED]
Buyer registered factRule buyer_registered eq true -> XSimulate for a customer with a TRN vs withoutRule applies only to the customer with a TRN
Return boxes shownActive AE form with boxesSimulateEach line lists the boxes it would count in (e.g. FORM:1a)
Record a determinationRecord determinationSaved with a number, facts, rules with revisions, input/output SHA-256; listed in Determinations

Determinations

ActionWhenWhat you doWhat happens
Same input = same recordRecord the same request twice (same source)Second answer 'replayed' - same number, no new record
Verify against today's rulesA recorded determination; then archive its rule and activate a different oneOpen > Check against today's rules'The frozen record matches its hash.' and 'Today's rules would answer differently: ...'

Withholding

ActionWhenWhat you doWhat happens
Withholding over a threshold with accumulationRule: yearly threshold 50,000, rate 5%Work out 30,000 (record); then 40,000 for the same payee and yearFirst: subject 0, withheld 0.00. Second: accumulated 30,000, subject 20,000, withheld 1,000.00, net payment 39,000.00
Rule outside its datesRule valid from next yearWork out todayRefused: '<CODE> does not apply on <date>.'

Corporate tax

ActionWhenWhat you doWhat happens
Workpaper from the ledgerPosted income 1,000,000 and expense 500,000 in 2026; policy 9% above 375,000New workpaper 2026-01-01 to 2026-12-31 with the policyAccounting profit 500,000.00; taxable 500,000.00; tax = (500,000 - 375,000) x 9% = 11,250.00
AdjustmentsDraft workpaperEdit adjustments: permanent +20,000 'Entertainment disallowed'Taxable 520,000.00; tax 13,050.00
No rate, no taxPolicy with rate 0 (or none)Create workpaperTaxable shown; tax 0.00 'No rate configured: no tax worked out'
Review recomputes; approve; reopenWorkpaper by AB reviews (recomputed from the ledger); C approves; (before approving) B reopensStates move Draft > Reviewed > Approved; reopen returns to Draft

Returns

ActionWhenWhat you doWhat happens
Create a returnActive registration AE and active AE VAT formTax > Returns > New: registration, form, 1 Jul - 30 SepDraft return with a number; version 1
Overlapping period refusedReturn for Q3 existsNew return 1 Sep - 31 OctRefused: '<number> already covers part of this period. Amend it instead.'

Return record

ActionWhenWhat you doWhat happens
Prepare fills the boxesQ3: invoice 1,000 + 50 SR; credit note 100 + 5; bill 400 + 20 recoverable; RC bill 1,000 (50/50)PrepareOutput 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 supplyForm boxes: 1a standard AUH, 1b standard DXB, 2 zero rated, 3 exemptInvoices with place_of_supply AUH and DXB, a ZR and an EX line; prepareEach net amount lands only in its own box
Notes reduce the boxCredit note in the periodPrepareCredit note amounts are negative in the boxes
Ledger reconciliationOnly invoice-driven tax in the periodPrepare; open ReconciliationReturn output/recoverable equal ledger; difference 0.00
Unexplained difference blocks approvalForm tolerance 0; a document's journal edited/posted with different tax (or manual tax journal linked)Prepare; review; approveApprove refused: 'The return differs from the tax accounts by <x>. Explain the difference before approval.'
Explain then approveSameSend back to draft; Explain difference; prepare; review; approve (different people)Approved
Lines without a tax code block approvalA posted line with no tax code in the periodPrepare; try to approveException 'n posted lines carry no tax code and fit no box.' listed; approval refused
Registration not covering the periodRegistration ending mid-periodPrepareException 'Registration <CODE> does not cover the whole period.'; approval refused
Prepare again recalculatesPrepared return; post another invoice in the periodPrepare againBoxes and lines updated; new hash
ReviewPrepared by AB: ReviewReviewed by B
Send backPrepared or reviewedReviewer: Send back (reject)Draft again; reviewer cleared
ApproveReviewed by B, no blockersC: ApproveApproved by C; event tax.return_approved.v1; locked
Submit with authority referenceApprovedSubmit with reference FTA-SUB-0001Submitted; submitted by/at recorded; event tax.return_submitted.v1
AcknowledgeSubmittedAcknowledgement with reference FTA-ACK-0001Acknowledged; reference stored
Amend creates a new versionSubmitted Q3 v1; a late invoice dated in Q3 postedAmend with a reason; prepare v2v1 becomes 'Amended' (superseded); v2 draft linked; after prepare the Amendment bridge shows before/after/change per box
Carry forward a refundQ2 submitted with payable -3,000.00 (refundable)Prepare Q3Carried forward in 3,000.00; payable reduced by it
Approved is never editedApproved returnExplain 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 actionsApprove a draft; submit a reviewed return (API)'A draft return cannot be approved.' / 'A reviewed return cannot be submitted.'
Group returnTax groups ON; group G with company A (from 1 Jan) and B (from 1 Aug); registration with group code GPrepare Q3 for the group registrationA's lines for Jul-Sep and B's only from 1 Aug

Adjustments

ActionWhenWhat you doWhat happens
Bad-debt reliefInvoice 1,050 (50 VAT) dated 7+ months ago, written off in Accounting; settings 6 monthsBad-debt relief: invoice, customer told on, blank amount, reason; ProposeProposed: net -1,000, tax -50 on the invoice's code(s) in proportion
Bad-debt relief too earlyInvoice dated 2 months agoProposeRefused: 'Relief can be claimed from <date>: 6 months after the date of supply (<date>).'
Post bad-debt relief (another person)Proposed by AB: PostJournal Dr Output VAT 50 / Cr Write-off account 50; state posted; the return of its period shows -50 output
Customer paid: recoveryPosted reliefCustomer paid: reverse; another person postsRecovery 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 chargedCode IM 5%Import VAT: declaration DXB-IMP-1, customs value 20,000, method reverse charge; Propose; another person postsTax 1,000.00; journal Dr Input VAT 1,000 / Cr Output VAT 1,000; return shows both
Import VAT paid at the borderPaid from account 1110 (bank)Method Paid; postDr Input VAT 1,000 / Cr 1110 1,000
Declared VAT checkCustoms value 20,000, VAT 900Refused: "The declaration's VAT 900.00 is not 5.0000% of 20000.00 (1000.00); check the value or the tax code."
RejectProposed adjustmentReject with a reasonRejected; reason appended ' | rejected: ...'; nothing posted

Tax register

ActionWhenWhat you doWhat happens
Register totalsPosted documents in the periodOpen Tax registerOutput, Input, Recoverable and Net payable equal the return's figures for the same period

Tax to ledger

ActionWhenWhat you doWhat happens
ReconcilesNormal postingsOpen Tax to ledgerDocuments = Ledger per account; difference 0.00

Documents against the ledger

ActionWhenWhat you doWhat happens
Per-document checkOne imported/old document whose journal differsOpen the ledger check'1 documents do not tie' and that document listed with register vs ledger

Any tax master

ActionWhenWhat you doWhat happens
Activate by somebody elseA creates a ruleA: Activate; B: ActivateA refused: 'Somebody other than the person who prepared this determination rule must decide it.'; B: Active
Active is not editedActive registrationEdit (API)Refused: 'An active tax registration is not edited. Archive it and create a new one.'

Registrations

ActionWhenWhat you doWhat happens
Overlapping registration refusedActive AE VAT registration open-endedActivate a second AE VAT one from todayRefused: '<CODE> already covers these dates for this tax and branch.'

Country packages

ActionWhenWhat you doWhat happens
Package needs a legal sourceNo active legal source for AEActivate an AE packageRefused: 'A country package rests on at least one active legal source...'; after activating a source it activates and emits tax.package_activated.v1

Overview

ActionWhenWhat you doWhat happens
ExceptionsRegistration ending in 20 days; certificate ending in 10 days; posted line with no tax code this quarterOpen OverviewEach shows in Exceptions with Blocks/Check and opens its list

Applications > Tax > Features

ActionWhenWhat you doWhat happens
Determination offAdmins A and BA: Determination Off; propose; B approves; open Simulate (direct link), POST simulateMenus Simulate/Determinations hidden; API refused as turned off
Corporate tax off blockedA draft workpaperPropose Corporate tax OffBlocked '1 workpaper(s) are not approved yet. Approve them first.'
Tax groups off blockedActive registration with a group codePropose Tax groups OffBlocked '... file as a group. Archive or change them first.'
Return controls protectedTry to turn off 'Return approval controls and ledger check'Locked

Applications > Tax > Fields

ActionWhenWhat you doWhat happens
Authority reference requiredSet Required (approved); submit a return without a referenceRefused: "Enter the authority's reference: this company requires it on submission."