Skip to main content
POST

Add Bank Account

The customer must be VERIFIED, and the account holder’s name must match the name on their KYC.

Rails by country

Send the rail in bank_account_type and its fields in identifiers. Which rails you can send depends on the customer’s alpha_3_country_code.
  • United States: customers link their bank with Generate Bank Link instead.
  • Payout-only beneficiaries: use Add Payout Bank Account. Its fields are set per country and payout method.
  • India: NRE accounts aren’t supported. Remittance (RDA) payouts need ACCOUNT_DETAILS.

Verification

  1. Save data.id as bank_id. The account starts as PROCESSING.
  2. Zapyd verifies it asynchronously, and a BANK webhook reports VERIFIED or FAILED. On FAILED, failure_reason says why.
  3. Quote only against a VERIFIED account.
In sandbox, set the result with Mock Bank Verification. It sends no webhook, so read the account afterwards.

Limits

  • At most 3 active accounts per rail per customer.
  • An account already linked to another customer is rejected.

Error Codes and Messages

Authorizations

X-API-KEY
string
header
required

API Key for authentication

X-TIMESTAMP
string
header
required

Current timestamp in seconds since epoch

X-SIGNATURE
string
header
required

HMAC SHA256 signature of the request encoded in Base64

Body

application/json
customer_id
string<uuid>
required

Customer's unique identifier. The customer must be VERIFIED.

Example:

"c2cf861b-342b-4318-a90e-85cd0312e82f"

bank_account_type
string
required

Payment rail. The rails depend on the customer's country: see Rails by country. For example ACCOUNT_DETAILS or UPI.

Example:

"ACCOUNT_DETAILS"

identifiers
object
required

The fields for the rail in bank_account_type: see Rails by country. For example {account_number, ifsc} for ACCOUNT_DETAILS, or {vpa} for UPI.

Example:

Response

Bank account added successfully

status
boolean
Example:

true

message
string
Example:

"Success"

data
object