Skip to content

Receipt Voucher (Internal)

Record money a customer pays you and apply it to what they owe. Finalising posts the cashbook line you later match against the bank statement, plus the debtor journal. A receipt finalised without a contra stays as an unapplied customer credit until you contra it, and a wrong settlement is corrected on Settlement Adjustment rather than by voiding.

Overview

The Receipt Voucher (Internal) applet records money coming in from a customer — cash, cheque, bank transfer, card or any other settlement method — and applies it to the customer’s open documents by contra. An accounts-receivable clerk creates the voucher, adds one or more settlement lines, contra-links the sales invoices being paid, and finalises it. FINAL posts the cashbook transaction (which then appears in Bank Reconciliation) and the debtor journal. The applet also carries optional Revenue and Expense lines for receipts that are not against an invoice, and post-finalisation adjustment screens so a wrong settlement can be corrected without voiding.

Core concept. A receipt voucher moves money; a sales invoice moves goods and revenue. Linking the two by contra is what clears the customer’s balance. A receipt that is finalised without a contra stays as an unapplied receipt (a customer credit) until it is contra’d later.
Receipt Voucher Internal applet infographic showing manual processing challenges, digital workflow solution, and stakeholder benefits
Receipt Voucher (Internal) overview.

Video walkthrough

Where it fits

DirectionDocument / appletRelationship
UpstreamSales Invoice (Internal), Sales Debit Note (Internal)Open customer documents the receipt is contra’d against
UpstreamSales Credit Note (Internal)Reduces what the customer owes before the receipt is applied
Master dataCustomer MaintenanceCustomer entity and its AR type
Master dataCashbook AppletEvery settlement method is an item linked to a cashbook; the cashbook’s GL code is the debit side
DownstreamBank ReconciliationCashbook lines created by FINAL are matched to bank statements
DownstreamLedger And JournalThe journal FINAL creates
DownstreamDebtor Report, Statement of AccountAgeing and statements reflect contra’d receipts
MirrorPayment Voucher (Internal)The same document for money going out to suppliers

Modules: Financial Accounting and Sales.

Which routes write a receipt voucher, and which do not

Four routes write a Receipt Voucher (Internal). (Internal) marks the back-office voucher your finance staff key, as opposed to one a shopper or a portal reaches.

  • Keyed in this applet — the normal case, finalised with the FINAL button.
  • Imported from a file — rows marked FINAL in the file skip the FINAL button’s checks (Import Receipt Voucher).
  • A bill paid online through BigLedger’s billing applet, on the ERP payment route. When the gateway confirms the payment, a background job writes the receipt voucher, finalises it and contras it against the bill that was paid. It writes one voucher per gateway reference, so a repeated confirmation does not write a second.
  • The other side of an intercompany payment. A payment voucher one group company raises to another can create the receipt voucher in the receiving company (Intercompany).

Two routes take money from customers and do not write a receipt voucher:

  • A storefront checkout. The gateway’s confirmation turns the cart into a FINAL sales order and writes the payment onto that order as a settlement line; the cashbook job posts it to the settlement method’s cashbook. How that payment is then meant to meet the invoice raised from the order is an open question with BigLedger, so do not look for a receipt voucher to apply, and do not key one for the same money.
  • A cash bill at the till. The bill settles itself: its goods must equal its settlement lines plus any contra before it can be finalised, and its own settlement lines write the cashbook lines. A receipt voucher keyed for a cash bill would bank the same money twice.

A marketplace payout is a third case: the accounts clerk books it here by hand (see Related applets).

Screens and menus

Menu itemRouteWhat it is
Internal RCT Voucherinternal-receipt-voucherListing and the create/edit form
Import Receipt Voucherreceipt-voucher-importBulk upload with a Checking tab for row errors
Settlement Adjustmentsettlement-adjustmentPost-FINAL corrections to settlement lines
Audit Trailaudit-trailChange history (hidden by HIDE_AUDIT_TRAIL_MENU)
Receipt Voucher (Internal) listing
Voucher listing with filters and actions.

Creating a voucher

There is no separate create form. + on the listing saves an empty temporary voucher at once and opens the edit form on it, with every tab below — Contra included — available before anything is filled in. The voucher stops being temporary by itself once its required header fields are filled (see Lifecycle); until then SAVE does nothing useful.

There is no Posting tab on this applet and no Delivery Details tab. TraceDocument, below, is what does that job here — and it does it better, because it shows the rows that were written rather than a status word about them.

Edit form tabs

Default order (changeable under Settings > Default Selection > Details Tab Ordering):

TabPurposeHidden by
Main DetailsBranch, location, dates, currency, references, Checked By / Approved By. The header locks once the voucher is FINAL, VOID or DISCARDED — sign-offs included, so name the checker and approver before you finalise, not after—
AccountCustomer (Entity Details, Bill To, Payee)HIDE_PAYEE_TAB for the Payee sub-tab
RevenueIncome lines for receipts not tied to an invoice (item, qty, price, tax)HIDE_REVENUE_TAB
ExpensesDeductions taken from the receipt (bank charges, etc.). See What FINAL does for where they post — not on a purchase-side accountHIDE_EXPENSES_TAB
SettlementThe money received: settlement method, amount, date, referenceHIDE_SETTLEMENT_TAB
Payment AdjustmentPost-FINAL correction of settlement lines. Shown only on a FINAL voucher, and only when the tenant has switched on post-FINAL settlement editing in the applet settings and you hold SHOW_EDIT_SETTLEMENT_FINAL — both are neededNo hide setting applies: the tab’s hide key is read and ignored, and the settings screen offers no switch for it here
ARAPProduct & Services, Settlement, Contra, Outstanding (read-only)HIDE_MAIN_ARAP_TAB
Department HdrDimension, Profit Centre, Project, SegmentHIDE_DEPARTMENT_HDR_TAB
TraceDocumentThe postings FINAL actually produced, as five grids — Journal Txn, Cashbook Txn, Points Txn, Tax Txn, Inv Txn. This applet has no Posting tab; this is the tab that answers the same question. An empty grid is the symptom of a failed job; it does not say whyHIDE_TRACE_DOCUMENT_TAB
ContraApply the receipt to the customer’s open documentsHIDE_MAIN_CONTRA_TAB
Doc LinkLink other documentsHIDE_DOC_LINK_TAB
ExportPrint with a printable formatHIDE_EXPORT_TAB
AttachmentsUpload scans of cheques or remittance adviceHIDE_ATTACHMENT_TAB

Main details form
Main Details.
Screenshot withdrawn; a recapture from a demo tenant is on the list.
Settlement tab
Settlement tab.
Add settlement adjustment
Add settlement adjustment.

Top action buttons

ButtonEnabled when
SAVEHeader valid (Please complete the required fields before saving.); you hold update permission
FINALRecord status ACTIVE, posting status DRAFT, at least one settlement line, not locked; HIDE_GENDOC_FINAL_BUTTON off or user has SHOW_GENDOC_FINAL_BUTTON. The settlement-line rule is the screen’s (see below). Revenue lines with invalid serial numbers do not disable it
VOIDPosting status FINAL; HIDE_GENDOC_VOID_BUTTON off or SHOW_GENDOC_VOID_BUTTON
CLONEAny. The settings screen offers no switch to hide it on this applet
PRINTAny, unless HIDE_PRINT_BUTTON

The edit form’s action bar is FINAL, CLONE, VOID and SAVE. DISCARD is on the listing, for the ticked vouchers (HIDE_GENDOC_DISCARD_BUTTON off or SHOW_GENDOC_DISCARD_BUTTON). On a foreign-currency voucher’s base-currency copy — the second record FINAL creates, see What FINAL does — the whole action bar is hidden.

The rule that FINAL needs a settlement line is enforced by this screen, at the point of choice: the edit form hides FINAL without one, and the listing’s FINAL refuses the ticked vouchers that have none (Unable to post the document to FINAL … Invalid payment.). The server does not repeat it, so a receipt finalised through the API with no settlement line is accepted — no cashbook line follows, and TraceDocument’s Cashbook Txn grid stays empty. An integration that writes receipts should refuse that case itself.

Import Receipt Voucher

Upload a CSV/Excel file, review the Checking tab for row-level errors, fix or re-upload, then process. The menu is removed by HIDE_IMPORT_RECEIPT_VOUCHER_MENU.

The file’s Posting Status column decides what each voucher becomes, and it is all-or-nothing per file: if any row fails, every voucher the file created is deleted and the file is marked FAILED — but a contra the file had already written for those vouchers is not removed with them, so check the invoices the file was paying before you re-upload.

A row marked FINAL is stored FINAL as it is inserted — it does not go through the FINAL button’s path. Today the import then queues the postings directly, so three things the FINAL button does are skipped:

  • No finalised date is recorded on the voucher.
  • No exchange-rate refusal. The file’s Base Rate column is kept only as a note on the voucher and the base currency is never set, so a foreign-currency row is not treated as foreign currency: there is no base-currency copy, and the journal posts the document-currency figures as if they were ringgit. A USD 1,000 receipt posts RM 1,000.
  • A validation that refuses the voucher at this point leaves it FINAL with nothing queued — no journal, no cashbook line.

How to spot it: open an imported voucher’s TraceDocument tab. An empty Journal Txn or Cashbook Txn grid is the third case; journal amounts equal to the foreign-currency face value are the second. Before importing foreign-currency receipts in bulk, import one row and read its journal; a DRAFT import still carries no base currency, so check the header’s Currency Rate before you finalise it on the screen.

Import listing
Import listing.
Import upload master data
Upload and master-data mapping.
Import checking tab
Checking tab.
Import main tab status
Import status.

Configuration

Before you can use it

PrerequisiteWhereWhy
Company, branch, locationOrganisation AppletBranch, Location and Transaction Date are the three required header fields
Payer entity with an AR/AP typeCustomer MaintenanceThe payer may be a customer, supplier, merchant or employee. Its journal line uses DEBTOR for AR_TRADE, DEBTOR_NON_TRADE for AR_OTHER and MERCHANT_RECEIVABLE for AR_MERCHANT; a supplier refunding you posts to CREDITOR (AP_TRADE) or CREDITOR_NON_TRADE (AP_OTHER), and an employee repaying an advance to EMPLOYEE_OTHER_PAYABLE (AP_EMPLOYEE). The type set for this company on the entity is read before the entity’s general one. A payer with no type gets no line, and the journal fails as unbalanced
Cashbook per bank / till, with a GL codeCashbook AppletNot checked at FINAL. The cashbook and journal postings run after the status change and fail with MISSING_CASHBOOK: STL_MTHD [code] if the settlement method’s item has no cashbook, or MISSING_GL_CODE: STL_MTHD [code] if the cashbook has no GL code — the voucher stays FINAL with no cashbook line and no journal. Since October 2026, where the cashbook watchdog clock is scheduled on your tenant, it retries such a voucher about every 15 minutes; it retries, it does not attach the cashbook. Once the mapping is fixed, in Financial Report › Error Checking › Trace Document press Resolve on both Missing Journal and Missing Cashbook. Each repairs only its own half. For many vouchers, Ledger And Journal’s Missing Journal and the Data Fix applet’s Cashbook › Missing Cashbook tab do the same by date range (set both dates; they open on today)
Settlement methods assigned to the branchSettings > Branch Settings > Default Settlement MethodThe Settlement tab only lists methods assigned to the voucher’s branch
Company default GL codesChart of Account AppletDEBTOR (or DEBTOR_NON_TRADE), and for revenue/expense lines SALES and OUTPUT_TAX; SETTLEMENT_CHARGES if the settlement method carries a charge; FOREX_GAIN / FOREX_LOSS for the separate journal a foreign-currency contra writes. A sales-discount default is never read by this document — line discounts are already netted into the line amount
Document numberingOrganisation AppletDoc No (Company / Branch) are generated at save
Printable formatSettings > Printable Format Settings and Branch SettingsNeeded for PRINT
PermissionsSettings > Permission Set / User / Team / Role PermissionServer-side TNT_API_DOC_INTERNAL_RECEIPT_VOUCHER_READ/CREATE/UPDATE/DELETE_TGT_GUID, targeted by branch — a user who lacks read for a branch will not see that branch’s vouchers or the branch in the dropdown

Applet settings

Settings (gear icon) → System Configuration: Application Settings (the shared Field Configuration screen), Default Selection, Branch Settings, Printable Format Settings, Email Template, Custom Resource Bundle Configuration, Custom Field Placement, Webhook, Feature Visibility, the permission screens, Release Notes and Applet Log. Personalization holds your own Default Selection and sidebar. 184 keys reach this applet and 91 of them begin HIDE_ — one switch per field, column, tab or button, visible the moment you save. The five below change what the applet will let you do; three of them decide a figure the customer’s ledger then lives with, and one — the settlement date — changes far less than its name says. How settings are stored and who they apply to.

SettingWhat changesDefault when never savedAdvisory or hard
Let a receipt be allocated to more than it is worth
ALLOW_EXCEED_CONTRA
Lets a receipt be allocated to more than it is worth. With it off, ticking an invoice whose outstanding balance is larger than the receipt’s remaining amount caps the contra at that remaining amount, and Add is greyed out once the selected total passes the receipt’s open amount. With it on, the full invoice balance is proposed and the Add button is never disabled — so a RM 5,000 receipt can knock off RM 8,000 of invoices, and the customer’s ledger then shows three thousand ringgit paid by nobodyOff, and the cap appliesAdvisory — a greyed-out button in the browser. Nothing on the server refuses the over-allocation
Let each settlement line carry its own date
ENABLE_EDIT_SETTLEMENT_DATE
Makes the date on a settlement line editable on the screen — and that is all. With it off, the applet copies the header date onto every line, and again each time the header date changes. With it on you can type a different date, but every save replaces each line’s date with the voucher’s date on the server, and the cashbook entry always takes the voucher’s date in any case. Bank reconciliation therefore always matches on the voucher date: cash that reached the bank on the 3rd, on a voucher dated the 1st, sits on the 1st in the cashbook whatever the line says. Date the voucher on the day the money arrived; split receipts that arrived on different days into separate vouchersOff — line dates follow the headerHas no effect on what is posted
Let staff type over the standard unit price
ENABLE_EDITING_UNIT_PRICE_STD
Makes Unit Price (Std) editable on a revenue or expense line, which is the basis of Std Amount and of the discount the line reports. Turning it on is the usual choice on a voucher where staff key the figure themselves; leaving it off keeps Std Amount and the reported discount derived rather than typedRead-onlyAdvisory — the control is disabled in the browser
Warn when a reference has been used before
ENABLE_DUPLICATE_REFERENCE_CHECK
Watches the Reference field and shows a red Duplicate Reference RCT … line under it when another receipt voucher already carries that reference. Two things it does not do: it does not stop the save, and it does not filter by customer — it matches on the reference text and document type only, so a cheque number reused by a different customer is reported as a duplicateOff — no check runs and no query is madeAdvisory — a message under a field
Lock the exchange rate on the header
CANNOT_EDIT_CURRENCY_RATE
Disables the Currency Rate on the header, so the rate that arrives with the currency is the rate the receipt posts at. It decides the base-currency value of the receipt and therefore the foreign-exchange gain or loss recognised against the invoice it settles. There is no per-user exception registered for this appletEditableAdvisory — the field is disabled in the browser

Two things to know before you change anything on this screen. First, the name in italics under each setting is the applet’s internal key. It is there so you can match what you are looking at to what support asks you about; it is not a stable name and it can be renamed, replaced or dropped when the applet is updated, so do not build a script or an integration around one. Second, a setting can be switched back but it cannot be returned to never saved: the first time anybody saves this screen, every toggle on it is written into your tenant’s settings at whatever it was showing, and the applet stops falling back to its own built-in default. The Default when never saved column above is what you give up at that moment — worth reading before the first save rather than after. Checked against the product on 17 September 2026.

On the screen and doing nothing

These keys are saved with the settings but nothing reads them — most never appear on a screen at all:

  • The four Department enable keys (dimension, profit centre, project, segment) — declared in the model with a form control on the shared screen but no toggle rendered anywhere, and read by nothing here or in the backend. The panel’s MANDATORY_* partners are the controls you can see, and they do work, which is the confusing part: you can make a dimension compulsory on a line and you cannot turn it on.
  • Filter by today’s transactions — declared in the model with no control on any screen, read by nothing. (In the Deposit applet it is read and still has no effect.)
  • Validity date required — declared in the model with no control on any screen and no reader; the Validity Date field is never made required by it. Earlier versions of this page listed it as a working requirement, then as rendered; it is neither.
  • Default company — saved by Default Selection when you pick a Default Branch and never read by a screen; the company comes from the branch you pick, not from this key.
  • Allow contra above the document’s open amount — has a switch on the settings screen, but only an unreachable contra form reads it. The contra dialog you actually use follows Let a receipt be allocated to more than it is worth, above.
  • Hide the FINAL button (the short form, not the HIDE_GENDOC_FINAL_BUTTON setting the button table names) — has a switch and no reader.
  • Show the document delete button — read by the edit form and then drives nothing: there is no Delete button on a receipt voucher. Use DISCARD on the listing.

Branch Settings is a different screen and it does matter. Per branch it holds Rounding Five Cent, Item Category Filter, Menu List, Pricing Scheme, Printable Format, and Default Settlement Method — which decides the settlement methods offered on the Settlement tab at that branch and which of them is pre-selected. In the current build these rows are shared with the POS General applet’s branch settings, so changing them here changes the till as well.

Document behaviour settings

BehaviourControlled by
Which settlement methods and default per branchBranch Settings > Default Settlement Method
Contra larger than the open receipt amountALLOW_EXCEED_CONTRA (otherwise the dialog blocks it)
Contra dateCONTRA_DATE_SAME_AS_DOC_DATE_TXN, EDIT_CONTRA_TXN_DATE
Post-FINAL settlement correctionPayment Adjustment tab / Settlement Adjustment menu. Needs both the post-FINAL settlement editing setting on and the SHOW_EDIT_SETTLEMENT_FINAL permission; with either missing the menu entry is removed and the tab never shows. This gate is the screen’s. The adjustment line’s own date switch has no control on this applet’s settings screen
Post-FINAL revenue / expense correctionNone. Revenue and Expense lines lock at FINAL and the applet has no revenue or expense adjustment screen. SHOW_REVENUE_TAB / SHOW_EXPENSES_TAB only show the tabs. Correct a wrong revenue or expense line by voiding the voucher and re-entering it
Email on FINALEmail Template settings; SEND_EMAIL_TO_FINAL_GEN_DOCS_ONLY
Field labelsCustom Resource Bundle Configuration

Approval workflow: not configurable in this applet beyond the Checked By / Approved By fields, which are informational.

Who can change what

Server-side. TNT_API_DOC_INTERNAL_RECEIPT_VOUCHER_{CREATE,READ,UPDATE,DELETE}_TGT_GUID. These are the only permissions that can return a 403.

Client-side permissions for this applet: 19. Sixteen are the SHOW_* partner of a HIDE_* setting — the action buttons, the Revenue and Expenses tabs, the Trace Document tab, the document-number and client- reference fields. The three that do something else:

  • SHOW_EDIT_SETTLEMENT_FINAL — opens Payment Adjustment on a finalised voucher, which is how a settlement line is corrected after the cashbook has already been posted — but only where the post-FINAL settlement editing setting is also on. The most consequential code on the applet.
  • SHOW_DELETE_CONTRA — removes an allocation that has already been applied to an invoice, restoring that invoice’s outstanding balance.
  • SHOW_TRACE_DOCUMENT_TAB — the trail from the receipt back to what it settled.

Listed as a permission and doing nothing. ENABLE_EDIT_SETTLEMENT_DATE also appears in the permission list for this applet and it is a setting, not a permission — the applet reads it only from the applet settings, never from what a role has been granted. Granting it to a role changes nothing; the behaviour is in the table above, and it is tenant-wide. Earlier versions of this page listed it here as a per-user grant.

Fields

Main Details

FieldMeaningRequiredNotes
Branch, LocationReceiving branch and locationYesOnly branches the user has read permission for are listed
Transaction DateReceipt date — and the date of every settlement line and cashbook entryYesChanging it rewrites every settlement line’s date to match, and every save does the same on the server whatever the line shows (see Settings). It is the date bank reconciliation matches on. Locked at FINAL
Document type, Doc No (Company), Doc No (Branch)System numbersGeneratedA short-code prefix is shown when configured
Client Document type, Client Doc 1–5 NoClient-side referencesNoShown only on an opened voucher, and read-only there — you cannot type them on this form
ReferenceCustomer’s remittance or cheque referenceNo (MANDATORY not available; use ENABLE_DUPLICATE_REFERENCE_CHECK)
Currency, Base Currency, RateTransaction currencyYesThe currency rate cannot be ZERO or negative.
Sales AgentEmployee credited with the receiptPer MANDATORY_MAIN_DETAILS_SALES_AGENT
Checked By, Approved BySign-off employeesNoInformational. The voucher keeps the name as it was when picked, so a later rename of the employee does not change it; locked at FINAL
RemarksFree text; becomes the journal descriptionNo

Settlement line

Settlement Method (from the branch’s assigned methods), Settlement Type, Amount, Date, Reference, Remarks, Cheque No, Cheque Date, Card Type, Voucher No, Points and Cash-back fields for loyalty settlements, and Month / Year / Settlement Group filters in the picker.

Revenue and Expense lines

Item code and name, quantity, UOM, unit price (inclusive of tax), tax, transaction amount, and department codes (segment, dimension, profit centre, project). Revenue lines post like sales lines. An Expense line is a deduction the customer took — it reduces what was banked against what the customer is credited with, and it posts as a debit on the sales side, not to an expense or purchase account, unless the item is a GL-code item that carries its own GL code. See the journal table under What FINAL does.

Contra

A search dialog over the customer’s open documents (filterable by document type) with the amount to apply. The total contra cannot exceed the receipt’s open amount unless ALLOW_EXCEED_CONTRA is on.

Lifecycle and effects

Posting statusMeaning
DRAFTSaved; nothing posted. + creates the voucher with record status TEMP; it converts to ACTIVE automatically once Branch and Account are filled.
FINALCashbook and journal posted; settlement lines locked (Payment Adjustment for corrections)
VOIDReversed

What FINAL does:

  1. Changes the posting status to FINAL and queues the postings that follow. Only the FINAL-time validations can stop this step — a locked fiscal period, a second FINAL, and a foreign-currency voucher with no exchange rate (Generic Document exchange rate is required before posting to FINAL); nothing about cashbooks or GL codes is checked here. A foreign-currency voucher is also given a finalised base-currency copy, which is what posts; its edit form has no action buttons. An imported voucher marked FINAL in the file skips this step — see Import Receipt Voucher.
  2. The cashbook posting (FINAL documents only) creates one cashbook transaction line per settlement line in the cashbook behind that settlement method. These are the lines Bank Reconciliation matches. A settlement line whose method has no cashbook fails this job with MISSING_CASHBOOK: STL_MTHD [code]; the voucher stays FINAL with no cashbook line. Once a cashbook is named on the method, the line is posted by the watchdog clock where your tenant schedules it (since October 2026), otherwise by Resolve on Trace Document. Settlement lines that add up to zero write no cashbook line at all, and the voucher is still marked as posted to the cashbook.
  3. The journal posting posts the journal; a cashbook without a GL code fails it with MISSING_GL_CODE: STL_MTHD [code] Two places show you that it failed, and neither is a Posting tab — this applet has none. The voucher’s own TraceDocument tab shows an empty Journal Txn grid, which is the symptom; Financial Report › Error Checking › Trace Document gives the reason and a Resolve button:
Journal lineDrCrGL code from
Each settlement lineAmount received (less settlement charges)The GL code linked to the settlement method for this company, else the GL code of the method’s cashbook (a sub-ledger is created if missing)
Settlement chargesChargeCompany default SETTLEMENT_CHARGES
Revenue linesNet amountLine GL → item SALES link → company default SALES; tax Cr OUTPUT_TAX
Expense linesNet amountThe same chain as revenue: a GL-code item’s own GL → item SALES link → company default SALES; tax Dr OUTPUT_TAX
Payer — the balancing lineThe balance: settlement + expenses − revenue; no line when that is nilBy the payer’s AR/AP type, read when the job runs: DEBTOR (trade), DEBTOR_NON_TRADE (other), MERCHANT_RECEIVABLE (merchant); a supplier or employee payer posts to its own creditor or employee-payable default (see Before you can use it). A missing default for that type fails the job with MISSING_DEFAULT_GL_CODE; a payer with no AR/AP type gets no line, and the journal fails as unbalanced

The customer line is whatever balances the rest, so an Expense line credits the customer with the receipt plus the deduction — which is the point of it — but it does so by debiting sales and output tax, not an expense account. A RM 1,000 receipt with a RM 20 bank-charge Expense line credits the customer RM 1,020 and debits RM 20 to SALES (or to the GL code of a GL-code item, if that is what the line uses). How to spot it: after the first voucher with an Expense line, read its Journal Txn grid on TraceDocument and check which account the deduction landed on. Whether this should post to a purchase-side or expense default is an open question with BigLedger; the page states today’s behaviour.

Foreign-exchange gain or loss is not part of this journal. It is a separate journal, written per contra when the contra is created, on FOREX_GAIN / FOREX_LOSS; a foreign-currency receipt finalised without a contra has none until it is contra’d.

  1. The contra is not one of those jobs. Once the finalise call (or any edit-save) returns, the applet sends a second request carrying the new Contra-tab rows; the backend writes each mirrored pair and re-sums both documents’ contra and outstanding balances inside that request. If the second request fails — missing API_TNT_DM_ERP_FI_GENERIC_DOC_ARAP_CONTRA_UPDATE, expired session, tab closed — the toast reads Documents contra unsuccessfully, nothing retries, and the receipt is FINAL with its cashbook line and journal and no contra. Because the effect also fires on an ordinary save, a contra keyed on a draft voucher is live as soon as the draft is saved. The listing’s FINAL fires it too, and it sends whatever contra rows the screen still holds unsent — including rows keyed on the last voucher you opened and left without saving, until you press + or open another voucher, which replaces them with that voucher’s saved contras. How to spot it: after a bulk FINAL from the listing, open the voucher you last had open and check its Contra tab for allocations you did not mean to keep. Before a bulk FINAL, open any voucher from the listing first.

Saving a change to the amount of a finalised settlement line whose cashbook line is already reconciled is refused: Please unreconcile this transaction from bank recon first before changing the amount: Cashbook [name] - Bank Recon [name] (month).

SAVE on a draft writes nothing to a cashbook or the ledger. On a FINAL voucher every save re-synchronises its cashbook lines with its settlement lines, and it re-reads the cashbook named on each settlement method as it is now. So if somebody has pointed the method at a different cashbook since FINAL, the next save of an old receipt moves its line there — reconciled or not, because the refusal above protects only the amount of a reconciled line. When a bank account is replaced, give the new cashbook a new settlement method rather than re-pointing the old one (why).

A Payment Adjustment is not refused, and it unreconciles. The tab sends a settlement adjustment, which the Settlement Adjustment menu then lists: the new settlement lines must add up to the old total (The total settlement amount must be the same as the previous settlement amount.), and an identical set is refused as no change. It rewrites the settlement lines, replaces the voucher’s journal with one rebuilt from the corrected voucher — when the voucher’s journal flag reads posted; with any other flag it posts a new journal beside whatever is already there — and removes and re-creates every cashbook line of the voucher. Removing a matched cashbook line hands its amount back to the bank statement line and deletes the match, so a month you had reconciled shows the receipt’s bank lines unmatched again and nothing on the screen says why. Check whether the voucher’s cashbook lines are reconciled before adjusting it, and re-match them after.

VOID reverses the journal (the reversal carries the original transaction date), soft-deletes the cashbook lines — handing any matched amount back to the bank statement line — and deletes every contra the voucher takes part in, re-summing each invoice’s balance, so the invoices go back to outstanding. It is offered on any FINAL voucher; there is no e-Invoice lock on receipts. See What a void undoes.

Where each figure comes from

Five figures follow from one FINAL receipt, and only one of them is worked out when you look at it.

  • The cashbook line — on the voucher’s TraceDocument › Cashbook Txn grid, in Query Cashbook Transaction, and the line Bank Reconciliation matches. Written once by the cashbook job after FINAL, from the voucher as it is then: one line per settlement line, in the cashbook named on that line’s settlement method, at the amount less the method’s charges, as money in, dated the voucher’s date, described by the settlement line’s Remarks, and naming the payer from the Account tab’s billing name before the entity’s own name. A cash-back line on a receipt is written as money out. A later save re-synchronises it (above).
  • The journal — written by its own job, which reads the company default GL codes and the payer’s AR/AP type as they stand when it runs. The type comes from the payer’s link to the voucher’s company first and from the entity’s own type otherwise, so one company can be a trade customer of GSD and a non-trade debtor of GS; changing the type changes the next voucher that posts, and a re-post. The payer line is whatever balances the rest, so it is only built when a balance is left.
  • The outstanding balance of the receipt and of each invoice it paid — stored on each document and rewritten inside the contra request itself: the document’s opening figure plus every contra against it. This is the balance the Debtor Report and the statement read, and it moves the moment the Contra tab saves. The voucher also carries a second, older figure — its own amount less its own settlement lines — which a contra never changes (Troubleshooting).
  • A past month on the historical aging — not worked out from the documents but read from month-end rows a scheduled job stores at 01:00 on the 1st, one for every FINAL document still carrying a balance. A contra keyed or deleted on this voucher’s Contra tab works both documents’ stored months out again, counting the contra only in months ending on or after its contra date. Changing a contra’s date in place does not. So: a corporate client of GadgetSphere Distribution pays a RM 12,400 March invoice by transfer on 31 March; you key the receipt on 2 April, dated 31 March, with the settings as they come, and the contra is dated 2 April — March’s stored month still shows the invoice open, with the receipt beside it as an unapplied credit. The client’s total for March is right; only the listing surprises you. The contra-date setting in Document behaviour settings dates new contras on the voucher’s date instead. The full mechanism.
  • A bank reconciliation session’s cashbook opening and closing — stored when the session is created. Since October 2026 a background job refreshes them every 30 minutes where that job is scheduled on your tenant, and every cashbook line this voucher writes, re-synchronises, re-creates (Payment Adjustment) or removes (VOID) on a cashbook with an active session queues that refresh. Where the job is not scheduled, the figures stay as they were at Create.

The receipt desk: matching, applying, chasing

The applet records money that has arrived. It does not see the bank, and it does not decide which invoice a payment was for. Three jobs stay with people.

  • Matching the money. A receipt is keyed from the bank statement, a remittance advice or the cheque in hand. Date it on the day the money reached the bank, because every figure above takes the voucher’s date; the person who matches the bank then pairs each receipt’s cashbook line with the bank’s own line.
  • Applying it. Which invoice a payment settles is the customer’s instruction, usually on the remittance advice. Where none came, ask before you contra: a receipt applied to the wrong invoice leaves the other one ageing, and the customer’s statement disagrees with their own records. A receipt left unapplied is a credit on the customer’s account until somebody applies it.
  • Chasing the difference. A customer who pays RM 4,950 against a RM 5,000 invoice — their bank kept a fee, or they disputed a line — leaves RM 50 that somebody has to own. Two ways to handle it, and the choice is your group’s policy, not the software’s: apply what was paid and leave RM 50 open on the invoice until a credit note, a further receipt or a write-off clears it; or add the RM 50 as an Expenses line so the customer is credited in full — remembering that an Expenses line posts on the sales side today unless its item carries its own GL code (see the journal table above). Allocating more than the receipt is worth is not a third way: it clears the invoice and leaves the difference sitting on the receipt.

How you know a receipt run is done

Run these for each day’s receipts, before the day’s bank lines are matched:

  1. Every receipt of the run is FINAL, and its TraceDocument shows a Cashbook Txn line for each settlement line — the amount less any method charges, on the voucher’s date — and a Journal Txn grid that credits the payer with the amount you expected.
  2. In Query Cashbook Transaction for the receiving cashbook, the day’s lines add up to what reached the bank that day.
  3. Each invoice you applied a receipt to shows its outstanding reduced by exactly the contra on the Debtor Report; every receipt with nothing applied is one you meant to leave unapplied, and you can say why.

Until every unapplied receipt and every short payment is named to a customer, the run is not done.

Related applets

Troubleshooting

SymptomCauseFix
Voucher is FINAL but has no cashbook line; the voucher’s TraceDocument tab shows an empty Cashbook Txn grid and Financial Report › Error Checking › Trace Document reports MISSING_CASHBOOK: STL_MTHD [code]The settlement method item is not linked to a cashbook — the cashbook posting failed after FINALLink it in the Cashbook applet, then in Financial Report › Error Checking › Trace Document press Resolve on both Missing Journal and Missing Cashbook. Each repairs only its own half. For many vouchers, Ledger And Journal’s Missing Journal and the Data Fix applet’s Cashbook › Missing Cashbook tab do the same by date range (set both dates; they open on today)
Voucher is FINAL but its Journal Txn grid is empty; the reason BigLedger support reads is MISSING_GL_CODE: STL_MTHD [code], and no screen shows it until the posting is re-run: Resolve in Trace Document shows the full reason, and CREATE on Ledger And Journal’s Missing Journal shows only its codeThe cashbook has no GL code — the journal posting failed after FINALSet the cashbook’s GL code, then Financial Report › Error Checking › Trace Document → Missing Journal → Resolve, and Missing Cashbook → Resolve if that check also reports the line missing. Resolve, pressed while the cause is still there, posts nothing and shows the reason in the check’s message, so it doubles as the diagnosis
Settlement tab offers no methods, or the wrong onesNo methods assigned to the voucher’s branchBranch Settings > Default Settlement Method
Cannot find the receipt in Bank ReconciliationVoucher not FINAL, or the settlement method points at a different cashbook than the one being reconciledFinalise; check which cashbook the method belongs to
Please unreconcile this transaction from bank recon first…A SAVE changed the amount of a settlement line whose cashbook line is already matched to a statementUn-match in Bank Reconciliation, then save again
A reconciled month suddenly has unmatched receipt linesA Payment Adjustment on a receipt in that month re-created its cashbook lines and dropped their matchesCheck the Settlement Adjustment menu for that receipt; re-match its lines in Bank Reconciliation
The historical aging still lists an invoice this receipt paidThat month is stored; the contra is dated after its month-end, or its date was changed in place, which reworks no monthRead the live outstanding listing; to move the contra into the month, delete it on the Contra tab and key it again with the right date (why)
A supplier refund or an employee’s repayment posted to the debtor account, or the journal failed naming a default GL codeThe journal reads the payer’s AR/AP type: a supplier set up with a customer type posts to debtors; a supplier or employee type needs its own company default (CREDITOR, EMPLOYEE_OTHER_PAYABLE)Set the payer’s type, or map the default in the Chart of Account applet, then Resolve Missing Journal
Contra dialog refuses the amountContra total exceeds the receipt’s open amountReduce it, or turn on ALLOW_EXCEED_CONTRA
Receipt is FINAL, cashbook line and journal posted, but the invoice is still outstanding and the receipt shows on the statement as an unapplied credit; a red Documents contra unsuccessfully toast may have flashedThe second request that writes the contra failed after FINAL (permission, session, network, tab closed) — nothing retries itOpen the receipt’s Contra tab; if it is empty, apply the contra there or from the Debtor Report’s Contra tab (why)
Voucher still shows an open balance after a full contra, while the Debtor Report shows it fully settledIt is the document’s own open-balance figure, not the ARAP balance, that is off. For every document type that figure is own amount − own settlement: the amount sums the voucher’s goods or GL lines and the settlement sums its payment lines, so a voucher whose lines total zero and whose payment lines total RM 500 carries −500 there however it was knocked off. The ARAP balance (Doc Open + Contra) is the one the reports and the statement useRead the ARAP balance on the Debtor Report; the open-balance figure cannot be corrected from the voucher, and refreshing does not change it
Cashbook entry and bank reconciliation show the voucher date, not the date typed on the settlement lineEvery save replaces line dates with the voucher’s date, and the cashbook takes the voucher’s dateDate the voucher on the day the money arrived; split receipts from different days into separate vouchers
A deduction on the Expenses tab reduced sales and output tax instead of reaching an expense accountExpense lines post on the sales chain and tax on output taxUse a GL-code item that carries the expense account for the line; check the first voucher’s Journal Txn grid
An imported voucher is FINAL but its journal posts foreign-currency amounts as ringgit, or it has no journal or cashbook lineA row marked FINAL in the import file skips the FINAL button’s checks and base-currency handlingSee Import Receipt Voucher; void and re-enter the affected vouchers
Payment Adjustment tab or Settlement Adjustment menu missingNeeds both the post-FINAL settlement editing setting and SHOW_EDIT_SETTLEMENT_FINAL, and the voucher must be FINALAsk the administrator for both
Cannot select a cash-in-bank item on a Revenue lineRevenue lines list sales items; settlement methods belong on the Settlement tabRecord the bank movement as a settlement line
Branch or location dropdown missing entriesUser lacks ..._READ_TGT_GUID for that branchGrant the branch-targeted permission
Two vouchers created from one Create click, in different locationsPressing Create during the automatic TEMP-to-ACTIVE conversion (fixed 2026-08)Update the applet; discard the duplicate
Pressing + on Settlement closes the documentSame auto-conversion race (fixed 2026-08)Update the applet
New voucher not in the listing after FINALListing filter (DEFAULT_POSTING_STATUS, date range) excludes itClear filters
Duplicate running number on two vouchersConcurrent saves under the same sequence (reported 2026-07)Report with both document numbers; do not renumber manually

Related documentation

Last updated on