Thorchain

Thorchain swap fees affect quoted output and the cost of funding a swap

Updated ·

Thorchain swap fees combine liquidity charges, destination-chain delivery costs, and any affiliate fee specified by an interface. The protocol quote estimates what reaches the destination after its deductions. Your wallet’s fee for sending the input remains a separate cost. Compare quotes for the same asset pair and input amount, keeping execution settings and quote timing comparable.

A percentage beside a swap button can’t describe every cost on its own. Pool depth, streaming settings, and affiliate configuration influence execution. The destination chain adds a delivery charge, which can dominate small amounts even when the liquidity fee is low.

The short version: An interface’s affiliate settings can affect the liquidity-fee floor, so its surcharge alone won’t explain the quoted output.

The quote’s fee breakdown and destination amount

When a quote includes the settings that the transaction will use, its expected output combines pool pricing with the applicable protocol deductions. The expected_amount_out field estimates the destination amount after the quoted fees. A separate fee object identifies liquidity, outbound, and affiliate charges when applicable. The fees.asset field supplies their denomination, so amounts need consistent units before any arithmetic.

Don’t subtract the displayed liquidity, affiliate, and outbound fees from a protocol quote’s net output again. Those deductions already form part of the estimate.

Pool depth and the liquidity charge

When the input consumes a larger share of a pool’s available balance, the swap puts more pressure on its price and liquidity. Thorchain’s continuous liquidity pool model links the liquidity charge to that demand. Holding the other inputs constant, deeper liquidity generally reduces the slip-based charge. Increasing the input relative to pool depth moves the calculation the other way. A fee rate therefore describes a particular swap size against particular pool balances.

For an exchange between supported external assets, RUNE connects the pricing through the relevant pools. Both pool operations contribute to the final output. That routing doesn’t require a separate user-managed RUNE payment. An applicable minimum fee overrides the charge calculated from slip when that charge falls below the floor. Network settings, asset-class rules, and qualifying pair or affiliate rules determine that floor.


Outbound charges and destination-chain costs

When delivery leaves the protocol for another blockchain, the outbound charge covers that chain’s transaction cost and the protocol’s delivery overhead. The charge uses an estimated transaction size, a gas rate, and a dynamic outbound fee multiplier. The network’s MinimumL1OutboundFeeUSD setting applies a USD-denominated floor when that calculation is lower. The multiplier responds to the difference between fees collected and gas costs spent against a target surplus. Destination-chain gas and protocol overhead therefore contribute to a single outbound charge. The protocol deducts the combined charge from the output before delivery.

The quoted outbound fee can differ from the gas amount visible on the destination transaction. The dynamic multiplier helps explain that difference.

For a token output, a chain’s gas asset and the received token may have different units. The protocol converts the delivery cost into the output asset. Compare the quote’s stated fee asset with its destination amount before interpreting the deduction.

Visual summary: Thorchain swap fees - Outbound charges and destination-chain costs
Outbound charges and destination-chain costs

Open full-size image

Affiliate settings and pair-specific fee floors

A native-asset pair can produce different liquidity fees through different interfaces when the network applies an affiliate-specific minimum for that pair. The swap must carry an actively enrolled THORName with a nonzero affiliate charge, and the network must enable its dynamic-fee mechanism. The mechanism applies to eligible native-asset swaps, including swaps involving RUNE, while other asset types retain their applicable rules. Active enrollment applies the dynamic floor; monitor enrollment computes it without applying it. The floor can move over time and can sit above or below the general native-asset minimum.

An interface may also specify its own affiliate charge. That charge is distinct from the liquidity-fee floor selected for its route. Quote requests need the same affiliate identity and basis-point settings as the eventual swap. A quote that omits them can misrepresent both the surcharge and the simulated liquidity fee.

Thorchain swap fees: Affiliate settings and pair-specific fee floors

Open full-size image


Streaming trades and the cost of liquidity

Streaming can reduce the liquidity cost of a larger input by dividing execution into smaller pool trades, subject to the network’s applicable minimum fee. Internal streaming sub-swaps don’t each require a new source-chain deposit. A completed stream aggregates its output for delivery, so the internal trade count doesn’t multiply ordinary inbound and outbound network fees.

For streaming market swaps, intervals give arbitrage activity time to rebalance pool prices between trades. Increasing the number of sub-swaps reduces each trade’s share of the fixed input. Those settings affect different parts of execution, and a longer interval doesn’t itself remove a minimum fee.

Rapid streaming, when the advanced queue supports it, can process sub-swaps within a block subject to network limits. Spaced streaming distributes attempts across block intervals. Comparing either mode with a single swap requires their actual quoted output and timing, not an assumed saving.

Pool conditions can change during the stream. An attractive estimate therefore doesn’t lock the exchange price, and a floor constrains how far splitting can reduce fees. Settlement that includes a refund also has different delivery costs from a fully completed stream.


Minimum-output limits and executable quotes

A minimum-output limit constrains the output accepted during execution; it doesn’t set the liquidity-fee rate. Streaming swaps apply trade-limit protection to each sub-swap, so unfilled input can be refunded alongside delivery of completed output. The quote API’s liquidity_tolerance_bps setting derives the limit from expected output after fees. The older tolerance_bps setting uses the input asset’s value and can produce a limit that ignores swap and outbound costs. Identical numeric tolerances across these parameters therefore don’t necessarily create equivalent limits.

When a market swap cannot satisfy its target, refund rules apply to the affected amount. A supported limit swap instead waits for eligible pricing until execution, cancellation, or expiry. An immediately attempted market swap and a waiting limit swap therefore don’t offer the same timing. Trading halts can prevent execution even when a pool balance suggests an attractive price.


Wallet-paid gas and spending permission

Source-chain gas pays for submitting the funding transaction and remains outside the protocol quote’s fee deductions. A wallet’s total debit may therefore include both the swap input and its network charge. A token deposit may also need the chain’s native gas asset, even though the input is another token. Where a separate approval transaction is necessary, its gas adds another funding cost. The user signs the required transaction in the sending wallet; a quote only describes the proposed swap and doesn’t grant spending authority.

Wallet-paid gas and spending permission (Thorchain swap fees) - diagram
Wallet-paid gas and spending permission, illustrated

Open full-size image

Minimum amounts and refund deductions

A small swap must leave enough value for delivery and a possible refund, even when its liquidity charge is modest. The protocol quote’s recommended_min_amount_in identifies a minimum recommended input for that request. It accounts for delivery and refund costs, with a buffer for changing network fees. The quote endpoint returns an error if the input is too small to cover fees. An inbound amount must exceed its chain’s dust threshold; the network ignores transactions at or below it. A pool’s availability alone doesn’t establish that an input is large enough to complete economically.

A refund travels on the sending chain and can deduct that chain’s outbound fee from the returned asset. The original sending fee remains spent. Where streaming execution has completed part of the exchange, the output delivery and return of unswapped funds are separate payments. Their charges can explain why the returned balance is smaller than the original input.


Like-for-like quotes and final delivery

When quotes show different destination amounts, the comparison starts with what each assumes about the same swap. Pool pricing determines the exchanged value, while liquidity, affiliate, and outbound deductions shape the expected wallet credit.

Before funding, the destination and current deposit instructions must agree with the selected quote. Signing authorizes the funding transaction; broadcasting submits it to the sending chain. A confirmed deposit records funding on the sending chain. Its transaction identifier alone doesn’t establish delivery of the output asset.

A confirmed destination-chain transfer of the selected asset establishes delivery to the recipient. Reconcile its amount with the swap’s execution record, and account separately for source-wallet gas. Pool changes and execution timing can explain a difference from the earlier estimate. Keep the credited destination amount and wallet-paid fees together when comparing the exchange with its original quote.

Thorchain swap fees: what people ask

Does requesting a swap quote create an on-chain fee?

Requesting a read-only protocol quote doesn’t submit a blockchain transaction, so the request itself doesn’t incur transaction gas. A wallet or API provider may apply separate service charges or access limits. The quoted amount remains an estimate, and pool conditions can change before the funding transaction reaches execution.

Why do quote API amounts look much larger than wallet amounts?

Protocol quote amounts use eight-decimal base units, so divide the integer by 100,000,000 to read the amount in the named asset. This convention also applies to fee amounts expressed in their stated fee asset. It differs from the native decimal precision that an individual token contract uses.

How are fee basis points converted into a percentage?

One basis point equals 0.01%, so divide a quoted basis-point rate by 100 to express it as a percentage. That converts the rate’s notation; it doesn’t identify which asset or amount the rate uses as its calculation basis. Keep the relevant fee field and denomination attached to the number.

Is an ERC-20 approval charge evidence that the swap has started?

An ERC-20 approval charge pays for the transaction that grants spending permission. Approval lets the specified spender use tokens within the granted allowance. The funding transaction still needs to reach the protocol under valid deposit instructions. An approval receipt alone doesn’t establish that pool execution or destination delivery has begun.

Will an interface’s protocol revenue share add another fee to my swap?

An affiliate’s configured protocol revenue share comes from the Reserve and doesn’t add a separate user-side charge. The same interface may also specify an affiliate fee that the swap deducts.

What separates a quoted fee rate from a gap against a market-price conversion?

A quoted fee rate measures the listed charges, while a market-price conversion also reflects the exchange price that the pool offers. A difference from a separate price feed can include pool pricing and timing differences. Calling that entire gap an extra protocol fee overstates the fee breakdown.

Can a native RUNE transaction fee and an external outbound fee both apply?

A transaction funding a RUNE-to-external-asset swap can incur both a native transaction fee and an external outbound fee. The native fee covers submission on Thorchain, while the outbound fee covers delivery on the receiving chain. Keep the wallet’s native-fee estimate separate from the output deductions in the quote.