Teller Withdrawal
Overview
The teller withdrawal operation enables tellers to pay out cash to customers from their deposit accounts. This is a customer-facing transaction where the teller disburses physical cash and debits the customer's account balance.
This operation involves physical cash paid out from the till and debited from a customer's deposit account. The till balance decreases by the withdrawal amount. This is different from:
- Remove Cash from Till - Internal till cash removal (no customer involved)
- Withdrawal Transactions - Channel-based withdrawals (ATM, mobile - no physical cash at till)
BPMCore Command
Command: InitiateWithdrawalCommand
Handler: AdministrationCoreDepositTransactionCommandHandlers
Transaction Type: CoreTransactionType.Withdrawal (when channelCode is a teller channel)
Transaction Characteristics
| Characteristic | Details |
|---|---|
| Customer Involvement | ✅ Yes - Customer present at counter to receive cash |
| Till Cash Impact | ✅ Yes - Till balance DECREASES by withdrawal amount |
| Account Impact | ✅ Yes - Customer account balance DECREASES |
| Physical Cash | ✅ Yes - Cash paid out to customer |
| GL Posting | ✅ Yes - Dr Customer Account / Cr Till GL |
| Notifications | ✅ Yes - Customer receives withdrawal confirmation |
| Transaction Type | CoreTransactionType.Withdrawal |
| Channel Type | Teller channel (e.g., TELLER, BRANCH_TELLER) |
Flow Diagram
Request Parameters
{
"commandType": "InitiateWithdrawalCommand",
"accountEncodedKey": "string",
"amount": 0.00,
"channelCode": "TELLER",
"notes": "string",
"serviceId": "string",
"serviceDescription": "string",
"transactionType": 2
}
Parameter Details
| Parameter | Type | Required | Description |
|---|---|---|---|
accountEncodedKey | string | ✅ Yes | Customer account number or encoded key to withdraw from |
amount | decimal | ✅ Yes | Amount to withdraw (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 purpose for withdrawal |
transactionType | integer | ✅ Yes | Must be 2 for CoreTransactionType.Withdrawal |
The channelCode must be configured as a teller channel in the system. This determines:
- Till GL account for posting
- Transaction fees (if applicable)
- Withdrawal 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 |
| Not Locked | Account must not have transaction locks | ACCOUNT_IS_RESTRICTED |
| Account Type Check | Check account type-specific withdrawal rules | INVALID_OPERATION |
2. Balance Validations
| Validation | Description | Error Code |
|---|---|---|
| Sufficient Balance | Account balance ≥ withdrawal amount + minimum balance | INSUFFICIENT_FUNDS |
| Minimum Balance | Withdrawal won't breach minimum balance requirement | MIN_BALANCE_BREACH |
| Available Balance | Balance minus holds/liens ≥ withdrawal amount | INSUFFICIENT_AVAILABLE_BALANCE |
| Overdraft Check | If overdraft enabled, respect overdraft limit and expiry | OVERDRAFT_LIMIT_EXCEEDED |
The system supports temporary overdrafts with:
- Overdraft Limit: Maximum negative balance allowed
- Expiry Date: Overdraft facility expires after this date
- Calculation: Available Balance = Account Balance + Active Overdraft Limit
3. Amount Validations
| Validation | Description | Error Code |
|---|---|---|
| Positive Amount | Amount must be > 0 | INVALID_AMOUNT |
| Withdrawal Limit | Amount ≤ account tier withdrawal transaction limit | WITHDRAWAL_LIMIT_EXCEEDED |
| Daily Limit | Amount + today's withdrawals ≤ daily limit | DAILY_LIMIT_EXCEEDED |
| Precision Check | Amount must have valid decimal places | INVALID_PRECISION |
4. 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 Sufficient Cash | Till balance ≥ withdrawal amount | TILL_INSUFFICIENT_CASH |
| Minimum Till Balance | Till balance after withdrawal ≥ minimum required | TILL_MINIMUM_BREACH |
| Branch Match | Account and till must be in same branch | BRANCH_MISMATCH |
5. 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 withdrawal operations | OPERATION_NOT_ALLOWED |
| Teller Channel Type | Channel must be teller-type channel | INVALID_CHANNEL_TYPE |
State Transitions
GL Postings
Teller Withdrawal Entry
| Account | Dr/Cr | Amount | Description |
|---|---|---|---|
| Customer Deposit Account | Dr | Withdrawal Amount | Customer account debited |
| Till GL Account | Cr | Withdrawal Amount | Cash removed from till |
Example
Customer withdraws $2,000 cash from Savings Account (101-001). Till GL is 1010-TILL-001:
Dr 101-001 (Customer Savings) $2,000.00
Cr 1010-TILL-001 (Till Cash) $2,000.00
Narration: Withdrawal of $2,000 from account 101-001 via TELLER
Always remember: Teller withdrawals DECREASE the till balance. The physical cash paid to the customer is removed from the till drawer.
Response Structure
Success Response
{
"isSuccessful": true,
"message": "Withdrawal processed successfully",
"data": {
"transactionId": "TXN-20250119-002345",
"accountNumber": "101-001",
"accountBalance": 8000.00,
"withdrawalAmount": 2000.00,
"tillBalance": 48000.00,
"transactionDate": "2025-01-19T14:15:00Z",
"reference": "WDL-002345",
"narration": "Withdrawal of $2,000 from account 101-001 via TELLER"
}
}
Error Response
{
"isSuccessful": false,
"message": "Insufficient balance",
"errorCode": "INSUFFICIENT_FUNDS",
"statusCode": "51",
"availableBalance": 1500.00,
"requestedAmount": 2000.00,
"minimumBalance": 100.00
}
Common Use Cases
1. Regular Cash Withdrawal
Scenario: Customer needs cash for daily expenses
Flow:
- Customer provides withdrawal slip with account number and amount
- Teller verifies customer identity (ID, signature, biometrics)
- Teller enters withdrawal details into system
- System validates account balance and till cash availability
- Withdrawal processes immediately
- Teller counts cash in front of customer
- Customer receives cash and receipt with remaining balance
2. Large Amount Withdrawal
Scenario: Customer needs $10,000 for business payment
Flow:
- Customer preferably notifies branch in advance
- Teller checks if till has sufficient cash
- If till is low, request cash from vault first
- Verify customer identity with enhanced checks
- Process withdrawal transaction
- Count large amount using cash counting machine
- Provide customer with receipt and currency authenticity report
3. Emergency Withdrawal from Fixed Deposit
Scenario: Customer needs to break fixed deposit early
Flow:
- Customer requests early withdrawal from fixed deposit
- System calculates penalty (if applicable)
- Process withdrawal from fixed deposit account
- Deduct penalty amount
- Pay out net amount to customer
- Close or update fixed deposit account
4. Overdraft Withdrawal
Scenario: Customer has temporary overdraft facility
Flow:
- Customer requests withdrawal exceeding available balance
- System checks if overdraft facility exists and is not expired
- Calculates: Available = Balance + Overdraft Limit
- If withdrawal ≤ available, process transaction
- Account goes into negative balance (overdraft)
- Customer receives cash and overdraft usage notification
Integration Points
Related Operations
- Teller Deposit - Opposite operation: accept cash from customer
- Teller Transfer - Transfer funds before withdrawal
- Remove Cash from Till - Internal till cash removal (NOT customer withdrawal)
- Account Search - Look up customer account for withdrawal
- Withdrawal Transactions - Channel withdrawals (ATM, mobile)
- Vault Withdrawal - Replenish till from vault
Account Types Supported
| Account Type | Withdrawal Allowed | Special Rules |
|---|---|---|
| Savings Account | ✅ Yes | Check withdrawal limits and frequency |
| Current Account | ✅ Yes | Usually no limits or restrictions |
| Fixed Deposit | ⚠️ Conditional | Early withdrawal may incur penalty |
| Savings Plan | ⚠️ Conditional | May require plan closure first |
| Overdraft Account | ✅ Yes | Can withdraw beyond balance up to overdraft limit |
Business Rules
Withdrawal Limits
| Limit Type | Configuration | Enforcement |
|---|---|---|
| Minimum Withdrawal | DepositProductConfig.MinimumWithdrawal | Per transaction |
| Maximum Transaction | AccountTier.WithdrawalTransactionLimit | Per transaction |
| Daily Withdrawal Limit | AccountTier.DailyWithdrawalLimit | Per day aggregate |
| Monthly Frequency | AccountTier.MaxWithdrawalsPerMonth | Monthly count |
Some account types (especially savings accounts) may have frequency limits:
- Daily Frequency: Maximum withdrawals per day (e.g., 3)
- Monthly Frequency: Maximum withdrawals per month (e.g., 6)
- Penalty for Excess: Fee charged for withdrawals beyond limit
Minimum Balance Calculation
The system enforces minimum balance during withdrawals:
Available for Withdrawal = Account Balance - Minimum Balance - Active Holds
With Overdraft:
Available for Withdrawal = Account Balance - Minimum Balance - Active Holds + Overdraft Limit
Processing Times
| Scenario | Processing Time |
|---|---|
| Standard Withdrawal | Instant (real-time) |
| Large Amount (> threshold) | Requires supervisor approval |
| Frozen Account | Rejected immediately |
| Dormant Account | Requires reactivation first |
| System Downtime | Queued for processing |
Narration Templates
Withdrawal narration is generated using configurable templates:
Customer Narration:
`Withdrawal of ${context.amount} from ${context.accountNumber} via ${context.channelName}`
Channel Narration:
`Withdrawal of ${context.amount} from ${context.accountNumber} via ${context.channelName}`
Transaction ID:
`${context.transactionKey}`
These templates can be customized in the DepositProductConfig.NarrationTemplates.
Audit Trail
All teller withdrawals 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, identity verification method
- Cash Details: Currency, denomination breakdown (if captured)
- Timestamps: Request time, processing time, cash disbursement time
- System Information: IP address, terminal ID, session ID
- Before/After State: Account balance before/after, till balance before/after
- Approval Information: Supervisor approval (if required)
- Narration: Customer and internal narrations
Error Handling
Common Errors
| Error | Cause | Resolution |
|---|---|---|
TILL_NOT_OPEN | Teller's till is closed | Open Till first |
INSUFFICIENT_FUNDS | Account balance too low | Verify balance with customer, suggest transfer from another account |
TILL_INSUFFICIENT_CASH | Till doesn't have enough cash | Request cash from vault |
ACCOUNT_IS_RESTRICTED | Account locked, frozen, or dormant | Check account status, contact supervisor or branch manager |
WITHDRAWAL_LIMIT_EXCEEDED | Amount exceeds transaction limit | Split into multiple transactions or request limit increase |
DAILY_LIMIT_EXCEEDED | Customer exceeded daily limit | Customer must return next day or request limit increase |
NOT_FOUND | Account doesn't exist | Verify account number with customer |
OVERDRAFT_LIMIT_EXCEEDED | Withdrawal exceeds available + overdraft | Reduce withdrawal amount |
Withdrawal 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 |
| Insufficient Balance | Reject immediately | Customer must reduce amount or deposit first |
| Till Empty | Reject with suggestion | Replenish till from vault or direct customer to another teller |
Security Considerations
Customer Identity Verification
Teller withdrawals ALWAYS require customer identity verification:
- Low Amount (< $1,000): Basic ID + Signature verification
- Medium Amount ($1,000 - $5,000): ID + Signature + Account verification questions
- Large Amount (> $5,000): ID + Signature + Biometric + Manager approval
- Very Large (> $10,000): Enhanced due diligence + Source of funds inquiry
Authorization Requirements
- Teller must be authenticated and authorized
- Till must be open and assigned to teller
- Customer must present valid identification
- Signature must match bank records
- Large withdrawals require supervisor approval (configurable threshold)
- Manager override for withdrawals exceeding limits
Fraud Prevention
- System checks for unusual withdrawal patterns
- Velocity limits prevent rapid successive withdrawals
- Alerts on withdrawals exceeding customer's typical behavior
- Cross-reference with customer profile and transaction history
- Flag dormant accounts suddenly activated for large withdrawals
- Real-time monitoring for suspicious activity
- Integration with fraud detection systems
Compliance Features
- Automatic reporting for large cash withdrawals (regulatory threshold)
- Enhanced due diligence for high-risk customers
- Purpose of withdrawal documentation for large amounts
- Anti-money laundering (AML) screening
- Politically Exposed Person (PEP) checks
- Currency Transaction Report (CTR) generation
Performance Considerations
Till Cash Management
Monitor till balance throughout the day. When till is running low:
- Request Cash from Vault - Replenish till from branch vault
- Transfer Between Tills - Balance cash across tills
- Proactive Monitoring: Set alerts when till balance drops below threshold
- Peak Hour Planning: Ensure adequate cash during busy periods
Cash Counting and Disbursement
| Amount Range | Recommended Practice |
|---|---|
| < $1,000 | Manual count once by teller |
| $1,000 - $5,000 | Double-count by teller in front of customer |
| $5,000 - $10,000 | Machine count + manual verification |
| > $10,000 | Machine count + supervisor verification + customer confirmation |
Cash Denomination Management
- Maintain adequate mix of denominations
- Avoid paying out only large bills
- Request smaller denominations from vault when needed
- Track denomination distribution in till
Related Documentation
- Teller Deposit - Process customer deposits
- Teller Transfer - Transfer between customer accounts
- Account Search - Look up accounts for withdrawals
- Till Management - Till operations overview
- Withdrawal Transactions - Channel withdrawals
- Transaction Reversal - Reverse incorrect withdrawals
- Vault Management - Vault cash operations
Best Practices
- Always verify customer identity before processing withdrawal
- Check till cash availability before committing transaction
- Count cash twice in front of customer for amounts > $500
- Provide immediate receipt upon cash disbursement
- Monitor till balance and request replenishment proactively
- Verify large withdrawal purpose for compliance
- Secure cash handling: Keep till drawer locked when not in use
- Report suspicious activity immediately to supervisor
- Document approval for limit override or large withdrawals
- Balance customer service with security: Be friendly but vigilant