Skip to content

Cashbook

Every place your money is held — bank accounts, cash drawers, card-acquirer and e-wallet accounts — is a cashbook set up here, and every way money moves is a settlement method. Receipt vouchers, payment vouchers, POS and bank reconciliation can only pick from what is set up here.

Overview

The Cashbook applet defines every place money is held — bank accounts, cash drawers, card-acquirer and e-wallet accounts — as a cashbook tied to a company and a GL code, and every way money moves in or out as a settlement method (cash, cheque, bank transfer, card, e-wallet, voucher, points…). Receipt vouchers, payment vouchers, POS and the bank reconciliation all pick from what is set up here.

It also records money moving between cashbooks (Cash Transfer), corrections to a cashbook balance (Cash Adjustment), post-dated cheques waiting to be banked in, and provides the enquiry screens (Query Cashbook Transaction, Cash Level, Cashbook Discrepancy Checking) that finance uses at month-end. Each cashbook also carries the Weightage Configuration that the Bank Reconciliation auto-matcher uses. It is set up once by the finance administrator and then used daily by the cashier and the accounts clerk.

Where it fits

DirectionApplet / documentWhy
UpstreamChart of AccountEvery cashbook must point at a GL code of its company; cash transfer journals post to the GL codes behind the cashbooks / settlement methods on each line
UpstreamOrganisationCompany and branch on the cashbook; branch access on settlement methods; branch settings
DownstreamReceipt Voucher, Payment VoucherChoose a settlement method, which resolves to a cashbook and its GL code; post-dated cheques received there arrive in the PD Cheque queue here
DownstreamPOS GeneralTenders are settlement methods; the per-branch default settlement method per tender type is set in Branch Settings here and read by POS General’s settlement adjustment screen
DownstreamBank ReconciliationReconciles a cashbook’s transaction lines against the bank statement; uses the cashbook’s Members and Weightage Configuration
DownstreamLedger And JournalJournals created when a cash transfer is finalised (cash adjustments do not post a journal — see Lifecycle and effects)
SiblingDoc Item MaintenanceA settlement method is stored as a financial item of type STL_MTHD; it can therefore surface in item lists

Modules: Core, Financial Accounting, POS.

Screens and menus

MenuWhat it is for
CashbookListing, create and edit of cashbooks (Details, Triggers & Limits, Members, Weightage Configuration tabs)
Settlement MethodListing, create and edit of settlement methods
Import Cashbook, Import Settlement Method, Import Settlement Method BranchCSV uploads with a checking step before commit
Cash TransferMove money between two cashbooks (DRAFT → FINAL → VOID)
Cash Transfer By TransactionListing of individual cash-transfer transaction lines; edit moves a line to a different cashbook
Upload Cash TransferCSV upload of transfers — what the screen will not tell you is under Cash Transfer below
PD Cheque → Queue, HistoryPost-dated cheques waiting to be banked in, and those already banked in
Query Cashbook TransactionOpening balance, every line with debit / credit, running balance, drill-down to the source document and its journal
Cash AdjustmentCorrect a cashbook balance with an adjustment document (DRAFT → FINAL)
Cash LevelOpening, in/out and closing per cashbook, with GL code and company
Cashbook Discrepancy CheckingLines where the document amount and the cashbook amount differ
Audit TrailChange history

Gear (Settings) menu: Application Settings, Default Selection, Printable Format Settings, Branch Settings, plus the shared permission, webhook, feature-visibility, release-notes and applet-log screens. Personalisation: per-user Default Selection.

Cashbook

Create asks for Cashbook Code, Cashbook Name, Account Number, Company, Currency and GL Code. The edit screen has four tabs:

TabContents
DetailsCode, name, description, account number, branch, bank, status, default settlement method (only when ENABLE_SETTLEMENT_METHOD is on), audit fields
Triggers & LimitsLow level trigger, high level trigger, facility amount, overdraft limit — numbers stored on the cashbook
MembersTenant users (by e-mail) linked to this cashbook, each with rank MEMBER and a status
Weightage ConfigurationNamed configurations for the bank-reconciliation auto-matcher (see Fields)

Settlement Method

Create asks for Code, Name, Sort Code (display order) and the Cashbook it settles into. The edit screen:

TabContents
DetailsSettlement type, cashbook, status, external settlement code, payment provider / gateway, PGW payment ID and type code, installment period, membership point currency, min / max threshold amount, settlement limit (amount or percentage), labels
BranchWhich branches may use this method. A method with no branch ticked is invisible on a sales invoice — the invoice’s payment form lists only the methods linked to the invoice’s branch — even when its cashbook and everything else are right. Tick the branch before the first invoice needs it
ChargesCharges the bank / provider takes from you (mode NONE / RATIO / ABSOLUTE, rate or absolute value, min / max limit, additional surcharge), separate sending charges, and a surcharge passed on to the customer (mode, rate or value, rounding precision, the item code it is billed under). The charge is applied to every settlement line that uses the method: the cashbook journal line is booked at amount − charge, the charge posts to the company default SETTLEMENT_CHARGES, and the cashbook transaction line’s open amount is netted the same way — so Bank Reconciliation sees the net receipt
Payment Provider Error CodesError code, description and remarks mapped from the payment gateway
FPX e-MandateBiller, exchange and seller IDs — shown only when the settlement type is FPX_EMANDATE

A Tax tab records tax codes against the method: country, then type, then code, with the rate taken from the code.

Settlement types: BANK_TRANSFER, CASH, CHEQUE, CREDIT_CARD, DEBIT_CARD, E_WALLET, FPX_EMANDATE, MEMBERSHIP_POINT_CURRENCY, OPEN_CREDIT, VOUCHER, OTHERS.

Cash Transfer

A cash document with a transfer number, transfer type (Bank In, TT, Cash), company, branch, reference number, transaction date, remarks and status, plus transfer lines of three kinds: Transfer From Cashbook (stored negative), Transfer To Cashbook (positive) and Transfer Charges (positive). Lines whose settlement type is POST_DATED_CHEQUE also carry a cheque date. Listing buttons: FINAL, VOID, SINGLE/MULTIPLE PRINT; edit buttons: FINAL, SAVE, CLONE.

Cash Adjustment

A cash document (document type, adjustment number, company, currency, transaction date, remarks) with lines of type Adjust In (positive) or Adjust Out (negative) against a cashbook. Listing and edit offer FINAL and SAVE only; there is no VOID button.

PD Cheque

Queue lists post-dated cheques not yet banked in (transfer no., document type and no., transaction date, cheque date, amount). Select rows, choose the receiving cashbook and its bank-in settlement method, and press BANK IN. History lists what has been banked in, with the origin, from and to cashbooks and the process status.

Enquiries

  • Query Cashbook Transaction — one cashbook (or several), one period: an opening-balance row, then each line with document short code and number, branch, payee, reference, remarks, transaction date, cashbook, debit, credit, credit-card details and running balance. Rows drill down to the source document and its journal.
  • Cash Level — one row per cashbook with its opening, in/out and closing for the dates you choose; filtered by company, cashbook and date. What the screen does not tell you is below.
  • Cashbook Discrepancy Checking — transaction date, company, document short code and number, item code, document amount, cashbook amount and the difference.

Balances on Cash Level: where they come from

Nothing on Cash Level is stored. Each time you search, your browser downloads every cashbook transaction line dated inside the range and adds them up per cashbook — that sum is In/Out, money in less money out. Then, for each cashbook that made it onto the list, it asks for the Opening: every line in that cashbook dated before your From date, however old, added together. Closing is Opening plus In/Out, so it is the cashbook’s balance when your To date ends. When the applet setting HIDE_VOID_TRANSACTIONS is on, voided documents are left out of all three.

The date filter starts at today → today. Open Cash Level and search without touching the dates, and you see only the cashbooks that had a transaction today.

A cashbook that holds money but had no transaction in the date range is not listed at all, so any total you add up from the Closing column is less than the cash you actually hold, and nothing on the screen says a cashbook is missing. The rows are built from the transaction lines, and a quiet cashbook — a fixed deposit, a branch float nobody touched this week, a marketplace clearing account between payouts — has no line in the range to make a row from. Its balance is still there; Cash Level just does not show it. You will see it as fewer rows than the Cashbook listing has active cashbooks, or as a cash total well below what your bank statements and cash counts say.

Two ways to get a full cash position:

  • Widen the range back. Set From to a date before your first transaction in BigLedger and To to the day you want the position for. Every cashbook that has ever moved now appears, and Closing is still each one’s balance at your To date — only Opening and In/Out now describe the longer period. On a busy group this downloads every line in that range into your browser, so expect it to be slow.
  • Count and cross-check. Compare Cash Level’s rows with the active cashbooks on the Cashbook listing for the same companies, and read any missing cashbook in Query Cashbook Transaction, whose opening-balance row is shown whether or not the period has lines.

Cash Level has no PDF export: the button for it is switched off in the applet. A template uploaded on the Cash Level tab in Printable Format Settings is therefore not printed from this screen.

Configuration

Before you can use it

PrerequisiteWhereWhy
Company with its GL codes and branchesOrganisationThe backend rejects a cashbook whose company is missing or unknown
A GL code per bank / cash account, belonging to that companyChart of AccountRequired on the cashbook; the GL code must belong to the cashbook’s company, or the save is refused
A PRIMARY ledger for the companyChart of Account > Companies > LedgersCash transfer posting creates a sub-ledger on the company ledger for each cashbook GL code it meets for the first time
A cashbook before its settlement methodsthis appletSettlement method create requires a cashbook
Company default GL code SETTLEMENT_CHARGES, if any settlement method carries chargesChart of Account › Companies › Default GL CodesThe charge line of every settlement that uses the method posts to it; without the default the charge line resolves no GL code and is dropped, and the customer’s receivable line takes up the fee — the journal balances and posts with the fee on trade debtors and none on the charges account. Only a customer with no AR/AP type makes it fail the balance check instead
Branches linked on each settlement methodthis applet, Settlement Method > BranchBranch linkage is what the transaction applets filter on
A surcharge item, if you surcharge customersDoc Item MaintenanceThe surcharge is billed to the customer as a line of that item
A printable format for INTERNAL_CASH_TRANSFER, if you print transfersSettings > Printable Format SettingsThe listing’s print button is disabled until a default printable is chosen

Applet settings

Application Settings and Default Selection save tenant-wide, so a change applies to every user of the applet; Branch Settings save per branch; Personalisation > Default Selection saves per user. Anyone who can open the gear menu can change them — the applet registers no permission for the settings screens.

Settings > Application Settings — six tabs. Every row below is rendered as a control, saved by the SAVE button and read by the applet.

Setting (tab)What it controlsDefaultEffect when changed
HIDE_SETTLEMENT_METHOD, HIDE_IMPORT_CASHBOOK_MENU, HIDE_IMPORT_SETTLEMENT_METHOD_MENU, HIDE_IMPORT_SETTLEMENT_METHOD_BRANCH_MENU, HIDE_CASH_TRANSFER, HIDE_UPLOAD_CASH_TRANSFER_MENU, HIDE_PD_CHEQUE_MENU, HIDE_QUERY_CASHBOOK_TRANSACTION_MENU, HIDE_CASH_TRANSFER_BY_TRANSACTION_MENU, HIDE_CASH_ADJUSTMENT_MENU, HIDE_CASH_LEVEL_MENU (Sidebar Menu)The eleven hideable left-menu entriesoffThe entry is hidden for everyone who lacks the matching SHOW_* permission. Cashbook, Cashbook Discrepancy Checking and Audit Trail have no switch
HIDE_EXTERNAL_SETTLEMENT_CODE, HIDE_INSTALLMENT_PERIOD, HIDE_THRESHOLD_AMOUNT, HIDE_PGW_PAYMENT_ID, HIDE_PGW_PAYMENT_TYPE_CODE (Settlement)Fields on the settlement method Details taboffThe field is dropped from the form
VERTICAL_ORIENTATION (Settlement > Vertical UI Settings)Vertical layout of the cash transfer screensoffThe cash transfer screens and line dialogs switch to the vertical layout
Display cash transfer running number (Cashbook Transfer)—offRendered but not consumed: nothing reads it
SAVE_CASH_TRANSFER_DETAILS (Cashbook Transfer)Keeps the header and unsaved transfer lines of a DRAFT transfer in the browser’s local storage so they survive leaving the pageoffThe transfer screens restore the cached values when you return
Sort by column, Order by (Cashbook Listing)—noneRendered but not consumed: the cashbook listing always orders by last-updated date
ENABLE_SETTLEMENT_METHOD (Cashbook Listing > Cashbook Settlement Method)Whether a cashbook carries a default settlement method, and which way round the cash transfer line dialog worksoffOn: the cashbook edit screen shows a required Default settlement method field; the transfer line dialog asks for the cashbook first and pre-fills its default settlement method; Cash Transfer By Transaction applies the default settlement method of the cashbook you move a line to. Off: the line dialog asks for the settlement type first and then the cashbook
ENABLE_AUTO_POPUP (Create & Print Documents)Opens the generated PDF in a preview instead of downloading itoffRead when printing from the transfer listing
HIDE_VOID_TRANSACTIONS (Query Cashbook Txn)Removes VOID documents from Query Cashbook Transaction and Cash LeveloffBoth the opening balance and the lines exclude documents whose posting status is VOID

Settings > Default Selection — Default Branch and Default Location pickers (DEFAULT_BRANCH, DEFAULT_LOCATION). Rendered but not consumed: no screen in this applet reads them.

Personalisation > Default Selection (per user) — the same two pickers plus DEFAULT_TOGGLE_COLUMN (SINGLE / DOUBLE) and DEFAULT_ORIENTATION (HORIZONTAL / VERTICAL); the last two are read by the cash transfer screens and the audit-trail listing to choose the one- or two-column layout.

Settings > Printable Format Settings — upload a printable format (code, name, file). The chosen default is what the transfer listing’s print button and the cash-document export use.

Settings > Branch Settings — per branch, six tabs saved to the branch settings record:

TabWhat it holdsRead by
Branch Detailsread-only branch information—
Item Category FilterMulti-select category levels 1 to 10Nothing in this applet; stored on the branch settings record
Pricing Schemebranch pricing-scheme listNothing in this applet
Printable Formatdefault printable for INTERNAL_CASH_TRANSFER, header and footer textThe transfer edit screen’s Export: the branch default is used, falling back to the applet default
Default Settlement MethodOne settlement method per tender type — cash, cheque, bank transfer, credit card, debit card, e-wallet, voucher, membership point currency, othersNot read by this applet; POS General reads them on its settlement adjustment screen
Default Cash TransferThe from and to settlement methods pre-selected on the simplified transfer line dialogThe simplified transfer line dialog

Document behaviour settings

Cash Transfer and Cash Adjustment are cash documents with a posting status, but the applet exposes no per-document behaviour switch beyond SAVE_CASH_TRANSFER_DETAILS, ENABLE_AUTO_POPUP and the printable settings above. No approval workflow, status-flow option or e-Invoice flag exists in this applet.

Feature visibility / permissions

The applet checks eleven client-side permission codes, one per hideable menu; a permission holder sees the menu even when the tenant has hidden it. Eight are registered; three are checked but not registered, so those menus can only be hidden for everyone:

PermissionUnlocksRegistered
SHOW_CASH_TRANSFERCash Transferyes
SHOW_CASH_ADJUSTMENT_MENUCash Adjustmentyes
SHOW_CASH_LEVEL_MENUCash Levelyes
SHOW_PD_CHEQUE_MENUPD Cheque queue and historyyes
SHOW_QUERY_CASHBOOK_TRANSACTION_MENUQuery Cashbook Transactionyes
SHOW_UPLOAD_CASH_TRANSFER_MENUUpload Cash Transferyes
SHOW_IMPORT_SETTLEMENT_METHOD_MENU, SHOW_IMPORT_SETTLEMENT_METHOD_BRANCH_MENUThe two settlement-method importsyes
SHOW_SETTLEMENT_METHOD, SHOW_IMPORT_CASHBOOK_MENU, SHOW_CASH_TRANSFER_BY_TRANSACTION_MENUSettlement Method, Import Cashbook, Cash Transfer By Transactionno

Nothing in this applet reads the cashbook Members list; the bank-reconciliation, bank-statement and cashbook-transaction queries do, which is how Bank Reconciliation limits a user to the cashbooks they are a member of. Membership does not restrict any screen in the Cashbook applet itself.

Fields

Cashbook — create / Details

A cashbook also takes a Cashbook Name, the Account Number at the bank, the owning Company (which must exist), an account Currency, a free-text Description and an ACTIVE / INACTIVE Status. The four rows below are the ones that fail, or reach somewhere else.

FieldMeaningRequiredNotes / validation
Cashbook CodeUnique codeYes (form)Backend enforces uniqueness
GL CodeBank / cash account in the ledgerYes (backend)Must exist and belong to the company’s chart
Branch, BankOwning branch, bank masterNoBranch must exist if given. The branch labels the cashbook — it is printed on the cash level report and can be filtered on — but it does not decide the branch of a posting: a receipt or payment through this cashbook is booked under the branch of the document that settled it
Default settlement methodPre-selected method for this cashbookYes when shownShown only when ENABLE_SETTLEMENT_METHOD is on

Cashbook — Triggers & Limits

Low level trigger, high level trigger, facility amount and overdraft limit are four numbers stored on the cashbook. Nothing reads them — no alert fires when a balance crosses a trigger; they are informational.

Cashbook — Members

FieldMeaningRequiredNotes
Select EmailOne or more tenant users; only users with a confirmed e-mail login are listedYesA user already linked is refused client-side (“already exists”)

Cashbook — Weightage Configuration

A configuration tells the Bank Reconciliation auto-matcher how much each of four matching dimensions counts when it scores a bank-statement line against a cashbook line.

FieldMeaningRequiredNotes
Configuration CodeIdentifier (upper-cased on save)YesImmutable after save. A configuration also carries a Configuration Name and a read-only Object Type, fixed at MANUAL
StatusACTIVE / INACTIVEYesOnly an ACTIVE configuration is read by the matcher; edit shows it read-only
Matching by Amount / Date / Reference / PayeeTick a dimension and give its weightage (%)NoUnticked dimensions get no weight; a negative weight is refused; the total must not exceed 100 % (client-side check — the backend validator has no weight rule)
Auto Matching Threshold (70–100)The score at which a match is linked automaticallyYesWhole number 70–100; shown as 100 when the stored value is missing
One to One MatchingRestricts the matcher to single-line matchesNoDefault off

How the matcher uses it: the weights are taken from the cashbook’s active configuration; when there is no configuration each dimension weighs 0.25; a threshold outside 70–100 is only logged as a warning, not refused; One to One Matching skips the one-bank-line-to-many-cashbook-lines grouping.

Settlement Method — create / Details

FieldMeaningRequiredNotes
Code, NameIdentityYesMax 255; stored as a financial item of type STL_MTHD, so the code must also be unique among items — a code an item already uses is refused
CashbookWhere settled money landsYesThis is the link that decides which bank balance a tender moves. Point a card tender at the wrong cashbook and every card sale reconciles against the wrong statement until somebody notices at month end
External settlement codeCode used by an external systemNoHideable

The rest of the tab is descriptive: a Sort Code (display order in tender lists, max 255), a Settlement Type from the list under Screens and menus, an ACTIVE / INACTIVE Status, the gateway block (payment provider, PGW payment ID, PGW payment type code), an Installment period, the min / max threshold and settlement-limit fields, a Membership point currency and grouping Labels. All but the status and the point currency can be hidden by a setting. | Charges (mode, rate, absolute value, min / max limit, additional surcharge), Sending charges (same set), Surcharge to customer (mode, rate, absolute value, rounding precision, item code) | Charges tab | No | Applied on every receipt / cash-bill / payment settlement line that uses the method: the cashbook GL is debited net of the charge and the charge is posted to the company default SETTLEMENT_CHARGES; the cashbook transaction line is netted the same way. Charges also drive the amounts of the bank-in transfer created from the PD Cheque queue |

Cash Transfer

The header takes a Transfer Type (Bank In, TT or Cash), the owning Company and Branch, a Reference No and Remarks, the Transaction Date it posts on, and an ACTIVE / INACTIVE Status; each line takes its own Remarks. What is worth knowing is below.

FieldMeaningRequired
Cash Transfer NoRead-only numbergenerated
Line: Transfer Line TypeTransfer From Cashbook, Transfer To Cashbook, Transfer ChargesYes — but it only sets the sign. The journal reads the sign (negative is a credit, positive a debit) and the settlement method on the line, never the type, so a Transfer Charges line is a debit to the account behind the method you picked on it. Bank charges reach an expense account only if you pick a method whose ledger account is one; pick the bank’s own method and the charge simply lands back on the bank
Line: Cashbook and Settlement Method / TypeThe account and tender on this side of the movement (order of the two pickers depends on ENABLE_SETTLEMENT_METHOD)Yes
Line: Cash Transfer AmountEntered positive; stored negative for Transfer From Cashbook, positive otherwiseYes
Line: Post Dated Cheque DateShown and required when the settlement type is POST_DATED_CHEQUEConditional

Upload Cash Transfer — what the screen does not say. The file has thirteen columns — COMP_CODE, TRANSFER_TYPE, CCY_CODE, REF_NO, STMT_NO, TXN_DATE, HDR_REMARKS, STL_METHOD_CODE, LINE_TYPE, CASH_TRANSFER_AMT, LINE_REMARKS, POSTING_STATUS, BRANCH_CODE — and nine of them must be present as headers: company, branch, transfer type, currency, reference, date, settlement method, line type and amount. A header outside the thirteen is refused. The check runs in two stages, which is why a file can be accepted and still fail: the headers are checked at upload and the reply is immediate; the rows are checked by a queued job afterwards, which writes one error per field onto the row, and the upload screen itself shows no reason — open the uploaded file’s rows to read them. The values that pass are exactly Bank In, TT or Cash for the transfer type and Transfer From Cashbook, Transfer To Cashbook or Transfer Charges for the line type. The lines sharing a REF_NO are one transfer, and its from amount must equal its to amount plus its charges or every line of that reference is refused. A row with STMT_NO filled must name an existing transfer, which it updates; a blank one creates a new transfer — so re-uploading a corrected file with the numbers left blank creates duplicates rather than correcting anything.

Cash Adjustment

The header carries Company, Currency, Transaction Date and Remarks; each line names the Cashbook being corrected and an Amount, entered positive, with its own remarks.

FieldMeaningRequired
Document Type, Doc NoRead-only (INTERNAL_CASH_ADJUSTMENT, generated)—
Line: Adjustment TypeAdjust In (stored positive) / Adjust Out (stored negative)Yes

Cash Transfer By Transaction

Listing columns: Transfer No, Doc Short Code, Transaction Date, Cashbook, Transfer Line Type, Settlement Method, Txn Amount, Description, Branch, Posting Status. The edit form shows the transfer no, posting status, transfer line type, current cashbook and amount read-only and lets you pick a new cashbook (required); SAVE is disabled until the cashbook differs from the current one. Use it to move a line that was posted to the wrong cashbook.

PD Cheque Queue / History

Queue columns: Cash Transfer No., Doc Type, Doc No., Date Txn, PD Cheque Date, Total Amount, Created / Updated Date. Bank-in inputs: receiving cashbook and its bank-in settlement method. History adds Process Status, Origin / From / To Cashbook.

Lifecycle and effects

Cashbooks, settlement methods, members and weightage configurations are master records (ACTIVE / INACTIVE); they do not post. The two cash documents behave differently:

DocumentServer document typeStatuses (UI)On FINALOn VOID
Cash TransferINTERNAL_CASH_TRANSFER (short code CSHTFR)DRAFT → FINAL → VOID (FINAL and VOID buttons on the listing, FINAL on the edit screen)Three postings are queued to run immediately: journal, cashbook transaction lines, PD cheque queueThe journal is reversed, the transfer’s cashbook transaction lines are removed (soft-deleted, not re-created with the amount negated), and the PD cheque queue rows are deleted
Cash AdjustmentINTERNAL_CASH_ADJUSTMENT (CSHADJ)DRAFT → FINAL (no VOID button in the applet)Cashbook transaction lines only — no journal is posted for this type, and a manual re-post is rejected because the document is not a cash transferNot reachable from the applet

Posting proof — Cash Transfer:

  • Server document type: INTERNAL_CASH_TRANSFER; it is a cash document, not a generic document, so it carries no document-type signums.
  • Amount signum: carried in the line amount — the applet stores Transfer From lines as −amount, Transfer To and Transfer Charges lines as +amount. Quantity signum: none (no stock).
  • Dr/Cr equation: one journal line per transfer line; a negative amount becomes Cr of its absolute value, a positive amount becomes Dr. So Dr the To cashbook GL (and the charges GL) / Cr the From cashbook GL. The journal is AUTO, type TXN, dated on the transfer date.
  • GL precedence: the sub-ledger for (company, line settlement item) → otherwise the cashbook that owns that settlement item, whose GL code gets a new sub-ledger on the company ledger. There is no header GL and no company default: a settlement item with no cashbook throws MISSING_CASHBOOK: STL_MTHD [code], a cashbook with no GL code throws MISSING_GL_CODE: STL_MTHD [code].
  • Balance check: the journal is refused with TOTAL_DEBITS_AND_TOTAL_CREDITS_NOT_BALANCES: Total Debits: …, Total Credits: … when debits and credits sum to zero, and with NO_JOURNAL_CREATED when both sides are zero; posting requires the document to be FINAL (CASH_DOC_POSTING_STATUS_NOT_FINAL) and reversal requires VOID (CASH_DOC_POSTING_STATUS_NOT_VOID).
  • Stock processor: none.
  • What VOID reverses: a reversal journal with debit and credit swapped on every line; the cashbook transaction lines soft-deleted, so the cashbook shows neither the original line nor a reversing one; PD cheque queue rows deleted.

Cashbook transaction lines: for FINAL transfers and adjustments every line except Transfer Charges becomes a cashbook transaction line, born fully unmatched (soft-deleted on VOID); a line whose settlement type is POST_DATED_CHEQUE is flagged post-dated with its cheque date and cheque number. Editing a FINAL document re-synchronises both the lines and the journal (matched by cash document line; orphans are soft-deleted) instead of creating a second set.

FINAL and VOID: the status first, then two postings — and pressing again finishes the job. In the backend running since October 2026, FINAL (or VOID) commits the status at once and then runs the cashbook-line posting and the journal posting straight after, as two separate steps. If one of them fails, the transfer still reads FINAL (or VOID) and that half is recorded on the document as failed, so a transfer can be FINAL with its journal and no cashbook lines, or the other way round. You see it as a FINAL transfer missing from Query Cashbook Transaction, or absent from the journal listing in Ledger And Journal. Fix the cause (usually a settlement method with no cashbook) and press FINAL (or VOID) again: when both halves are done it returns success and changes nothing; when one is missing or failed it runs that half again. Nothing is posted twice — the cashbook side keeps one live line per transfer line, and the journal side skips a transfer that already has a posted journal. Where the cashbook watchdog clock (CASHBOOK_TXN_WATCHDOG_PROCESSOR, every 15 minutes) is scheduled on your tenant in the Scheduler, it re-runs a half left undone for more than 20 minutes without anyone pressing anything; where it is not, the second press is yours to make.

FINAL edits are blocked once reconciled. Changing the company, transaction date, transfer lines or amount of a FINAL transfer whose cashbook lines have an active bank-reconciliation link is refused with “Please unreconcile this transaction from bank recon first …”. Remarks- and reference-only edits pass.

Post-dated cheques. On FINAL, every cashbook line flagged as a post-dated cheque creates a PD Cheque queue row (source document, cashbook, settlement method, amount, cheque date, payee, transaction number). Queue rows also arrive from generic documents (receipt vouchers) that carry a post-dated cheque. Bank In on the queue builds a new INTERNAL_CASH_TRANSFER with three lines — from the cheque’s cashbook (negative), to the chosen cashbook (the cheque amount less the sending settlement method’s charges, applying its absolute / ratio, min and max rules) and a Transfer Charges line for the difference — saves it through the normal transfer create path, writes its cashbook lines and a History row, then deletes the queue row. Voiding the source transfer deletes its queue rows.

Journals in the Chart of Account’s fiscal periods. Cash documents are not generic documents, so the LOCK_TXN / LOCK_ALL check on documents does not apply to them; their journals are AUTO and therefore also bypass the LOCK_GL check on manual journals (see Chart of Account).

Where a cashbook transaction line comes from, column by column

Most cashbook transaction lines are not written by this applet at all. They are written when a generic document — a receipt voucher, a payment voucher, a cash bill, a sales invoice settled at issue — reaches FINAL and its primary processor queues the cashbook subscriber. That subscriber reads only the document lines whose transaction type is STL_MTHD (the payment lines), and ignores every goods line on the document. If the payment lines sum to zero it writes nothing at all and still marks the document’s cashbook posting as done.

This is the answer to “where did this figure come from?” on the Reconcile tab, and almost none of it is visible on the document:

On the cashbook lineTaken fromWorth knowing
Which cashbookthe settlement method item on the payment line, looked up by item — not from anything chosen on the documentA method with no cashbook throws MISSING_CASHBOOK: STL_MTHD [code] and the whole fan-out stops there
Amountthe payment line’s amount, less the method’s charges, times the line’s amount signum, negatedSo the reconciliation’s cashbook side is the net receipt: a card sale of RM 4,000 through a method charging 1.8% puts RM 3,928 in the cashbook, and RM 3,928 is what the acquirer’s statement will show
Open amountset equal to the amountEvery line is born fully unmatched; each reconciliation link then decrements it
Datethe document header’s transaction dateNot the line’s, and not the date anybody keyed the payment. A back-dated document lands in a back-dated reconciliation window
Payeethe document’s billing name, falling back to the entity’s nameWhich is why a cash bill’s payee can differ from the customer record, and why the auto-matcher’s payee score sometimes has nothing to work with
Reference 1the tender’s own detail, by settlement type: cheque number, bank-transfer transaction number, card number, e-wallet or FPX reference, voucher numberThis is the column the auto-matcher scores against a bank statement’s reference. A method whose settlement type is none of those leaves it empty
Cheque date, post-dated flaga POST_DATED_CHEQUE line’s cheque dateAlso what puts a row in the PD Cheque queue above
Description, Reference 2the payment line’s item remarks
Branch, profit centre, segment, dimension, project, companythe payment line, not the header
Forex reference columnson a base-currency shadow document, filled afterwards from the foreign-currency original, matching lines by amount

Every save of a finalised, cashbook-posted document re-synchronises these lines rather than creating a second set: lines are matched by document line, existing ones are updated in place and any new payment line gets a new cashbook line. The amount is the one field that is not rewritten blindly — see the guard below.

Amount changes are refused while the line is reconciled. If the document amount actually changes and the cashbook line still has an active bank-reconciliation link, the save is rejected with a message naming the cashbook, the reconciliation and its month. If the amount has not changed, the amount and open-amount columns are deliberately left untouched — that is what lets you correct a reference, a remark or a payee on a reconciled document without disturbing the match. The refusal is not universal: the Settlement Adjustment screen reaches the same lines without it (see Bank Reconciliation).

When the line was never written at all. The document’s cashbook posting status is the record: blank means the subscriber never ran, POSTED means the lines exist, VOID means they have been removed. A FINAL receipt voucher, payment voucher, cash bill or cash transfer with a blank cashbook status and no cashbook line is exactly what Financial Report › Error Checking › Trace Document reports as Missing Cashbook, and its Resolve button posts the lines without voiding or re-keying the document. Posting is idempotent: if lines already exist, the request marks the document POSTED and writes nothing.

After FINAL: who writes a cashbook line

Save writes nothing to a cashbook. A cashbook line appears only after a document is finalised, and it is written by a background job that FINAL queues, a moment later — not by the screen you pressed FINAL on. The writers are:

  • A generic document’s payment lines — receipt voucher, payment voucher, cash bill or POS bill, an invoice settled at issue. One cashbook line per payment line, in the cashbook named on that line’s settlement method.
  • A cash transfer or cash adjustment — one line per transfer or adjustment line, except Transfer Charges lines.
  • Bank In on the PD Cheque queue — through the cash transfer it creates.
  • Settlement Adjustment in POS General — it rewrites the payment lines of a finalised bill, and its cashbook lines with them.

A journal never writes one. A manual journal against your bank’s GL code moves the ledger and leaves the cashbook as it was, so the bank’s own entry for it has no cashbook line to be matched with. That is why a transfer between your own accounts is a cash transfer and not a journal: the transfer writes the ledger and both cashbook lines.

The job reads the set-up as it stands when it runs: the cashbook named on the settlement method, that cashbook’s GL code, and the method’s charges. The line takes the document header’s transaction date and the payment net of the method’s charges. Change the cashbook named on a method and the lines already written stay where they were — until somebody saves one of those finalised documents again. Every save re-synchronises the document’s cashbook lines (see above) and re-reads the cashbook from the method, so that document’s line moves to the new cashbook and takes the header’s current date. The reconciliation guard checks only the amount, so the move goes through even when the line is already matched to an entry of the old cashbook’s bank. When a bank account is replaced, a safer pattern is a new settlement method for the new cashbook, with the old method’s branches unticked: old documents keep the old method, so they stay on the old cashbook whenever they are saved.

Nothing at FINAL checks that a settlement method has a cashbook. The till takes the customer’s money, the bill goes FINAL, and the job then fails with MISSING_CASHBOOK: STL_MTHD [code] — no cashbook line and no journal for that document. Nobody is told at the counter. You find it as a FINAL bill that Query Cashbook Transaction does not show, or on Financial Report › Error Checking › Trace Document as Missing Cashbook. Since October 2026 the backend also carries a cashbook watchdog clock: where it is scheduled on your tenant, it retries every FINAL document whose payment lines have no cashbook line, from 20 minutes after the document was last saved — at most four failed tries in a rolling 24 hours, then it waits for the window to roll on. It retries; it does not attach the cashbook for you. Once you name the cashbook on the method, the next pass posts the line; where the clock is not scheduled, Resolve on Trace Document posts it.

The job here belongs to whoever creates settlement methods, normally the finance administrator, and the moment to do it is before anybody can tender the method: name its cashbook and tick its branches first. For example, a new e-wallet method opened at GS-PEN-01 on the 1st with no cashbook named takes payments all day at the counter, and none of them reaches a cashbook or the ledger until somebody notices. To know you got it right, open Query Cashbook Transaction for that cashbook on the day of the first sale through the method. The sale should be there, dated on the bill, at the amount less the method’s charges. If it is not there half an hour later, run Trace Document on the bill.

Which balance is which

A cashbook figure appears in four places, and they are not the same kind of number:

  • Query Cashbook Transaction and Cash Level are live figures: they add up the cashbook lines at the moment you search. The opening is every line dated before your From date. Nothing is stored, so a document finalised a minute ago is in it as soon as its job has run, and a voided one drops out the same way.
  • A bank reconciliation session is a snapshot: it stores its cashbook opening and closing when you create it. Since October 2026 a background job refreshes the stored figures every 30 minutes, where that job is scheduled on your tenant; where it is not, they stay as they were at Create. Any cashbook line written, voided or re-dated on a cashbook with an active session queues that refresh. See Bank Reconciliation.
  • The cashbook’s GL code in the ledger (Ledger And Journal, the trial balance) is the sum of journal lines — a different book, written by a different job. It agrees with the cashbook only when every movement wrote both halves.
  • Triggers & Limits are numbers you typed. No balance is compared with them.

Why the cashbook and its GL code disagree, and how to tie them out

Five movements write one half and not the other:

  1. A manual journal against the bank or cash GL code — ledger moves, cashbook does not.
  2. A cash adjustment — cashbook moves, ledger does not (no journal by design).
  3. A Transfer Charges line on a cash transfer — journal only. If you picked the bank’s own settlement method on that line, the ledger puts the fee back on the bank account while the cashbook shows it gone, as the bank does.
  4. A document whose payment method had no cashbook, or whose cashbook had no GL code — MISSING_CASHBOOK stops both halves; MISSING_GL_CODE stops only the journal, and the cashbook line is still written.
  5. A cash transfer with one half failed — see FINAL and VOID above.

So tying each bank and cash GL code to its cashbook is a person’s job, not the software’s. The accounts clerk does it at every month-end, before matching the month. If several cashbooks share one GL code — several branch cash floats on one cash account, for example — compare the GL with the sum of all of them.

How you know the tie-out is done

The difference between the cashbook’s closing and the GL code’s balance at the same date is fully explained by a short list of named documents, each one of the five movements above. A difference you cannot name is not done, however small.

Worked example — GadgetSphere Sdn Bhd, end of March. In Query Cashbook Transaction, CASH-PRI-KV01 closes at RM 182,450.00 on 31 March. The trial balance shows the same GL code at RM 182,115.00 — RM 335.00 apart. In the cashbook’s lines you find a RM 300.00 Adjust In from a cash adjustment, a counting correction nobody journalled. In the GL code’s journal lines you find a RM 35.00 bank-charges journal with no cashbook line. RM 182,450.00 − RM 300.00 = RM 182,150.00, and RM 182,115.00 + RM 35.00 = RM 182,150.00: both differences are named, and the tie-out is done. Then decide which side is right. The primary bank did take the RM 35.00, so the cashbook needs it: remove the journal with VOID in Ledger And Journal and post the charge as a payment voucher, which writes both halves and leaves one cashbook line for the bank’s entry to match. If the RM 300.00 really was found cash, journal it; if it was a miscount, the adjustment was the mistake.

Related applets

  • Chart of Account — the GL code behind every cashbook and the company ledger that receives the cash transfer sub-ledgers.
  • Organisation — companies and branches.
  • Bank Reconciliation — matches a cashbook’s lines to the bank statement using the Members and Weightage Configuration set here; a reconciled transfer can no longer be re-dated or re-amounted.
  • Receipt Voucher and Payment Voucher — money in and out through settlement methods; post-dated cheques received there queue here.
  • POS General — tenders are settlement methods; the per-branch defaults per tender type come from Branch Settings here.
  • Ledger And Journal — where cash transfer journals are visible (cash adjustments post none).
  • Doc Item Maintenance — settlement methods are items of type STL_MTHD; the customer surcharge is billed as an item.

Troubleshooting

SymptomCauseFix
Cannot save a cashbook: GL code / company errorGL code missing, or it belongs to a different company’s chart than the cashbook’s companyPick a GL code from the same company’s chart; create one in Chart of Account if needed
Cash transfer finalised but no journal, error MISSING_CASHBOOK: STL_MTHD [code] or MISSING_GL_CODE: STL_MTHD [code]The settlement method on a transfer line is not attached to a cashbook, or that cashbook has no GL codeAttach the settlement method to a cashbook with a GL code and finalise again
Finalised cash transfer shows no journal, no errorAn earlier journal for the same transfer had been deleted and the duplicate check still counted it — a backend defect fixed in 2026Update the backend; re-post the transfer
A FINAL cash transfer has its journal but no cashbook lines, or cashbook lines but no journalSince October 2026 the two postings run as separate steps after the status is saved, and one of them failed — most often a line’s settlement method with no cashbookFix the cause and press FINAL again: only the missing half runs. See FINAL and VOID under Lifecycle and effects
The bank GL code and its cashbook disagree at month-endA movement wrote one half only: a manual journal, a cash adjustment, a Transfer Charges line, or a failed postingTie them out document by document — see Why the cashbook and its GL code disagree
An old receipt moved to another cashbook after somebody edited itSaving a finalised document re-reads each payment line’s cashbook from its settlement method, and the method now names a different cashbookPoint the method back at the old cashbook and save the document again; for a real change of bank account, give the new account its own settlement method — see After FINAL: who writes a cashbook line
Editing a FINAL transfer fails with “Please unreconcile this transaction from bank recon first …”Its cashbook lines are already matched in Bank ReconciliationUnreconcile the lines first, then edit
Cash adjustment finalised but nothing in the General LedgerBy design — cash adjustments write cashbook transaction lines only, no journalPost a manual journal if the ledger must move too; the Cashbook Discrepancy screen will otherwise show the difference
Query Cashbook Transaction shows nothing for a company that was set up recentlyThe cash-document postings were not yet enabled for that tenantAsk the platform team to enable the cash document job processors for the tenant
Settlement method not offered in Receipt Voucher / POS at a branchNo settlement type set, the branch is not linked on the method’s Branch tab, or the branch default for that tender type is unsetSet the type; link the branch; set Branch Settings > Default Settlement Method
Settlement method appears in an expense item picker (for example the Payment Voucher expense list)Settlement methods are financial items of type STL_MTHD and some pickers do not filter by typeFilter by item type in that applet; report the picker if it lacks the filter
Cash Level lists fewer cashbooks than the Cashbook listing, or only a handful on first openA cashbook with no line in the date range gets no row, and its balance is left out; the dates start at today → todaySet From back before your first transaction, or read the missing cashbook in Query Cashbook Transaction — see Balances on Cash Level: where they come from
Cash Level lists cashbooks from every companyCashbook filter ignored the company filter — fixed in 2026Update the applet build
Cash bill / receipt number missing on the cashbook lineSource document reference missing on the transaction line — fixed in 2026Update the build; use the Query Cashbook Transaction drill-down meanwhile
Transaction date on the cashbook line or journal differs from the voucher dateTimezone handling defect on the posting path — fixed in 2026Update the backend; re-post affected documents
A receipt landed in the wrong cashbookWrong settlement method chosen on the source documentMove the line with Cash Transfer By Transaction (transfer lines) or re-issue the source document
Import Cashbook rejects the fileThe checking step needs at least cashbook_code, cashbook_name, account_number, gl_code, company_code per rowDownload the sample format and fill those columns
Print button on the transfer listing is disabledNo default printable format chosenSettings > Printable Format Settings, choose a default

Related documentation

Last updated on