v1

latestOpenAPI 3.0.02026-07-24103118224.7 KB
Virtual Accounts

Create a virtual account

Provisions a new virtual account for the authenticated merchant in the requested deposit currency. EUR creates an IBAN/BIC that settles to EURC on Base, USD creates an ACH account number/routing number that settles to USDC on Base. When X-On-Behalf-Of is set, the virtual account is provisioned for the targeted sub-merchant.

A merchant can hold at most one virtual account per currency. The merchant must already have a custodial wallet and a dedicated provider customer (otherwise the request is rejected).

post/api/virtual-account

Request body

depositCurrency'usd' | 'eur' required

Currency in which funds will be deposited to this virtual account. eur provisions an IBAN/BIC and settles to EURC; usd provisions an ACH account number/routing number and settles to USDC.

Example request

{
  "depositCurrency": "eur"
}

Response

Virtual account created successfully

idstring required

Unique identifier of the virtual account.

depositCurrency'usd' | 'eur' required

Currency in which funds must be deposited to this virtual account.

countryCodestring required

ISO-3166 alpha-2 country code derived from the deposit instructions. For EUR accounts this is taken from the IBAN prefix; USD accounts default to US.

ibanstring nullable

IBAN of the virtual account. Only set for EUR virtual accounts.

bicstring nullable

BIC of the virtual account. Only set for EUR virtual accounts.

accountNumberstring nullable

Bank account number of the virtual account. Only set for USD virtual accounts.

routingNumberstring nullable

Bank routing number of the virtual account. Only set for USD virtual accounts.

accountOwnerNamestring nullable

Name of the account owner / beneficiary.

bankNamestring nullable

Name of the bank holding the virtual account.

bankAddressstring nullable

Address of the bank holding the virtual account.

beneficiaryAddressstring nullable

Address of the beneficiary. Only set for USD virtual accounts.

externalIdstring required

Identifier of the virtual account at the underlying provider.

userIdstring required

Identifier of the merchant owning this virtual account.

createdAtstring date-time required

Date the virtual account was created.

updatedAtstring date-time required

Date the virtual account was last updated.

Example response

{
  "id": "virt_1234567890abcdef",
  "depositCurrency": "eur",
  "countryCode": "FR",
  "iban": "FR7630006000011234567890189",
  "bic": "BNPAFRPP",
  "accountNumber": "123456789",
  "routingNumber": "021000021",
  "accountOwnerName": "Inflow Technologies SAS",
  "bankName": "JP Morgan Chase",
  "bankAddress": "270 Park Ave, New York, NY 10017, US",
  "beneficiaryAddress": "1 Hacker Way, Menlo Park, CA 94025, US",
  "externalId": "ba_1234567890abcdef",
  "userId": "user_1234567890abcdef",
  "createdAt": "2025-01-15T10:00:00.000Z",
  "updatedAt": "2025-01-15T10:00:00.000Z"
}