NSDL Account Opening Callback
POSTAfter an NSDL account opening request is processed, IMB Payment sends an automated HTTP POST callback to your registered webhook URL with the final status of the request.
⚙️ Setup Instructions
Register your webhook URL in your IMB Payment merchant dashboard under Settings → Webhook Configuration.
Each merchant receives a unique webhook_secret key used to verify the authenticity of incoming webhook payloads.
Request Headers
| Header | Description |
|---|---|
| Content-Type | Must be application/json |
| X-Webhook-Source | Value is IMBPayment |
| X-Webhook-Signature | HMAC SHA-256 signature of the raw request body |
| X-Webhook-Timestamp | Unix timestamp of when the webhook was generated |
Signature Verification
Always verify the X-Webhook-Signature header before processing the webhook payload. IMB Payment signs every webhook request using HMAC SHA-256 with your secret key.
const crypto = require('crypto');
function verifyWebhook(payload, signatureHeader, secret) {
const hmac = crypto.createHmac('sha256', secret);
const digest = hmac.update(payload).digest('hex');
return crypto.timingSafeEqual(Buffer.from(signatureHeader), Buffer.from(digest));
}
Supported Events
| Event | Description |
|---|---|
| NSDL_ACCOUNT_CREATED | NSDL account successfully created for customer |
| NSDL_ACCOUNT_REFUND | Account creation failed, amount refunded to wallet |
Event: NSDL_ACCOUNT_CREATED Payload Example
event: NSDL_ACCOUNT_CREATED
{
"event": "NSDL_ACCOUNT_CREATED",
"timestamp": "2025-06-28T10:30:00+05:30",
"request_id": "REQ7834HDJK23",
"data": {
"request_id": "REQ7834HDJK23",
"pancard": "ABCDE1234F",
"customer_name": "Rajesh Kumar",
"account_number": "9876543210123456",
"ifsc_code": "NSDL0000001",
"cif_number": "CIF123456789",
"account_type": "Savings",
"bank_name": "NSDL Payments Bank",
"branch": "Mumbai Main Branch",
"profile_pic": "https://example.com/profile/abc123.jpg",
"customer_care": "1800-123-4567",
"account_status": "success",
"is_refunded": false,
"is_completed": true
}
}
Payload Field Explanation
| Field | Type | Description |
|---|---|---|
| request_id | String | Unique account opening request identifier |
| pancard | String | Customer PAN card number |
| customer_name | String | Customer full name as verified by bank |
| account_number | String | Generated NSDL Payment Bank account number |
| ifsc_code | String | Bank IFSC code (e.g. NSDL0000001) |
| cif_number | String | Customer Identification File (CIF) number |
| account_type | String | Savings or Current account type |
| bank_name | String | Issuing Bank name (NSDL Payments Bank) |
| account_status | String | Terminal status: success or failed |