Dara Docs
ReferenceStellar

XLM Reserve and Fee Model

Customers never see or hold XLM (Q-01). Facts: base reserve 0.5 XLM; minimum balance = (2 + subentries + numSponsoring − numSponsored) × 0.5 XLM; inclusion fee ≥ 100 stroops per operation (baseline §4).

1. Who pays what

CostPaid byMechanism
Customer account base reserve (1 XLM)RESERVE_SPONSORSponsored CreateAccount with a 0 XLM starting balance
Customer CUSTODY signer (0.5 XLM)RESERVE_SPONSORInside the same sponsorship
Customer trustline per asset (0.5 XLM)RESERVE_SPONSORInside the same sponsorship
Every transaction feeThe channel account that sources the transactionChannel XLM, topped up by FUNDER
System accounts' reservesPlatformFunded at the ceremony

Per customer with GOLD only: 2 XLM locked in RESERVE_SPONSOR (1 + 0.5 signer + 0.5 trustline); +0.5 XLM per additional asset. The XLM is locked, not spent. Closing a customer account later (merge, or revoke the sponsorship after removing the trustline) releases it.

Automatic transactions do not use fee bumps: channels pay their own fees, and an expired 60-second attempt is simply rebuilt at the current fee. Human-signed proposals are the exception. They live for up to 24 h, and rebuilding one means asking the human signers to sign again. If surge pricing outbids a signed proposal, FUNDER wraps the unchanged inner envelope in a fee bump (at least 10× the original bid to replace it). This is planned for Stage 25. It needs a spike first to confirm how getTransaction resolves the inner and outer hashes, because the transaction manager tracks attempts by hash.

2. Operational XLM budget (formula; values are configuration, not hard-coded)

sponsor_locked  = customers × (1.5 + 0.5 × assets_per_customer)
channel_float   = channels × (1 + fee_runway)
fee_runway      = expected_tx_per_day × ops_per_tx × fee_per_op × runway_days

Example at the base fee: 100,000 settlements/day × 1 op × 100 stroops = 1 XLM/day. Surge pricing is bounded by max_fee_per_op.

3. Thresholds and monitoring

AccountHealthyWarningCritical (blocks new work)
RESERVE_SPONSOR available≥ reserve for the next onboarding_headroom customersbelow that< 10 onboardings: KYC approvals queue, trading continues
Each channel≥ channel_target< 50 %< channel_min: channel removed from the pool; FUNDER top-up
FUNDER≥ funder_runway_days of fees< 50 %< 3 days: trading gate closes before the pool runs dry
TREASURY_HOT / COLD XLM≥ own minimum balance + 10 XLM—below minimum balance + 2 XLM

"Available" = balance − minimum balance − selling liabilities, read from the ledger entry. Each transition is a metric and an alert. Reconciliation includes fee spend per day (indexer sum of feeCharged for our channels) against the ledger's fee expense account.

On this page