Skip to main content

External Owner Verification

For an owner you already verified with your own identity provider (Sumsub, Jumio, your own stack): records that provider's name and raw result, which go to the verification provider with the owner in place of a generated summary. Sending it again replaces what was recorded.

The call carries no files: upload the owner's selfie and identity document first, with Beneficial Owner Documents. It does not approve the owner either. The owner is still verified with the business when you request verification; once its details and its face and document-front documents are complete, this call moves it to ready_for_review.

Takes a workspace-scoped API key or a dashboard session. An account-scoped key is refused with 401.

Replaces POST /api/v2/kyb/banking-verification/business/ownership/{ownerId}/submit-external-verification.

Authorization:

Every request is signed with your API key: a short-lived JWT, signed with your private key, sent in one header on /v3/* and /api/v2/* alike.

Headers:
Authorization: APIKey {SIGNED_JWT}

How to build and sign the JWT: Authentication.

Endpoint

POST

/v3/customers/{customer_id}/kyb/owners/{owner_id}/external-verification

Path parameters​

ParameterTypeDescription
customer_idstring (cst_…)Required. The business customer.
owner_idstring (kyc_…)Required. The owner.

Request Body Sample​

{
"provider": "sumsub",
"raw": {
"applicantId": "66f1c2a9e4b0",
"reviewResult": { "reviewAnswer": "GREEN" }
}
}

Request Body Schema​

FieldTypeDescription
providerstringRequired. Your identity provider's name, free text, e.g. sumsub. Trimmed, and cut at 60 characters.
rawobject or arrayRequired. That provider's result, stored as is. A JSON object or array; a string holding one is also accepted.

Response Sample​

{
"id": "kyc_01m24j6zr0eb8b8d54kgcyp194",
"status": "ready_for_review",
"status_reason": "owner data and evidence complete",
"first_name": "Samantha",
"last_name": "Reyes",
"email": "samantha@acmerobotics.example.com",
"phone": "+14155550187",
"date_of_birth": "1990-04-12",
"nationality": "US",
"address": {
"line1": "742 Valencia St",
"line2": "Apt 3",
"city": "San Francisco",
"state": "CA",
"postal_code": "94110",
"country": "US"
},
"identity_document": {
"number": "X1234567",
"type": "passport",
"issue_date": "2018-03-01",
"expiry_date": "2028-03-01",
"country_of_issue": "US"
},
"title": "CEO",
"ownership_percentage": 51,
"is_primary": true,
"ready": true,
"external_verification_provider": "sumsub",
"external_verification_raw": {
"applicantId": "66f1c2a9e4b0",
"reviewResult": { "reviewAnswer": "GREEN" }
},
"event_history": [
{ "status": "ready_for_review", "status_reason": "owner data and evidence complete", "date": "2026-09-09T15:40:00Z" },
{ "status": "pending", "status_reason": "owner added", "date": "2026-09-09T15:02:00Z" }
],
"created_at": "2026-09-09T15:02:00Z",
"updated_at": "2026-09-09T15:40:00Z"
}

Response Schema​

The owner, as in Add a Beneficial Owner, with external_verification_provider and external_verification_raw echoing what was recorded.

Errors​

StatusmessageWhen
400failed to parse requestThe body is not valid JSON, or a path id is not a TypeID of its kind.
400invalid_external_providerprovider is only whitespace.
400invalid_external_rawraw is not a JSON object or array.
401unauthorizedMissing or invalid signature, or an account-scoped key or customer session.
403forbiddenA dashboard member whose role does not allow this. A workspace-scoped key always may.
404customer_not_foundNo such customer in the workspace.
404kyb_not_foundThis customer has no record.
404kyb_owner_not_foundNo such owner on this business.
409kyb_verification_in_flightThe owner is in_review.
409kyb_already_approvedThe owner is approved.
409kyb_rejectedThe owner is rejected.
422Validation failedprovider or raw is missing; details names it.

Coming from v2​

v2 (POST …/ownership/{ownerId}/submit-external-verification)v3
ownerId (path, uuid)customer_id (cst_…) and owner_id (kyc_…), both in the path
multipart/form-data with the files face, documentFront, documentBackJSON only; the files are uploaded first with owner documents, in the slots face, document-front, document-back
provider, raw (form fields)provider, raw (JSON body)
sets the owner approved on the spotrecords the evidence; the owner is verified with the business at request verification
409 when the owner is approved or in_review409 kyb_already_approved or kyb_verification_in_flight, and 409 kyb_rejected for a rejected owner

Support and Resources​

If you need assistance or have any questions, our support team is here to help. You can contact our support team at support@blockwyre.com.

Stay Updated​

Stay up-to-date with the latest news, updates, and features from BlockWyre by following us on social media:

We are excited to have you on board and look forward to seeing how you leverage BlockWyre's powerful tools to enhance your financial operations. Happy integrating!