Fees
The protocol fee is 0.5%. What it applies to, how it splits, and what else costs money on-chain.
Launch promotion: 0% fees through July 31, 2026
There are two kinds of fees on every sBTC Pay transaction: a protocol fee (sBTC Pay's cut, currently 0.5%) and a network fee (paid to Stacks miners to include the transaction in a block). They're separate and charged differently.
Protocol fee: 0.5%
Every payment that lands on the contract — invoice payment, direct payment, subscription payment — splits into two transfers in the same atomic transaction:
- Merchant receives:
amount × 0.995 - Protocol fee recipient:
amount × 0.005
Example
A customer pays an invoice for 100,000 sats (0.001 sBTC).
- Merchant's wallet receives 99,500 sats
- Protocol fee recipient receives 500 sats
Both transfers succeed or both revert. The customer sees a single transaction in their wallet, and the dashboard's merchant-received column shows the post-fee amount.
No fee on refunds
Can the fee change?
Yes, but with guardrails enforced by the contract itself:
| Parameter | Type | Description |
|---|---|---|
Current fee | uintdefault: 0 bps (launch promo) | Set to 0 for the launch promotion through July 31, 2026. Reverts to 50 bps after. |
Maximum fee ever | uintdefault: 500 bps (5%) | Hard-coded ceiling. The contract rejects any fee change above this. |
Max change per update | uintdefault: 100 bps (1%) | One adjustment cannot move the fee by more than this. Prevents surprise jumps. |
Who can update | principal | Contract deployer (governance controlled). Changes are public, on-chain, and emit an event. |
If the fee ever changes, the update is an on-chain transaction that emits a platform-fee-updated event. Anyone can see the current rate by calling the get-fee-rate read-only function or reading the platform-fee-bps data var directly.
Network (transaction) fee
Stacks charges a small network fee on every transaction, paid to whichever miner includes it in a block. This is separate from the protocol fee and always paid in STX, regardless of whether the payment itself is sBTC or STX.
Typical amounts at the time of writing:
- Low-congestion mainnet: 0.001–0.01 STX per transaction
- High congestion: can spike higher, driven by demand
Who pays the network fee:
- Customer — when paying an invoice, making a direct payment, or triggering a subscription payment
- Merchant — when registering, updating their profile, cancelling an invoice, or issuing a refund
Your customer needs STX, even to pay in sBTC
Side-by-side example
A full picture of one invoice payment:
- Invoice amount: 100,000 sats
- Customer pays: 100,000 sats (+ a few μSTX for network fee)
- Merchant receives: 99,500 sats
- Protocol fee: 500 sats
- Network fee (paid by customer in STX): ~1,000 μSTX
Total cost to the customer: 100,000 sats + ~1,000 μSTX network fee. Everything else is value-flow.
Why 0.5%?
0.5% sits between traditional card processors (2.5–3.5%) and bank wires (flat fee, long settlement). It's low enough that merchants can absorb it without passing it on, but high enough to sustain ongoing infrastructure costs. It's a deliberate early-adopter rate — as adoption scales, the rate can be adjusted (within the guardrails above).
Where to check the current rate
Three authoritative sources, in order of convenience:
- Frontend constant:
frontend/src/lib/stacks/config.tsexportsPLATFORM_FEE_BPS. - Contract read-only: call
get-fee-rateon the deployed contract. See Smart Contract Reference. - On-chain data var: read
platform-fee-bpsdirectly via the Stacks API.