Bank Account
● LiveVerify a Bank Account in real time.
/v1/verify/bank-accountVerify Bank Account
Validates and verifies a Bank Account. Requires the `verification.bank-account.read` scope on the API key. Metered as `bank-account.verify` after a successful upstream response - usage is only recorded (and the fulfilment wallet debited, for priced services) once Core returns a successful result.
Required scope: verification.bank-account.read
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
| Authorization | header | Yes | Bearer <api-key> (e.g. sk_test_... in sandbox, sk_live_... in production). The x-api-key header is also accepted. |
| accountNumber | string | Yes | 9-18 digit numeric bank account number. |
| ifsc | string | Yes | 11-character IFSC code, e.g. ICIC0001234. |
| name | string | No | Beneficiary name to match. |
curl
curl -X POST "https://api.stampmitra.in/v1/verify/bank-account" \
-H "Authorization: Bearer sk_test_xxxxxxxxxxxx" \
-H "Content-Type: application/json" \
-d '{"accountNumber":"000123456789","ifsc":"ICIC0001234","name":"Ravi Kumar"}'JavaScript (fetch)
const res = await fetch("https://api.stampmitra.in/v1/verify/bank-account", {
method: "POST",
headers: {
Authorization: "Bearer sk_test_xxxxxxxxxxxx",
"Content-Type": "application/json",
},
body: JSON.stringify({"accountNumber":"000123456789","ifsc":"ICIC0001234","name":"Ravi Kumar"})
});
const data = await res.json();Example request
{
"accountNumber": "000123456789",
"ifsc": "ICIC0001234",
"name": "Ravi Kumar"
}Example response
{
"requestId": "vr_9f3a1c2b8e4d4a5f",
"status": "SUCCESS",
"verified": true,
"source": "GOVERNMENT_DATABASE",
"data": {
"accountNumber": "000123456789",
"ifsc": "ICIC0001234",
"bankName": "ICICI Bank",
"branchName": "Andheri West",
"accountExists": true,
"beneficiaryName": "RAVI KUMAR",
"nameMatch": true,
"nameMatchScore": 0.95,
"accountStatus": "ACTIVE"
},
"meta": {
"organizationId": "org_5f2c1a9b3d7e4f6a",
"environment": "SANDBOX",
"billedEvent": "bank-account.verify",
"completedAt": "2026-09-25T10:15:32.481Z"
}
}Error responses
401 — Missing or invalid API key
{
"error": {
"code": "UNAUTHORIZED",
"message": "Missing or invalid API key.",
"requestId": "a1b2c3d4-e5f6-4a1b-8c2d-9f0e1a2b3c4d"
}
}403 — Valid key, missing required scope
{
"error": {
"code": "FORBIDDEN",
"message": "API key is valid but lacks the required scope for this endpoint.",
"requestId": "a1b2c3d4-e5f6-4a1b-8c2d-9f0e1a2b3c4d"
}
}400 — Validation error
{
"error": {
"code": "BAD_REQUEST",
"message": "accountNumber must be a 9-18 digit numeric bank account number",
"requestId": "a1b2c3d4-e5f6-4a1b-8c2d-9f0e1a2b3c4d"
}
}402 — Insufficient wallet balance
{
"error": {
"code": "PAYMENT_REQUIRED",
"message": "Insufficient fulfilment wallet balance to cover this call.",
"requestId": "a1b2c3d4-e5f6-4a1b-8c2d-9f0e1a2b3c4d"
}
}429 — Rate limited
{
"error": {
"code": "TOO_MANY_REQUESTS",
"message": "Rate limit exceeded: 60 requests per 60 seconds for this endpoint.",
"requestId": "a1b2c3d4-e5f6-4a1b-8c2d-9f0e1a2b3c4d"
}
}Input format is validated with class-validator (@Matches/@IsDateString/@IsOptional) before the request ever leaves stampmitra-b2b-platform - a malformed pan/gstin/etc. fails fast with a 400 and never reaches the upstream provider.