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