BigBooks Docs
Daily Cash & Counter

Counter Sessions, Day Book & Cash Book

As an operator you will open and close your counter cash session, and as an admin you will read the Day Book and Cash Book report grids — so the day's takings are recorded as a balanced journal entry and reconciled cleanly against the bank.

What you'll accomplish

As an Operator you will open and close your counter cash session, and as an Admin you will read the Day Book and Cash Book report grids — so the day's takings are recorded as a balanced journal entry and reconciled cleanly against the bank.

Before you start

The jun27 upgrade splits what used to be one "day book" idea into three distinct surfaces. Know which one you need:

  • Sessions (/[lang]/sales/sessions) is the counter operator's screen — a POS-style, paginated table of cash-drawer shifts. Each row is one session (open / closed / force-closed) for one cashier on one date. You open a session with an opening float, the drawer accumulates sales and pay-ins/pay-outs, and you close it by counting the cash. Viewing it requires the canViewCounterSessions permission.
  • Day Book (/[lang]/reports/day-book) is a report grid — a chronological, edge-to-edge table of posted journal entries with a sticky header, a filter drawer (period + status), and an Excel export. Rows that came from a session link back to their Z-Report number.
  • Cash Book (/[lang]/reports/cash-book) is a report grid for one bank/cash account — debit/credit transactions with a running balance and a reconciled flag, used by the back office to reconcile against the bank statement.

"What I took at the counter today" (a Session) is not "what posted to the ledger" (the Day Book) and is not "what cleared the bank account" (the Cash Book). Use Sessions for the shift, the Day Book for the posting trail, and the Cash Book for bank reconciliation.

Compliance Note

All amounts are stored in LAK as integer satang and displayed through the shared currency formatter, so totals are exact — never rounded. USD and THB drawers are tracked per-currency alongside LAK.

Steps

Open a counter session On /[lang]/sales/sessions, press Open session and enter your opening float per currency. The session snapshots today's exchange rates and starts accumulating drawer movements.

Sessions screen listing cash-drawer shifts with status and the Open session action.
Sessions screen listing cash-drawer shifts with status and the Open session action.

Close the session and count the cash When the shift ends, open the session and choose Close. Enter the counted cash per currency; the system computes the expected closing from the opening float plus posted cash movements and shows the over/short variance before you confirm.

Close-session flow showing expected vs. counted cash and the resulting variance.
Close-session flow showing expected vs. counted cash and the resulting variance.

Read the Day Book Open /[lang]/reports/day-book. Use the Filters drawer to set the period and entry status, then read the chronological grid of posted entries. Entries that originated from a counter session carry their Z-Report number; click a row for the full entry detail.

Day Book report grid with sticky header, filter drawer, and Excel export.
Day Book report grid with sticky header, filter drawer, and Excel export.

Reconcile in the Cash Book Open /[lang]/reports/cash-book, pick the bank/cash account, and read the running-balance ledger. Use the reconciled flag and drill-through to match each transaction to the bank statement.

Cash Book ledger for one bank account with running balance and reconciliation status.
Cash Book ledger for one bank account with running balance and reconciliation status.

What happens behind the scenes

Opening a session (counterSessions/open.ts) validates each opening float as satang, snapshots today's AR-buying and AP-selling rates into ratesAtOpen, and records the opening float per currency.

Closing a session (counterSessions/close.ts) is where the accounting happens. It computes the expected closing (opening float plus the session's posted cash movements) and the variance = counted actual − expected, per currency. It then writes a single balanced session_close journal entry, posted, with two kinds of lines per currency:

  • Reverse the opening float — debit Cash Float Clearing, credit Cash on Hand for the opening amount.
  • Variance — when the variance is at least 2 satang, a cash-over posts a debit to Cash on Hand against a credit to Cash Over/Short, and a cash-short posts the reverse. Sub-2-satang noise is ignored.

If the LAK-equivalent absolute variance exceeds the company's varianceThresholdLAK (or the tenant default), the close is blocked until a manager PIN is supplied. The close also rolls its lines into monthlyAccountTotals and allocates an atomic Z-Report number. The stored varianceLAK on the session is what later feeds the Cashier Variance report.

The Day Book (reports/dayBook.tsgenerateDayBook) reads posted journal entries directly and renders them chronologically; session-sourced entries resolve their sessionId to a Z-Report number and cashier. The Cash Book (reports/cashBook.tsgenerateCashBook) is scoped to one bank account and computes a running balance with reconciliation status, so the same cash movement can appear in both reports for different purposes.

Common problems

  • Variance over threshold: If the counted cash differs from expected by more than the company threshold, closing requires a manager PIN; repeated wrong PINs lock that manager for five minutes.
  • Missing exchange-rate snapshot: If a session was opened without a needed rate (RATE_SNAPSHOT_MISSING), the multi-currency variance can't be expressed in LAK and the close is rejected — re-check the rates set at open.
  • Empty Day Book: No posted entries for the selected period shows an empty grid, not an error. Widen the filter period or check the status filter (drafts may be hidden).
  • Cash Book needs an account: The Cash Book renders per bank/cash account — pick one first; an unreconciled flag means the transaction has not yet been matched to the bank.
  • Force-closed sessions: A session closed by an admin override is marked force_closed and surfaces with a warning icon; its variance still posts and still counts toward the Cashier Variance report.
  • Wrong surface: Looking for per-shift drawer detail in the Day Book will instead show posted entries; use the Sessions screen for the shift itself.

On this page