1---2name: electronic-fiscal-taxing-33description: Use when designing, reviewing, or operating electronic fiscal taxation, e-invoicing, e-receipting, fiscal-device, or authority-reporting controls; load a jurisdiction reference such as Uganda EFRIS for verified local mechanics and keep tax administration separate from ledger truth.4---56# Electronic Fiscal Taxing78This is the accounting and control doctrine for electronic fiscal taxation. It9turns a jurisdiction's authority-facing requirements into tax-code, document,10ledger, evidence, reconciliation, and reviewer controls. It is jurisdiction-11neutral at the core; Uganda EFRIS is the first detailed reference pack.1213<!-- dual-compat-start -->14## Use When1516- An ERP, POS, mobile sales app, or billing system must issue fiscal documents.17- A tax authority requires electronic invoice, receipt, fiscal-device, or18 transaction-report submission.19- A client operates one legal entity or multiple tenants with distinct tax IDs.20- Online, offline, retry, correction, void, credit-note, or debit-note behavior21 affects tax evidence or accounting reconciliation.22- A controller needs to reconcile authority acknowledgements to invoices,23 VAT control accounts, stock, payments, and audit evidence.2425## Do Not Use When2627Do not use this skill as a substitute for current statutory verification, legal28advice, a tax opinion, a full accounting framework, or the web implementation29of an API adapter. Use the implementation skill in the web-dev engine for code;30use the jurisdiction pack here for the accounting and control interpretation.3132## Prerequisites3334- Read `doctrine/accounting-finance-doctrine.md` and the finance quality gate.35- Read `tax-statutory-source-register-and-country-packs` when a current rule,36 threshold, rate, deadline, or authority protocol is involved.37- Read the selected jurisdiction reference and its source register.38- Identify the reporting framework, entity/tenant, currency, period, owner, and39 required tax/accounting reviewer before making a release claim.4041## Inputs4243| Artifact | Required | Acceptance condition |44|---|---:|---|45| Entity or tenant profile | yes | Legal identity, tax ID, jurisdiction, currency, branches, and reviewer are named |46| Source-event pack | yes | Invoice/receipt, actor, date, amounts, tax codes, payment, and evidence pointer exist |47| Current source-register snapshot | yes for statutory output | Each live rule is verified-current or explicitly blocked |48| Accounting policy and CoA map | yes | Net, tax, gross, receivable/cash, and correction treatment are defined |49| Fiscal provider contract | yes for activation | Version, credentials owner, environment, and response semantics are recorded |5051## Outputs5253| Artifact | Consumer | Acceptance condition |54|---|---|---|55| Fiscal accounting policy | Controller and implementer | Separates authority obligations, ledger treatment, and judgement |56| Fiscal-document mapping | Integration and QA | Every source field maps to a governed tax/document field or a named exception |57| Reconciliation workpaper | Close owner and auditor | Authority result, invoice, tax control, payment, and exception states tie out |58| Exception and evidence register | Reviewer and operations | Missing, rejected, stale, duplicated, or manual documents have owner and due date |59| Reviewer release record | Finance and compliance owner | Framework, source state, tests, caveats, and sign-off route are explicit |6061## Non-negotiables62631. EFRIS or another authority platform is a tax-administration boundary, not a64 replacement for the general ledger or the approved posting service.652. Decompose VAT-inclusive transactions into net, tax, and gross. Route tax to66 governed control accounts; do not hide it in free text or provider payloads.673. Never hardcode a current rate, threshold, deadline, endpoint, code, or return68 template. Use a verified-current source-register row or block release.694. A provider acknowledgement is immutable evidence. Corrections use linked70 cancellation, credit-note, debit-note, or reversal workflows; posted history71 is not edited or deleted.725. A fiscal status must distinguish `draft`, `queued`, `submitted`, `accepted`,73 `rejected`, `dead_letter`, `manual_exception`, `cancelled`, and `reconciled`.746. Every tenant/client has an isolated fiscal identity and evidence chain. Never75 reuse a TIN, device, key, sequence, cached token, or offline store across76 tenants.777. Reconciliation is a triage control, not a downloadable afterthought. Keep78 ageing, amount differences, missing FDNs, duplicate attempts, and reviewer79 action visible.8081## Decision Rules8283| Condition | Action | Risk avoided |84|---|---|---|85| Current authority rule and provider contract verified | Permit the documented workflow, subject to tests and reviewer sign-off | Stale or invented compliance behavior |86| Current source or credential is missing | Produce a qualified design and block production activation | False statutory readiness |87| Authority result is unknown after timeout | Preserve the same idempotency key, reconcile, then retry if allowed | Duplicate fiscal documents |88| Original document is posted and needs correction | Use a linked authority correction and accounting reversal/adjustment | Tampered history and tax mismatch |89| Offline operation is authorised | Use bounded offline state, evidence, upload deadline, and exception escalation | Uncontrolled unfiscalised sales |90| Tenant fiscal identity differs | Resolve profile by trusted tenant context and isolate queue/evidence | Cross-tenant filing or credential leakage |91| EFRIS and ledger totals differ | Hold reconciliation exception; do not silently alter either source | Hidden VAT or revenue drift |9293## Core Workflow94951. **Frame scope.** Identify framework, jurisdiction, entity/tenant, fiscal96 document classes, source systems, accounting event, and reviewer.972. **Verify authority facts.** Load the jurisdiction source register; classify98 each fact as current, caveated, historical, or blocked.993. **Map accounting truth.** Define tax codes, effective periods, net/tax/gross100 decomposition, CoA accounts, source references, and correction postings.1014. **Map fiscal evidence.** Define seller, buyer, product, UOM, tax category,102 payment, document reference, authority response, verification artefacts, and103 tenant/device identity.1045. **Design states and exceptions.** Include validation rejection, timeout,105 duplicate, offline, manual exception, correction, cancellation, and replay.1066. **Reconcile.** Tie fiscal documents to invoices, tax control accounts,107 payments, stock, and reports. Age and assign every exception.1087. **Review and release.** Run the finance quality gate, source checks, control109 tests, and reviewer route. A blocked current fact prevents operational release.1108. **Standardise learning.** Record the Kaizen observation, experiment,111 validation evidence, owner, rollback, and next re-measurement date.112113## Anti-Patterns114115- Treating an FDN-shaped test value as a real fiscal acknowledgement. Fix: mark116 it test-only and require provider evidence.117- Posting tax from a provider response rather than the governed source event.118 Fix: reconcile both; the ledger posting service owns accounting.119- Sharing one fiscal profile or offline enabler among tenants. Fix: isolate by120 tenant/TIN and prove the boundary with negative tests.121- Issuing a corrected invoice by editing the original row. Fix: use linked122 authority and accounting correction documents.123- Retrying a timed-out submission with a new key. Fix: query/reconcile the old124 key, then retry the same idempotent operation.125- Treating an unverified offline deadline or tax rule as a permanent fact. Fix:126 keep it in the source register as caveated or blocked.127128## Read Next129130- `tax-statutory-source-register-and-country-packs`131- `e-invoicing-and-fiscal-device-integration` for legacy compatibility routing132- `ledger-posting-engine-core` and `reconciliation-and-cash-control`133- Web-dev engine: `electronic-fiscal-taxing`, `api-design-first`,134 `distributed-systems-patterns`, and `reliability-engineering`135136## References137138- [electronic-fiscal-taxing-model.md](references/electronic-fiscal-taxing-model.md)139- [Uganda EFRIS source register](references/jurisdictions/uganda-efris/source-register.md)140- [Uganda API and security](references/jurisdictions/uganda-efris/api-envelope-and-security.md)141- [Uganda document and tax mapping](references/jurisdictions/uganda-efris/document-and-tax-mapping.md)142- [Uganda offline and device operations](references/jurisdictions/uganda-efris/offline-device-and-operations.md)143- [Uganda reconciliation and controls](references/jurisdictions/uganda-efris/reconciliation-and-controls.md)144- [Worked example](examples/uganda-efris-worked-example.md)145146## Acceptance Evidence147148- Source-register entries identify source, version/date, state, verifier,149 recheck trigger, and unresolved conflict.150- A fiscal mapping exists for each document class in scope.151- A reconciliation workpaper and exception route exist.152- A reviewer can drill from report line to ledger, source document, provider153 evidence, and audit event.154- The release state is `pass`, `pass-with-caveats`, or `fail`; missing evidence155 is never silently treated as a pass.156157## Review Metadata158159| Field | Value |160|---|---|161| Owner role | Doctrine owner |162| Reviewer roles | Tax reviewer; country-pack owner; integration reviewer |163| Last reviewed | 2026-08-28 |164| Next review due | 2027-02-28 or on URA protocol/tax-law change |165| Release state | Active doctrine; production use remains source-register and reviewer gated |166167<!-- dual-compat-end -->168169Last reviewed: 2026-08-28. Next review due: 2027-02-28.