---
title: "Submit customer for verification"
method: POST
path: "/verifications"
tags: ["KYC/KYB Verifications"]
---

# Submit customer for verification

`POST /verifications`

Trigger KYC (individual) or KYB (business) verification for a customer. The response indicates whether all required information has been provided. If data is missing, the `errors` array describes exactly what needs to be supplied before verification can proceed.

Call this endpoint again after resolving errors to re-submit.

## Request body

- VerificationRequest
  - `customerId` string, required — The ID of the customer to verify

## Response `200`

Verification status returned. Check `verificationStatus` and `errors` to determine next steps.

- Verification
  - `id` string, required — Unique identifier for this verification
  - `customerId` string, required — The ID of the customer being verified
  - `verificationStatus` 'RESOLVE_ERRORS' | 'PENDING_MANUAL_REVIEW' | 'IN_PROGRESS' | 'APPROVED' | 'REJECTED' | 'READY_FOR_VERIFICATION', required — Current status of the KYC/KYB verification
  - `errors` VerificationError[], required — List of issues preventing verification from proceeding. Empty when verificationStatus is APPROVED or IN_PROGRESS.
    - `resourceId` string, required — ID of the resource with the issue (Customer, BeneficialOwner, or Document)
    - `type` 'MISSING_FIELD' | 'INVALID_FIELD' | 'MISSING_LEGAL_PRESENCE_DOCUMENT' | 'MISSING_CONTROL_STRUCTURE_DOCUMENT' | 'MISSING_OWNERSHIP_STRUCTURE_DOCUMENT' | 'MISSING_PROOF_OF_ADDRESS_DOCUMENT' | 'MISSING_IDENTITY_DOCUMENT' | 'INVALID_DOCUMENT' | 'EXPIRED_DOCUMENT' | 'POOR_QUALITY_DOCUMENT' | 'SUSPECTED_FRAUD_DOCUMENT' | 'WRONG_DOCUMENT_TYPE' | 'INCOMPLETE_DOCUMENT' | 'UNREADABLE_DOCUMENT' | 'DOCUMENT_VERIFICATION_FAILED' | 'APPLICANT_SANCTIONED' | 'APPLICANT_FRAUD' | 'APPLICANT_CRIMINAL_RECORD' | 'APPLICANT_REJECTED' | 'MISSING_BENEFICIAL_OWNER', required — Type of verification error. The category-specific MISSING_*_DOCUMENT types indicate which document category is needed. Document quality types (POOR_QUALITY_DOCUMENT, SUSPECTED_FRAUD_DOCUMENT, etc.) indicate specific issues with uploaded documents. APPLICANT_* types indicate issues with the applicant themselves (sanctions, fraud, criminal records).
    - `field` string — Dot-notation path to the field with the issue. Present when type is MISSING_FIELD or INVALID_FIELD.
    - `acceptedDocumentTypes` DocumentType[] — Document types that would satisfy this requirement. The integrator can upload any one of the listed types. Present when type is MISSING_LEGAL_PRESENCE_DOCUMENT, MISSING_CONTROL_STRUCTURE_DOCUMENT, MISSING_OWNERSHIP_STRUCTURE_DOCUMENT, MISSING_PROOF_OF_ADDRESS_DOCUMENT, MISSING_IDENTITY_DOCUMENT, INVALID_DOCUMENT, or EXPIRED_DOCUMENT. | Error Type | Accepted Document Types | |---|---| | MISSING_LEGAL_PRESENCE_DOCUMENT | CERTIFICATE_OF_INCORPORATION, ARTICLES_OF_INCORPORATION, ARTICLES_OF_ASSOCIATION, STATE_REGISTRY_EXCERPT | | MISSING_CONTROL_STRUCTURE_DOCUMENT | DIRECTOR_REGISTRY, TRUST_AGREEMENT, STATE_COMPANY_REGISTRY, PARTNERSHIP_CONTROL_AGREEMENT | | MISSING_OWNERSHIP_STRUCTURE_DOCUMENT | SHAREHOLDER_REGISTER, TRUST_AGREEMENT, PARTNERSHIP_AGREEMENT | | MISSING_PROOF_OF_ADDRESS_DOCUMENT | UTILITY_BILL, RENT_OR_LEASE_AGREEMENT, ELECTRICITY_BILL, BANK_STATEMENT, TAX_RETURN | | MISSING_IDENTITY_DOCUMENT | PASSPORT, DRIVERS_LICENSE, NATIONAL_ID |
    - `reason` string, required — Human-readable description of the issue
  - `createdAt` string, date-time, required — When this verification was created
  - `updatedAt` string, date-time — When this verification was last updated

## Other responses

- `400` — Bad request - Invalid parameters
- `401` — Unauthorized
- `404` — Customer not found
- `500` — Internal service error

---

[API](https://skmtc.net/lightsparkdev/apis/grid-api.md) · [All operations](https://skmtc.net/lightsparkdev/apis/grid-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/lightsparkdev/grid-api/versions/d0bce562bffd/schema)
