Identity
Party
The legal identity behind every account. Two types:INDIVIDUAL— a natural person (requiresfirstName,lastName)ORGANISATION— a company or business (requiresname, optionallyvatNumber)
Party Role
The relationship between a party and an account. Currently only one role type exists:ACCOUNT_HOLDER— the party owns or co-owns the account
KYC / KYB
Know Your Customer (individuals) and Know Your Business (organisations). Identity verification that runs after party creation, tracked on two separate fields:kycStatus(individuals & accounts) —VERIFICATION_PENDING → VERIFIED(orREJECTED)kybStatus(organisations) —PENDING → VERIFIED(orDENIED)
VERIFIED. See Account verification.
Account structure
Account
The container that holds wallets, virtual bank accounts, and transfer history for a party (or set of parties). Pinned to a single blockchain network at creation. Statuses:ACTIVE, SUSPENDED, CLOSED.
External ID
A merchant-supplied unique identifier for an account or party (externalId field). Use it as a shortcut in transfer requests (receiverExternalId) instead of looking up the Venly UUID.
Custodial Wallet
A blockchain wallet managed by Venly on behalf of an account. Venly holds the keys; balances move via API calls rather than on-chain signatures. Each wallet is bound to one chain (BASE or AVALANCHE in Release 1).
Virtual Bank Account (VBA)
A bank account reference (IBAN + BIC for EUR_SEPA) attached to a Venly account. Used to receive fiat funding that’s auto-converted to crypto and credited to the wallet. See Create a virtual bank account.IBAN / BIC
International Bank Account Number and Bank Identifier Code — the standard EUR_SEPA addressing format returned on a virtual bank account.Reference Code
A unique string returned with each VBA. The end user must include this in their SEPA payment message — it’s how the incoming wire is matched to the right account. Without it, settlement falls back to manual reconciliation.Beneficiary Name
The legal name on the bank account record (typically a Venly custody entity). Display this to end users alongside the IBAN when they initiate a wire.Money movement
Transfer
A value movement from one account to another, addressed byreceiverAccountId or receiverExternalId. Two flavors, depending on how you denominate the amount:
- Fiat transfer — you send a fiat
currency+amount; it’s resolved to the underlying stablecoin and settled on-chain. The response carries afiatOriginblock (original currency, amount, exchange rate). - Crypto transfer — you send a crypto
asset+chain+amount, moved directly between the accounts on-chain.
Transfer Status
Lifecycle states:PENDING → COMPLETED (or FAILED with an errorMessage).
Payment Session (Fiat-to-Crypto)
A hosted checkout flow that converts a card or bank payment into crypto credited to an account’s wallet. Returns apaymentUrl you redirect the user to. See Create a fiat-to-crypto payment session.
Payment Request
A pre-authorised request for funds, used in card-provider integrations. Two endpoints exist:/payment-requests (for card providers) and /accounts/{id}/payment-requests (account-scoped).
On-chain primitives
Permit (EIP-2612)
A signed message that grants a spender permission to move tokens from a wallet, without an on-chain approval transaction. Used to delegate spending authority cheaply. See Get permit messages.Allowance (ERC-20)
The amount of a token that a third party is approved to spend from a wallet. Queried per wallet + token. See Get wallet token allowances.Stablecoin
A cryptocurrency pegged to a fiat currency. Supported in Release 1:USDC, EURC, USDT, USDS.
Blockchain Network
The chain the account’s wallet is provisioned on. Supported in Release 1:BASE, AVALANCHE.
API mechanics
Idempotency Key
A UUID supplied in the request body of state-changing endpoints to make retries safe. Same key + same body returns the original response; same key + different body returns422. See the Idempotency rules.
Optimistic Locking (version)
On update endpoints, the request body includes a version integer matching the resource’s current version. Concurrent updates with a stale version return 409 Conflict. Refetch, increment, retry.
Pagination
List endpoints acceptpage (1-based), size, sortOn, and sortOrder query parameters and return a pagination object in the response. See Pagination conventions.
Error handling
Every response carries asuccess flag and, on failure, an errors array of { code, message }. Branch on the stable code. See the Errors & error codes reference.
Status enums (quick reference)
| Resource | Statuses |
|---|---|
Party (status) | ACTIVE, SUSPENDED, BLOCKED |
| Party Role | ACTIVE, INACTIVE |
KYC (kycStatus — individuals & accounts) | VERIFICATION_PENDING, VERIFIED, REJECTED |
KYB (kybStatus — organisations) | PENDING, VERIFIED, DENIED |
Account (status) | ACTIVE, SUSPENDED, CLOSED |
Wallet (status) | PENDING, ACTIVE |
Wallet AML (amlStatus) | PENDING, APPROVED, REJECTED |
| Virtual Bank Account | ACTIVE, CLOSED |
| Transfer | PENDING, COMPLETED, FAILED |
| Payment Request | PENDING, RESERVED, SETTLED, REVERSED, FAILED |
| Payment Execution | PENDING, RESERVED, FAILED |
| Permit | PENDING, SUBMITTED, CONFIRMED, FAILED |
| Payment Session | CREATED, PENDING_PAYMENT, PAYMENT_RECEIVED, CONVERTING, MINTING, COMPLETED, FAILED, EXPIRED, CANCELLED, REFUNDING, REFUNDED |
Wallet status isn’t yet enumerated in the API spec. A self-custody wallet is
PENDING until its permits confirm, then becomes ACTIVE — see Approving transfers without gas. Treat PENDING/ACTIVE as the observed runtime lifecycle, pending spec confirmation.See also
Integration walkthrough
Watch every term above used in context, end to end.
API conventions
Idempotency, pagination, and versioning rules.

