Every onboarding call uses the user’s bearer token (
Authorization: Bearer <access_token>)
from authentication.How it works
- Create an application once with
POST /v2/applications, passingisCompanyto pick the individual or company flow. - Poll
GET /v2/applicationsand readstatus.currentStep. The reference app polls about once a second; slow down onIN_REVIEW(see below). - Show the screen for that step. Some steps need input from the user (a form, the identity check, accepting terms); others just wait while we process. The step advances on the next poll once the work is done.
- When
currentStepisCOMPLETED, onboarding is finished. Send the user into the app.
After approval: from application to customer
Approval turns the applicant into a customer, and that hand-off gives you everything the rest of the API needs:- The application object (from
GET /v2/applications) carries thecustomerId— every customer-scoped endpoint takes it. - The customer’s primary account is created automatically — you don’t call anything.
Fetch it with List accounts; the
accountIdfrom that response is what cards, payments, and beneficiaries hang off.
currentStep: "COMPLETED" is simply: read customerId from the
application → GET /v1/customers/{customerId}/accounts → build the app around
the returned accountId.
The server decides the order, so don’t hard-code the sequence: render whatever currentStep
comes back. The order depends on the program: most collect the legal agreements first, before
KYC/KYB, and some collect them after the risk review. On v2 there are ten values, one per
screen, and the set doesn’t grow when we add internal processing steps: those show up as
PROCESSING.
Steps
Pick the tab for the version you poll. New integrations should use v2.- v2 (recommended)
- v1
status.currentStep is always one of these values. status.requiredActions lists what the
user must do on that screen, and is empty while you wait.Action requiredWaiting — keep polling
Finished or stopped
Companies (KYB)
Create the application withisCompany: true and the flow uses the same steps. On
KYC_FORM you fetch the form from the same schema endpoint (it
returns company and beneficial-owner fields), but you submit the answers to
POST /v1/applications/kyb instead of the individual KYC endpoint.
A company can also reach ADD_UBOS while its beneficial owners verify.