NSDL Account Opening Callback

POST

After 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