Before you start
- An approved merchant account with virtual accounts enabled
- Your
X-Client-IDandX-Client-Secret, andX-API-Version: 3.0.0on every call - A webhook URL on your account
X-Merchant-ID naming the sub-merchant the account belongs to.
Step 1: Create the account
The name, email, and phone come from the merchant account, so the request body can be empty.- Remitter lock — only accept money from bank accounts you list.
- Amount lock — only accept transfers within a range.
Create VBA API
Full request and response.
Step 2: Give the details to your buyer
The response gives youvba_account_number and vba_ifsc. Send those two to your buyer. That is all they need.
Account numbers follow a fixed pattern, and the IFSC is always the same for your client code. Take both from the response rather than constructing them yourself.
Step 3: Handle the money arriving
When a credit lands we record the amount, the sender’s account and IFSC, their name, and the UTR. Then we create a payment and send you a webhook. The payment status isACTION_REQUIRED. We have the money but not the paperwork.
Next, send us the compliance details so the payment can settle.
LRS Verification
Verify the buyer’s PAN, quote the tax, upload documents, submit.
Step 4: Test it without a real transfer
In sandbox, simulate an incoming transfer. This runs the whole flow — webhooks, payment creation, verification — with no real money. Eachutr must be unique.
captured with action_required is the happy path, meaning the money is in and the compliance details are what’s missing.
A credit that breaks a rule on the account (the VBA is inactive, a remitter lock, an amount lock, the 25 lac ceiling) is still recorded rather than rejected — we never drop real money — and comes back failed with the reason in status_message.
The same rules apply to real credits. Simulating one is the way to see what a locked account does to a transfer before a buyer sends money into it.
Simulate VBA Transfer API
Every field, every
status_message, and the full response shape.Finding payments
Create as many accounts as you want — there is no limit. By default each one accepts money from any number of buyers; use a remitter lock if you want to tie an account to specific buyers.