Skip to main content

Cancel Cheque

Cancel a pending cheque through user-initiated stop payment or internal cancellation.

Command: InitiateCancelChequeCommand

Overview

The Cancel Cheque operation stops a pending cheque transaction before it is cleared. This is typically used for stop payment requests from customers or internal corrections. For deposits, this reduces uncleared amounts. For withdrawals, this restores the previously deducted balance.

Cancel vs. Bounce
  • Cancel: User-initiated, proactive stop payment (customer request, error correction)
  • Bounce: Bank-initiated, reactive return (insufficient funds, account closed)

Request

{
"clearingEncodedKey": "8a8087e27f2f63a2017f3b0c0c7b0005",
"notes": "Customer stop payment - cheque lost"
}

Parameters

ParameterTypeRequiredDescription
clearingEncodedKeystringYesCheque clearing transaction ID
notesstringNoCancellation reason and notes

Business Logic

1. Validation

  • Cheque clearing transaction must exist
  • Must be in PENDING state
  • Cannot cancel already CLEARED/BOUNCED/CANCELLED cheques

2. State Changes

  • State: PENDING → CANCELLED
  • Full reversal of all impacts:
    • Deposits: Reduce UnclearedChequeAmount
    • Withdrawals: Restore balance
  • Records cancellation reason and authorization
  • Customer notified of cancellation

Common Cancellation Reasons

Reason CodeDescriptionAuthorization Required
CUSTOMER_REQUESTCustomer stop paymentCustomer signature/ID
DUPLICATE_ENTRYDuplicate transactionBranch manager approval
LOST_CHEQUELost or stolen chequePolice report + customer ID
WRONG_AMOUNTIncorrect amount enteredBranch manager approval
FRAUD_PREVENTIONSuspected fraud detectedSecurity officer approval
ACCOUNT_ERRORWrong account selectedOperations manager approval
SYSTEM_ERRORSystem error/glitchIT manager verification
COMPLIANCE_HOLDCompliance hold/investigationCompliance officer authorization

Response (200 OK)

{
"encodedKey": "8a8087e27f2f63a2017f3b0c0c7b0005",
"chequeNumber": "CHQ-123456",
"accountNumber": "1001234567",
"amount": 75000.00,
"transactionType": "WITHDRAWAL",
"state": "CANCELLED",
"previousState": "PENDING",
"cancelledDate": "2025-12-31T14:00:00Z",
"cancellationNotes": "Customer stop payment - cheque lost",
"restoredBalance": 1000000.00
}

Example: Stop Payment Request

// Customer requests stop payment on a cheque
const response = await fetch('https://api.banklingo.com/api/admin/teller/cheques/cancel', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'Authorization': `Bearer ${token}`
},
body: JSON.stringify({
clearingEncodedKey: '8a8087e27f2f63a2017f3b0c0c7b0005',
notes: 'Customer stop payment request - cheque book reported lost. Police report ref: NG-POLICE-2025-001234'
})
});

if (response.ok) {
const result = await response.json();
console.log('Cheque cancelled successfully');
console.log(`Cheque number: ${result.chequeNumber}`);
console.log(`Amount: ₦${result.amount.toLocaleString()}`);

if (result.transactionType === 'WITHDRAWAL') {
console.log(`Balance restored: ₦${result.restoredBalance.toLocaleString()}`);
}

// Apply stop payment fee
await applyStopPaymentFee(result.accountNumber, 1000); // ₦1,000 stop payment fee

// Notify customer
await notifyCustomer(result.accountNumber, {
type: 'CHEQUE_CANCELLED',
chequeNumber: result.chequeNumber,
reason: result.cancellationNotes,
feeApplied: 1000
});
}

Example: Cancel Deposit (Error Correction)

// Cancel deposit due to duplicate entry
const response = await fetch('https://api.banklingo.com/api/admin/teller/cheques/cancel', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'Authorization': `Bearer ${token}`
},
body: JSON.stringify({
clearingEncodedKey: '9b9087e27f2f63a2017f3b0c0c7b0006',
notes: 'Duplicate entry - cheque already processed under ref: CHQ-DEP-2025-0001'
})
});

if (response.ok) {
const result = await response.json();
console.log('Duplicate deposit cancelled');
console.log(`Uncleared amount reduced by: ₦${result.amount.toLocaleString()}`);
}

Error Responses

400 Bad Request - Invalid State

{
"code": "INVALID_CHEQUE_STATE",
"message": "Cannot cancel cheque in state: CLEARED",
"field": "clearingEncodedKey"
}

404 Not Found

{
"code": "CHEQUE_CLEARING_NOT_FOUND",
"message": "Cheque clearing transaction not found",
"field": "clearingEncodedKey"
}

409 Conflict - Already Cancelled

{
"code": "CHEQUE_ALREADY_CANCELLED",
"message": "Cheque has already been cancelled",
"field": "clearingEncodedKey"
}

Best Practices

Stop Payment Process

  1. Verify customer identity thoroughly before processing stop payment
  2. Collect supporting documentation:
    • Customer signature on stop payment form
    • ID verification
    • Police report (for lost/stolen cheques)
  3. Apply stop payment fee as per bank policy (typically ₦1,000-₦2,000)
  4. Record authorization from appropriate officer
  5. Issue stop payment reference to customer

Authorization Requirements

Different cancellation reasons require different authorization levels:

Cancellation ReasonAuthorizerDocumentation Required
Customer stop paymentCustomer signatureStop payment form + ID
Lost/stolen chequeCustomer + ManagerPolice report + affidavit
Duplicate entryBranch ManagerTransaction audit report
Wrong amountOperations ManagerError correction form
Fraud preventionSecurity OfficerFraud alert report
System errorIT ManagerSystem error log

Timing Considerations

  1. Process immediately for customer stop payments (don't wait for clearing)
  2. Cancel before clearing completes (usually before T+2)
  3. Cannot cancel after cheque has been cleared or bounced
  4. Window closes once clearing house confirms transaction

Customer Communication

  1. Confirm cancellation to customer immediately
  2. Provide cancellation reference for records
  3. Explain fee charges clearly
  4. Inform of timeline (cancellation is immediate)
  5. Advise on next steps (e.g., reissue cheque, use alternative payment method)

Fee Management

Standard fees for cancellation/stop payment:

Cancellation TypeTypical FeeWaiver Conditions
Customer stop payment₦1,000 - ₦2,000Lost/stolen with police report
Duplicate entry (bank error)WaivedBank error - no customer charge
Fraud preventionWaivedFraud detected by bank
Account error (bank error)WaivedBank error - no customer charge
System errorWaivedSystem error - no customer charge

Audit Trail

Maintain comprehensive audit trail for all cancellations:

  1. Record who initiated cancellation (customer, staff, system)
  2. Record who authorized cancellation
  3. Record why (cancellation reason code)
  4. Record when (timestamp)
  5. Attach documentation (scanned forms, police reports)
  6. Track fees applied and collected
  7. Retain records for minimum 7 years

Compliance

  1. Follow CBN guidelines on stop payment procedures
  2. Maintain stop payment register for regulatory reporting
  3. Report suspicious patterns (e.g., excessive stop payments)
  4. Verify blacklisted cheques before cancelling
  5. Coordinate with fraud team for fraud-related cancellations