Skip to main content

Initiate Cheque Deposit (Deposit Account)

Post a cheque deposit transaction to a deposit account in PENDING state.

Command: InitiateChequeDepositCommand

Overview

The Cheque Deposit command initiates a cheque deposit to a deposit account (savings, current, etc.). The transaction enters a PENDING state and increases the UnclearedChequeAmount, but does not credit the actual balance until the cheque is cleared using the InitiateClearChequeCommand.

Same Command, Different Behavior

This same command (InitiateChequeDepositCommand) can also be used to repay loan accounts. See Cheque Deposit to Loan Account for loan repayment documentation.

Key Characteristics

  • Balance: Unchanged until clearing
  • UnclearedChequeAmount: Increases immediately by deposit amount
  • State: Creates transaction in PENDING state
  • Clearing: Requires InitiateClearChequeCommand to credit balance
  • Timeline: Typical T+2 clearing period (configurable)

Request

Endpoint

POST /api/bpm/cmd

Request Body

{
"commandName": "InitiateChequeDepositCommand",
"data": {
"accountEncodedKey": "1001234567",
"amount": 50000.00,
"chequeNo": "CH123456",
"tillId": "TILL001",
"referenceId": "REF2025123001",
"requireApproval": false,
"remarks": "Customer cheque deposit"
}
}

Parameters

ParameterTypeRequiredDescription
accountEncodedKeystringYesDeposit account number or encoded key
amountdecimalYesDeposit amount (must be > 0)
chequeNostringYesUnique cheque number
tillIdstringNoTill ID or encoded key for teller transactions
referenceIdstringNoExternal reference ID for tracking
requireApprovalbooleanNoWhether transaction requires approval before entering clearing cycle. Default: false
remarksstringNoAdditional transaction notes or comments

Business Logic

Validation Rules

  1. Amount Validation:

    • Must be greater than 0
    • Must be within system-defined limits (if configured)
  2. Account Validation:

    • Account must exist in the system
    • Account must not be frozen or locked
    • Account must not be in a restricted state
  3. Till Validation (if tillId provided):

    • Till must be in OPENED state
    • Till currency must match account currency
    • Teller must have permission to use the till
  4. Cheque Validation:

    • Cheque number should be unique (duplicate check recommended)
    • Cheque should not be in system as bounced/cancelled previously

State Changes

When command executes successfully:

  1. Creates ChequeClearingTransaction record:

    • State: PENDING
    • Transaction Type: DEPOSIT
    • Amount: As specified
    • Cheque Number: As specified
  2. Updates Deposit Account:

    • Balance: Unchanged (awaiting clearing)
    • UnclearedChequeAmount: Increased by deposit amount
    • AvailableBalance: Unchanged (based on actual balance)
  3. Records Transaction Impacts:

    • Creates audit trail entries
    • Links to till transaction (if applicable)
    • Generates transaction reference
  4. Approval Handling:

    • If requireApproval: false (default): Transaction enters PENDING clearing immediately
    • If requireApproval: true: Transaction enters APPROVAL_PENDING, awaits approval before entering clearing cycle

Response

Success Response (200 OK)

{
"commandName": "InitiateChequeDepositCommand",
"status": "Success",
"data": {
"chequeClearingId": "550e8400-e29b-41d4-a716-446655440000",
"accountNumber": "1001234567",
"amount": 50000.00,
"chequeNo": "CH123456",
"transactionType": "DEPOSIT",
"state": "PENDING",
"transactionDate": "2025-12-31T10:30:00Z",
"unclearedChequeAmount": 50000.00,
"currentBalance": 1000000.00
}
}

Response Fields

FieldTypeDescription
chequeClearingIdstring (GUID)Unique identifier for the cheque clearing transaction
accountNumberstringAccount number where cheque was deposited
amountdecimalDeposit amount
chequeNostringCheque number
transactionTypestringAlways DEPOSIT for this command
statestringCurrent state: PENDING or APPROVAL_PENDING
transactionDatedatetimeWhen transaction was initiated
unclearedChequeAmountdecimalCurrent uncleared cheque amount on account
currentBalancedecimalCurrent account balance (unchanged by deposit)

Account State Impact

The following diagram illustrates how cheque deposits affect account balances through a two-stage process:

Key Points

  • Stage 1 (Deposit): Transaction created in PENDING state, UnclearedChequeAmount increases, actual balance unchanged
  • Stage 2 (Clearing): Balance credited, UnclearedChequeAmount reduced, funds become available
  • Alternative (Bounce): UnclearedChequeAmount reduced, balance remains unchanged, cheque returned

Code Examples

Basic Deposit

const response = await fetch('https://api.banklingo.com/api/bpm/cmd', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'Authorization': `Bearer ${token}`
},
body: JSON.stringify({
commandName: 'InitiateChequeDepositCommand',
data: {
accountEncodedKey: '1001234567',
amount: 50000.00,
chequeNo: 'CH123456',
tillId: 'TILL001',
remarks: 'Customer cheque deposit'
}
})
});

const result = await response.json();
console.log('Clearing ID:', result.data.chequeClearingId);
console.log('State:', result.data.state); // "PENDING"

Deposit with Approval Required

const response = await fetch('https://api.banklingo.com/api/bpm/cmd', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'Authorization': `Bearer ${token}`
},
body: JSON.stringify({
commandName: 'InitiateChequeDepositCommand',
data: {
accountEncodedKey: '1001234567',
amount: 750000.00, // High-value deposit
chequeNo: 'CH789012',
requireApproval: true, // Requires approval before entering clearing
remarks: 'High-value third-party cheque'
}
})
});

const result = await response.json();
console.log('State:', result.data.state); // "APPROVAL_PENDING"
// Transaction will enter PENDING clearing only after approval

High-Value Deposit with External Reference

const response = await fetch('https://api.banklingo.com/api/bpm/cmd', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'Authorization': `Bearer ${token}`
},
body: JSON.stringify({
commandName: 'InitiateChequeDepositCommand',
data: {
accountEncodedKey: '1001234567',
amount: 2500000.00,
chequeNo: 'CH345678',
referenceId: 'NIBSS202512310001',
tillId: 'TILL001',
requireApproval: true,
remarks: 'Inter-bank clearing - NIBSS reference'
}
})
});

Error Responses

Common Errors

Status CodeErrorDescriptionResolution
400INVALID_AMOUNTAmount is zero or negativeProvide amount > 0
404ACCOUNT_NOT_FOUNDAccount doesn't existVerify account number
403ACCOUNT_FROZENAccount is frozen/lockedContact account services
403TILL_NOT_OPENEDTill is not in OPENED stateOpen till before processing
400CURRENCY_MISMATCHTill currency doesn't match account currencyUse correct till for currency
409DUPLICATE_CHEQUECheque number already existsUse unique cheque number

Error Response Format

{
"commandName": "InitiateChequeDepositCommand",
"status": "Error",
"message": "Transaction not permitted. The customer account - 1001234567 is on restriction.",
"statusCode": "06"
}

Approval Workflow Integration

Without Approval (Default Behavior)

With Approval Required

Next Steps

After initiating a cheque deposit:

  1. Track Transaction: Use the returned chequeClearingId to monitor status
  2. Clear Cheque: When ready, use InitiateClearChequeCommand to credit the balance
  3. Bounce If Needed: If cheque is dishonored, use InitiateBounceChequeCommand
  4. Monitor Uncleared Amount: Track total uncleared amounts for liquidity management

Best Practices

Security

  • Validate cheque numbers against duplicates before initiating
  • Implement approval workflow for high-value deposits (> ₦500,000)
  • Verify third-party cheques with additional scrutiny
  • Log all cheque transactions for audit trail

Performance

  • Batch clear cheques during off-peak hours
  • Monitor clearing timelines and alert on delays
  • Index cheque numbers for fast duplicate detection
  • Cache account information to reduce database hits

Customer Experience

  • Provide immediate confirmation with clearing timeline
  • Send notifications when cheques are cleared or bounced
  • Display uncleared amounts prominently in account views
  • Offer real-time clearing status updates

Product Documentation

For business process and technical flow details, see: