KYC seller onboarding
Verify an individual seller with an ID document and a selfie before their first listing or payout.
Use this when a person signs up to sell on your marketplace. One call checks their ID document, compares the document photo with a selfie, and screens their name against sanctions and PEP lists. You get one status back.
The flow#
- Your app collects a photo of the seller's ID document and a selfie. See Document and selfie capture.
- Your server sends both images, base64-encoded, to POST /api/v1/kyc/verify, with the seller's name in
metadata. - You store the
checkIdagainst the seller and act onstatus.
Send the check#
curl -sS -X POST 'https://api.trustverify.co.uk/api/v1/kyc/verify' \
-H "Authorization: Bearer $TRUSTVERIFY_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"documentType": "passport",
"documentImage": "<base64 of the document front>",
"selfieImage": "<base64 of the selfie>",
"metadata": {
"firstName": "Test",
"lastName": "Person",
"sellerId": "seller_123"
}
}'| Field | Required | Notes |
|---|---|---|
documentImage | Yes, or documentImageFront | Front of the document. JPEG or PNG, base64. |
documentImageBack | No | Back of the document, for ID cards and driving licences. |
selfieImage | Yes | A photo of the seller's face. |
metadata.firstName | When screening is on | Screening is on unless you send checks.amlScreening: false. |
metadata.lastName | When screening is on | |
generateReport | No | true adds a reportUrl for the RPT-001 PDF. |
The whole request body can be up to 10 MB. Keep each image under about 3 MB so a document front, back and selfie fit.
Read the result#
statusispassed,revieworfailed.signals.biometrics.faceMatchsays whether the selfie matched the document photo.signals.amlholds the screening result.- A signal is
nullwhen it was not assessed. Treatnullas "not checked", never as a pass.
Decide what review means for you
Hold sellers in review until someone on your team has looked at the check in the dashboard. Do not let them take payments in the meantime.
Test it#
With a test key, any base64 string works as an image and metadata.forceStatus picks the result. See Sandbox and test data.