Skip to main content

Close Teller Till

Overview

Closes a teller till at the end of a shift, reconciling cash and transferring remaining balance to the vault.

Command

CloseTellerTillCommand

Endpoint

POST /api/bpm/cmd

Request Headers

Authorization: Bearer {access_token}
Content-Type: application/json
X-Tenant-Id: {tenant_id}

Request Body

{
"cmd": "CloseTellerTillCommand",
"data": {
"tillId": "TILL-T001",
"closingBalance": 487500.00,
"vaultId": "VLT-001",
"denominationDetails": {
"1000": 200,
"500": 150,
"200": 125,
"100": 100
},
"notes": "End of day reconciliation completed"
}
}

Request Parameters

ParameterTypeRequiredDescription
cmdstringYesMust be "CloseTellerTillCommand"
dataobjectYesTill closure data
↳ tillIdstringYesUnique identifier of the till to close
↳ closingBalancedecimalYesPhysical cash count at till closure
↳ vaultIdstringNoVault to receive remaining till balance
↳ denominationDetailsobjectNoBreakdown of cash by denomination
↳ notesstringNoAdditional notes about the closure

Response

Success Response (200 OK)

{
"success": true,
"message": "Teller till closed successfully",
"data": {
"tillId": "string",
"openingBalance": "decimal",
"closingBalance": "decimal",
"totalTransactions": "integer",
"variance": "decimal",
"status": "Closed",
"closedDate": "datetime"
}
}

Error Responses

400 Bad Request

{
"success": false,
"message": "Validation failed",
"errors": ["Till ID is required", "Closing balance is required"]
}

409 Conflict

{
"success": false,
"message": "Till has pending transactions"
}

Business Rules

  1. All pending transactions must be completed
  2. Closing balance should match system balance
  3. Large variances may require supervisor approval
  4. Remaining balance transferred to vault
  5. Creates comprehensive audit trail

Code Example

async function closeTellerTill(tillId, closingBalance) {
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: 'CloseTellerTillCommand',
data: {
tillId: tillId,
closingBalance: closingBalance,
notes: 'End of shift closure'
}
})
});

return await response.json();
}

Notes

  • Perform physical cash count before closing
  • Document any variances for investigation
  • Ensure all transactions are posted before closing
  • Keep detailed records for audit purposes