Product Primitive

Ledgers That Keep Money State Visible

Anchor payments, transfers, accounts, and reconciliation in ledger behavior that remains inspectable after retries, provider drift, and support escalation.

  • 01Minor-unit entries
  • 02Double-entry discipline
  • 03Audit-linked history
Fig 01operating model

Every money mutation becomes balanced entries, explicit posting state, and exportable evidence.

Entrypoint

POST /ledger-entries

01Intent

Receive money intent

Payments, transfers, cards, or account changes declare what should move.

02Balance

Create debit and credit

Minor-unit ledger entries preserve exact accounting behavior.

03Post

Commit mutation

Posting boundaries prevent duplicate effects under replay pressure.

04Event

Publish ledger event

Downstream systems receive signed state changes with correlation identifiers.

05Export

Seal audit packet

Finance and compliance can inspect the actor, tenant, policy, and entries.

Events emitted

ledger.entry.createdledger.entry.postedledger.balance.updatedledger.export.ready

Evidence retained

debit_accountcredit_accountminor_unitsposting_idcorrelation_id
Fig 02failure paths

Ledger mutations remain explainable.

Every debit, credit, posting boundary, replay decision, and exportable audit record stays tied to the money movement.

01

Replay pressure

Incident

A service retries the same money-writing operation after losing its response.

Zentra path

The posting boundary resolves replay posture before balances can change again.

Evidence

Posting ID, idempotency key, debit account, credit account, and replay result are retained.

02

Balance investigation

Incident

Finance needs to explain why an account balance changed during closeout.

Zentra path

Entries, source event, actor, and policy context are available from one ledger trail.

Evidence

Entry IDs, minor units, source event, account IDs, and timestamp are retained.

Fig 03api to product state

The integration creates visible state.

One call to POST /ledger-entries produces status, emitted events, and retained evidence a team can inspect without leaving the product surface.

post ledger entryrequest
await zentra.ledgers.post({
  debit: "customer_balance",
  credit: "reserved_balance",
  amount_minor: 125000,
  idempotency_key: "led_8172"
})

product consequence

status
posted
event
ledger.entry.created
evidence
debit_account
entrypoint
POST /ledger-entries
Fig 04capability model
01

Minor-unit entries

Represent money without floating-point ambiguity or hidden rounding behavior.

02

Double-entry discipline

Preserve debit and credit balance across holds, releases, reversals, and settlement.

03

Idempotent posting

Protect ledger mutation boundaries when clients, providers, or services retry.

04

Audit-linked history

Attach actor, tenant, timestamp, policy, and event context to each money storyline.

Visual center

Ledger spine

Minor-unit debits and credits tied to actors, tenants, policies, and event history.

Fig 05operational proof

Evidence that holds when production gets noisy.

State, actor, tenant, signature, and policy context remain reviewable after the happy path breaks — written to be checked by operators and compliance teams, not admired in a deck.

01

Ledger behavior is treated as product surface, not an internal accounting detail.

02

Retries and duplicate callbacks resolve against explicit mutation boundaries before balances change.

03

Finance, support, and compliance teams inspect one ledger-backed event trail instead of parallel records.