Hosted KYC is asynchronous. Treat the start response as launch material for the hosted UI, not as a final verification
decision.
How it works
A typical Hosted KYC integration follows five steps:1
Create or update the user
Create the Payward user and provide the profile fields required for onboarding.
2
Start Hosted KYC
Call
POST /v1/users/{user_id}/verifications/start/hosted with the user ID
in the user_id path parameter.3
Send the user to the hosted UI
Launch the hosted UI with the returned launch fields, or create a one-time link and redirect the user to it.
4
Handle interruptions
Resume the same hosted verification when the user returns to an existing flow.
Base URL
Authentication
All requests require three headers:
See Authentication for how to generate the signature.
Step 1 - Create or update the user
Before starting Hosted KYC, create the user and provide the profile fields required for onboarding. Hosted KYC uses the user’s existing Payward profile. Do not send collected evidence or verification results in the hosted-start request. Use these endpoints before starting verification:
Store the user ID. The hosted verification endpoints use it as the
user_id path parameter.
Step 2 - Start Hosted KYC
Call Start verification from hosted flow when the user is ready to verify:verification_id. You need it to create one-time links, resume the hosted flow, reconcile status, and troubleshoot the user’s verification.
Step 3 - Send the user to the hosted UI
Use the launch method agreed during onboarding. For an embedded launch, usesession_token and environment_id from the hosted-start or resume response. Treat session_token as short-lived and do not store it as a long-term credential.
For a redirect or shareable link, create a one-time link for the existing verification:
url or url_short. One-time links are temporary. Create a fresh link if the user needs to return later.
Step 4 - Resume an interrupted flow
If the user returns to an existing hosted verification, resume that verification instead of starting a duplicate one:Step 5 - Reconcile status
Hosted KYC does not finish in the start response. Reconcile status from webhooks and the latest API state. UseGET /v1/users/{user_id}/verifications/{verification_id} to fetch the latest state for one hosted verification:
GET /v1/users/{user_id}/verifications to list hosted verification attempts:
method: "hosted" and include each covered document role in types.
Use the verification status together with Get User:
The
reasons field only appears when a verification status is failed.
Webhook events
Register webhooks for user lifecycle events so your system does not need to poll continuously after a final user-state change. Webhook events are signals to fetch the latest state, not the complete state by themselves.
Webhook delivery can be repeated. Deduplicate events by
event_id, return a 2xx response only after accepting the event, and fetch the latest user and verification state before changing what the user can do.
Retry guidance
Use Start verification from hosted flow to create a hosted verification. Do not call it repeatedly to refresh a session or link. Use these follow-up endpoints for the sameverification_id:
Only start a new hosted verification after a previous attempt reaches a terminal state and your Payward integration allows another attempt.