Trial balance
The trial balance is the backend-computed debit and credit summary of General Ledger accounts as of a selected date and currency. It tests double-entry equality. It does not by itself prove source completeness, correct classification, bank agreement, or financial-statement correctness.
Audience: accountants, finance managers, auditors, implementers, and support analysts
Learning time: 35 minutes
Navigation: Finance → Accounting → Trial Balance
Availability: current UI supports as-of date, currency, zero-balance inclusion, comparison, account drill-down, CSV/print export, and refresh.
Learning outcomes
You will be able to:
- explain account debit, credit, normal balance, and net balance;
- select an appropriate as-of date and currency;
- interpret the
isBalancedresult without overclaiming; - drill from a row to journal activity;
- compare two as-of dates;
- diagnose imbalance, unexpected zero, or unexplained movement;
- use the trial balance as an input to tie-out and statement review.
Data model
The response contains rows with account ID, code, name, type, normal balance, total debits, total credits, and balance. It also contains total debits, total credits, isBalanced, as-of date, and currency.
Account types are asset, liability, equity, revenue, and expense. Assets and expenses normally carry debit balances; liabilities, equity, and revenue normally carry credit balances. A balance on the opposite side is not automatically an error, but it should be explained.
Prerequisites
| Requirement | Why |
|---|---|
| Correct school | prevents tenant/default or cross-school mixing |
| Approved as-of date | defines included journal dates |
| Currency | statement is currency-specific |
| Posted journal evidence | drafts should not be treated as ledger activity |
| Active Chart of Accounts understanding | rows use account identities/types |
| Exact statement permission | backend authority is gl:statements |
| Journal read access | required for drill-down |
| Cut-off and period evidence | supports close interpretation |
Roles and exact permissions
| Action | Preferred exact ability | Current UI note |
|---|---|---|
| Run trial balance | gl:statements | the current page also recognises broad financial_payment view/list/edit fallbacks |
| Drill into journals | gl_journal_entry:list | account/date filters |
| Read a journal | gl_journal_entry:read | header, lines, source, reversal |
| List accounts | gl_account:list | account identity and type |
| Read account | gl_account:read | scope and normal balance |
| Export/print current view | statement page action | export permission must follow deployment policy |
The API contract is authoritative. A visible page caused by a legacy fallback is not proof the user has gl:statements; backend 403 evidence should be corrected through role configuration, not worked around.
Run the statement
- Open Trial Balance and confirm the school.
- Set the as-of date. Use the accounting cut-off, not an arbitrary current date.
- Select the required currency.
- Decide whether zero-balance accounts should be included. Excluding them improves readability but can hide configuration rows.
- Enable comparison and choose a prior as-of date when reviewing movement.
- Apply filters and wait for the server result.
- Verify response as-of date and currency match the request.
- Review total debits, total credits, and
isBalanced. - Scan account types and unusual balances.
- Select a row to drill into journal entries through the same cut-off.
- Export only after filters and result identity are recorded.
- Use month-end tie-out to compare control accounts with source/subledger balances.
Interpretation
A balanced result proves that included debit and credit totals are equal under the server calculation. It does not prove:
- every eligible source posted;
- no duplicate journal exists;
- mappings used correct accounts;
- source and ledger cut-offs agree;
- bank/provider movements reconcile;
- statement classifications and retained earnings are correct;
- a period is ready to close.
Comparison review
Comparison should use the same school, currency, zero-balance option, and methodology. For each material movement:
- compute or read the difference;
- drill into account activity between the two dates;
- group by source type;
- identify reversals and manual journals;
- explain movement using source records;
- distinguish normal activity from corrections.
Do not compare USD and another currency as if the difference were operating movement.
Worked scenario: Mupfure Learning Academy
Mupfure runs the USD trial balance at 31 August. Total debits equal total credits. Receivables increased by USD 12,000 and revenue increased by USD 11,500, while a USD 500 credit balance appears in a suspense account.
The accountant drills into suspense and finds a manual journal posted during migration. The trial balance is balanced, but the suspense balance is not accepted as resolved. The source memorandum is reviewed and a governed reclassification is prepared.
Accounting impact and relationship to statements
The trial balance is the common ledger input to the income statement and balance sheet. Revenue and expense balances support period performance; asset, liability, and equity balances support the position statement. Retained earnings can be computed in the balance-sheet response.
A trial balance row should never be “fixed” by client-side arithmetic. The server statement endpoints own totals. If the result is wrong, investigate journals, dates, currency, account configuration, and backend calculation.
Controls and audit evidence
Retain school, filters, as-of date, currency, comparison date, include-zero setting, request ID, response totals, balanced flag, row export, drill-down journal IDs, reviewer, review date, explanations, and tie-out references.
Exports are snapshots of the selected view. File existence does not prove review or certification. Protect exported student/supplier-sensitive descriptions according to school policy.
Failure modes
| Symptom | Likely cause | Evidence | Safe action | Escalate when |
|---|---|---|---|---|
| totals do not balance | corrupt/legacy data, projection defect, currency mixing, or calculation defect | raw rows and journal headers | block close and run integrity review | posted documents are balanced but statement is not |
| account unexpectedly absent | zero hidden, wrong school/currency/date, inactive/default scope issue | filters and account record | correct frame and rerun | qualifying activity remains absent |
| row balance unexpected | wrong journal, mapping, reversal, or normal-balance interpretation | drill-down source lineage | correct root transaction/journal | activity cannot explain row |
| comparison movement wrong | mismatched filters or dates | both parameter sets | align settings | same settings produce inconsistent result |
| page opens but API is 403 | UI fallback permission mismatch | abilities and response | grant exact gl:statements | exact permission is present |
| export total differs from screen | stale data or export formatter defect | request timestamps and rows | refresh and regenerate | same snapshot differs |
Verification checklist
- School, as-of date, and currency are explicit.
- Zero-balance setting is recorded.
- Backend totals and
isBalancedare retained. - Material or unusual rows are reviewed.
- Comparison uses identical methodology.
- Row drill-down explains movements.
- Manual and reversal entries are identified.
- Control accounts are handed to tie-out.
- Export parameters match the reviewed view.
- Balanced status is not overstated as full close readiness.
Practice and knowledge check
Guided practice: run current and prior-month trial balances, select three material movements, and trace them to journals and sources.
Independent scenario: the statement is balanced but one source module is USD 2,000 lower than its control account. Explain the next steps.
- What does
isBalancedprove? - What does it not prove?
- Which permission is authoritative for statements?
- Why must comparisons use one currency?
- How do normal balances help review?
- Why should totals not be calculated in the browser?
- What is the next control after a balanced trial balance?
Answer guide: it proves included debits equal credits; not completeness/classification/reconciliation; use gl:statements; mixed currencies distort movement; normal balance aids interpretation; backend owns statement logic; proceed to source-ledger tie-out and close evidence.
Next lesson
Continue to Period close.