Skip to main content

Overview

Every open bill in DishInk is locked to the terminal that opened it. This is enforced atomically in the database — two cashiers on two devices can never charge the same session. When a legitimate handover is needed (front counter closing, terminal rebooting, kitchen-side till taking over), a Session Transfer moves the lock from one terminal to another. This is a manager-authorised action.
This is not the same as a table transfer (moving guests between tables). See Table Transfers for that.

When You’ll See This

  • A cashier on Terminal B taps Charge on a session opened by Terminal A → the Transfer prompt fires automatically.
  • Terminal A crashes / goes offline → any manager can force-transfer via Settings → Terminals → Active Sessions.
  • End-of-shift handover — outgoing cashier explicitly transfers all their open sessions to the incoming cashier.

The Transfer Prompt

The Transfer Modal shows:
  • Source terminal name and cashier
  • Destination terminal (the one you’re on now)
  • Current bill snapshot (total, item count)
  • Manager PIN field
  • Reason field (free-text, min 3 chars)
  • Transfer button (destructive-looking blue → red once PIN validated)
Once confirmed, the session unlocks from the source and locks to the destination in a single atomic transaction. Other devices update instantly.

The Manager Override

Managers with the All Terminals permission can skip the transfer prompt entirely — they see every session regardless of which terminal opened it. They can also force-transfer from Settings → Terminals → Active Sessions when the source terminal is unresponsive. The override is logged on the Batch Invoice under Manager Overrides → Session Transfers.

Step by Step (Normal Transfer)

1

Try to charge from Terminal B

Pick the session in Active Tables (visible if you have All-Tables permission), tap Charge.
2

Transfer prompt appears

DishInk detects the lock mismatch and opens the Transfer Modal.
3

Enter manager PIN

Any manager-level PIN.
4

Enter a reason

E.g. “Terminal A closing for the night.”
5

Confirm Transfer

Lock moves. Terminal B can now charge the session normally.

Step by Step (Emergency Force-Transfer)

1

Log in as manager

Or supervisor with All-Terminals permission.
2

Go to Settings → Terminals

See the list of active terminals and their open sessions.
3

Pick the stranded session

Tap the session card → Force Transfer.
4

Pick destination terminal

Any terminal in this branch.
5

Confirm with PIN + reason

Session moves. Original terminal, if it recovers, will show the session as “moved” and refresh its cache.
Session transfer placeholder

Transfer Modal on the destination terminal.

Kitchen & KDS Behaviour

Kitchen tickets already fired stay associated with the same session, regardless of which terminal owns it. The KDS keeps preparing normally — no re-fire, no duplicate tickets.

Tips & Best Practices

  • Standardise on one primary terminal per station. Transfers should be the exception, not the routine.
  • If a cashier leaves mid-shift with open bills, the incoming cashier should bulk-transfer via Settings → Terminals rather than one-by-one.
  • Use a clear reason. “Handover — shift change 22:00” is auditable; “transfer” is not.

Common Mistakes

  • Confusing Session Transfer with Table Transfer. Different tools. Session = the running bill; Table = the physical furniture. See Table Transfers.
  • Force-transferring a session that’s mid-split. The split is preserved but the split-active lock also moves; the destination terminal continues the split. Do not force-transfer if the source terminal might come back online mid-split.
  • PIN-sharing to avoid the transfer prompt. Every override is logged. Do the transfer properly.
Last modified on July 19, 2026