Transfer Between Teller Till
Overview
Transfers funds between two teller tills within the same branch or across branches.
Command
TransferBetweenTellerTillCommand
Endpoint
POST /api/bpm/cmd
Request Headers
Authorization: Bearer {access_token}
Content-Type: application/json
X-Tenant-Id: {tenant_id}
Request Body
{
"cmd": "TransferBetweenTellerTillCommand",
"data": {
"sourceTillId": "TILL-T001",
"destinationTillId": "TILL-T002",
"amount": 75000.00,
"narration": "Balancing tills - excess transfer"
}
}
Request Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
| cmd | string | Yes | Must be "TransferBetweenTellerTillCommand" |
| data | object | Yes | Transfer data |
| ↳ sourceTillId | string | Yes | Unique identifier of the source till |
| ↳ destinationTillId | string | Yes | Unique identifier of the destination till |
| ↳ amount | decimal | Yes | Transfer amount (must be positive) |
| ↳ narration | string | Yes | Transaction description |
Response
Success Response (200 OK)
{
"success": true,
"message": "Transfer completed successfully",
"data": {
"transactionId": "string",
"sourceTillId": "string",
"destinationTillId": "string",
"amount": "decimal",
"sourceNewBalance": "decimal",
"destinationNewBalance": "decimal",
"transactionDate": "datetime"
}
}
Error Responses
400 Bad Request
{
"success": false,
"message": "Validation failed",
"errors": ["Source till ID is required", "Amount must be positive"]
}
404 Not Found
{
"success": false,
"message": "Source or destination till not found"
}
409 Conflict
{
"success": false,
"message": "Insufficient balance in source till"
}
Business Rules
- Both tills must be in "Open" status
- Source till must have sufficient balance
- Currency must match between tills
- Cannot transfer to same till
- Creates audit trail entries for both tills
- May require supervisor approval for large amounts
Code Example
async function transferBetweenTills(sourceTillId, destinationTillId, amount, narration) {
const response = await fetch('/api/bpm/cmd', {
method: 'POST',
headers: {
'Authorization': `Bearer ${accessToken}`,
'Content-Type': 'application/json',
'X-Tenant-Id': tenantId
},
body: JSON.stringify({
commandType: 'TransferBetweenTellerTillCommand',
data: {
sourceTillId: sourceTillId,
destinationTillId: destinationTillId,
amount: amount,
narration: narration
}
})
});
return await response.json();
}
Related Commands
- Add Cash To Teller Till - Add cash to till
- Remove Cash From Teller Till - Remove cash from till
- Get Teller Till List - View all tills
Notes
- Verify both tills are accessible before transfer
- Use for cash balancing between tellers
- Document physical cash movement separately
- Both tellers should acknowledge the transfer