Skip to content
pos

Running a dual-currency cash drawer in Cambodia

How Cambodian shops take dollars, give riel change, set a shift float, and still reconcile the drawer at closing without a spreadsheet.

Updated 2026-08-11 · 7 min read

Why one drawer holds two currencies

Most Cambodian counters price in dollars but give change in riel, because small denominations below one dollar circulate as riel. That means a single sale can be tendered in USD and settled with KHR change — and the drawer ends the day holding both. Any till that treats currency as a single field will not reconcile.

Set the opening float in both currencies

  • Count and record the USD float and the KHR float separately
  • Keep enough small riel to cover a normal day of change
  • Tie the float to a named cashier and a shift, not to the shop
  • Record the exchange rate in force when the shift opens
Inside Humaneti

One shift, from opening float to closing variance

A dual-currency drawer only reconciles if every one of these happens the same way every time. Left to cashier judgement, each of them drifts.

  1. 1
    CashierOpen

    Open the shift with both floats counted

    The USD float and the KHR float are both required — neither can be left blank and inferred later. The shift belongs to a named cashier at a named terminal, so the drawer has an owner from the first sale.

  2. 2
    Cashier

    Ring up the basket at the shop's own rate

    Every shop posts its own counter rate — 4,000, 4,100, 4,200 — and the sale records the rate that was in force when it was rung up. A rate change tomorrow does not restate what happened today.

  3. 3
    Humaneti

    Change: whole dollars first, then riel to the nearest 100

    The remainder rounds to a multiple of 100៛ — and where the rounding would leave the customer short, it goes their way instead of the shop's. What the shop gained or lost to rounding is recorded on the sale rather than quietly absorbed, so it shows up in the day's figures instead of as an unexplained drawer variance.

  4. 4
    HumanetiPending → Completed

    A QR sale is not finished when the cashier presses pay

    Cash and card are settled when the cashier says so; KHQR is not — the money moves through Bakong, which is a separate event the server has to confirm. The sale stays pending until it does, and that holds even when the QR is only one part of a split payment. Handing goods over on the cash half would mean releasing them against money that has not arrived.

  5. 5
    Humaneti

    A retried sale is never rung up twice

    Each sale carries a key generated by the till. If the connection drops after the sale is sent but before the response arrives, the till retries — and gets back the sale already recorded rather than creating a second one. This is the difference between a shaky connection being an annoyance and being a refund.

  6. 6
    Humaneti

    A sale made offline can still post after closing

    If the link was down when the basket was rung up, the money was still in the drawer. Within a grace window the shop configures, that sale posts to the shift it belongs to instead of being refused — refusing it would lose a real sale rather than protect anything.

  7. 7
    ManagerClosed

    Close against a computed expectation, per currency

    Counted USD and counted KHR are entered separately, and the expected figure is derived from this shift's own float, sales, and tenders. The variance in each currency is stored on the shift — a settled number, not something recalculated differently next month.

  8. 8
    Humaneti

    Voids and refunds reverse — they do not delete

    A cancelled or refunded sale is reversed as its own entry, so the original stays visible with the reversal beside it. The shift and the ledger both keep the full story, which is what lets a manager see discounts, voids, and returns by cashier rather than only a net total.

Decide the rounding rule before you trade

Riel change is normally rounded to the nearest 100 KHR, because smaller notes are impractical at a counter. Fix that rule once, apply it in the till, and print it on the receipt. If each cashier rounds by judgement, the drawer drifts by a small amount on every transaction and the variance is impossible to explain at closing.

Close the shift against a Z-report

  • Count USD and KHR in the drawer separately at close
  • Compare counted cash to the system Z-report for that shift
  • Explain any variance before the next shift opens, not at month-end
  • Keep voids, discounts, and returns visible per cashier

What good looks like

A healthy counter can answer three questions in under a minute: what did we sell this shift, how much cash should be in the drawer in each currency, and who approved every discount, void, and return. If answering those needs a spreadsheet rebuilt from receipts, the till is not doing its job.

Free

The Cambodia compliance pack

A short checklist of what a Cambodian employer has to get right each month — Tax on Salary, NSSF, seniority indemnity, and the records an audit asks for. No sales call attached.

We will email you occasionally about Cambodian payroll and compliance. Unsubscribe any time.

Related modules

Want a demo for your team?

We run live sessions tailored to your operations in Cambodia.