All SDK examples on this page assume you have initialized the Corsa client as shown in the Node.js SDK Configuration or Python SDK Configuration guide.
Overview
Corsa supports two types of clients:- Individuals - Natural persons (retail customers).
- Corporates - Legal entities (businesses, organizations).
referenceId already exists, it will be updated instead of duplicated.
Step 1: Prepare Your Client Data
Before calling the API, gather the required data for each client type.Individual Clients
| Category | Fields |
|---|---|
| Personal Information | Name, Date of Birth, Gender, Citizenship |
| Documents | Passport, Driver’s License, etc. (managed via identity verification integrations) |
| Address | Residential address |
| Contact Details | Email, Phone Number |
Corporate Clients
| Category | Fields |
|---|---|
| Entity Details | Legal Name, Registration Number, Date of Incorporation |
| Business Info | Industry, Business Type, Description |
| Structure | Ownership type, Complexity |
| Members | Associated Members (Individual or Corporate) who act as UBOs, Directors, or Signatories |
Step 2: Ingest Individual Clients
Endpoint:POST /v1/clients/individuals
Use the upsert=true query parameter to update an existing client if they already exist (matched by referenceId).
id - save this for linking transactions and alerts later.
Step 3: Ingest Corporate Clients
Endpoint:POST /v1/clients/corporates
Use this endpoint to onboard business entities.
Step 4: Retrieve a Client
Use the GET endpoints to fetch client data by their Corsa-generated ID.Get an Individual Client
Endpoint:GET /v1/clients/individuals/{clientId}
Get a Corporate Client
Endpoint:GET /v1/clients/corporates/{clientId}
Step 5: Update a Client
Use the PUT endpoints to update existing client data. All fields are optional on update - only include the fields you want to change.Update an Individual Client
Endpoint:PUT /v1/clients/individuals/{clientId}
Update a Corporate Client
Endpoint:PUT /v1/clients/corporates/{clientId}
Step 6: Bulk Update Clients
Apply the same field changes to up to 100 clients in a single request. Use this when you need to update risk assessments, statuses, or screening results across a group of clients at once.Bulk Update Individual Clients
Endpoint:PATCH /v1/clients/individuals/bulk/update
Bulk Update Corporate Clients
Endpoint:PATCH /v1/clients/corporates/bulk/update
Bulk Update Request Fields
| Field | Required | Description |
|---|---|---|
clientIds | Yes | Array of client IDs or referenceIds to update (maximum 100). |
update | Yes | Fields to apply to every client in the list. |
update.accountStatus | No | APPROVED, WAITING_FOR_REVIEW, IN_REVIEW, REJECTED, OFF_BOARDED, FROZEN, PENDING_DOCUMENTS, CLOSED_BY_CLIENT, APPLICATION_IN_PROGRESS. |
update.activityStatus | No | ACTIVE or NOT_ACTIVE. |
update.sanctionsStatus | No | CLEAR, FLAGGED, UNDER_REVIEW, NOT_CHECKED. |
update.pepStatus | No | CLEAR, FLAGGED, UNDER_REVIEW, NOT_CHECKED. |
update.adverseMediaStatus | No | CLEAR, FLAGGED, UNDER_REVIEW, NOT_CHECKED. |
update.currentRisk | No | Risk assessment object (score, level, reason, calculatedAt). |
update.tagsToAdd | No | Tags to add (additive — existing tags are preserved). |
update.tagsToRemove | No | Tags to remove. |
update.customFields | No | Key-value custom fields. |
Bulk Update Response
What’s Next?
Once your clients are ingested, add their members, accounts, and transactional data.Ingest Members
Add UBOs, directors, and signatories to corporate clients.
Accounts & Wallets
Ingest bank accounts and blockchain wallets.
Ingest Operations
Ingest deposits, withdrawals, and trades.