Skip to main content

Till Add Cash Transaction

Add cash to a teller till (increase till balance).

Overview

A Till Add Cash transaction increases the cash balance of a teller till. This operation is typically used when:

  • Opening a till for the day (initial cash float)
  • Replenishing till during the day (additional cash)
  • Transferring cash from vault to till
  • Recording cash received from other sources

Key Characteristics:

  • Purpose: Increase till cash balance
  • Transaction Type: Till management operation
  • Source: Branch vault, head teller, or other authorized source
  • Impact: Till balance increased, source account decreased
  • Audit: Full audit trail with impact tracking
  • Authorization: Requires till owner or authorized user

Transaction Flow


Entities Impacted

Scenario: Add ₦100,000 Cash to Till from Branch Vault

Context:

  • Till: TILL-001 (Teller: Jane Doe)
  • Current Till Balance: ₦250,000
  • Maximum Till Balance: ₦1,000,000
  • Amount to Add: ₦100,000
  • Source: Branch Vault

TransactionImpactRecord

{
transactionId: "TXN-TILL-ADD-20251229-0001",
transactionType: "ADD_CASH_TO_TILL",
transactionState: "SETTLED",
transactionDate: "2025-12-29T09:00:00Z",
amount: 100000.00,
impactedEntities: [
// Teller Till
{
entityType: "TellerTill",
entityId: 101,
entityKey: "TILL-001",
fieldName: "CashBalance",
oldValue: 250000.00,
newValue: 350000.00,
deltaAmount: +100000.00,
isReversal: false
},
{
entityType: "TellerTill",
entityId: 101,
entityKey: "TILL-001",
fieldName: "AvailableBalance",
oldValue: 250000.00,
newValue: 350000.00,
deltaAmount: +100000.00,
isReversal: false
},
{
entityType: "TellerTill",
entityId: 101,
entityKey: "TILL-001",
fieldName: "TotalCashIn",
oldValue: 500000.00,
newValue: 600000.00,
deltaAmount: +100000.00,
isReversal: false
},
{
entityType: "TellerTill",
entityId: 101,
entityKey: "TILL-001",
fieldName: "TransactionCount",
oldValue: 25,
newValue: 26,
deltaAmount: +1,
isReversal: false
},
{
entityType: "TellerTill",
entityId: 101,
entityKey: "TILL-001",
fieldName: "LastUpdateDate",
oldValue: "2025-12-29T08:30:00Z",
newValue: "2025-12-29T09:00:00Z",
deltaAmount: 0,
isReversal: false
},
// Branch Vault (if source is vault)
{
entityType: "BranchVault",
entityId: 5,
entityKey: "VAULT-HQ-001",
fieldName: "CashBalance",
oldValue: 5000000.00,
newValue: 4900000.00,
deltaAmount: -100000.00,
isReversal: false
},
// GL Accounts
{
entityType: "GLAccount",
entityKey: "1100-001", // Cash-in-Till
fieldName: "DebitAmount",
deltaAmount: +100000.00
},
{
entityType: "GLAccount",
entityKey: "1100-002", // Branch Vault
fieldName: "CreditAmount",
deltaAmount: +100000.00
}
]
}

V2 API Commands

BankLingo V2 provides a BPMCore-compatible command for till cash management.

Architecture Overview

The V2 till add cash command follows the BPMCore Command Pattern:

  • V2 Command: AddCashToTellerTillCommand (BPMCore compatible)
  • BPM Integration: Accepts parameters via BpmUtil.GetPropertyValue()
  • Impact Tracking: Full impact tracking via TransactionImpactTracker
  • State Management: PENDING → APPROVED → SETTLED
  • Approval Workflow: Configurable approval thresholds

Implementation: CB.Administration.Api/Commands/BPMCore/Tellering/AdministrationCoreTelleringTransactionCommandHandlers.cs


AddCashToTellerTillCommand

Purpose: Add cash to a teller till (increase till balance)

Command: AddCashToTellerTillCommand

Transaction State: PENDING → SETTLED

BPM Parameters

{
"commandName": "AddCashToTellerTillCommand",
"data": {
"tillId": "string (mandatory)",
"amount": "decimal (mandatory)",
"sourceAccountKey": "string (optional)",
"sourceType": "string (optional)",
"transactionDate": "DateTime (optional)",
"notes": "string (optional)"
}
}

Parameter Details

ParameterTypeRequiredDescription
tillIdstring✅ YesTeller till ID receiving cash
amountdecimal✅ YesCash amount to add (must be > 0)
sourceAccountKeystring❌ NoSource account (vault/GL account)
sourceTypestring❌ NoSource type (e.g., "VAULT", "GL")
transactionDateDateTime❌ NoTransaction date (defaults to today)
notesstring❌ NoTransaction notes/remarks

Balance Impact

Teller Till:

Balance FieldChangeReason
CashBalance+amountCash added
AvailableBalance+amountAvailable for transactions
TotalCashIn+amountTrack total inflow
TransactionCount+1Transaction counter
LastUpdateDateSet to nowTrack last update

Source Account (if specified):

Balance FieldChangeReason
CashBalance-amountCash transferred out
AvailableBalance-amountFunds moved

Validation Rules

Till Validation:

  • Till must exist
  • Till state must be OPENED
  • User must be authorized for till operations
  • Current balance + amount ≤ Maximum till balance

Amount Validation:

  • Amount must be > 0
  • Amount must not exceed till maximum capacity
  • Amount currency must match till currency

Source Validation (if source specified):

  • Source account must exist and be active
  • Source account must have sufficient balance
  • Source account currency must match till currency

Rejection Scenarios:

  • Till not found or not opened
  • Amount exceeds till maximum balance
  • Source account insufficient funds
  • User not authorized for till
  • Till locked or suspended

Transaction States

States:

  1. PENDING: Transaction initiated, awaiting approval (if required)
  2. APPROVED: Approved, ready for execution
  3. SETTLED: Cash added, till balance increased
  4. REJECTED: Transaction rejected (no balance change)

Approval Workflow

  • ✅ Auto-approval if amount < configured limit (e.g., ₦50,000)
  • ⚠️ Manual approval required if amount ≥ limit
  • 🔒 Transaction pending during approval
  • 🔓 No balance hold (till not yet credited)

Example Request/Response

Request:

{
"commandName": "AddCashToTellerTillCommand",
"data": {
"tillId": "TILL-001",
"amount": 100000.00,
"sourceAccountKey": "VAULT-HQ-001",
"sourceType": "VAULT",
"transactionDate": "2025-12-29T09:00:00Z",
"notes": "Morning till replenishment from branch vault"
}
}

Response:

{
"isSuccessful": true,
"transactionId": "TXN-TILL-ADD-20251229-0001",
"transactionState": "SETTLED",
"message": "Cash added to till successfully",
"data": {
"tillId": "TILL-001",
"tillOwner": "Jane Doe",
"amount": 100000.00,
"transactionDate": "2025-12-29T09:00:00Z",
"tillBalance": {
"previousBalance": 250000.00,
"newBalance": 350000.00,
"maximumBalance": 1000000.00,
"utilizationPercent": 35.0
},
"sourceAccount": {
"accountKey": "VAULT-HQ-001",
"accountType": "VAULT",
"previousBalance": 5000000.00,
"newBalance": 4900000.00
},
"impactRecords": 8
}
}

Impact Tracking

Impacted Entities:

  • ✅ Teller Till (5 field changes: cash balance, available balance, total cash in, transaction count, last update)
  • ✅ Source Account (2 field changes: cash balance, available balance) - if specified
  • ✅ GL Accounts (journal entries for cash movement)

Use Cases

1. Morning Till Opening:

{
"tillId": "TILL-001",
"amount": 200000.00,
"sourceAccountKey": "VAULT-HQ-001",
"notes": "Morning float - till opening"
}

2. Mid-Day Replenishment:

{
"tillId": "TILL-003",
"amount": 150000.00,
"sourceAccountKey": "VAULT-HQ-001",
"notes": "Replenishment - low cash alert"
}

3. Cash Transfer from Another Till:

{
"tillId": "TILL-002",
"amount": 50000.00,
"sourceAccountKey": "TILL-001",
"sourceType": "TILL",
"notes": "Transfer from TILL-001 (excess cash)"
}

Error Handling

Common Errors:

ErrorReasonResolution
TILL_NOT_OPENEDTill is not in OPENED stateOpen till first
EXCEEDS_TILL_MAXIMUMAmount exceeds till capacityReduce amount or increase limit
SOURCE_INSUFFICIENT_FUNDSSource account has insufficient balanceFund source account first
UNAUTHORIZED_USERUser not authorized for tillUse authorized user or till owner
TILL_LOCKEDTill is locked or suspendedUnlock till first

Business Rules

  1. Till Maximum Balance: Each till has a maximum cash capacity (e.g., ₦1,000,000)
  2. Daily Limits: May have daily add cash limits for security
  3. Authorization: Only till owner or authorized users can add cash
  4. Audit Trail: All cash additions fully audited with user, timestamp, source
  5. Concurrent Safety: Uses locking to prevent concurrent till modifications
  6. Reversal: Transactions can be reversed if posted in error (see ReverseTransactionCommand)
  • Remove Cash: RemoveCashFromTellerTillCommand (decrease till balance)
  • Till Transfer: TransferBetweenTellerTillCommand (move cash between tills)
  • Vault Funding: FundBranchVaultAccountCommand (add cash to vault)
  • Till Closure: CloseTellerTillCommand (close till and transfer balance)

Performance Considerations

  • Till Locking: Uses row-level locking on till record during transaction
  • Transaction Time: Typically < 50ms for simple add cash operation
  • Impact Records: Creates 5-10 impact entries per transaction
  • Concurrent Operations: Serialized per till to prevent race conditions
  • Validation: All validations complete before balance changes

Audit and Compliance

Audit Trail

Every add cash transaction records:

  • ✅ User who initiated transaction
  • ✅ Timestamp of transaction
  • ✅ Amount added
  • ✅ Source of cash (vault/GL/other till)
  • ✅ Till owner and ID
  • ✅ Approval details (if applicable)
  • ✅ Before/after balances

Compliance Reports

Daily Till Activity Report:

  • All cash additions per till
  • Total cash added per teller
  • Source breakdown (vault vs other)
  • Exception transactions (large amounts)

Till Balance Monitoring:

  • Real-time till balance tracking
  • Maximum balance breach alerts
  • Unusual activity detection


Developer Resources

For API implementation details, see:


Navigation: