Apply for Virtual Bank Account
Apply for a virtual bank account (a “Virtual Account”) for one of your users. A virtual bank account gives the user their own account number and routing number for receiving money.
Before this works — the request is turned down unless all of these are true:
- Your platform has the virtual bank account product (
virtual_account) switched on. You ask for it during the normal sign-up process, and Finogate’s team must approve that request first. - Your platform has completed its own identity and business verification (an approved platform-level KYC and KYB).
- The user has passed identity verification (an approved KYC record).
- The user has passed business verification (at least one approved KYB record).
What happens next — the account starts in the initiated state.
Finogate’s team reviews every application by hand, marks it applied once
checked, and finally fills in the real account and routing numbers from the
banking partner before setting the account to approved. We tell you the
result by sending your server an automatic notification — a
virtual_bank_account.approved webhook if it succeeds, or a
virtual_bank_account.rejected webhook if it is declined. That
notification is the only sign that the account is ready. Until the account
is approved, it must not be used for any payments, payouts, deposits, or
linked to a wallet.
Avoiding duplicates — there are two safeguards:
- You can include an
idempotency_key— a unique value you choose. If the same request reaches us twice by mistake, the account is only created once. (Reusing the same key with different details is rejected.) - The same user cannot hold two active accounts of the same type on your platform. A repeat attempt is rejected.
Authorizations
The access token received from the authorization server in the OAuth 2.0 flow.
Body
Public platform request shape for POST /platform/virtual-bank-accounts.
Field aliases accept both the spec-style camelCase (userID) and
the canonical snake_case so integrators can use whichever they
prefer; documentation should standardise on snake_case.
End user the virtual bank account is opened for.
"0b87f3a8-5a1f-4f5d-9f34-0f1a4c2d7a63"
Human-friendly account label.
1 - 100"Primary Business Account"
Account product to open (BUSINESS / SAVINGS / CHECKING).
BUSINESS, SAVINGS, CHECKING Optional caller-supplied idempotency key.
120Optional integrator-supplied metadata.
Response
Successful Response
Standard response wrapper for single-object responses and errors.
Generic over the payload type. A route that declares
CommonResponse[SomeModel] gets the real data schema rendered in
OpenAPI/Swagger; a bare CommonResponse leaves data untyped.

