Skip to main content
Karsa separates the identity of a record from the history of what your system reported about it. The first upload creates a stable resource and its first immutable version. Sending changed data with the same externalId appends another version to that resource.

Identifiers returned by every upload

  • resourceId is the stable Karsa identifier for the record. Use it when another record refers to this customer, account, transaction, document, or outcome.
  • versionId identifies the immutable snapshot written by this request.
  • currentVersionId identifies the latest version after the write.
  • outcome is CREATED, VERSION_CREATED, or UNCHANGED.

Relationship rules

  1. A KYB dossier, account, or transaction links a document by its immutable Document versionId.
  2. An account links to its verified owner with the Customer resourceId returned by the customer upload. Do not set customerId merely because a customer used or funded an external account.
  3. A transaction identifies known parties with Customer or Account resourceId values.
  4. An outcome belongs to exactly one Customer, Account, Transaction, or Document resourceId.
  5. Missing source values remain null; do not manufacture a counterparty or amount.
  6. A KYB dossier pins one business Customer versionId; it never follows the mutable current pointer.

Declare source completeness

After your source has delivered every record in a supported dataset for a bounded range, record a source checkpoint with POST /api/ingestion/source-checkpoints. Supported datasets are CUSTOMERS, KYB_DOSSIERS, ACCOUNTS, TRANSACTIONS, DOCUMENTS, OUTCOMES, SCREENING_OBSERVATIONS, and SCREENING_DISPOSITIONS. The checkpoint is an append-only attestation from the authenticated source; Karsa does not infer completeness from the records it happened to receive.
completeFrom is the earliest complete instant; use null only when the attestation covers the source’s full retained history. completeThrough is the exclusive upper bound. Checkpoints cannot move backwards. Monitoring routines resolve the latest checkpoint known at their frozen evidence cutoff and cite it alongside the source versions used by the calculation. A missing, stale, or too- narrow checkpoint makes coverage-dependent results inconclusive rather than clear.
The API Reference is generated from the validation contract enforced by the running API. Use it for the exact required fields, nullability, limits, examples, responses, and problem codes.