Skip to main content

Onboarding state machine

A Sumvin user moves through a defined sequence of onboarding steps. Each step represents work the user has to complete (or that the platform chooses to skip) before they can be considered fully onboarded. The state machine is linear, idempotent, and observable through the Platform API.

The steps, in order

created
  → phone_verification
  → kyc_verification
  → open_banking
  → card_setup
  → feature_selection
  → complete
Any gated step can be skipped per user via platform configuration — for example, an integration that doesn’t issue cards would skip card_setup and open_banking. Steps that are skipped still appear in the state machine, marked as skipped rather than incomplete.

Who drives transitions

DriverTransition
PartnerSubmits the current step when the user finishes it
SumvinAdvances automatically on approval, Safe deployment, and other asynchronous completion events
Partner-driven transition: Submitting the same step twice is a no-op, not an error — onboarding tolerates retries.

How to observe the current state

curl /v0/user/me?expand=onboarding \
  -H "x-juno-jwt: <token>" \
  -H "x-juno-orgid: <your-org-id>"
The onboarding block returns the current step, every step’s status, and a boolean is_complete. When is_complete is true, current_step is "complete".

See also

Referenced from