Overview
SushiGo supports multiple cash registers per branch, each with distinct workflows for on-premise, delivery, and event operations. Card terminals and bank accounts are configured per branch and linked to transactions via tender lines.Cash Registers
Register Types
From CashRegister.php:29-34:| Type | Description | Use Case |
|---|---|---|
ON_PREMISE | Store register for dine-in service | Main counter, bar, or service station |
DELIVERY | Register for delivery operations | Separate tracking for delivery/takeout |
EVENT | Temporary register for special events | Catering, festivals, pop-ups |
Event registers can be linked to an
OperatingUnit for temporary tracking outside the main branch.Register Fields
| Field | Type | Description |
|---|---|---|
branch_id | Foreign Key | Parent branch (required) |
operating_unit_id | Foreign Key | Optional link to event unit |
code | String | Unique identifier (e.g., “REG-001”) |
name | String | Display name (e.g., “Main Counter”) |
type | Enum | ON_PREMISE, DELIVERY, or EVENT |
is_active | Boolean | Enable/disable register |
meta | JSON | Custom data (e.g., external system IDs) |
Create a Register
Query Scopes
From CashRegister.php:62-82:Helper Methods
Relationships
- branch: Parent branch CashRegister.php:39-42
- operatingUnit: Optional event unit CashRegister.php:47-50
- sessions: All cash sessions CashRegister.php:55-58
Cash Terminals
Card terminals process card payments and must be linked to adjustment lines or expenses viacard_terminal_id.
Terminal Fields
| Field | Type | Description |
|---|---|---|
branch_id | Foreign Key | Parent branch |
name | String | Terminal name or alias (e.g., “Terminal A”) |
provider | String | Payment processor (e.g., “Stripe”, “Clip”) |
account_ref | String | Merchant ID or account reference |
last_four | String | Last 4 digits of terminal serial/account |
is_active | Boolean | Enable/disable terminal |
meta | JSON | Additional metadata (fees, commission rates) |
Create a Terminal
Query Scopes
From CashTerminal.php:54-75:Relationships
- branch: Parent branch CashTerminal.php:32-35
- adjustmentLines: Transactions using this terminal CashTerminal.php:40-43
- expenses: Expenses paid via this terminal CashTerminal.php:48-51
When creating a cash adjustment line with
tender_type: 'CARD', you must provide a valid card_terminal_id.Bank Accounts
Bank accounts receive transfer payments and are referenced in adjustment lines or expenses withtender_type: 'TRANSFER'.
Account Fields
| Field | Type | Description |
|---|---|---|
branch_id | Foreign Key | Parent branch |
alias | String | Friendly name (e.g., “Main Checking”) |
bank_name | String | Financial institution name |
account_number_masked | String | Masked account number (e.g., “****1234”) |
clabe_masked | String | Masked CLABE (Mexican interbank key) |
is_active | Boolean | Enable/disable account |
meta | JSON | Additional metadata |
Create a Bank Account
Query Scopes
From BankAccount.php:55-67:Relationships
- branch: Parent branch BankAccount.php:32-35
- adjustmentLines: Transfers to this account BankAccount.php:40-43
- expenses: Transfers from this account BankAccount.php:48-51
Setup Workflow
Multi-Branch Configuration
Each branch should have:Registers
1+ per operational type (on-premise, delivery, event)
Terminals
1+ card terminals with provider details
Accounts
1+ bank accounts for transfers
Example: Branch Setup
Entity Relationships
Best Practices
Register Naming
Register Naming
Use clear, descriptive names that indicate location and purpose: “Kitchen Counter”, “Bar Register”, “Delivery Hub”
Terminal Tracking
Terminal Tracking
Store the last four digits of terminal serial numbers for easy physical identification
Account Security
Account Security
Never store full account numbers in
account_number_masked or clabe_masked. Use masked versions only.Active Status
Active Status
Mark registers, terminals, or accounts as inactive instead of deleting to preserve historical transaction links
Event Registers
Event Registers
Link event registers to temporary
OperatingUnit records for proper scoping and cleanupNext Steps
Cash Sessions
Create and manage daily cash sessions
Cash Adjustments
Record income with tender breakdown