The states
An account’skycStatus (returned by Get an account) is one of:
Individuals and organisations (KYC & KYB)
The account’skycStatus above is what gates money movement. The underlying party is verified too, on a field that depends on its type:
KYB (Know Your Business) is the organisation equivalent of KYC — it verifies the company itself (and, typically, its representatives). Read
kybStatus from Get a party. Like KYC, it runs asynchronously after you create the organisation party.
How a party gets verified
You drive verification through the API. There are two routes:Hosted verification link
POST /parties/{partyId}/verification mints a link you hand to the end-user. Works for individuals (KYC) and organisations (KYB).Forward a Sumsub token
Already verified the user yourself? Pass
party.sumsubToken at account creation. Individuals on self-custody only.kycStatus/kybStatus. See the onboarding lifecycle for the full picture, Individual KYC and Business KYB for each party type, and Troubleshooting for error codes and tracking linkage.
Check the current status at any time with Get an account and read the kycStatus field.
Tenant-managed KYC
PassingkycStatus: NOT_REQUIRED when
creating an account declares that you verify
end-users within your own compliance stack, so Venly does not gate money movement on its own
verification. It lets you reach transfers and pay-outs without completing a verification flow per party.
Constraints:
NOT_REQUIREDis the only client-settable value. SupplyingVERIFIEDorREJECTEDis rejected withkyc-status-not-settable.- It only works where a Venly admin has enabled the flag on the company tenant. Otherwise:
kyc-not-required-not-allowed. - It is settable only at account creation — you can’t move an existing account to
NOT_REQUIRED.
kycStatus entirely for the normal flow.
Don’t let this path shape your integration. If your test accounts always use
NOT_REQUIRED, you
never exercise the
pending-verification state — and the
first account that has to wait for a real verdict will block on a code path you never ran. Build the
pending state regardless.Verification is not the last step
VERIFIED means we know who the party is. It does not mean our partners will deal with them yet:
the end customer must also accept those partners’ terms themselves, on a page we hand them a link to.
That acceptance is tracked in its own field on the party — not in kycStatus — and it gates
virtual bank accounts and pay-outs.
See Partner-terms consent.
Wallet readiness (AML, and permits for self-custody)
AVERIFIED kycStatus clears the account, but funds move through the account’s wallet, which has its own gate. Each wallet returned by list wallets carries an amlStatus:
Treat anything other than
APPROVED as not-ready — FLAGGED and BLOCKED need Venly intervention, so surface them rather than retrying in a loop. An account is ready to move money when:
The wallet has no
status field, so use amlStatus (Venly-managed) and permit status (self-custody) as your readiness signals. See Wallets & balances.
What’s blocked until VERIFIED
These calls fail while an account is VERIFICATION_PENDING:
- Create a crypto transfer and Create a fiat transfer
- Create a pay-in session
- Create a virtual bank account
- Request a payout — plus the recipient party needs cleared KYC/KYB before a route can even be created
code and HTTP status depend on the operation, so handle any of them as not-verified rather than matching a single code:
- Virtual bank account →
400with codekyc-not-verified:
- Pay-in session →
422with codekyc-required:
What you can do before verification
Plenty of setup doesn’t require a verified account:- Create parties and accounts
- Mint a verification link and read verification linkage
- Add and remove party roles
- Read wallets, balances, permits, and allowances
- Register payout bank accounts and webhooks
- For self-custody, sign and submit the token permit — see Approving transfers without gas
Build the pending state into your flow: create the account, send the party through verification, then wait for the verdict — register a webhook rather than polling, or poll Get an account until
kycStatus is VERIFIED — before attempting transfers, payments, pay-ins, pay-outs, or virtual bank accounts.Next steps
Onboarding lifecycle
The three gates, both verification routes, and what’s blocked when.
Approve transfers (self-custody)
Activate a self-custody wallet so Venly can move its funds.
Integration walkthrough
See verification within the full end-to-end flow.
Webhooks
Get verdicts pushed to you instead of polling.

