Skip to main content
This is the shortest path to a working Finance API integration. You’ll create a party, open an account linked to it, get the account verified, and then issue a virtual bank account (IBAN).
Base URL (staging): https://api-staging.venlyfinance.com/v1 · Auth: OAuth2 Bearer token — see Authentication. Whether your company is Venly-managed or self-custody changes one step below — see Venly-managed vs self-custody.

Step 1 — Create a party

A party is the person or organisation behind an account. It’s created ACTIVE immediately — there’s no verification step for a party.
Response (201)
Save the returned id — it’s the partyId you link in the next step. For an organisation, send partyType: ORGANISATION with name (and optional vatNumber) instead of firstName/lastName.

Step 2 — Open an account linked to the party

An account holds the wallet, IBANs, and transfer history. Pass the partyId from Step 1 to link the party as ACCOUNT_HOLDER. The wallet is provisioned automatically. The only difference between company types is the wallet address:
  • Venly-managed — Venly creates and holds the wallet. Don’t send an address.
  • Self-custody — the customer controls the wallet. You must send their address.
Response (201)
The account is created with kycStatus: VERIFICATION_PENDING. It exists and can be set up, but it can’t move money yet.
Self-custody omitting address returns 400 "Address is required for SELF_CUSTODY wallet type". See Venly-managed vs self-custody for the full difference (including permits).

Step 3 — Get the account verified

Account verification is reviewed and approved by a Venly admin — there’s no API call to trigger it. Once approved, the account’s kycStatus becomes VERIFIED. Poll the account until it flips:
Response (200)
Until kycStatus is VERIFIED, creating virtual bank accounts, transfers, payment requests, and pay-in sessions all fail with a KYC error — the exact code and HTTP status depend on the operation (e.g. 400 kyc-not-verified for virtual bank accounts, 422 kyc-required for pay-in sessions). See Account verification.

Step 4 — Create a virtual bank account

With the account verified, issue a EUR IBAN so it can be funded via SEPA. Incoming euros are converted to the targetCryptocurrency and credited to the wallet.
Response (201)
Give the iban and referenceCode to your customer — the referenceCode is what links their incoming SEPA payment to this account.

Next steps

Full Integration Walkthrough

Funding, transfers, and tracking — end to end.

Self-custody: approving transfers

Sign a permit so a self-custody account can move funds.

Account verification

States, gating, and what works before verification.

API reference

Every endpoint, field, and example.