Fee
The protocol fee is a flat 3% (fee_rate: 0.03) taken from the total gross pool before any split. The fee is not charged selectively on winners’ returned stakes, it is deducted once from the entire pool. This means losing-side stakes contribute to covering the fee alongside winning-side stakes.
On a void, no fee is deducted. Every bettor receives their exact original stake back.
Formulas
Worked example
A market closes with 100 XRP total, split 60 XRP on Yes and 40 XRP on No. Fee rate: 3%.| Value | |
|---|---|
Gross pool (T) | 100 XRP |
| Fee (3%) | 3 XRP |
Net pool (N) | 97 XRP |
Yes pool (W) | 60 XRP |
No pool (W) | 40 XRP |
Yes payout/unit (N/W) | 97 ÷ 60 = 1.617× |
No payout/unit (N/W) | 97 ÷ 40 = 2.425× |
TypeScript implementation
The following is taken directly from the counsel settlement library (src/lib/settlement/parimutuel.ts). All amounts are bigint drops.
Void: no fee charged
When a market voids, no fee is applied. The settlement engine refunds every public stake at face value: the exact number of drops sent in is returned to the sender’s account via a native XRP Payment. Market-maker seed stakes are house-neutral and are not refunded.drops_in === drops_out for every bettor on a voided market. See Resolution for the conditions that trigger a void.
Where to find these numbers in the API
Thefee_rate and per-outcome payout figures are part of the market object returned by GET /api/v1/markets/:id:
payout_per_unit is null for any outcome with zero stake (odds are undefined until at least one bet lands on that side). These figures are indicative until bet_cutoff passes, see Parimutuel Pools for a full explanation of how odds move before close.