This guide walks you through ingesting KYC/KYB Verifications — records that capture the outcome of identity checks performed by external providers such as SumSub, Persona, or any other KYC/KYB vendor. Full API reference is available in the API Reference.Documentation Index
Fetch the complete documentation index at: https://docs.corsa.finance/llms.txt
Use this file to discover all available pages before exploring further.
Before ingesting verifications, make sure the related client has already been ingested. See the Ingesting Clients guide.
All SDK examples assume you have initialized the Corsa client as shown in the Node.js SDK Configuration or Python SDK Configuration guide.
Overview
A verification represents a single identity check run against a client by an external KYC/KYB provider. Corsa normalizes the result into a unifiedstatus field while also preserving the provider’s raw status for audit purposes.
Each verification belongs to exactly one client and is uniquely identified by the combination of provider + providerId.
Verification statuses:
| Status | Meaning |
|---|---|
REQUESTED | Verification has been requested but not yet started |
PENDING | Verification is in progress at the provider |
APPROVED | Client passed the verification check |
REJECTED | Client failed the verification check |
EXPIRED | Verification expired before completion |
CANCELLED | Verification was cancelled |
Step 1: Create a Verification
Endpoint:POST /v1/clients/{clientId}/verifications
Returns 409 Conflict if a verification with the same provider + providerId already exists for this client.
Request Fields
| Field | Required | Description |
|---|---|---|
provider | Yes | KYC/KYB provider name (e.g. SUMSUB, PERSONA) |
providerId | Yes | Unique verification ID in the provider’s system |
providerStatus | Yes | Raw status string from the provider (e.g. completed, pending) |
status | Yes | Corsa-normalized status: REQUESTED, PENDING, APPROVED, REJECTED, EXPIRED, or CANCELLED |
providerLink | No | Direct link to this verification in the provider’s dashboard |
reviewComment | No | Summary of the verification outcome |
rejectLabels | No | Array of provider-specific rejection reason labels |
startedAt | No | ISO 8601 timestamp when the verification was initiated |
completedAt | No | ISO 8601 timestamp when the verification was completed |
checks | No | Array of individual checks performed (e.g. identity, document, liveness) |
metadata | No | Additional provider-specific data as a JSON string |
Step 2: Update a Verification
Endpoint:PUT /v1/clients/{clientId}/verifications/{verificationId}
Use this endpoint to update a verification when its status changes at the provider — for example, when a PENDING check is completed.
Step 3: Look Up a Verification
Endpoint:GET /v1/clients/{clientId}/verifications/lookup?provider={provider}&providerId={providerId}
Use this to retrieve an existing verification by provider + providerId without storing the Corsa verification ID on your side.
Verification Response
A successful create or update returns the full verification object:Integration Pattern
The typical flow when integrating with a KYC provider:- Client submits verification at your platform — create a
PENDINGverification in Corsa. - Provider webhook fires with the result — update the verification status in Corsa.
- Corsa reflects the updated status on the client profile for compliance review.