Skip to main content

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​

ParameterTypeRequiredDescription
cmdstringYesMust be "TransferBetweenTellerTillCommand"
dataobjectYesTransfer data
↳ sourceTillIdstringYesUnique identifier of the source till
↳ destinationTillIdstringYesUnique identifier of the destination till
↳ amountdecimalYesTransfer amount (must be positive)
↳ narrationstringYesTransaction 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​

  1. Both tills must be in "Open" status
  2. Source till must have sufficient balance
  3. Currency must match between tills
  4. Cannot transfer to same till
  5. Creates audit trail entries for both tills
  6. 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();
}

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

Product Documentation​

For business process and technical flow details, see: