How it works (the flow)
POST /onboarding/start-canada— Registers the CAD wallet address and triggers the onboarding context.PATCH /kyc— User submits KYC data progressively (partial updates allowed).POST /kyc/activate— Detects the Canadian address and creates a Customer record. The response either carries a hosted verification URL or does not — branch on it.- Branch on the activation response:
- A verification URL is returned — open it so the user can finish identity verification, then return them to your app.
- No URL is returned — the user’s identity was already satisfied by the Global KYC share, so there is nothing to open. Go straight to polling. Global KYC itself never runs in a WebView.
GET /onboarding/status— Poll to check KYC completion (the backend receives the provider’s webhooks). Both branches above land here.
Core requirements
Personal Info
Contact (from user account)
Address (must be a Canadian address)
Valid province codes
Not required (handled upstream)
- Document uploads — collected directly from the user during verification
- SIN (Social Insurance Number) — collected directly from the user

