Locks the customer for review and starts the verification flow. The customer's verification_status flips out of PENDING (or REJECTED on re-submission).
Readiness check. This endpoint runs a set of checks before flipping the customer into PROCESSING. The same checks run on initial submission and on re-submission after a REJECTED verdict. If any check fails, the response is 422, the customer stays editable, and you can fix the gap and call /submit again.
For business customers, what we check depends on kyb_scope. Both scopes share the same identity baseline (business name, country, registration number, country of incorporation, formation document). The only difference: FULL also requires beneficial owners.
Individual customers
id_fileis uploaded (via the legacy/filesflow).
Business customers — both MINIMAL and FULL
business_nameis set.country(registered-address country) is set and a valid ISO 3166-1 alpha-2 code.registration_numberis set.incorporation_countryis set and a valid ISO 3166-1 alpha-2 code.countryequalsincorporation_country— a company's registered office sits in its country of incorporation by company law.- At least one document of a formation type:
CERTIFICATE_OF_INCORPORATION,ARTICLES_OF_INCORPORATION,BENEFICIAL_OWNERSHIP_CERTIFICATE,INCORPORATION_DOCUMENTS, orCAC_STATUS_REPORT.
Business customers (kyb_scope=FULL) — additional rules
- At least one owner is attached.
- The sum of every owner's
ownership_percentageequals exactly 100. - Owner emails are unique within the customer (case-insensitive).
- For each owner:
id_document_frontis uploaded;id_document_backis uploaded fordrivers_license,id_card, andresident_permittypes and absent forpassport. - For each owner that has the field set:
date_of_birthis at least 18 years ago,id_expiry_dateis strictly after today, andnationality/country/id_document_countryare valid ISO alpha-2 codes.
Owners are NOT required for MINIMAL customers. They're saved on the record if you upload them but they don't gate /submit.
What happens on success depends on customer type and your business settings:
- Individual + external KYC enabled → handed to the KYC provider for review.
- Individual + external KYC disabled → marked
VERIFIEDimmediately. - Business + auto-verify enabled → marked
VERIFIEDimmediately. EveryPENDINGandREJECTEDowner and document is also brought toAPPROVEDso the customer record is internally consistent. - Business + auto-verify disabled → moves to
PROCESSINGfor manual compliance review.
In the manual-review flow, every PENDING owner and every PENDING KYB document flips to PROCESSING along with the customer so they're visibly under review and frozen from further edits. Owners and documents that were already APPROVED or REJECTED from a prior cycle are not touched.
A customer.status_changed webhook fires for the customer-level transition. There are no per-owner or per-document webhooks.
Verification is not instant. For individual customers, review typically completes within minutes (up to 2 hours under additional screening). For business-type customers, review typically takes 1–5 business days. Do not escalate before the standard window — listen for the customer.status_changed webhook.
Required scope: customer:write.
Authorization
oauth2ClientCredentials customer:writeUse your OAuth client credentials to obtain a short-lived Bearer token from POST /oauth/token.
In: header
Scope: customer:write
Path Parameters
uuidResponse Body
application/json
application/json
application/json
curl --request POST \ --url 'https://example.com/api/external/customer/497f6eca-6276-4993-bfeb-53cbbbba6f08/submit'{ "message": "Customer submitted for verification successfully", "data": { "id": "019a6da3-4a9a-7033-81b9-12489eff13ee", "type": "business", "verification_status": "PROCESSING", "owners": [ { "id": "019a6e22-8b4c-7c8d-9d12-c0c1ab3f1a90", "first_name": "Jane", "status": "PROCESSING" } ], "documents": [ { "id": "019a6e10-1fb3-7b2f-8f8b-ad1e92c4017a", "type": "CERTIFICATE_OF_INCORPORATION", "status": "PROCESSING" } ] }}POSTUpload files for a customer
**Individual customers only.** Upload verification files for an individual customer. Use `file_id` values from the File API presigned upload. Newly uploaded files override previous records. The `id_file` must be uploaded for verification. **Do not call this endpoint for `type=business` customers.** Business-type customers use the KYB flow — see [Business customer KYB](/docs/guides/kyb/overview). The legacy `id_file_path` is not consulted by `/submit` for business customers, so calling this endpoint achieves nothing for them. The identity document must be a Driver's License, Passport, or Resident Permit. ID cards (National Identity Cards) are not accepted. No other document types are accepted. All uploaded documents must be clear, legible, and authentic — unclear images will be rejected. Fraudulent or falsified documents will result in the customer being permanently blacklisted from the platform. IMPORTANT: Verification is not instant. After documents are uploaded, they go through a review process. This typically takes a few minutes, but can take up to 2 hours if the documents require additional screening. Do not escalate before 2 hours — such enquiries will not be attended to. If verification has been pending for 5 hours or more, contact the operations team to expedite. Listen for the `customer.verified` or `customer.rejected` webhook to know when the review is complete. Required scope: `customer:write`.
POSTVerify customer with a Signa session
Verify an individual customer with a Signa session that your business already completed. Use this when the person already passed Signa verification, so that they do not send their documents again. **Conditions.** Blaaiz links the session only when all of these are true: - The session belongs to your business and its status is `APPROVED`. - The session requirements include `DOCUMENTS`. - Blaaiz approved the session in the last 365 days. - The verified document has not expired. - No other customer is linked to the session, and no other customer of your business has the verified document number. - The customer is an individual. Its status is `PENDING`, or `REJECTED` after a provider review. A customer that compliance review rejected cannot be linked. - The session is not the one that the customer already used. - The customer details agree with the verified person. Each name that you set must be in the verified name. If you set `dob` in the KYC data, it must be the same as the verified date of birth. If you set `id_type`, it must agree with the type of the verified document. **What happens on success.** The customer `verification_status` changes to `VERIFIED` at once, and a `customer.status_changed` webhook fires. Then Blaaiz copies the verified data to the customer: the name, the date of birth, the document number and dates, and the ID and selfie images. The verified data replaces the values that you sent. Blaaiz removes the images that you uploaded before the link. **Images.** Blaaiz keeps session images for 30 days. If you link an older session, Blaaiz cannot copy the images. Some services, for example USD virtual accounts, need the ID image. Required scopes: `customer:write` and `compliance-kyc:pii:read`. Signa must be enabled for your business.