Skip to main content
POST
/
accounts
/
{accountId}
/
virtual-bank-accounts
Create a virtual bank account
curl --request POST \
  --url https://api.venlyfinance.com/v1/accounts/{accountId}/virtual-bank-accounts \
  --header 'Authorization: Bearer <token>' \
  --header 'Content-Type: application/json' \
  --data '
{
  "name": "EUR Payouts",
  "inCurrency": "EUR",
  "targetCryptocurrency": "USDC",
  "idempotencyKey": "3fa85f64-5717-4562-b3fc-2c963f66afa6"
}
'
{
  "success": true,
  "result": {
    "id": "4d5e6f70-8192-4a3b-9c4d-5e6f7081920a",
    "accountId": "b2a1f0e9-8c7d-4e3a-9f21-0a1b2c3d4e5f",
    "bankAccountType": "EUR_SEPA",
    "name": "EUR Payouts",
    "status": "ACTIVE",
    "currency": "EUR",
    "targetCryptocurrency": "USDC",
    "iban": "DE89370400440532013000",
    "bic": "DEUTDEDB",
    "bankName": "Example Bank",
    "beneficiaryName": "Jane Doe",
    "referenceCode": "VFY-7K2Q-931",
    "createdAt": "2026-01-15T09:30:00",
    "updatedAt": "2026-01-15T09:30:00"
  }
}
Provisions a virtual bank account. Provide a display name, the fiat inCurrency to receive (EUR provisions a EUR_SEPA IBAN), the targetCryptocurrency incoming funds convert to, and a unique idempotencyKey (safe retries). The response includes the IBAN/BIC and a referenceCode the payer must quote so the wire is matched to this account.
The account must be verified (and have a linked account-holder party) before a virtual bank account can be created. See Account verification.

Authorizations

Path Parameters

accountId
string<uuid>
required

Unique account identifier

Body

application/json

Request to create a virtual bank account. The backend provisions the appropriate bank account type based on inCurrency (e.g. EUR -> EUR_SEPA).

name
string
required

Display name for the bank account

Maximum string length: 255
inCurrency
string
required

Fiat currency to receive (ISO 4217). Determines the bank account type (EUR -> EUR_SEPA)

Pattern: ^[A-Z]{3}$
targetCryptocurrency
string
required

Cryptocurrency to convert incoming fiat payments to (e.g. USDC)

Pattern: ^[A-Za-z0-9]{2,10}$
idempotencyKey
string
required

Unique key to prevent duplicate operations on retry

Maximum string length: 255

Response

Virtual bank account created

success
boolean

Indicates whether the request was successful

result
object

Virtual bank account for receiving payments. EUR_SEPA accounts return iban/bic.