Skip to main content
This guide walks you through ingesting client data into Corsa. Clients are the foundation of your compliance data - all transactions, alerts, and cases are linked back to them. Full API reference is available in the API Reference.
All SDK examples on this page assume you have initialized the Corsa client as shown in the SDK Configuration guide.

Overview

Corsa supports two types of clients:
  • Individuals - Natural persons (retail customers).
  • Corporates - Legal entities (businesses, organizations).
Both types support upsert behavior: if a client with the same 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

CategoryFields
Personal InformationName, Date of Birth, Gender, Citizenship
DocumentsPassport, Driver’s License, etc. (managed via identity verification integrations)
AddressResidential address
Contact DetailsEmail, Phone Number

Corporate Clients

CategoryFields
Entity DetailsLegal Name, Registration Number, Date of Incorporation
Business InfoIndustry, Business Type, Description
StructureOwnership type, Complexity
MembersAssociated 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).
POST /v1/clients/individuals?upsert=true
Content-Type: application/json

{
  "referenceId": "USER-12345",
  "accountStatus": "APPROVED",
  "activityStatus": "ACTIVE",
  "general": {
    "firstName": "John",
    "lastName": "Doe",
    "dateOfBirth": "1985-06-15",
    "citizenship": "USA",
    "personalId": "123-45-6789",
    "gender": "MALE"
  },
  "address": {
    "addressLine1": "123 Main St",
    "city": "New York",
    "country": "USA",
    "postalCode": "10001"
  },
  "contact": {
    "emailAddress": "john.doe@example.com",
    "phoneNumber": "+1-555-0199"
  },
  "tags": ["retail", "high-volume"]
}
The response will include the Corsa-generated client 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.
POST /v1/clients/corporates?upsert=true
Content-Type: application/json

{
  "referenceId": "CORP-98765",
  "accountStatus": "APPROVED",
  "activityStatus": "ACTIVE",
  "general": {
    "legalEntityName": "Acme Innovations LLC",
    "dateOfIncorporation": "2018-04-12",
    "countryOfIncorporation": "USA"
  },
  "business": {
    "industry": "Technology",
    "description": "SaaS provider for financial services",
    "businessType": "FINANCIAL_INSTITUTIONS",
    "incorporationType": "LIMITED_LIABILITY_COMPANY"
  },
  "address": {
    "registrationAddress": {
      "addressLine1": "456 Tech Park Blvd",
      "city": "Austin",
      "country": "USA",
      "postalCode": "73301"
    }
  },
  "tags": ["enterprise", "saas"]
}

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 /v1/clients/individuals/client-uuid-123

Get a Corporate Client

Endpoint: GET /v1/clients/corporates/{clientId}
GET /v1/clients/corporates/client-uuid-456

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}
PUT /v1/clients/individuals/client-uuid-123
Content-Type: application/json

{
  "general": {
    "firstName": "John",
    "lastName": "Doe-Smith"
  },
  "contact": {
    "emailAddress": "john.doesmith@example.com"
  },
  "accountStatus": "APPROVED",
  "activityStatus": "ACTIVE"
}

Update a Corporate Client

Endpoint: PUT /v1/clients/corporates/{clientId}
PUT /v1/clients/corporates/client-uuid-456
Content-Type: application/json

{
  "activityStatus": "ACTIVE",
  "accountStatus": "APPROVED",
  "business": {
    "industry": "Financial Services",
    "description": "Updated business description"
  }
}

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.