Response envelope
A successful response setssuccess: true and carries the payload in result (list endpoints also include a pagination object):
Success
success: false and returns one or more errors, each with a stable code and a human-readable message:
Error
code, not the message — messages may change, codes are stable.
Standard errors
These apply across endpoints:Verification & activation gates
A new account can’t move money until it’s verified, and a self-custody wallet can’t until its permit confirms. These gates return different codes per operation — treat any of them as “not ready yet” rather than matching a single code:
See Account verification and Approving transfers without gas.
Verification errors
Verification-provisioning calls — minting a link, forwarding asumsubToken, and provisioning a virtual bank account — can also fail on the platform itself:
See Troubleshooting verification for the retryable/terminal split on each of these.
Pay-out errors
Pay-out routes and pay-outs add these:Rate limits
The Finance API doesn’t publish fixed numeric rate limits. Build for resilience regardless:- Cache your access token and reuse it until it nears expiry — don’t fetch one per request.
- Back off and retry on
500(and on429, if returned), using exponential backoff with jitter. - Make retries safe with an idempotency key so a replay never double-charges.
If you expect high call volumes, confirm current limits with your Venly contact — they aren’t enumerated in the API contract.
Next steps
API conventions
Idempotency, pagination, and versioning rules.
Account verification
The most common reason an otherwise-correct request is rejected.
Troubleshooting verification
Every verification error code, and how to tell a stall from a failure.
Webhooks
Catch asynchronous failures that no HTTP response can tell you about.

