Skip to main content
A Transaction is a movement of value reported by your system. It can contain a sent leg, a received leg, or both, and must identify at least one known customer or account. Karsa does not require you to invent a counterparty that your source does not know.

What to send

Money values are decimal strings, not floating-point numbers.

Upload a transaction

Subject fields use Karsa resourceId values returned by earlier customer uploads.

Update a transaction

Use the Karsa resourceId in the path. Stable identifiers and transactionType are not replaceable. Omitted mutable fields carry forward from the current version and an explicit null clears a nullable value. Supplying fees, providerReferences, or documents replaces that complete collection in the new snapshot; omitting a collection carries it forward.
The response has outcome: "VERSION_CREATED" and identifies the newly current immutable version.

Validation rules

  • At least one customer or account subject is required.
  • At least one sent or received money pair is required.
  • An amount and its currency must either both be present or both be null.
  • The same rule applies to the optional normalized money pair.
  • Document relationships use immutable Document versionId values.
  • Fee and provider-reference amounts are decimal strings; collection order is preserved.

Versioning and deduplication

POST remains compatible with complete source snapshots. PUT is the explicit partial update route: it merges supplied mutable fields with the current version and appends a complete immutable TransactionVersion. Use a new idempotency key when source data changes and reuse the original key only when retrying the same logical write to the same path.
  • Customers: upload known parties before referencing them
  • Documents: link transaction attachments by version
  • Outcomes: attach a source result to a transaction