Skip to main content
Submit verification evidence is a private endpoint for approved partner integrations. Confirm enablement, accepted evidence, and source domains with Payward before sending requests.
Use partner-managed verification when your business has already verified a user and has approval to submit that verification to Payward. You submit profile data and supporting evidence through separate requests. Payward makes the final eligibility decision. If you need Payward to collect and verify evidence, see Hosted KYC. Partner-managed verification supports only countries in the European Economic Area (EEA).

Integration sequence

1

Create the user and read requirements

Create the account using your stable external reference. Read the user’s current verification requirements.
2

Update the profile

Submit the user’s name, date of birth, and residence country through Update verification profile. Collect additional fields as required by the user’s country and onboarding policy.
3

Submit verification evidence

Provide each file through an HTTPS URL on an approved source domain. Submit the file source with its verifier provenance and a UUID idempotency key.
4

Reconcile status and requirements

Follow verification notifications and read the latest state. Resolve outstanding requirements. An accepted submission does not mean onboarding is complete.

Authenticate and prepare access

Call the PWS API from your backend using API-Key, API-Timestamp, and API-Sign. Follow Authentication to calculate a fresh signature over each exact request. The signature must match the body you send, including on retries. Never expose your signing key to browsers or mobile clients. Payward must approve your integration and the domains used to retrieve evidence. Keep the evidence and verifier records you need in your own system under your agreed retention policy.

Create the account and read requirements

Use Create user with your stable external_reference. Email is optional.
Retain the returned data.id, for example AA45N8G4MLDYWAR7, and use it as user_id in subsequent calls. Call Get verification requirements:
Read state, user_action_required, and the ordered required_actions: Requirements can change after onboarding. Fetch them again after changes and webhook notifications. Do not treat this guide’s examples as a universal list of required fields.

Update the verification profile

Call Update verification profile at PATCH /v1/users/{user_id}/verifications/profile. Supply only the profile fields you want to change. Omitted fields remain unchanged. Profile completeness is evaluated across onboarding, rather than independently for each update. Submit the user’s full name, date of birth, and residence country before completing document verification. Document submissions do not update these profile fields. The following example collects profile details for a user in Germany:
Save the body as profile.json, calculate the request signature, and submit it:
The response acknowledges the update:
Profile updates do not require an Idempotency-Key. Updating verified profile data may re-trigger identity verification. Read requirements again after the update.

Field and country requirements

  • When you supply full_name, include first_name and last_name.
  • When you supply residence, include line1, city, postal_code, and country.
  • Empty nationalities and tax_ids arrays leave existing values unchanged. You cannot clear them with an empty array.
Use only the fields in Update verification profile. The request does not accept delete_fields or terms_acceptance.

Provide the files

Provide each file as a source object containing https_url. This applies to document fronts and backs, residence documents, selfies, and partner_result.response_file. Host the file on an approved source domain:
The verification processor must be able to retrieve the file without your PWS credentials. Keep the URL accessible until retrieval completes. A successful submission does not establish that retrieval has completed. If retrieval fails because the URL expires or becomes inaccessible, make the file available again and submit it with a new key. Keep the original request unchanged when retrying an uncertain response. Confirm which formats are accepted for your document or verifier response file with Payward.

Include verifier provenance

Every evidence submission request requires partner_result. Include the result that supports that request: Provide either response or response_file, never both. You can omit both to submit provenance without the raw response. Preserve the verifier’s own structure when providing an inline response.

Submit verification evidence

Call Submit verification evidence at POST /v1/users/{user_id}/verifications/evidence. Use a new UUID Idempotency-Key for each new submission. The UUID string must have exactly 36 characters, including hyphens.

Identity document

Include the document type, number, issuing country, and front source. You can also supply the nationality and expiration date shown on the document. Include the reverse side when applicable. Omit back for passports.
Save the body as document.json and submit it:

Residence document

Include address.line1, address.city, and address.postal_code for every supported country. The residence country comes from the user’s profile. You can also supply address.line2, address.province, and the document’s expiration date when applicable.

Selfie or liveness video

Set selfie.type to image for a selfie image or video for a liveness video that your verifier has already checked. This example provides HTTPS URLs for the video and the verifier response file:

Read the submission result

A successful evidence submission returns its verification identifier and current lifecycle status:
Store the ID against your submission. Acceptance records the evidence for processing; it does not establish that onboarding is complete.

Retry evidence submissions

Reuse an idempotency key only when retrying the same submission. Reusing it with different metadata or sources returns 409 with error code conflict. Use a new key when you correct evidence or change a source URL. For a timeout, lost response, or retryable server error, retain the unchanged body and key. Calculate fresh API authentication for the retry. Read status and requirements before submitting further evidence.

Follow status and notifications

Use Get verification for a returned ID and List verifications to reconcile attempts. The lifecycle statuses are started, pending, completed, and failed. A completed verification does not necessarily mean the user is eligible for services. Read Get verification requirements for the user’s current state and required actions. A wait action is non-actionable. Do not treat an empty actionable list as approval or a closed user as eligible. Register notifications through Create webhook: Verify webhook signatures and handle duplicate, delayed, and reordered notifications. Fetch current state before acting on an event. Poll the read APIs with backoff when notifications are delayed or missed.

Handle failures

Reconcile current requirements and user state before enabling services for a user.