Verification page
Before a company can open payment routes, its director completes identity verification. AlphaX hosts that page for you — unbranded, so you can put it inside your own product and keep the customer in your flow.
Step 1 — Get the link
Onboarding a company onto swap returns it, and you can re-read it any time:
The link does not expire, so you can store it against the company and re-open it whenever the customer returns to finish.
Treat kycUrl as a credential — the token in the path is what authorises access
to that company’s verification. Don’t put it anywhere public.
Step 2 — Show it
Either send the customer to the URL directly, or embed it. The page sets
frame-ancestors *, so an <iframe> works from any origin:
Keep allow="camera;" — verification includes document and selfie capture, and
the flow cannot complete without camera access. Give the iframe real height too;
the form is full-page.
Pass redirectUri when you onboard the company to send the customer back to your
own page when they finish:
Omit it and we show an AlphaX completion page instead.
Step 2b — Have the terms accepted
Verification is only half of what is asked of the company. It must also accept
the terms of service, at tosUrl — a second page you embed exactly the same way:
No camera is needed here, so allow="camera;" can be dropped.
A company cannot be endorsed until the terms are accepted, no matter how far
verification has got. Surface this alongside verification rather than after it —
tosAccepted tells you whether it is still outstanding.
The two are deliberately separate pages so you can deep-link to whichever step is still needed, rather than making the customer walk through both again.
Step 3 — React to the outcome
kycStatus moves through these values:
The two awaiting_* states are the ones to surface in your own UI — verification
is blocked until the customer supplies something, and reopening kycUrl takes
them straight to it. Everything else is informational.
Rather than polling GET /v1/kyc-link, subscribe to
company.kyc_status_changed — it fires on every transition.
company.kyc_link.issued fires when the link first becomes available, which is
useful if you onboard companies from a background job.
Verification is a manual review, not an instant decision. Expect under_review to
last hours rather than seconds, and design your onboarding UI to let the customer
leave and come back.

