Core concepts

Wallets and holds

Where the money sits, and what a hold actually is.

Every end user has one balance per mode. A balance has a balance and a reserved amount, and what a call may spend is the difference between them.

text
available = balance − reserved

Inspect a balance

seams users show ada

# external id   ada
# bundle        pro
# available     $4.97
# reserved      $0.00

Credit the balance

A grant lands immediately on the money wallet and writes a ledger entry. Always micros, the CLI takes dollars; the SDKs take micro-dollars as a string (5000000 is $5.00). It does not mint named plan credits; those come from a bundle include. See Credit systems.

seams users grant 5.00 --user ada --reason "trial top-up"
# granted $5.00 → ada · available $9.97

Why a hold and not a debit

A streaming call's final cost is unknown when it starts. Debiting the worst case up front would show your customer a balance that is wrong for the length of the request; holding it shows them a balance that is honest and an amount that is pending.

MovementWhenEffect
reserveBefore dispatchreserved goes up, balance unchanged
settleOn completionbalance goes down by actual cost, reserved released
releaseOn failurereserved goes down, balance untouched

Both movements happen in one transaction. A hold released in a second transaction can be released twice, or not at all.