Skip to content

Transfer Between Sub-Accounts

A cash transfer is the right tool when physical cash moves from one drawer or one cashier’s float to another. Most stores see this once a day in the AboYahya → Osama end-of-day pattern: AboYahya collects through the day in 1010-006, then walks the takings to Osama at close, who locks them in the safe under 1010-002. One movement of cash, but two sub-accounts have to reflect it — that’s a transfer.

Updated 4 May 2026·For v1.6.100·4 min read
cash drawer · transfer dialog · from / to / amount / note

The accounting shape

A transfer is one journal entry with two legs — both on cash sub-accounts, equal amounts, opposite sides. Net zero across the parent 1010 Cash account, exactly the way it should be. No P&L impact, no revenue, no expense — it’s not a transaction with the outside world, it’s an internal reshuffle.

The JE for a $1,200 transfer from 1010-006 (AboYahya) to 1010-002 (Osama):

  • DR 1010-002 Osama — $1,200
  • CR 1010-006 AboYahya — $1,200

Sum of debits = sum of credits, balanced. The Balance Sheet’s parent 1010 Cash row is unchanged because both legs net inside the same parent account; only the sub-account drilldown reflects the move.

When to use a transfer (and when not to)

Use a transfer when both legs are sub-accounts under the same parent — typically 1010-* to 1010-*.

Don’t use a transfer when:

  • One leg is a non-cash asset (the bank, mobile money) — that’s a different kind of move. For till → bank, post a cash-out with the counterparty set to 1020 Bank, or use a banking-specific flow if the tenant has one configured.
  • The receiving “account” is actually an expense or owner draw — that’s a cash adjustment, not a transfer. Transfers don’t change total cash; cash adjustments do.

How to post one

1

Open the active shift's drawer card

From the POS or the Shifts page, click Transfer on the cash drawer card. The dialog requires an active shift on the source sub-account — you transfer from the till you’re physically standing in front of.

2

Pick source and destination

  • From — pre-filled with your active shift’s sub-account (e.g. 1010-006 AboYahya). Read-only — you can’t transfer cash you don’t have a shift on.
  • To — dropdown of every other configured cash sub-account (1010-001 Counter Cash, 1010-002 Osama, etc.).
3

Enter amount + note

  • Amount — positive number. Must be ≤ the source sub-account’s current expected balance, or the dialog rejects with “insufficient cash on hand”.
  • Note — required free-text. The convention is “EOD takings — N invoices, $X in cash, $Y card” so the destination’s records explain where the spike came from.
4

Confirm

Two cash_drawer_transactions rows post — type='cash_out' on the source shift, type='cash_in' on the receiving sub-account. One JE writes both legs. Both shifts’ Expected balances recompute live.

What changes on the shift summary

For the source shift:

  • The transfer shows as a cash-out in the transaction log with the destination sub-account name in the note.
  • Expected drops by the transfer amount.
  • A subsequent close-of-shift count should match the lowered expected.

For the destination shift (when next opened):

  • The transfer shows as a cash-in at the timestamp it was posted, not at the destination shift’s open time — so the transaction log preserves the real chronology.
  • Expected is higher by the transfer amount on top of the opening balance.

Reading the audit trail

A transfer surfaces:

  • In both shifts’ detail panels — as cash-out on the source side and cash-in on the destination side, with each leg pointing at the other sub-account in the description.
  • In the General Ledger — filter by account_code starting 1010- to see both legs of every transfer in date order. Source type on the JE is cash_drawer_transaction.
  • In the Cash Drawer Report — under Adjustments, both sides separately.
  • In the Balance Sheet — drill into the Cash & Equivalents row to see the per-sub-account balance shift; the parent total is unchanged.

Common gotchas

”I transferred to the wrong sub-account”

Post a counter-transfer the other direction with a clear note: correcting transfer #1284 — meant 1010-002 not 1010-001. Both transfers stay on the books, both pairs of legs are visible, the audit trail is intact. Don’t try to PATCH the row.

”The destination’s expected didn’t update”

If the destination has no shift open at the time of the transfer, the cash-in attaches to whatever shift opens next on that sub-account. Open it and the expected will include the transfer. If the destination has had several shifts since the transfer was posted, the cash-in landed on the first shift opened after the transfer’s timestamp — which may not be where you expected.