Skip to main content

Accounting Module

The Accounting module provides double-entry bookkeeping built directly into your ERP. It shares the same customers, vendors, invoices, and expenses as the rest of the platform — no separate accounting software required.

Navigate to the Accounting menu in the top navigation bar to access all accounting features:

Every list that asks you to pick a GL account — journal lines, Posting Setup, Item overrides, Fixed Asset accounts, bank accounts, and the GL Entries filter — is a searchable lookup: type part of the account number or name. Only posting accounts are listed (headings can't take entries), and blocked accounts appear greyed out and can't be picked (except in the GL Entries filter, where their history still matters).

Module required

The Accounting module must be enabled for your tenant. Contact your service provider if you do not see the Accounting menu.

Currency Management is the exception — it's available to every tenant, including logistics-only tenants without the Accounting module, since Quotations, Requisitions, Purchase Invoices, Expenses, and Income all support per-document currency. Logistics-only tenants find it under Finance → Currency.


Chart of Accounts​

Go to Accounting → Chart of Accounts to set up and manage your accounts.

Account structure​

Each account has:

FieldDescription
Account No.Unique identifier (e.g. 10110)
NameDescriptive name (e.g. Freight Revenue — Local)
CategoryIncome · Cost of Goods Sold · Expense · Assets · Liabilities · Equity
TypePosting — receives GL entries · Heading — organises the CoA only
D/CNormal balance side: Debit · Credit · Both
BalanceRunning balance computed from posted GL entries

Setting up Tanzania Standard CoA​

The platform includes a pre-built Chart of Accounts tailored for Tanzania logistics businesses. It covers freight revenue, customs & forwarding, operational expenses, driver allowances, LATRA/SUMATRA fees, and standard financial accounts.

To seed it:

  1. Go to Accounting → Chart of Accounts
  2. Click Set up Tanzania Standard CoA (on an empty chart) or + Tanzania Standard CoA (once you have accounts)
  3. Confirm — the system adds all accounts that don't already exist (existing accounts are never overwritten)

The Tanzania Standard CoA includes 78 accounts across all six categories. You can add, edit, or block accounts after seeding to match your specific business.

Seeding, adding, editing, blocking, and deleting accounts all need the Manage Chart of Accounts permission.

Adding accounts manually​

  1. Click + New Account
  2. Enter an account number and name
  3. Select the category, type (Posting or Heading), and normal balance side
  4. Save

Click the ✏️ icon on a row to edit an account.

Blocking or deleting an account​

Blocked accounts cannot receive new postings but their GL history is preserved. Use this when you retire an account that has been used.

Click the ⊘ icon on any account row to block it. Click ✓ to unblock. The status filter above the list switches between Active, Blocked, and All accounts.

An account with no GL entries at all can be deleted instead — click 🗑 and confirm. The delete icon doesn't appear once an account has postings.

Viewing the balance​

The Balance column shows the running balance for each posting account, computed from all posted GL entries. Drill down into the GL entries for any account by clicking the 📒 icon — this opens the General Ledger filtered to that account.

note

Balances show — until the first journal entry is posted to the account.

Exporting to Excel​

Click ⇩ Export to Excel to download the currently filtered/searched account list as a formatted workbook — account number, name, type, category, debit/credit side, balance, and blocked status.


Journal Entries​

Go to Accounting → Journal Entries to create and post manual journals.

Double-entry rules​

Every journal must balance: total debits must equal total credits before posting. The system enforces this — the Post button is disabled on any unbalanced journal.

Creating a journal​

  1. Click + New Journal
  2. Enter a description (e.g. "Monthly accruals — June 2026") and a posting date
  3. Add journal lines:
    • Select an account — type to search by number or name
    • Enter either a Debit or Credit amount (not both on the same line)
    • Optionally add a line description
  4. Add more lines with + Add Line until the journal balances (the indicator turns green ✓)
  5. Click Save Draft

Posting a journal​

A Draft journal can be edited freely. Once you are satisfied:

  1. From the Journal Entries list, click Post on the draft row
  2. Or open the journal in edit mode and click Post Journal (only shown when balanced)

Posting creates immutable GL entries — one per journal line — and marks the journal as Posted. Posted journals cannot be edited. Editing and posting journals need the Post Journal Entries permission.

Viewing GL entries for a posted journal​

In the Journal Entries list, a GL → link appears in the action column next to every Posted journal. Click it to open the General Ledger filtered to that journal's reference number, showing all the immutable entries it created.

Voiding a draft​

Click Void on any Draft journal to cancel it (this needs the separate Void Journal Entries permission). Void journals are retained for audit trail purposes but cannot be edited or posted.

Posting is permanent

Once a journal is posted, it cannot be edited or deleted. To correct a posted journal, create a reversal journal with the opposite debits and credits.

Exporting to Excel​

Click ⇩ Export to Excel on the Journal Entries list to download every journal as a two-sheet workbook: a Journals summary sheet (journal number, date, description, total debit/credit, balanced, status) and a Journal Lines detail sheet with every individual account line.


General Ledger​

Go to Accounting → GL Entries to view the complete posting history.

GL entries are immutable — they are created automatically and cannot be edited or deleted. They come from:

  • Manual journals, when posted
  • Sales invoices (when raised and when paid — see Invoicing → GL posting)
  • Purchase invoices (on approval, on payment, and a reversal on void)
  • Approved expenses, and a reversal when an approved expense is voided (see Posting Setup)
  • Completed POS sales, payroll runs, staff loan disbursements, and hotel guest folios, where those modules are in use and their accounts are configured

Fixed Asset depreciation runs and disposals create draft journals that only reach the GL once you post them.

Filtering entries​

Use the filter bar to narrow the view:

  • Account — search for any posting account (blocked accounts are included here, since their history still matters)
  • Document No. — filter by a specific invoice, journal, or purchase invoice number
  • Document Type — Invoice · Payment · Credit Memo · Expense · Journal · Payroll
  • Date range — from and to dates

Drill-down navigation​

The General Ledger is the hub of the accounting drill-down system. You can reach it from three directions, and navigate forward to any source document:

From Financial Reports → GL Entries In the P&L, Balance Sheet, or Trial Balance, every account row is clickable. Clicking an account amount opens the General Ledger pre-filtered to that account and the report's date range — so you see exactly which transactions make up that figure.

From a source document → GL Entries Any document that has posted GL entries has a GL Entries → button:

  • Invoice detail page — top bar button (visible on all invoices)
  • Purchase Invoice — click the green "GL journal posted" badge in the detail view
  • Journal Entries list — the GL → action link next to any Posted journal

From GL Entry → source document Click any row in the GL Entries table to open an entry detail panel at the bottom of the page. The panel shows the entry date, document number, account, and amount. If the entry came from a source document, a context button — Open Invoice, Open Purchase Invoice, Open Expense, Open Journal, Open Trip, or Open Payroll — takes you directly to it.

Drilling down from the Chart of Accounts​

Click the 📒 icon next to any posting account in the Chart of Accounts to jump directly to the General Ledger filtered to that account. This shows every transaction that has ever hit that account.

Entry columns​

ColumnDescription
No.Sequential GL entry number
DatePosting date
TypeDocument type (Invoice, Journal, etc.)
DocumentSource document number
AccountAccount number and name
DescriptionTransaction description
DebitDebit amount
CreditCredit amount

Exporting to Excel​

Click ⇩ Export to Excel to download whatever's currently filtered (by account, document, type, or date range) as a formatted workbook with a debit/credit totals row.


G/L Registers​

Go to Accounting → G/L Registers for a log of every posting batch — one row per posted journal, labelled by source (Sales, Purchases, Cash Receipts, Payments, General Journal, Payroll, POS Sales, and so on). Click a register to jump to the GL entries it created.


Job Ledger​

Logistics tenants see Accounting → Job Ledger (under Finance if you don't have the Accounting module). It lists every posted revenue and cost on your jobs, one line per entry:

  • Sale — invoices linked to a job once they've left Draft (plus older income entries recorded before job income moved to invoices)
  • Usage — approved expenses linked to a job, including fuel issued from the Diesel Yard and spare parts issued to a vehicle on a trip

Filter by job, trip, entry type, document or description, and date range. The summary shows revenue, cost and net for whatever is filtered, and the totals always match the job page's own figures. Click a line to see its details, with buttons to open the invoice, expense, or job. From a job page, the ledger card's Job/Trip Ledger Entries → button opens this page already filtered to that job. Export with ⇩ Export to Excel. You need the View Jobs permission.

Nothing is stored separately — draft invoices and unapproved expenses simply don't appear until they're posted or approved.


Financial Reports​

Go to Accounting → Financial Reports to generate standard financial statements for any date range. Don't confuse this with the separate Reports tab, which covers logistics/operational reporting instead.

Drill down into any figure

Every account row in the P&L, Balance Sheet, and Trial Balance is clickable. Click any amount to jump to the General Ledger pre-filtered to that account and the report's date range — so you can trace exactly where each number came from.

Profit & Loss​

Shows income, cost of goods sold, and expenses for a selected period.

  • Revenue — all accounts in the Income category
  • Cost of Goods Sold — COGS accounts (direct costs of delivering services)
  • Operating Expenses — Expense accounts
  • Net Profit / Loss — Revenue − COGS − Expenses

Use this report to measure business performance over a month, quarter, or year.

Balance Sheet​

A point-in-time snapshot of the company's financial position.

  • Assets — what the company owns (cash, receivables, vehicles, equipment)
  • Liabilities — what the company owes (payables, loans)
  • Equity — owners' stake (share capital, retained earnings)

The Balance Sheet always balances: Assets = Liabilities + Equity. Since no manual year-end closing journal is required, the report computes a Retained Earnings equity line automatically (cumulative Income − COGS − Expenses to date) so the two sides tie out without you having to post anything — a real report line, not a plug that hides a genuine imbalance.

Trial Balance​

Lists every account with its debit and credit totals for the selected period. Use this to verify the ledger is balanced (total debits = total credits) before preparing period-end reports. Every account with GL activity in the period appears here, even one that's since been blocked or removed from the Chart of Accounts — leaving one out would show a false "out of balance" difference on a ledger that actually balances.

VAT Report​

Summarises input and output VAT for a selected date range — designed to support preparation of your TRA VAT return.

  • Output VAT — VAT collected on sales invoices
  • Input VAT — VAT on approved expenses with VAT applied (purchase invoices are not currently included in this figure)
  • Net VAT payable — Output VAT − Input VAT

If TRA VFD/EFD Fiscalization is enabled for your tenant, a 📊 Z-Reports → button appears on this page linking to your VFD provider's daily transaction summaries.

AR Aging​

Shows all outstanding customer invoices (not yet paid) grouped by age from invoice date.

BucketInvoice Age
0–30 daysRecent — follow up if payment terms have passed
31–60 daysModerately overdue — escalate
61–90 daysSignificantly overdue
90+ daysSeriously delinquent — consider collection action

An invoice dated in the future goes into a separate Not yet due bucket.

Each row shows the customer, invoice number, issue date, the outstanding amount (converted to your base currency, with the invoice's own native-currency total shown alongside if it differs), age in days, invoice status, and aging bucket. The summary cards at the top show the total outstanding value and invoice count per bucket.

note

AR Aging reads directly from open invoices — it does not require GL entries. Invoices with status Paid or Draft are excluded (a Draft was never sent and isn't a real receivable yet). Any payment recorded against a specific invoice with Record Payment on the customer's Ledger tab is netted out of the outstanding balance — a partially-paid invoice shows only what's actually still owed, and one that's fully covered drops off the report even if its status was never changed to Paid.

AP Aging​

Shows all approved purchase invoices (vendor bills not yet paid) grouped by days past their due date.

BucketMeaning
CurrentDue date is in the future — no action needed yet
1–30 daysSlightly overdue
31–60 daysOverdue — schedule payment
61–90 daysSignificantly overdue — risk of supplier dispute
90+ daysSeriously overdue — immediate action required

Each row shows the vendor, bill number, bill date, due date (highlighted in red if overdue), amount (converted to your base currency, with the bill's own native-currency total shown alongside if it differs), and exact days overdue. Summary cards show value per bucket, all in your base currency.

note

AP Aging reads from Purchase Invoices with status Approved. Draft and Paid bills are excluded. A bill in a foreign currency is converted to your tenant's base currency before it's totalled — it isn't added to TZS bills at face value.

info

All GL-based reports (P&L, Balance Sheet, Trial Balance) read from posted GL entries only. Draft and voided journals are excluded. AR and AP Aging read from invoice records directly.

The This FY and Last FY period shortcuts follow the fiscal year start set in Accounting → Accounting Settings (Tanzania's standard is July → June).


Category Report​

If it's enabled for your tenant, Accounting → Category Report breaks down purchases, stock on hand, and sales by item category and brand, with category, brand, and date filters and 📥 Export to Excel. It needs the View Financial Reports permission. Until you've set up item categories (Settings → Invoicing & Tax → Item Categories) and tagged your items, the page explains how to do that instead.


Posting Setup​

Go to Accounting → Posting Setup to configure the GL accounts the system uses when automatically posting transactions. You need the Manage Posting Setup permission, and at least one posting account in your Chart of Accounts. Each field is a searchable account lookup; clear a field with its ✕. Click Save Posting Setup when done.

If an account a transaction needs isn't set, that transaction simply isn't posted — it's not treated as an error. Purchase invoices are the exception for line accounts; see Purchase Invoices below.

Core account mapping​

FieldPurpose
Accounts ReceivableDR when a sales invoice is raised; CR when it's paid
Accounts PayableCR when a purchase invoice is approved; DR when it's paid
VAT PayableCR for output VAT on sales invoices (hidden if your business isn't VAT-registered)
VAT Input (Recoverable)DR for input VAT on purchase invoices and expenses (hidden if not VAT-registered)
Default RevenueCR for all sales invoice revenue and POS sales revenue
Default Bank / CashDR when a sales invoice is paid; CR when a purchase invoice is paid, an expense is approved, or a staff loan is issued
Gain/Loss on Asset DisposalUsed on the draft journal when a fixed asset is disposed
Inventory Asset (POS)CR when a POS sale takes stock out — optional; without it (and Cost of Goods Sold), POS sales aren't posted
Cost of Goods Sold (POS)DR when a POS sale takes stock out — optional, as above
WHT Tax Credit ReceivableDR for tax a client withheld when paying a WHT-applicable sales invoice — without it, those payments aren't posted
Fuel Inventory Asset (Diesel Yard)CR when fuel is issued from the yard to a vehicle or trip — optional; falls back to Inventory Asset (POS) if unset. See Diesel Yard →

If your tenant has HR & Payroll, a Payroll Account Mapping section adds Salaries & Wages Expense and Salaries Payable (both required for a payroll run to post), plus optional employer NSSF, SDL, WCF, PAYE, NSSF, SDL and WCF payable, and Other Deductions accounts — each optional one folds into Salaries & Wages Expense or Salaries Payable when unset. With staff loans enabled, it also shows Staff Loans Receivable: DR when a staff loan is issued, CR by each payroll loan deduction.

Expense category accounts​

Map each expense category to a specific GL account. The list matches your tenant's own expense categories (edit them in Settings → Invoicing & Tax → Expense Categories).

The Default Expense Account at the top of this section catches every category you haven't mapped, including any category added later, so a new category posts without anyone remembering to come back here. Until you set it, it uses whatever account Other is mapped to (the row shows "Not set: uses Other (…)"). Each unmapped row shows which account it will post to.

When an expense is approved, it posts automatically: Dr the category's mapped account, or the Default Expense Account when the category has none (plus Dr VAT Input for any VAT, when that account is set) / Cr Default Bank / Cash. Voiding an approved expense posts the reversal. If it can't post (no Default Bank / Cash, or no account at all: the category is unmapped and neither a Default Expense Account nor an Other mapping exists), approving still works, and a warning says exactly what to set.

Fuel issued from the Diesel Yard and spare parts issued to a vehicle are recorded as expenses too, but they credit the inventory account instead of Bank.

Purchase invoice lines also use this map when the line has no account of its own (see Purchase Invoices →).


Bank Reconciliation​

Go to Accounting → Bank Reconciliation to manage your bank accounts and match statement lines against posted GL entries.

Managing bank accounts​

  1. Click + Add Account and enter the account name, bank name, and the GL account this bank account posts to (all three required) — account number is optional and unvalidated. The GL account list offers every posting account in the Assets category (in the Tanzania Standard CoA, bank accounts are numbered 402xx, e.g. 40220 Bank Account — CRDB); type to search it
  2. Click any account row to open its FactBox with a running balance summary
  3. Click Reconcile → in the FactBox to open the two-column reconciliation view for that account
  4. Archive an account you no longer use — archived accounts are hidden from the list but their history is preserved (soft delete)

Adding statement lines​

Inside an account's reconciliation view:

  • Manual entry — add one statement line at a time (date, description, amount)
  • CSV paste — paste multiple lines of comma-separated statement data at once instead of typing each one in

Matching​

The reconciliation view shows your bank statement lines on one side and unreconciled GL entries (from the GL account you set directly on that bank account when you created it, not from the Posting Setup screen) on the other.

  1. Select a statement line
  2. Select the matching GL entry
  3. Click Match Selected — both are marked reconciled and linked

Click Unmatch on any matched pair to reverse it.

Matching is manual

There is no automatic matching by amount or date — every match is a deliberate action you take by selecting both sides. This is intentional: it keeps a human in the loop for what is often the most error-sensitive step in the books. Matching a line that doesn't add up to the statement amount doesn't block you (a statement deposit can legitimately correspond to several GL entries added one at a time), but you'll get a warning toast if the running total doesn't line up yet.

Difference figure

The Difference tile compares your bank statement balance against the GL balance for the account, both computed as of the same activity — it should trend toward zero as you reconcile a period with no missing entries on either side.

The default Accountant role can view and reconcile but not add or edit bank accounts — that needs Manage Bank Accounts.

The reconciliation summary at the top of the view shows matched count, unmatched count, and the outstanding difference between your statement and the ledger.

Exporting to Excel​

Click ⇩ Export to Excel — from the account list to export every bank account plus all statement lines, or from inside a single account's reconciliation view to export just that account. The workbook has two sheets: Bank Accounts (balances, GL mapping, reconciliation status) and Statement Lines (date, description, debit/credit, matched status). A debit/credit totals row is included only when exporting a single account, since summing across accounts in different currencies wouldn't be meaningful.


Currency Management​

Go to Currency (under Accounting, or under Finance for logistics-only tenants) to manage the currencies your business transacts in beyond your tenant's base currency.

Your base currency is set once, in Settings, and cannot be changed per-document — it's the currency all rollups and reports are expressed in.

Sales and purchase documents (Invoices, Quotations, Sales and Purchase Orders, Requisitions, Purchase Invoices, and the Default Invoice Currency in Settings) offer a fixed choice of TZS and USD, regardless of what you add here. Expenses are wider: they also offer the regional currencies drivers pay in on the corridors (ZMW, CDF, MWK, RWF, BIF, KES, UGX, ZAR, MZN) plus every currency you add here — see Logistics → Expenses in another currency.

Currency Management controls the exchange rate used to convert per-document amounts into your base currency for rollup totals (Job profit, Quotation Pipeline/Won Value, Purchase Invoice Outstanding). A foreign-currency expense is the exception: it stores the rate it was recorded at, and your saved rate here is only used to prefill that field.

Adding a currency​

  1. Click + Add Currency and pick from the list of common currencies (USD, EUR, GBP, KES, ZMW, CDF, MZN and others)
  2. The system fetches a live exchange rate automatically where available
  3. Or switch to Manual and enter your own rate

Each currency shows both directions — how many units of your base currency equal 1 unit of the foreign currency, and vice versa — along with when the rate was last updated.

Keeping rates current​

Rates can be refreshed manually at any time, or set to auto-refresh on a schedule (every 24 hours or every 7 days) from the auto-refresh setting. Manually-entered rates are never overwritten by an auto-refresh.

Removing a currency​

Removing a currency here does not affect documents already created in that currency. TZS, USD and the regional expense currencies stay available whether or not they're listed here; another currency you added stops appearing on new expenses.

Add whichever of TZS/USD isn't your base currency

Since every document dropdown offers TZS and USD regardless of what's added here, make sure the one that isn't your tenant's base currency has a rate configured. If a document uses a currency with no configured rate, the app shows an inline warning wherever that total is displayed (e.g. on the Job profit card, Quotation Pipeline/Won Value, or Purchase Invoice Outstanding) instead of silently using an incorrect 1:1 rate.


Items & Product Catalog​

Go to Accounting → Items to manage the shared catalog of products and services.

Each item stores a code, name, type (Product or Service), unit of measure, selling price, cost price, and TRA VAT category; products can also carry a barcode, brand, and item category. Items can also carry GL account overrides — an expense account and expense category that pre-fill onto purchase invoice lines when the item is picked. (The Revenue Account override is stored but not yet used: sales invoices and POS sales post revenue to Posting Setup's Default Revenue.)

See the Items module guide → for full documentation.


Purchase Invoices​

Go to Accounting → Purchasing to record vendor bills and track accounts payable.

The status flow is Draft → Approved → Paid (an Approved bill can also be Voided). Approving a bill auto-posts a balanced GL journal using the Posting Setup mappings (it needs Accounts Payable set):

DR Expense Account(s) [line subtotals]
DR VAT Input [VAT amounts, if applicable]
CR Accounts Payable [total]

Each line's expense account is the line's own account (filled in when you pick a catalog item that has an Expense Account override), otherwise the account mapped to the line's expense category in Posting Setup. If neither exists, the line posts to account 6000, which isn't in the Tanzania Standard CoA — pick catalog items with an expense account, or map their categories, before approving.

Marking a bill as paid posts a second journal (it needs Accounts Payable and Default Bank / Cash set):

DR Accounts Payable [total]
CR Bank / Cash [net amount, after WHT]
CR WHT Payable [WHT amount, if the bill is subject to withholding tax]

The WHT Payable line always uses account 70120 (Withholding Tax (WHT) Payable in the Tanzania Standard CoA) — it isn't configurable in Posting Setup. If the vendor is subject to withholding tax, set the WHT rate (2%/5%/10%/15%) when creating or editing the bill — the payment modal only displays the already-calculated WHT breakdown and lets you record the WHT Certificate number once you have it.

When creating a bill, pick the vendor from the searchable list (or create one with + New Vendor), and click the 📦 button on any line to pick from the Items catalog — description, unit, cost price, VAT, and account pre-fill automatically. An approved Requisition can also be turned into a Draft bill with 📄 Convert to Purchase Invoice.

See the Purchase Invoices guide → for full documentation.