Teller Deposit
Overview
The teller deposit operation enables tellers to accept cash from customers and credit their deposit accounts. This is a customer-facing transaction where the teller receives physical cash and updates the customer's account balance.
This operation involves physical cash received at the till and credited to a customer's deposit account. The till balance increases by the deposit amount. This is different from:
- Till Cash Management - Internal till funding (no customer involved)
- Deposit Transactions - Channel-based deposits (no physical cash at till)
BPMCore Command
Command: InitiateDepositCommand
Handler: AdministrationCoreDepositTransactionCommandHandlers
Transaction Type: CoreTransactionType.Deposit (when channelCode is a teller channel)
Transaction Characteristics
| Characteristic | Details |
|---|---|
| Customer Involvement | ✅ Yes - Customer present at counter with cash |
| Till Cash Impact | ✅ Yes - Till balance INCREASES by deposit amount |
| Account Impact | ✅ Yes - Customer account balance INCREASES |
| Physical Cash | ✅ Yes - Cash received from customer |
| GL Posting | ✅ Yes - Dr Till GL / Cr Customer Account |
| Notifications | ✅ Yes - Customer receives deposit confirmation |
| Transaction Type | CoreTransactionType.Deposit |
| Channel Type | Teller channel (e.g., TELLER, BRANCH_TELLER) |
Flow Diagram
Request Parameters
{
"commandType": "InitiateDepositCommand",
"accountEncodedKey": "string",
"amount": 0.00,
"channelCode": "TELLER",
"notes": "string",
"serviceId": "string",
"serviceDescription": "string",
"transactionType": 1
}
Parameter Details
| Parameter | Type | Required | Description |
|---|---|---|---|
accountEncodedKey | string | ✅ Yes | Customer account number or encoded key to deposit into |
amount | decimal | ✅ Yes | Amount to deposit (must be positive) |
channelCode | string | ✅ Yes | Teller channel code (e.g., TELLER, BRANCH_TELLER) |
notes | string | ⚠️ Optional | Additional notes or remarks |
serviceId | string | ⚠️ Optional | Service identifier for categorization |
serviceDescription | string | ⚠️ Optional | Description of service being paid for |
transactionType | integer | ✅ Yes | Must be 1 for CoreTransactionType.Deposit |
The channelCode must be configured as a teller channel in the system. This determines:
- Till GL account for posting
- Transaction fees (if applicable)
- Transaction limits
- Audit trail categorization
Validation Rules
1. Account Validations
| Validation | Description | Error Code |
|---|---|---|
| Account Exists | Account must exist in system | NOT_FOUND |
| Account Active | Account must not be in Locked or Dormant state | ACCOUNT_IS_RESTRICTED |
| Not Frozen | Account must not be frozen | ACCOUNT_IS_RESTRICTED |
| Account Type Check | Fixed deposits at maturity cannot accept deposits | INVALID_OPERATION |
| Savings Plan Check | Matured savings plans cannot accept deposits | INVALID_OPERATION |
2. Amount Validations
| Validation | Description | Error Code |
|---|---|---|
| Positive Amount | Amount must be > 0 | INVALID_AMOUNT |
| Deposit Limit | Amount ≤ account tier deposit transaction limit | TRANSFER_LIMIT_EXCEEDED |
| Maximum Balance | Account balance + deposit ≤ tier maximum balance | INVALID_AMOUNT |
| Precision Check | Amount must have valid decimal places | INVALID_PRECISION |
3. Till Validations
| Validation | Description | Error Code |
|---|---|---|
| Till Open | Teller's till must be in OPENED state | TILL_NOT_OPEN |
| Till Assignment | Teller must be assigned to till | TILL_NOT_ASSIGNED |
| Till Capacity | Till balance after deposit ≤ maximum till capacity | TILL_CAPACITY_EXCEEDED |
| Branch Match | Account and till must be in same branch | BRANCH_MISMATCH |
4. Channel Validations
| Validation | Description | Error Code |
|---|---|---|
| Channel Exists | Channel code must be configured | CHANNEL_NOT_FOUND |
| Channel Active | Channel must be active | CHANNEL_INACTIVE |
| Operation Allowed | Channel must allow deposit operations | OPERATION_NOT_ALLOWED |
| Teller Channel Type | Channel must be teller-type channel | INVALID_CHANNEL_TYPE |
State Transitions
GL Postings
Teller Deposit Entry
| Account | Dr/Cr | Amount | Description |
|---|---|---|---|
| Till GL Account | Dr | Deposit Amount | Cash received into till |
| Customer Deposit Account | Cr | Deposit Amount | Customer account credited |
Example
Customer deposits $5,000 cash into Savings Account (101-001). Till GL is 1010-TILL-001:
Dr 1010-TILL-001 (Till Cash) $5,000.00
Cr 101-001 (Customer Savings) $5,000.00
Narration: Deposit of $5,000 to account 101-001 via TELLER
Always remember: Teller deposits INCREASE the till balance. The physical cash received from the customer is now in the till drawer.
Response Structure
Success Response
{
"isSuccessful": true,
"message": "Deposit processed successfully",
"data": {
"transactionId": "TXN-20250119-001234",
"accountNumber": "101-001",
"accountBalance": 15000.00,
"depositAmount": 5000.00,
"tillBalance": 85000.00,
"transactionDate": "2025-01-19T10:30:00Z",
"reference": "DEP-001234",
"narration": "Deposit of $5,000 to account 101-001 via TELLER"
}
}
Error Response
{
"isSuccessful": false,
"message": "You cannot perform any transaction on this account. It is presently locked.",
"errorCode": "ACCOUNT_IS_RESTRICTED",
"statusCode": "06"
}
Common Use Cases
1. Regular Cash Deposit
Scenario: Customer wants to deposit salary received in cash
Flow:
- Customer provides cash and deposit slip with account number
- Teller counts cash and verifies amount matches deposit slip
- Teller enters deposit details into system
- System validates account and till status
- Deposit processes immediately
- Customer receives receipt with new balance
- Till balance increases by deposit amount
2. Split Deposit to Multiple Accounts
Scenario: Customer wants to split cash deposit across savings and current accounts
Flow:
- Process first deposit to savings account (e.g., $3,000)
- Process second deposit to current account (e.g., $2,000)
- Both accounts updated independently
- Till balance increases by total ($5,000)
3. Third-Party Deposit
Scenario: Person A deposits cash into Person B's account
Flow:
- Person A provides cash and beneficiary account number
- Teller verifies account exists and accepts deposits
- Process deposit transaction
- Account owner (Person B) receives notification
- Receipt shows depositor details for audit trail
Integration Points
Related Operations
- Teller Withdrawal - Opposite operation: pay out cash to customer
- Teller Transfer - Move funds between accounts without cash
- Add Cash to Till - Internal till funding (NOT customer deposit)
- Account Search - Look up customer account for deposit
- Deposit Transactions - Channel deposits (mobile, ATM)
Account Types Supported
| Account Type | Deposit Allowed | Special Rules |
|---|---|---|
| Savings Account | ✅ Yes | Check deposit limits |
| Current Account | ✅ Yes | Usually no limits |
| Fixed Deposit | ⚠️ Conditional | Not allowed after maturity date |
| Savings Plan | ⚠️ Conditional | Not allowed after maturity date |
| Loan Account | ✅ Yes | Treated as loan repayment |
Business Rules
Deposit Limits
| Limit Type | Configuration | Enforcement |
|---|---|---|
| Minimum Deposit | DepositProductConfig.MinimumDeposit | Per transaction |
| Maximum Transaction | AccountTier.DepositTransactionLimit | Per transaction |
| Daily Deposit Limit | AccountTier.DailyDepositLimit | Per day aggregate |
| Maximum Balance | AccountTier.MaximumBalance | Account balance cap |
The system validates: Current Balance + Deposit Amount ≤ Maximum Balance
If this check fails, the deposit is rejected even if the amount is within transaction limits.
Processing Times
| Scenario | Processing Time |
|---|---|
| Standard Deposit | Instant (real-time) |
| Large Amount Deposit | May require supervisor approval |
| Frozen Account | Rejected immediately |
| System Downtime | Queued for processing |
Narration Templates
Deposit narration is generated using configurable templates:
Customer Narration:
`Deposit of ${context.amount} to ${context.accountNumber} via ${context.channelName}`
Channel Narration:
`Deposit of ${context.amount} to ${context.accountNumber} via ${context.channelName}`
Transaction ID:
`${context.transactionKey}`
These templates can be customized in the DepositProductConfig.NarrationTemplates.
Audit Trail
All teller deposits create comprehensive audit records capturing:
- Transaction Details: Amount, account number, transaction ID
- Teller Information: Teller ID, till ID, branch ID
- Customer Information: Customer ID, account details
- Cash Details: Currency, denomination breakdown (if captured)
- Timestamps: Request time, processing time, completion time
- System Information: IP address, terminal ID, session ID
- Before/After State: Account balance before/after, till balance before/after
- Narration: Customer and internal narrations
Error Handling
Common Errors
| Error | Cause | Resolution |
|---|---|---|
TILL_NOT_OPEN | Teller's till is closed | Open Till first |
ACCOUNT_IS_RESTRICTED | Account is locked, frozen, or dormant | Check account status, contact supervisor |
TRANSFER_LIMIT_EXCEEDED | Deposit exceeds transaction limit | Split into smaller deposits or request limit increase |
INVALID_AMOUNT | Amount would breach maximum balance | Customer must use different account |
CHANNEL_NOT_FOUND | Channel code not configured | Verify channel code, contact IT support |
NOT_FOUND | Account doesn't exist | Verify account number with customer |
Deposit Rejection Scenarios
| Scenario | Action Taken | Customer Impact |
|---|---|---|
| Account Locked | Reject immediately | Customer must unlock account first |
| Frozen Account | Reject immediately | Customer must contact branch manager |
| Dormant Account | Reject immediately | Account must be reactivated |
| Fixed Deposit at Maturity | Reject immediately | Customer can only withdraw |
| Savings Plan Matured | Reject immediately | Open new plan or use different account |
Security Considerations
Authorization Requirements
- Teller must be authenticated and authorized
- Till must be open and assigned to teller
- Large deposits may require supervisor approval (configurable threshold)
- Customer identity verification required for large amounts
- Third-party deposits may require additional documentation
Fraud Prevention
- System checks for unusual deposit patterns
- Velocity limits prevent rapid successive deposits
- Alerts on deposits exceeding configurable thresholds
- Cross-reference with customer's typical transaction behavior
- Flag first-time large deposits for review
- Cash denomination tracking for currency quality monitoring
Compliance Features
- Automatic reporting for deposits above regulatory thresholds
- Enhanced due diligence for high-risk accounts
- Source of funds documentation for large deposits
- Anti-money laundering (AML) screening
- Politically Exposed Person (PEP) checks
Performance Considerations
Till Cash Management
Monitor till balance throughout the day. When till reaches capacity:
- Transfer to Vault - Move excess cash to branch vault
- Transfer Between Tills - Balance cash across tills
- Request supervisor to collect excess cash
Deposit Counting
| Amount Range | Recommended Practice |
|---|---|
| < $1,000 | Manual count by teller |
| $1,000 - $10,000 | Double-count verification |
| > $10,000 | Machine count + supervisor verification |
Related Documentation
- Teller Withdrawal - Process customer withdrawals
- Teller Transfer - Transfer between customer accounts
- Account Search - Look up accounts for deposits
- Till Management - Till operations overview
- Deposit Transactions - Channel deposits
- Transaction Reversal - Reverse incorrect deposits
Best Practices
- Always verify account number before accepting cash
- Count cash twice in front of customer
- Provide immediate receipt upon successful deposit
- Monitor till balance and transfer excess to vault regularly
- Verify large deposits with customer about source of funds
- Document third-party deposits with depositor information
- Check account status before accepting cash to avoid customer inconvenience