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
card_setup and open_banking. Steps that are skipped still appear in the state machine, marked as skipped rather than incomplete.
kyc_verification is the exception: it cannot be skipped per partner. The SIS kyc feature is always-required (see Always-required features). What the partner can configure is the verification mode — surfaced on the step’s meta.kyc_mode field as websdk, hybrid, or document_only — which the resolver picks per-environment with a Statsig dynamic-config fallback (kyc_verification_mode, default websdk).
Wallet-cohort steps
byo_safe and safe_deploy are mutually exclusive — a single user is in one of three cohorts based on the SIS environment’s feature flags:
AI_AGENT | USER_SIGNED_DEPLOY | What runs | Description |
|---|---|---|---|
| enabled | disabled | neither — agent-signed Safe creation | Sumvin’s signing service deploys the Safe with an agent signer attached. |
| disabled | enabled | safe_deploy | The user signs an ERC-4337 UserOp themselves; Sumvin sponsors gas via Pimlico. |
| disabled | disabled | byo_safe | The user submits the address of a Safe they already control on-chain. |
SIS-409-008 (Feature Mutex Violation) — see SIS feature mutex. Users without an org_id skip both steps.
Who drives transitions
| Driver | Transition |
|---|---|
| Partner | Submits the current step when the user finishes it |
| Sumvin | Advances automatically on approval, Safe deployment, and other asynchronous completion events |
POST /v0/user/me/onboarding/steps— Submit the completed step.
202 Accepted; purely synchronous transitions return 200 OK.
How to observe the current state
is_complete. When is_complete is true, current_step is "complete".
See also
- Onboarding guide — full flow with code samples
- KYC guide — how
kyc_verificationworks - Wallets guide — async Safe creation that blocks onboarding