Skip to main content

Deposit Transactions API - Developer Documentation

Introduction

The Deposit Transactions API provides comprehensive functionality for managing deposit account transactions including deposits, withdrawals, transfers, and account control operations.

Available Commands

Transaction Operations

CommandDescriptionType
InitiateDepositProcess a deposit transaction to a deposit accountCommand
InitiateWithdrawalProcess a withdrawal transaction from a deposit accountCommand
InitiateTransferTransfer funds between deposit accountsCommand

Account Control Operations

CommandDescriptionType
LockDepositAccountLock/freeze an entire deposit accountCommand
UnLockDepositAccountUnlock/unfreeze a deposit accountCommand
ActivatePNDOnAccountActivate Post-No-Debit (PND) restriction on accountCommand
ReleasePNDFromDepositAccountRelease Post-No-Debit restriction from accountCommand

Amount Lock Operations

CommandDescriptionType
LockDepositAmountPlace a hold/lock on a specific amount in accountCommand
DeleteDepositLockAmountRelease/remove an amount lockCommand
SeizeDepositLockAmountConvert locked amount to actual debitCommand
GetLockDepositAmountQuery locks on a specific accountQuery
GetAllCustomerLockDepositAmountQuery locks across all customer accountsQuery

Common Request Pattern

All deposit transaction commands follow a consistent request pattern:

{
"commandName": "CommandNameHere",
"data": {
"field1": "value1",
"field2": "value2"
}
}

Common Response Pattern

{
"isSuccessful": true,
"statusCode": "00",
"message": "Operation completed successfully",
"data": {},
"pages": 0,
"hasNext": false,
"hasPrevious": false,
"count": 0,
"size": 0
}

Authentication

All API requests require Bearer token authentication:

Authorization: Bearer {your_access_token}
Content-Type: application/json

Key Concepts

Account States

  • Active: Normal operating state
  • Locked: Account frozen, no transactions allowed
  • PND (Post-No-Debit): Only credits allowed, no debits
  • Dormant: Inactive account requiring reactivation

Balance Types

  • Account Balance: Total funds in account
  • Blocked Amount: Sum of all locked amounts
  • Available Balance: Account Balance - Blocked Amount

Transaction Types

  • Deposit: Credit to account
  • Withdrawal: Debit from account
  • Transfer: Move funds between accounts
  • AmountLock: Hold funds without debiting

Response Codes

CodeDescriptionAction
00SuccessOperation completed successfully
CBS_400Bad RequestReview request parameters
CBS_402Insufficient BalanceVerify account balance
CBS_404Not FoundVerify account/reference exists
CBS_409Conflict/DuplicateUse unique reference

Error Handling

Standard Error Response

{
"isSuccessful": false,
"statusCode": "CBS_ERROR_CODE",
"message": "Detailed error message",
"data": null
}

Best Practices

  1. Always check isSuccessful before processing response data
  2. Log statusCode for debugging and monitoring
  3. Display message to end users when appropriate
  4. Implement retry logic for transient errors
  5. Validate inputs before sending requests

Quick Start Example

C# Example

public async Task<CommandExecutionResponse> ProcessDeposit(
string accountNumber,
decimal amount)
{
var request = new
{
commandName = "InitiateDepositCommand",
data = new
{
accountEncodedKey = accountNumber,
amount = amount,
transactionChannelKey = "TELLER",
notes = "Cash deposit"
}
};

var response = await _httpClient.PostAsJsonAsync(
"/api/bpm/cmd",
request);

return await response.Content.ReadAsAsync<CommandExecutionResponse>();
}

JavaScript Example

async function processDeposit(accountNumber, amount) {
const response = await fetch('/api/bpm/cmd', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'Authorization': `Bearer ${accessToken}`
},
body: JSON.stringify({
commandName: 'InitiateDepositCommand',
data: {
accountEncodedKey: accountNumber,
amount: amount,
transactionChannelKey: 'TELLER',
notes: 'Cash deposit'
}
})
});

return await response.json();
}

Support

For technical assistance:


Last Updated: December 17, 2025

API Version: 1.0