Skip to content

Fees and prices

Rule Value
Marketplace fee 2.5% of the price, rounded up, minimum 1,000 sats
Who pays it The taker: whoever completes the trade
Minimum price 5,000 sats for every listing, reprice, counter, and offer
Maximum ask 100 BTC (10,000,000,000 sats); funded offers do not have this ask cap
Units Integer satoshis everywhere; large raw asset quantities are decimal strings

A price below the minimum is refused with price_below_minimum; the error body carries minimum_price_sats.

Compute the fee with integer arithmetic:

const fee = Math.max(1_000, Number((BigInt(priceSats) * 250n + 9_999n) / 10_000n));
// 5,000 -> 1,000 40,000 -> 1,000 100,000 -> 2,500 100,001 -> 2,501

The buyer is the taker. The buyer pays the listed prices, the marketplace fee, and the network fee; each seller receives exactly their listed price.

The quote from POST /v1/fills/request states every part before you sign:

{
"subtotal_sats": 100000,
"platform_fee_sats": 2500,
"network_fee_sats": 1240,
"total_sats": 103740
}

For a multi-item cart the fee is computed on the cart subtotal.

Offer funding covers the price and, for attached delivery, the retained asset UTXO value. The accepting seller pays the marketplace and settlement fees.

  • A detached-delivery funding slot is worth exactly the price.
  • An attached-delivery slot adds the 330-sat asset UTXO the buyer keeps.
  • A collection offer’s Taproot offer output is worth the price; its funding parent pays no network fee (the seller’s acceptance pays for the package).

Creating exact-value funding slots with POST /v1/offer-funding-templates is an ordinary Bitcoin transaction, so that one step costs you a network fee.

The seller is the taker. The marketplace fee and the settlement’s network fee (for a collection offer, the parent-plus-child package fee) come out of the seller’s proceeds. Every accept quote states seller_proceeds_sats, platform_fee_sats, and network_fee_sats before anything is signed. Collection offer acceptance also takes an optional seller_min_net_sats floor.

A few funding slots created under an older bidder-pays policy carry a prefunded fee (prefunded_fee_sats). The seller then pays only the remainder.

For example: price 100,000, asset UTXO 330, 3 sat/vB over a 600 vB package. Fee 2,500, network 1,800, seller receives 100,000 + 330 - 2,500 - 1,800 = 96,030 sats. At the 5,000-sat minimum price and a high fee rate, the proceeds can go negative, and the accept is refused.

  • The seller is derived from the listed UTXO’s scriptPubKey.
  • A listing price is the verified seller payment output in the signed PSBT minus the listed asset UTXO’s value.
  • An offer price is the exact value of its funding output.
  • A buyer pays exactly what the stored template says, or completion is refused.

Use the returned economics for review, and verify that the PSBT matches your intended asset, payment, fees, and destination before signing.

Composing routes take an optional fee_rate in sat/vB, fractional allowed, from 0.1 to 500. Omit it and the server picks the current network rate. GET /v1/fee-rate returns the rates the server sees.