Skip to main content
Use the backend verification API when your backend already collects KYC evidence and needs Payward to process it. Your backend submits HTTPS evidence URLs and metadata. Payward starts asynchronous verification processing and updates the user’s verification state. This API is similar to Submit Verification from URL. Use Submit Verification from URL when your integration already verified the evidence and Payward should trust the verifier result. Use Start Verification from URL when Payward should verify the submitted evidence. Do not call this API from a browser or mobile client. It uses your API credentials and points to sensitive document evidence.
Backend verification is asynchronous. Treat the start response as confirmation that Payward recorded the verification, not as a final verification decision.

How it works

1

Create or update the user

Create the Payward user and provide the profile fields required for onboarding.
2

Store evidence

Store the document or liveness image files behind HTTPS presigned URLs on domains allowlisted for your integration.
3

Start a backend verification

Call POST /v1/users/{user_id}/verifications/start/url once for each verification type you need to submit.
4

Track status

Use Get verification to fetch one verification by ID, or list attempts with List verifications until each reaches a terminal status.
5

Reconcile the user

Fetch the user with Get User and use verification failure details according to your integration’s handling rules.

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 backend verification, create the user and provide the profile fields required for onboarding. Use these endpoints before starting verification: Store the user ID. Start Verification from URL uses it as the user_id path parameter.

Step 2 - Store evidence

Store files behind HTTPS presigned URLs on domains allowlisted for your Payward integration. Evidence URL fields must use https:// URLs. Accepted evidence depends on the verification type: Status responses report document roles in types and the evidence collection channel in method. Backend URL submissions use method: "url" and include one value in types. The start request does not include verifier, verified_at, verifier_response, or verifier_response_url. Those fields belong to Submit Verification from URL because that endpoint trusts a verifier result supplied by your integration.

Step 3 - Start a backend verification

Submit one verification per Start Verification from URL request:
The request body uses a type discriminator.

Identity document

Residence document

Liveness

A successful response returns the public verification ID:
Store verification_id. You need it for reconciliation and support.

Step 4 - Track status

Use GET /v1/users/{user_id}/verifications/{verification_id} to fetch the latest state for one verification:
If you do not have the verification ID, use GET /v1/users/{user_id}/verifications:
verifications is returned in reverse chronological order. Example status response:

Statuses

Failure reasons

Failure reasons use this shape:
Treat code as informational unless your Payward integration defines specific handling. Display details, but do not parse or branch on it.

API reference