type to BUSINESS when creating a
business and INDIVIDUAL when creating a person.
There are two supported ways to provide business data:
The atomic route is a convenience operation over the Customer model. It does not create a separate
kind of Business resource.
Before you send the request
You need:- your Karsa API base URL;
- a source-bound bearer credential;
- one stable source identifier for the business;
- one stable source identifier for every UBO;
- unique source identifiers for every ownership and role relationship; and
- one stable
Idempotency-Keyfor this complete onboarding attempt.
externalId when retrying the same
customer.
Treat dossier.sourceEffectiveAt as the business-time cutoff for the complete snapshot. The
business and every beneficial owner’s effectiveAt must be at or before that cutoff. Karsa may
receive and record the request later; those availability timestamps do not move the historical
business-time cutoff.
One request supports at most 50 beneficial owners, 10 role assignments per owner, and 100 total
ownership plus role relationships. The complete dossier rules also apply: relationship IDs and
provider evidence type/source-record pairs must be unique, every referenced related party must be
declared, and all provider evidence must belong to one package with one snapshot observation time
no later than sourceEffectiveAt.
Send the canonical three-Customer request
This request creates Example Manufacturing LLC plus Ada and Grace as two separate individual Customers. The two ownership percentages add to 100%, but Karsa does not require every business to use that exact total because sources may provide incomplete or indirect ownership.null when your source states that a nullable fact is unavailable. Do not remove
required keys or invent placeholder values. The API Reference is authoritative for the complete
field constraints.
Read the response
The response gives the business and each UBO a distinct stable CustomerresourceId:
resourceId values. The UBO IDs can be referenced anywhere another
individual Customer can be referenced.
How the API ingests this request
The supported integration boundary is the HTTP API. Karsa processes this request as follows:- Fastify authenticates the bearer credential and binds the request to its tenant and source.
- The request schema validates the business, every complete
INDIVIDUALUBO profile, every relationship, and the same complete dossier contract used by the standalone KYB endpoint before any records are committed. - The idempotency receipt and one database transaction cover the complete onboarding operation.
- The business and every UBO pass through the same Customer ingestion path used by
POST /api/ingestion/customers. - Karsa creates the ownership and role relationships, pins the dossier to the returned business CustomerVersion and the stated business-time cutoff, creates its durable Case, and queues the internal KYB workflow.
- The transaction commits and the API returns all Customer, relationship, dossier, Case, and internal workflow identifiers.
What Karsa commits
Karsa validates the whole request before committing it. One successful request writes:- one stable business Customer and its immutable CustomerVersion;
- one stable individual Customer and CustomerVersion for every UBO;
- versioned beneficial-ownership and role relationships from each UBO Customer to the business Customer;
- one immutable KYB dossier pinned to the business CustomerVersion;
- one durable Case in
PROCESSING; and - one queued internal KYB workflow run.
Retry safely
After a timeout or ambiguous network response, send the exact same body with the sameIdempotency-Key. Karsa returns the original response instead of creating duplicate Customers,
relationships, dossiers, Cases, or workflow runs.
Use a new idempotency key only for a new logical submission. Keep each source externalId stable so
later observations append immutable versions to the same Customer identity.
Use separate requests when you need more control
You can instead create the business and each person separately throughPOST /api/ingestion/customers, then submit the KYB dossier. That pattern is useful when the people
already exist as Customers or arrive at different times. Use the atomic onboarding route when your
system needs certainty that the business and every supplied UBO were accepted together.
Related
- Customers: understand business and individual Customer records
- KYB dossiers: submit evidence for an existing business CustomerVersion
- Upload flow: connect documents, accounts, transactions, and outcomes
- API Reference → Customers → Create a business and its UBO customers: inspect every field and error