The Debit Transaction Webhook is triggered when a debit instruction (transaction) under an eNACH presentation is created, processed, or fails. This allows merchants to track transaction status in real-time and reconcile debit attempts linked to a presentation ID and mandate.
Overview
This webhook is triggered to notify merchants about lifecycle events of a debit transaction under an eNACH presentation. It includes all critical stages — from transaction creation to success/failure.
This helps the merchant reconcile payments, track processing, and take action (e.g., retry, notify customer) based on real-time transaction status.
Trigger Points
Webhook is triggered when any of the following events occur for a debit transaction:
| Status | Description |
|---|---|
new | Transaction is created but not yet submitted to the bank |
submitted_to_bank | Transaction submitted to the sponsor/destination bank |
payment_success | Debit successfully processed |
payment_failed | Debit attempt failed; reason is sent in remarks field |
Webhook Request Format
- Method:
POST - Content-Type:
application/json - Authentication: Optional HMAC-SHA256 signature in header
🔹 Webhook Payload Fields
| Field | Type | Description |
|---|---|---|
transactionId | string | Unique Castler transaction ID |
presentationId | string | Debit presentation ID this transaction belongs to |
customerName | string | Name of the customer |
debitAmount | number | Amount attempted to be debited |
createdAt | datetime | ISO timestamp of when the transaction was created |
statementDate | datetime | Date the transaction will reflect in bank statement |
nextPaymentDate | datetime | Next scheduled payment date (for recurring mandates) |
transactionReference | string | Unique reference sent to NPCI/bank |
status | string | Transaction status: new, submitted_to_bank, payment_success, payment_failed |
remarks | string | Present only if status is payment_failed. Reason for failure. |
paymentCount | integer | Total number of payments scheduled |
paidCount | integer | Number of payments already successfully completed |
🔹 Sample Webhook Payloads
🟡 1. Transaction Created (new)
new){
"transactionId": "NPT250903111001079LB55PUGBWWZ2TH",
"presentationId": "NSP2509031106081538R9E4R82462BWW",
"customerName": "Abhinav Singh",
"debitAmount": 50,
"createdAt": "2025-09-03T11:11:37.049813267",
"statementDate": "2025-09-04T00:00",
"nextPaymentDate": "2025-09-04T00:00",
"transactionReference": "LB55PUGBWWZ2TH",
"status": "new",
"paymentCount": 2,
"paidCount": 1
}📤 2. Submitted to Bank (submitted_to_bank)
submitted_to_bank){
"transactionId": "NPT250903111001079LB55PUGBWWZ2TH",
"presentationId": "NSP2509031106081538R9E4R82462BWW",
"customerName": "Abhinav Singh",
"debitAmount": 50,
"createdAt": "2025-09-03T11:11:37.049813267",
"statementDate": "2025-09-04T00:00",
"nextPaymentDate": "2025-09-04T00:00",
"transactionReference": "LB55PUGBWWZ2TH",
"status": "submitted_to_bank",
"paymentCount": 2,
"paidCount": 1
}✅ 3. Payment Success (payment_success)
payment_success){
"transactionId": "NPT250903111001079LB55PUGBWWZ2TH",
"presentationId": "NSP2509031106081538R9E4R82462BWW",
"customerName": "Abhinav Singh",
"debitAmount": 50,
"createdAt": "2025-09-03T11:11:37.049813267",
"statementDate": "2025-09-04T00:00",
"nextPaymentDate": "2025-09-04T00:00",
"transactionReference": "LB55PUGBWWZ2TH",
"status": "payment_success",
"paymentCount": 2,
"paidCount": 1
}❌ 4. Payment Failed (payment_failed)
payment_failed){
"transactionId": "NPT250903111001412E5996AIZKKPM6N",
"presentationId": "NSP2509031106081538R9E4R82462BWW",
"customerName": "Abhinav Singh",
"debitAmount": 50,
"createdAt": "2025-09-03T11:11:36.783545",
"statementDate": "2025-09-04T00:00",
"transactionReference": "E5996AIZKKPM6N",
"status": "payment_failed",
"remarks": "Transaction not allowed, Debit is already created for this UMRN",
"paymentCount": 2,
"paidCount": 2
}