What does this API do?
The Bank Account Verification API (powered by Digio Tech Solution Pvt Ltd) allows lenders to validate a customer's bank account details without initiating a financial transaction. It supports multiple verification modes — Penny Drop, Penny Less, and Auto — and returns real-time results including the account holder's name and an optional fuzzy name-match score. This enables faster onboarding, reduced transaction failures, and stronger compliance with regulatory standards.
Who can use it?
Any lender or financial institution that has been onboarded to the ULI Platform and has subscribed to the Digio service in the Platform Developer Portal.
Prerequisites
Complete all common platform prerequisites as described in Getting Started with ULI Platform APIs.
In addition, the following is specific to this API:
- Digio Service Credentials: You must obtain a Client ID and Client Secret from Digio. These are separate from your ULI Platform credentials and must be stored securely by the lender. Separate credentials are required for Sandbox and Production environments.
- Digio Service Subscription: Subscribe to the Digio Bank Account Verification service in the Platform Developer Portal (separately for Sandbox and Production). Refer to Section 10 of the SOP for Lender Onboarding for subscription steps.
What are the API endpoints?
| Environment | URL |
|---|---|
| Sandbox | https://extgw.nonprod.rbihub.io/digio/verify/bank-account/1.0/en |
| Production | https://extgw.api.rbihub.io/digio/verify/bank-account/1.0/en |
HTTP method: POST
URL path follows the convention: /{serviceName}/{ver}/{lang}
| URL Parameter | Description | Value |
|---|---|---|
| serviceName | Unique name of the service | digio/verify/bank-account |
| ver | Current version of the API | 1.0 |
| lang | Language for the response | en |
What headers are required?
| Header | Description | Remarks |
|---|---|---|
Authorization | JWT token generated by the authentication server | Refer to the Authentication and Authorization API specification |
client-id | Base64-encoded Client ID issued by the platform | Required |
provider | Service provider code | Use 138 for Digio |
x-sp-authorization | Basic authentication — Base64-encoded value of the Digio-issued username and password | Required |
api-key | 24-character alphanumeric key issued by the platform | Optional; reserved for future use |
x-env-route | Required to route requests to the sandbox environment | Set to /sb for Sandbox only; omit for Production |
What does the request body look like?
The API accepts JSON. The top-level structure contains three objects:
| Field | Type | Description | Required |
|---|---|---|---|
meta | Object | Metadata including API version, timestamp, and transaction code | Yes |
data | Object | Core account verification details | Yes |
hmac | String | SHA-256 HMAC signature of the Base64-encoded data field for integrity validation | Yes |
meta object fields:
| Field | Type | Description | Required |
|---|---|---|---|
ver | String | API version. Example: 1.0 | Yes |
ts | String | Request timestamp in ISO-8601 format (yyyy-MM-ddTHH:mm:ssZ). Example: 2025-05-22T14:30:00Z | Yes |
txncode | String | Unique transaction code for tracing the request. Example: 324242 | Yes |
data object fields:
| Field | Type | Description | Required |
|---|---|---|---|
beneficiary_account_no | String | Bank account number to be verified (8–18 characters) | Yes |
beneficiary_ifsc | String | IFSC code of the bank branch | Yes |
beneficiary_name | String | Account holder name for optional fuzzy matching | Optional |
validation_mode | Enum | Verification method: PENNY_DROP, PENNY_LESS, or AUTO. Defaults to PENNY_DROP | Optional |
amount | BigDecimal | Amount used for penny drop. Default is ₹1 | Optional |
narration | String | Optional transaction narration text | Optional |
unique_request_id | String | Unique identifier for traceability (1–70 characters) | Optional |
What do the response fields mean?
Top-level response fields:
| Field | Type | Description |
|---|---|---|
result | Object | Contains status and error information |
data | Object | Account verification results |
signature | String | Digital signature of the response payload for integrity verification |
meta | Object | Transaction metadata (version, timestamp, transaction code) |
hmac | String | SHA-256 HMAC of the data field; generated by the platform |
publickey | String | Public key used to verify the signature |
sig-algo | String | Signing algorithm used, e.g. SHA256withECDSA |
result object fields:
| Field | Type | Description |
|---|---|---|
errcode | String | E000 on success; a relevant error code on failure |
status | String | success or fail |
info | String | Empty string on success; error description on failure |
data object fields:
| Field | Type | Description |
|---|---|---|
id | String | Unique identifier for the verification request |
verified | Boolean | true if the account was verified successfully; false otherwise |
verified_at | String | Timestamp of verification in yyyy-MM-dd HH:mm:ss format |
beneficiary_name_with_bank | String | Account holder name as returned by the bank |
fuzzy_match_result | Boolean | Result of fuzzy name match, if a name was provided in the request |
fuzzy_match_score | Integer | Name-match score from 0 to 100 |
validation_mode | Enum | Verification mode used; default is PENNY_DROP |
error_msg | String | Error message from the bank, if any |
error_code | String | Error code received during verification |
Sample response:
{
"result": {
"errcode": "E000",
"status": "success",
"info": ""
},
"data": {
"verified_at": "2025-05-19 12:19:32",
"fuzzy_match_result": true,
"verified": true,
"beneficiary_name_with_bank": "JOHN DOE",
"id": "HGBDEH7282",
"fuzzy_match_score": 100
},
"meta": {
"txncode": "324242",
"ver": "1.0",
"ts": "2025-05-19T12:19:32+0530"
}
}
What are the error codes?
For the full list of platform-wide error codes, refer to the Latest Platform Error Code document. The following are Digio-specific error codes:
| Error Code | Description |
|---|---|
EDI001 | Please provide a valid beneficiary account number |
EDI003 | Please provide a valid beneficiary account IFSC code |
EDI005 | Invalid x-sp-authorization |
EDI006 | Must be one of PENNY_DROP, PENNY_LESS, AUTO |
EDI007 | Invalid amount |
Who do I contact for support?
If you encounter an issue, email support@rbihub.in with the following details:
- Subject: Bank Account Verification API Error
- Service Name: Bank Account Verification
- Environment: Sandbox or Production
- Service Provider: Digio
- Request headers and payload
- Error code and error message received
- Prerequisites status: IP Whitelisting, URL Whitelisting, Service Subscription, Token Generation
- Screenshot or log of the error (as attachment)
Was this article helpful?
That’s Great!
Thank you for your feedback
Sorry! We couldn't be helpful
Thank you for your feedback
Feedback sent
We appreciate your effort and will try to fix the article