Skip to content
Toss ERP user manual
Sign in

Chapter 12 — Accounting

Module code: accounting Home: /accounting/

Accounting is the largest module in the product. This chapter is organised so you can read it front to back when setting up, and jump to a single section afterwards.

Section Topic
12.1–12.5 Setting up: chart of accounts, journals, taxes, terms
12.6–12.9 Invoices, bills, credit notes
12.10–12.12 Payments and matching
12.13–12.15 Banking
12.16–12.18 Corrections, locking, secure entries
12.19–12.21 Multi-currency
12.22 Cost centres (analytic accounting)
12.23 Reports
12.24–12.25 Tax authority e-invoicing
12.26 Emails and reminders
12.27–12.29 Routine, checklists, troubleshooting

12.1 Getting started: the onboarding wizard

Screen: /accounting/onboarding/

A new workspace has no chart of accounts, and nothing can be posted without one. The wizard loads a ready-made chart for your country.

  1. Go to /accounting/onboarding/.
  2. Choose a chart template. Templates are listed at /accounting/templates/, and each one can be inspected first at /accounting/templates/<id>/ to see the accounts and taxes it contains.
  3. Choose the company to load it into.
  4. Confirm.

The result page reports how many accounts and taxes were created and how many already existed. Running the wizard twice is safe — it skips anything already present.

The Pakistan template, as an example, contains 81 accounts (1000-series assets, 2000 liabilities, 3000 equity, 4000 revenue, 5000 cost of sales, 6000 operating expenses, 7000 non-operating, 8000 tax) and 8 taxes including GST at 17%, zero-rated and exempt GST, withholding tax at three rates, and corporate income tax.

Treat the template as a starting point. Tax rates change with each budget, and your business will need accounts the template does not have. Review it before entering transactions.

The dashboard checklist

/accounting/ shows a setup checklist with six steps: chart of accounts loaded, base currency configured, a journal exists, a first invoice posted, a bank statement reconciled, and portal access granted. It disappears when complete. Use it as the order of work.


12.2 The chart of accounts

/accounting/coa/                   the chart
/accounting/coa/new/               new account
/accounting/coa/<id>/edit/         edit
/accounting/coa/<id>/duplicate/    copy an account
/accounting/coa/<id>/archive/      archive
/accounting/coa/bulk-update/       change many accounts at once
/accounting/setup/                 account types

Creating an account

  1. Select New account.
  2. Enter:
Field Guidance
Code Follow the numbering of the template you loaded. Codes are unique across the workspace.
Name What it will be called in every report
Account type Asset, liability, equity, income or expense — this drives which report the account lands in
Group Optional sub-grouping for reporting
Allow reconciliation Tick for receivable, payable and bank accounts. Without it, payments cannot be matched to invoices on that account.
Tags Optional classification
  1. Save.

Archive rather than delete. An account with postings cannot be deleted, and should not be — the history has to remain explainable.

Bulk update

/accounting/coa/bulk-update/ changes a property across many accounts at once — for example turning reconciliation on for a range. Useful after loading a template.


12.3 Journals

/accounting/journals/              list
/accounting/journals/new/          new journal
/accounting/journals/<id>/edit/    edit

A journal is a book of entries of one kind. At minimum you need:

Journal Type Used by
Sales Sale Customer invoices and credit notes
Purchases Purchase Vendor bills and refunds
Bank Bank Bank payments and statements
Cash Cash Cash receipts and payments
Miscellaneous General Manual journal entries

For each journal set:

  • Name and code — the code prefixes document numbers.
  • Type.
  • Default account — for bank and cash journals, the account the money sits in.
  • Sequence — the numbering pattern and next number.

Advanced: compliance settings

Under the journal's advanced section:

  • Hash chain (restrict mode) — every entry posted in this journal is sealed into a tamper-evident chain. See section 12.18.
  • ZATCA e-invoicing — for Saudi Arabian sales journals. See section 12.25.

12.4 Taxes

/accounting/config/                configuration hub
/accounting/config/taxes/new/      new tax
/accounting/config/tax-groups/new/ new tax group

Tax groups

A tax group collects related taxes — GST, Withholding, Income Tax — and names the accounts that tax payable and receivable post to. Create groups first.

Creating a tax

  1. Select New tax.
  2. Enter:
Field Meaning
Name As it should print on documents, e.g. GST 17%
Type Sale, purchase, or none
Amount type Percent of the base, fixed amount per unit, division for tax-included pricing, or group to combine several taxes
Amount The rate
Tax group Which group it belongs to
Account Where the tax posts. Group-type taxes route through their children instead.
Price included Tick if the item price already contains this tax
Include in base amount Tick if later taxes should be calculated on the amount including this one — used for cascading taxes
Scope Goods, services, or both
  1. Save.

Assign taxes to items in Chapter 8. Set them once on the item and every order and invoice inherits them; setting tax per line is where inconsistency starts.


12.5 Payment terms, tags and payment methods

Payment terms

Screen: /accounting/config/payment-terms/new/

Payment terms calculate an invoice's due date, and can split it into instalments.

  1. Enter the name — 30 days, 30% now, 70% in 30 days.
  2. Add a line for each instalment: - Value type: balance, a percentage, or a fixed amount. - Value. - Days after the invoice date, and optionally a day of the month or end of month rule.
  3. The percentages must total 100. The form refuses to save otherwise.

Assign terms to partners (Chapter 5) so invoices get the right due date without anyone thinking about it.

Payment methods

Screen: /accounting/config/payment-methods/new/

Named ways money moves: bank transfer, cheque, cash, card. Each is inbound or outbound. Methods may also carry instructions — an account number, a payment link, a QR code — which are shown to customers on the portal and on public campaign pages.

Tags

Screen: /accounting/config/tags/new/

Free labels on accounts and taxes for reporting.


12.6 Customer invoices

/accounting/invoices/              list
/accounting/invoices/new/          new invoice
/accounting/<type>/<id>/edit/      open
/accounting/<type>/<id>/post/      post
/accounting/<type>/<id>/reset/     back to draft
/accounting/<type>/<id>/print/     print

The same screens serve four document types, distinguished by their type in the URL:

Document Type Meaning
Customer invoice out_invoice You are owed money
Credit note out_refund You owe a customer money back
Vendor bill in_invoice You owe money
Vendor refund in_refund A vendor owes you money back

Creating an invoice

  1. Go to /accounting/invoices/new/.
  2. Header: - Customer. - Invoice date — drives the accounting period, so use the real date. - Due date — calculated from the payment terms; override only for a genuine agreement. - Journal — the sales journal. - Salesperson and reference, if used.
  3. Lines. For each: - Product — description, price, tax and account fill in automatically. - Quantity, unit price, discount percentage. - Taxes — from the product. - Account — the revenue account. - The line total is calculated; it is not typed.
  4. Structural lines are available as well as product lines: a section heading and a note, to organise a long invoice for the reader.
  5. Check the totals: untaxed, tax, total.
  6. Save as draft, or Save and post.

What posting does

Posting an invoice:
  • assigns the final document number from the journal sequence
  • creates the tax lines
  • creates the receivable (or payable) balancing line, dated to the due date
  • writes the entry into the ledger
  • sets the payment state to "not paid"

Until it is posted, an invoice affects nothing.

Correcting a posted invoice

Use Reset to draft (/accounting/<type>/<id>/reset/) only if nothing has happened downstream and the period is open. Otherwise reverse it — section 12.16. If the journal is hash-chained, reset to draft is refused outright.


12.7 Vendor bills

Created either from a purchase order (Chapter 7) or directly at /accounting/bills/new/. The form is the same as an invoice, with two fields that matter more:

  • Vendor bill number — the supplier's own reference. This is what prevents paying the same invoice twice. Always enter it.
  • Bill date — the supplier's date, not today's. The due date and the accounting period both follow from it.

12.8 Credit notes

Two routes:

  1. From the invoice — open it, select Reverse, and choose refund mode. The credit note is created with the invoice's lines and linked to it.
  2. Directly/accounting/credit-notes/new/, for a credit that does not mirror a single invoice.

Credit notes are posted and matched exactly like invoices.


12.9 Printing and emailing

Action Screen
Print /accounting/<type>/<id>/print/
Email to the customer /accounting/<type>/<id>/send-email/

The email screen pre-fills the customer's address from their partner record, lets you add a note, and sends using the invoice email template. Every attempt is recorded in the email log — see section 12.26.


12.10 Registering a payment

Screen: /accounting/<type>/<id>/register-payment/

The normal way to record money received or paid.

  1. Open the posted invoice or bill.
  2. Select Register payment.
  3. Enter: - Journal — bank or cash. - Payment method. - Date. - Amount — pre-filled with the outstanding balance; reduce it for a part payment. - Reference — the cheque number or transfer reference.
  4. Confirm.

The system creates the payment, posts its journal entry, and matches it against the invoice. The invoice's payment state moves to partial or paid automatically.

Standalone payments

/accounting/payments/              list
/accounting/payments/new/          new payment
/accounting/payments/<id>/confirm/ confirm
/accounting/payments/<id>/cancel/  cancel

For a payment on account, or one covering several invoices, create it standalone and match it afterwards (section 12.11). A payment is created in draft and only affects the ledger when confirmed.

Applying an advance

Screen: /accounting/<type>/<id>/apply-advance/

Where a customer paid in advance, this applies the existing unmatched payment against a new invoice without recording money twice.

Payment receipts

Screen: /accounting/payments/<id>/send-receipt/

Emails the customer a receipt for a confirmed payment.


12.11 Matching (reconciliation)

Matching is the act of saying this payment settles that invoice.

/accounting/reconcile/                    match selected lines
/accounting/unreconcile/                  undo a match
/accounting/matching/line/<id>/           matching view for one line
/accounting/matching/full/<id>/           a completed match and everything in it

Most matching happens automatically when you register a payment. Do it by hand when:

  • One payment covers several invoices.
  • Several payments settle one invoice.
  • A credit note is being set against an invoice.
  • A payment was recorded before the invoice existed.

To match by hand

  1. Open the matching view for one of the lines.
  2. Select the lines that belong together — they must be on the same account and the same partner, and the account must allow reconciliation.
  3. Select Reconcile.

If the amounts balance exactly, the match is complete and the invoice becomes paid. If not, a partial match is recorded and the invoice becomes partial.

To undo a match

Select the lines and choose Unreconcile. The partial matches are removed and the payment states revert. Do this before correcting a payment that was applied to the wrong invoice.


12.12 Manual journal entries

/accounting/journal-entries/              list
/accounting/journal-entries/new/          new entry
/accounting/journal-entries/<id>/post/    post
/accounting/journal-entries/<id>/reset-draft/  back to draft
/accounting/journal-entries/<id>/logs/    change history
/accounting/journal-entries/<id>/note/    add a note

For accruals, depreciation, opening balances and corrections that are not invoices.

  1. Select New journal entry.
  2. Set the journal, date and reference.
  3. Add lines: account, partner if relevant, label, and either a debit or a credit.
  4. The entry must balance. Total debits must equal total credits or it will not post.
  5. Save, then Post.

Every entry carries a log of who changed it and when, and a notes thread. Use the notes to record why — six months later, that is the only thing that explains the entry.


12.13 Bank statements

/accounting/bank-statements/                    list
/accounting/bank-statements/new/                new statement
/accounting/bank-statements/<id>/               detail
/accounting/bank-statements/<id>/import-csv/    import lines from a file
/accounting/bank-statements/<id>/reconcile/     match the lines
/accounting/bank-statements/<id>/confirm/       confirm

Creating and importing

  1. Select New statement. Enter the journal (the bank), the date, the opening balance and the closing balance from the bank's own statement.
  2. Save.
  3. Select Import CSV and upload the file downloaded from your bank.
  4. Map the columns by their position, counting from zero: date, amount, reference, and optionally partner name and description. Set the date format to match the file — the default is %Y-%m-%d.
  5. Import.

The importer handles UTF-8 files with or without a byte-order mark. Set an optional column's index to -1 to say it is not present.

After import

Each line is checked against your matching rules (section 12.14), and matched lines arrive with a partner and a suggested account already filled in.

The statement detail page shows the computed balance against the real closing balance. If they do not agree, lines are missing or duplicated — fix that before matching anything, because reconciling against a wrong set of lines wastes the work.


12.14 Matching bank lines

Screen: /accounting/bank-statements/<id>/reconcile/

For each line:

  1. Choose what it corresponds to: - An open invoice or bill — the usual case. The line's payment settles it. - A counterpart account — for bank charges, interest, transfers.
  2. Select Match.

The system posts a balanced entry for that line — debit the bank, credit the counterpart, or the reverse — and, where an invoice was chosen, matches against it so the invoice's payment state updates.

Unmatch (/accounting/bank-statements/lines/<id>/unmatch/) returns the entry to draft rather than deleting it, so the audit trail survives the correction.

Automatic matching rules

/accounting/config/reconcile-models/          list
/accounting/config/reconcile-models/new/      new rule

A rule recognises a recurring statement line and fills in the answer.

  1. Enter the name and a sequence — rules run in sequence order and the first match wins.
  2. Set the conditions: - Label pattern — a text pattern against the line's description, for example matching FEE. - Partner name pattern. - Amount range. - Journal. Any condition left blank matches anything.
  3. Set the result: the target account and optionally the target partner.
  4. Save.

A handful of well-chosen rules — bank charges, standing orders, salary transfers — cuts most of the manual work out of monthly reconciliation.


12.15 Partner bank accounts

Recording a partner's bank account (Chapter 5) lets incoming payments be recognised by account number. It is what turns automatic matching from a guess into a certainty.


12.16 Reversing a posted document

Screen: /accounting/<type>/<id>/reverse/

The correct way to undo something that is already in the ledger.

  1. Open the posted document and select Reverse.
  2. Choose the reversal date — usually today, or the original date if the period is still open and you are correcting an error found immediately.
  3. Enter a reason. It is stored on both documents.
  4. Choose the mode:
Mode What happens Use when
Cancel A mirror entry is posted and matched against the original, netting both to zero The document was simply wrong and should not have existed
Modify A mirror entry is posted and the original returns to draft for re-editing You need to correct and re-issue the same document
Refund A credit note is created from the invoice's lines, left in draft for review The customer is genuinely being credited

The refund mode is offered only for invoices and bills.


12.17 Locking periods

/accounting/lock-dates/                  set the locks
/accounting/lock-exceptions/             per-user exceptions
/accounting/lock-exceptions/new/         grant one
/accounting/lock-exceptions/<id>/revoke/ withdraw one

Three lock dates prevent postings into closed periods:

Lock Blocks Typical use
Fiscal year lock Anything dated on or before it Set after the year is closed
Tax lock Anything affecting tax on or before it Set after a return is filed
Hard lock Everything, for everybody Final closure

The hard lock cannot be bypassed by anyone. That is deliberate — it is the only one an auditor can rely on.

Exceptions

A time-boxed exception lets one named user post into a locked fiscal or tax period, with a reason and an expiry date recorded. Grant them sparingly and let them expire.

The check runs when a document is posted, not when a draft is saved. Drafts do not affect the ledger, so blocking them would only be an obstruction.


12.18 Secure entries and the hash chain

/accounting/secure-entries/       seal entries into the chain
/accounting/audit-hash-chain/     verify the chain

Where a journal has restrict mode enabled, every entry posted in it is sealed with a cryptographic hash built from the entry's own contents and the hash of the entry before it. Altering an entry after the fact breaks the chain, and the break is detectable.

Sealing existing entries

/accounting/secure-entries/ shows every journal with counts of secured and unsecured entries. Choose a journal and an optional cut-off date and run it; entries are sealed in date order.

Verifying

/accounting/audit-hash-chain/ recomputes every entry's hash and reports each one as OK or TAMPERED, with the stored and expected values side by side.

Two consequences of turning restrict mode on:

  • A secured entry cannot be reset to draft. Correct it by reversal.
  • Verification flags only the entry that was altered, not everything after it, so the report points at the actual problem.

12.19 Currencies and rates

/accounting/config/currencies/         list
/accounting/config/currencies/new/     new currency
/accounting/config/rates/new/          new exchange rate
  1. Create each currency you transact in, with its symbol, decimal places and rounding.
  2. Mark exactly one as the base currency — your books' currency.
  3. Enter exchange rates with their effective dates.

A rate applies from its date until a newer one supersedes it. A document dated in the past therefore picks up the rate that was in force then, which is what makes reposting history correct.


12.20 Foreign exchange settings

Screen: /accounting/config/fx-settings/

Set three things per company:

  • The FX journal for exchange difference entries.
  • The gain account.
  • The loss account.

Once all three are set, matching a foreign-currency invoice against a payment made at a different rate posts the difference automatically. Until they are set, matching behaves exactly as it did before, so a single-currency business is unaffected.


12.21 Currency revaluation

/accounting/revaluation/              past runs
/accounting/revaluation/new/          new run
/accounting/revaluation/<id>/preview/ preview
/accounting/revaluation/<id>/apply/   apply

At period end, open foreign-currency balances must be restated at the closing rate.

  1. Create a run with the revaluation date, the rate date, and the journal and gain/loss accounts.
  2. Preview. Per currency, the screen shows what is booked, what it would be restated to, and the difference. Nothing is posted yet.
  3. Check it. Apply when satisfied.

One balanced entry is posted per currency. A revaluation can be reversed like any other entry if it was run in error.


12.22 Cost centres (analytic accounting)

/accounting/analytic/plans/                            plans
/accounting/analytic/accounts/                         analytic accounts
/accounting/analytic/accounts/<id>/                    detail with balance and lines
/accounting/config/analytic-distribution-models/       automatic distribution rules
/accounting/reports/analytic-ledger/                   ledger by cost centre
/accounting/reports/analytic-pl/                       profit and loss by cost centre

Analytic accounting answers "which project, department or branch did this cost belong to?" — a question the chart of accounts alone cannot answer, because an expense account groups by nature, not by purpose.

  1. Create an analytic planDepartments, Projects, Branches.
  2. Create analytic accounts inside it — the actual departments or projects.
  3. On journal lines, set the distribution: which analytic accounts share this amount and in what percentages. A cost can be split, for example 60% to Sales and 40% to Operations.
  4. Analytic lines are generated automatically from the distribution and kept in step whenever the line changes.

Automatic distribution

A distribution model applies a distribution automatically based on the partner, the account, an account code prefix, the product or the journal. Rules run in sequence order and the first match wins. The result is a suggestion — it can always be overridden on the line.


12.23 Reports

Home: /accounting/reports/

Every report shares a filter bar: date range, journals, posted-only, and a comparison toggle. Every one has a print button.

Report Screen Answers
Trial balance /accounting/reports/trial-balance/ Opening, movement and closing per account. Drills into the general ledger.
General ledger /accounting/reports/general-ledger/ Every transaction on chosen accounts with a running balance
Balance sheet /accounting/reports/balance-sheet/ Assets, liabilities and equity at a date. Current-period earnings are folded into equity so it always balances.
Profit and loss /accounting/reports/profit-loss/ Income against expenses for a period
Aged receivable /accounting/reports/aged-receivable/ Who owes you, by age bucket, with detail per customer
Aged payable /accounting/reports/aged-payable/ Who you owe, the same way
Customer statement /accounting/reports/customer-statement/ One customer's full ledger with opening and closing balances
Tax report /accounting/reports/tax/ Tax collected, tax paid, net payable, and the base amounts
Analytic ledger /accounting/reports/analytic-ledger/ Costs and income by cost centre
Analytic P&L /accounting/reports/analytic-pl/ Profitability by cost centre

Tick posted only for anything you will act on. Including drafts shows figures that are not in the books.


12.24 FBR e-invoicing (Pakistan)

/accounting/fbr/config/                        connection settings
/accounting/fbr/journal-profile/new/           per-journal profile
/accounting/<type>/<id>/fbr-validate/          validate an invoice
/accounting/<type>/<id>/fbr-submit/            submit it
/accounting/config/fbr-tax-types/new/          map taxes to FBR sale types

Setting up

  1. Open /accounting/fbr/config/ and enter your PRAL credentials, the endpoints and the scenario identifier. The page carries an onboarding guide covering each field.
  2. Map your taxes to FBR sale types at /accounting/config/fbr-tax-types/. An unmapped tax will be rejected on submission.
  3. Create a journal profile for each sales journal that files.

Submitting

  1. Post the invoice.
  2. Select Validate first. Validation checks the invoice against FBR's rules and reports problems without submitting anything.
  3. Fix anything reported.
  4. Select Submit.

The environment defaults to sandbox. Nothing reaches the live tax authority until someone deliberately changes it. Test in sandbox until submissions pass cleanly, and treat the switch to production as a decision, not a step.


12.25 ZATCA e-invoicing (Saudi Arabia)

/accounting/zatca/config/                              settings and devices
/accounting/zatca/device/new/                          register a device
/accounting/zatca/device/<id>/link-journal/            link it to a sales journal
/accounting/zatca/device/<id>/onboard-step1/           compliance onboarding
/accounting/zatca/device/<id>/onboard-step2/           production onboarding
/accounting/<type>/<id>/zatca-submit/                  submit an invoice

Setting up

  1. Open /accounting/zatca/config/ and complete the company settings.
  2. Register a device for each sales point that issues invoices.
  3. Run onboarding step 1 (compliance) and then step 2 (production) for each device.
  4. Link each device to its sales journal. This is the step people miss: with e-invoicing enabled on a journal, a submission requires an active device linked to that journal.
  5. On the journal, confirm ZATCA e-invoicing is enabled.

Invoices then show a ZATCA panel with the QR preview, and can be submitted from the invoice form. The submission history is available from the configuration page.

Like FBR, ZATCA defaults to sandbox, and additionally ships disabled and in phase 1 (QR code only, no API submission). Three deliberate changes are needed before anything reaches the live authority.


12.26 Emails, reminders and logs

/accounting/config/email-templates/        templates
/accounting/config/email-templates/seed/   create the standard three
/accounting/config/email-logs/             every send attempt
/accounting/cron/run-payment-reminders/    run the reminder scan now

Templates

Select Seed defaults once to create the three standard templates: invoice send, payment reminder, and payment receipt. Then edit their subject and body. The editor lists the variables available to each template.

Payment reminders

The reminder job scans posted, unpaid invoices that are overdue and emails the customer, escalating at 7, 14, 30 and 60 days overdue.

The same invoice is not chased twice within 7 days. This is deliberate: an escalating reminder is useful, a daily one is harassment and gets your mail marked as spam.

Run it manually at /accounting/cron/run-payment-reminders/, or have it scheduled to run daily.

The email log

/accounting/config/email-logs/ records every attempt — queued, sent or failed — with the recipient, subject, and the error where one occurred. When a customer says they never received the invoice, this is the screen that settles it.


12.27 Period-end routine

Weekly
  [ ] Import and reconcile bank statements
  [ ] Register payments received
  [ ] Review aged receivable and chase

Monthly
  [ ] Post all outstanding invoices and bills
  [ ] Complete bank reconciliation; computed balance must equal the bank's
  [ ] Post accruals and depreciation
  [ ] Run currency revaluation if you hold foreign balances
  [ ] Reconcile stock valuation against the stock account ([Chapter 8](08-inventory.md))
  [ ] Review the trial balance for anything unexpected
  [ ] Produce the balance sheet and profit and loss
  [ ] File the tax return from the tax report
  [ ] Set the tax lock date once filed

Yearly
  [ ] Complete the audit
  [ ] Set the fiscal year lock date
  [ ] Set the hard lock date once the year is truly final

12.28 Setup checklist

[ ] Chart of accounts loaded from a template and reviewed
[ ] Base currency set
[ ] Sales, purchase, bank, cash and miscellaneous journals created
[ ] Reconciliation enabled on receivable, payable and bank accounts
[ ] Taxes created with correct rates and accounts
[ ] Tax groups created
[ ] Payment terms created and assigned to partners
[ ] Payment methods created
[ ] Opening balances posted as a journal entry
[ ] Email templates seeded and edited
[ ] E-invoicing configured and tested in sandbox, if applicable

12.29 Troubleshooting

Symptom Cause Fix
Invoice will not post Unbalanced, missing accounts, or a locked period The message names the reason; check the lock dates first
"Locked period" on posting The date falls in a locked range Change the date, or request a lock exception
Payment cannot be matched to an invoice The account does not allow reconciliation Tick allow reconciliation on the account
Invoice still shows unpaid after payment The payment was not matched, or matched to a different invoice Use the matching view; unmatch and redo if needed
Statement will not balance Lines missing or duplicated in the import Compare line count and total against the bank's own statement
CSV import produces wrong dates The date format does not match the file Set the format string to match, e.g. %d/%m/%Y
Reversal not offered The document is not posted, or is already reversed Check its state
Cannot reset to draft The journal is hash-chained Reverse it instead — this is by design
Balance sheet does not balance Almost always an unposted or unbalanced entry Check for draft entries; run the trial balance
Aged receivable disagrees with the balance sheet Drafts are included, or the date differs Tick posted only and use the same date
Tax report figures look wrong Taxes without a tax group or account, or documents in draft Check each tax's configuration
FBR submission rejected A tax is not mapped to an FBR sale type Map it, then validate before submitting
ZATCA submission refused No active device linked to that sales journal Link the device to the journal
Reminder emails not going out The scan is not scheduled, or the customer has no email Run it manually to test; check the email log
Foreign exchange difference not posted FX journal, gain or loss account is not set Complete /accounting/config/fx-settings/