What Posts to the Ledger, and Where Balances Come From
The Financial Accounting module’s overview routes you to its applets and guides. This page holds the mechanism behind them: which documents write a journal and how, where each kind of balance is kept, and what a missing default or cashbook costs you.
What posts to the ledger — and what does not
The server builds a document’s journal from one table of posting rules, which has seven entries. If a document type is not in that table — or does not fall through to one by name — it does not post through this path.
| Handler | Documents that use it | Journal at FINAL (net) |
|---|---|---|
SALES | Sales Invoice, POS cash bill, Sales Return, Sales Credit / Debit Note, Sales Refund Note, and anything else whose type name contains SALES | Dr DEBTOR / Cr SALES, Cr OUTPUT_TAX (nothing posts to SALES_DISCOUNT: a line discount is already netted into the line; return lines to SALES_RETURN — except the Refund Note, whose lines land in SALES, a known defect). No cost-of-sales line: the handler has no stock entry, so a sale does not post COGS or reduce inventory value in the ledger at FINAL. Cost of sales arrives once a month, from Month End Processing (see What does not post) |
PURCHASE | Purchase Invoice, Purchase Return, Purchase Debit / Credit Note, and anything whose type name contains PURCHASE | Dr PURCHASE, Dr INPUT_TAX / Cr CREDITOR; returns to PURCHASE_RETURN. Nothing posts to PURCHASE_DISCOUNT: a line discount is already in the line’s net amount, and a group discount posts to PURCHASE. Forex gain or loss is a separate journal each contra writes, not part of this one |
INTERNAL_PURCHASE_GRN_STOCK_IN | Purchase GRN Stock In only — the plain Purchase GRN is signum 0/0 and posts nothing | Dr INVENTORY_NOT_INVOICED / Cr CREDITOR_NOT_INVOICED — the GR/IR (Goods Received / Invoice Received) accrual |
INTERNAL_RECEIPT_VOUCHER | Receipt Voucher (Internal) | Dr cashbook GL (one line per settlement) / Cr DEBTOR; charges to SETTLEMENT_CHARGES |
INTERNAL_PAYMENT_VOUCHER | Payment Voucher (Internal) | Dr CREDITOR or the expense lines / Cr cashbook GL; charges to SETTLEMENT_CHARGES |
PURCHASE_CONSIGNMENT | The consignment purchase documents in the Purchasing module | CONSIGNMENT_STOCK against CONSIGNMENT_LIABILITY |
INTERNAL_STOCK_ADJUSTMENT | Stock Adjustment | Adjust-out: Dr STOCK_ADJUSTMENT / Cr stock (STOCK_BALANCE); adjust-in the reverse |
Every handler resolves the GL code the same way — GL code on the line → GL code on the header →
item-company link → company default — and every journal is checked before it is written: unequal
debits and credits throw TOTAL_DEBITS_AND_TOTAL_CREDITS_NOT_BALANCES, an empty journal throws
NO_JOURNAL_CREATED, and a missing entity default (DEBTOR*, CREDITOR*) throws
MISSING_DEFAULT_GL_CODE: <key>. In all three cases FINAL has already succeeded: these checks run in the posting job that FINAL starts, so the document stays FINAL with no journal behind it, and nobody at the Final button sees a message. VOID of a
posted document writes a mirror journal with every debit and credit swapped, carrying the
original document’s transaction date — only the posting timestamp is today, so voiding a January
invoice in March moves January. See What a Void Undoes.
Three more things write journals without a handler: a manual journal (keyed or imported in Ledger And Journal, validated balanced on the server), a Cash Transfer at FINAL (Dr the receiving cashbook’s GL / Cr the sending one’s), and the Fixed Asset Transactions tab (acquisition, adjustment, disposal), which assembles the lines in the browser and posts them directly.
What posts nothing at all — cost of sales at FINAL, the depreciation run, the report applets — is listed on the module overview.
The balances, and the record each one is kept in
| Balance | Source of truth | Read by |
|---|---|---|
| A customer’s or supplier’s outstanding amount | The open amount plus contras on each FINAL document header; contras from receipt/payment vouchers, credit notes and the report applets reduce it | Debtor Report, Creditor Report, Debtor and Creditor Report, Statement of Account, and the contra screens on a receipt or payment voucher |
| A cashbook’s balance | The cashbook transaction lines written when a Receipt Voucher, Payment Voucher, POS settlement, Cash Transfer or Cash Adjustment reached FINAL (VOID lines excluded) | Query Cashbook Transaction, Cash Level, Bank Reconciliation |
| A GL account’s balance | ACTIVE journal lines in Ledger And Journal | Sub Ledger, the Profit Loss Report (live), Financial Report snapshots (via month-end summaries) |
| A budget register’s balance | Allocated less used on the register, moved by virements, adjustments and invoice lines | Budget Report |
Each of those is worked out live, from the rows underneath it. The figures on your reports mostly are not — the Trial Balance, Profit and Loss and Balance Sheet read a stored monthly summary, and the historical aging reads a monthly photograph. Which figures BigLedger stores, and which it works out fresh explains which is which across all five subsystems that make that trade-off, and how to tell a stale figure from a wrong one. If you already have a figure that will not tally, start instead from the symptom: when two numbers don’t tally.
The three are maintained separately. A receipt voucher moves all of the first three at once; a manual journal moves only the third. That is why “the GL bank balance is right but the cashbook is wrong” and “the customer’s statement is right but the debtor control account is wrong” are different problems with different fixes.
What a missing default or cashbook costs you
- Two things must exist before anything posts. Each company needs its Default GL Codes (in Chart of Account), and every payment button needs a cashbook behind its settlement method. When either is missing, the document still finalises. A missing default code costs it its journal. A missing cashbook costs it its journal and its cashbook line, so the money is absent from the ledger, the cashbook, Cash Level and Bank Reconciliation. Nothing re-posts them by itself when you add the missing cashbook later. Getting them back is two repairs, because Missing Journal Create rebuilds only the journal. The cashbook lines come back one document at a time from Missing Cashbook Resolve in Trace Document, or for a whole date range from the Data Fix applet’s Missing Cashbook tab (the worked example walks through both). Both repairs take named document types only. Missing Cashbook takes cash bills, receipt vouchers, payment vouchers and cash transfers. Missing Journal takes sixteen: sales and purchase invoices, returns, credit and debit notes, cash bills, payment and receipt vouchers, stock adjustments, goods received notes, cash transfers and moving-average resets. Refund notes, reimbursement vouchers and consignment documents are not among them. So a sales invoice paid on its own Payment tab gets its journal back from Missing Journal, but not the cashbook line for that payment, where your company writes one. For that line, ask BigLedger support. A document whose checks read Unsupported document type and that has no journal: consignment GRNs, returns and billings are posted from the Stock Flow Report’s Difference Listing (its Purchase Consignment row, CREATE); for refund notes, consignment GINs and reimbursement vouchers, ask BigLedger support. A journal that exists but posted short is a different repair, and it has no type list: Trace Document’s Repost button, beside Posting Journal, deletes the journal and builds it again from the document. A failed Repost shows no message and has already deleted the old journal, so check Journal Txn afterwards.
- One missing default stops every document that needs it. The posting job looks up the company’s default GL code
when it builds each journal; the code is not stored on the document. So with no
DEBTORdefault, every sales document (invoice, cash bill, return, credit note) and receipt voucher of that company whose customer is a trade debtor is refused its journal, all at once. Changing a default changes what posts next. Journals already written keep the old account until you correct them, except the month-end cost-of-sales and retained-earnings journals, which the next PROCESS rewrites with the new default.
Reports and connectors this module does not have
Two registry applets, Autocount (AccountConnector_Autocount_Applet) and SQLAccount
(AccountConnector_SQLAccount_Applet), have no page: what they serve is a customer-profile screen,
not an accounting connector, and whether they are product or a customer build is an open question.
Until that is decided, no page in this module describes an AutoCount or SQL Account import.
What has no report. There is no cash flow statement, no consolidated group statement (one snapshot per Set of Books; combine outside BigLedger), no cost-of-sales-by-item report other than the Gross Profit listing behind the Profit Loss Report, and no budget commitment or reserved-amount report (a reserved amount exists on the register and nothing writes to it).
Related documentation
- Financial Accounting module — the applets and guides for this ledger.
- Ledger And Journal and Financial Report — the repair screens named above.
- What a Void Undoes and How work actually runs — the void journal and the posting job.