Skip to main content

Introduction

The SushiGo cash management system provides end-of-day financial tracking for multi-location restaurant operations. It captures daily income totals by tender type (cash, card, transfer) across multiple registers, terminals, and bank accounts.
This system records daily totals from external POS systems, not individual ticket-level transactions.

Core Concepts

Cash Sessions

A cash session represents a single operating day for a specific cash register. Each session:
  • Tracks opening and closing balances
  • Contains all income adjustments and expenses for that day
  • Must be unique per register and date
  • Has a lifecycle: DRAFTPOSTED

Cash Registers

Physical or logical registers that process transactions. Types include:
  • ON_PREMISE: Store register for dine-in service
  • DELIVERY: Register for delivery operations
  • EVENT: Temporary register for special events

Tender Types

Transactions are categorized by payment method:
  • CASH: Physical currency
  • CARD: Card payments via terminals
  • TRANSFER: Bank transfers

Key Features

Multi-Register Support

Manage multiple registers per branch with distinct workflows for on-premise, delivery, and events

Tender Breakdown

Track income and expenses by tender type with automatic terminal and account linking

Session Lifecycle

Draft → Posted workflow with balance calculations and variance detection

Audit Trail

Complete traceability with user tracking, timestamps, and source system references

System Architecture

Data Model Overview

EntityPurposeKey Fields
CashRegisterRegister catalog per branchcode, name, type, branch_id
CashTerminalCard terminal trackingname, provider, last_four
BankAccountTransfer destination accountsalias, bank_name, clabe_masked
CashSessionDaily operating sessionoperating_date, status, opening_balance, closing_balance
CashAdjustmentIncome/outflow headertype, direction, source_system
CashAdjustmentLineTender-level breakdowntender_type, amount, terminal_id, bank_account_id
CashExpenseOperating expensestender_type, amount, category, vendor

Workflow Overview

1

Setup

Configure cash registers, terminals, and bank accounts for each branch
2

Open Session

Create or retrieve the cash session for the operating date
3

Capture Income

Import daily totals from external POS, broken down by tender type
4

Record Expenses

Log operational expenses paid from registers or terminals
5

Post Session

Finalize the session, calculating closing balance and locking transactions
6

Reconcile

Review reports by register, tender type, and date range

Status Flow

Cash sessions and adjustments follow a simple two-state lifecycle:

Permissions

Suggested permissions for access control:
  • cash-registers.manage - Create and configure registers
  • cash-terminals.manage - Manage card terminals
  • cash-adjustments.create - Record daily income
  • cash-adjustments.post - Finalize adjustments
  • cash-expenses.create - Log operational expenses
  • cash-expenses.post - Approve and lock expenses
Use the existing OperatingUnitUser scoping to restrict access to registers tied to specific branches or units.

Next Steps

Cash Sessions

Learn about session lifecycle and balance calculations

Registers & Terminals

Set up registers, terminals, and bank accounts

Cash Adjustments

Record income and corrections with approval workflow

Cash Expenses

Track operational expenses by category and vendor

Build docs developers (and LLMs) love