ConstReadonlyAMOUNT_OVERFLOW: "MONEY.OVERFLOW"A money amount fell outside the signed 64-bit range the ledger's BIGINT columns store,
enforced at construction instead of at the database.
ReadonlyCHAIN_BROKEN: "CHAIN.BROKEN"The hash chain failed to verify: a stored hash no longer matches the one recomputed from its posting, so the ledger has been tampered with. Thrown before a checkpoint is signed, so no attestation is produced over a broken chain. Last-resort integrity fault, never an expected "no", hence a thrown fault rather than a RejectionCode.
ReadonlyCOMMINGLING: "LEDGER.COMMINGLING"A posting tried to mix custodial funds (money the platform owes users and must hold real money against) with funds it does not owe, such as revenue. Those two kinds must stay in separate accounts, so this is a thrown safety fault deep in the treasury path, never an expected "no".
ReadonlyCONFIG_INVALID: "CONFIG.INVALID"Configuration failed to load or validate. Thrown at startup so a bad config stops the service immediately rather than failing later.
ReadonlyCURRENCY_MISMATCH: "LEDGER.CURRENCY_MISMATCH"A single posting tried to combine two different currencies.
ReadonlyINVALID_AMOUNT: "MONEY.INVALID_AMOUNT"A money amount was invalid (for example, negative or not a whole minor unit).
ReadonlyINVALID_SIGNATURE: "AUTH.INVALID_SIGNATURE"A cryptographic signature didn't verify. Thrown in src/server.ts when an inbound webhook's HMAC signature fails to match, before any state is changed; outer layers map this to HTTP 401.
ReadonlyINVALID_TRANSITION: "SAGA.INVALID_TRANSITION"ReadonlyLEDGER_UNBALANCED: "LEDGER.UNBALANCED"A posting's debits and credits didn't add up to zero, so the books wouldn't balance.
ReadonlyMALFORMED_OPERATION: "OP.MALFORMED"The request was structurally wrong (missing or invalid fields).
ReadonlyOVERDRAFT: "LEDGER.OVERDRAFT"A balance that's never supposed to go negative did. Ordinary shortfalls are declined up front as INSUFFICIENT_FUNDS, so reaching this fault means a bug let a balance slip below zero.
ReadonlyPROVIDER_FAILURE: "PROVIDER.FAILURE"An external provider or injected port failed: a payout rail, a dispatcher, a float or reconcile feed. Dead-letter reasons carry this so the operator pages the right owner.
ReadonlySESSION_MISROUTED: "SESSION.MISROUTED"A scope's traffic reached a node its router assignment doesn't name. Accepting it would
fork the scope's single-writer lane, so the node refuses; the caller re-sends to the owner
named in detail.owner.
ReadonlySESSION_SETTLED: "SESSION.SETTLED"A netting session that already settled was asked to take another movement. Settlement txn ids derive from the session id, so a settled session can never safely settle again; the caller rotates to a new session id (epoch) instead.
ReadonlySTORE_FAILURE: "STORE.FAILURE"The storage layer failed. Reserved for the store paths that mean it (see normalizeError).
ReadonlyUNAUTHORIZED: "AUTH.UNAUTHORIZED"ReadonlyUNKNOWN_ACCOUNT: "LEDGER.UNKNOWN_ACCOUNT"A posting named an account the ledger has no row for and won't create implicitly.
Outcomes & reason codes for how each code maps to an HTTP status and retry decision.
Codes for thrown faults, as opposed to the expected "no" answers in RejectionCode. Each value is a stable, namespaced string (e.g.
LEDGER.OVERDRAFT); always reference these constants, never the bare strings.