Bank accounts
Add a bank account
The customer must beVERIFIED. Call POST /bank/create with the rail in bank_account_type and its fields in identifiers.
- India: account and IFSC
- India: UPI
account_number and ifsc, or vpa, without identifiers. Save the returned id. Quotations use it as bank_id.
For beneficiaries in other markets (UAE, UK, SEPA, Brazil, Mexico, US and others), use
POST /bank/payout/create instead.Rules
- The account holder’s name must match the customer’s KYC name. Zapyd checks it.
- A customer can have up to 3 active accounts per rail.
- An account that’s already linked to another customer is rejected.
- NRE accounts aren’t supported in India.
- India remittance payouts (RDA) need
ACCOUNT_DETAILS. UPI isn’t supported for them.
Verification
Zapyd verifies each new account, for example with a penny drop in India. The status moves fromPROCESSING to VERIFIED or FAILED, and Zapyd sends a BANK webhook.
In sandbox, set the result yourself with Mock Bank Verification. It doesn’t send a
BANK webhook, so read the account afterwards.
List, fetch and delete
Wallets
Save a customer’s crypto address withPOST /customer/wallet/add. If the address already exists for that customer, Zapyd updates it.
networkis case-insensitive:Ethereum,Polygon,Arbitrum,Bsc,Solana,Tron, orSepoliain sandbox.- Zapyd checks the address format against the network:
0x…for EVM networks,T…for Tron, base58 for Solana. - Only wallets with a
labelappear in List Wallets, which works as the customer’s address book.
GET /customer/wallet/{customer_id}/{wallet_id} or Delete Wallet.
Payin crypto goes to your organization’s wallet for that asset and network, which is set up during onboarding. It doesn’t go to a saved customer wallet. See Payins.