--- title: Fees description: Every component of the fee breakdown, which side of the trade it is charged on, and how to display it. --- import { SPREAD_BPS, SAME_CHAIN_SWAP_BPS, KEYLESS_SPREAD_BPS } from "/snippets/vars.mdx"; There is no separate fee transaction. Everything is priced into the quote: `amount_out` is already net of every component below, and `fee_breakdown` explains the difference between what the user puts in and what they get out. ## Components Each entry in `fee_breakdown.components` has a `name`, a `side`, a cost in `usd_micros`, and for gas components a `native` amount in base units of that chain's native asset. | Name | Side | What it covers | | --- | --- | --- | | `bps_spread` | dst | The operator spread on the trade. | | `fixed_fee` | dst | A flat fee of one cent charged on every quote. | | `same_chain_swap_fee` | dst | The spread on a same-chain swap, in place of `bps_spread`. | | `asset_conversion` | dst | Conversion fee and risk premium on a cross-asset lane, such as USDC to USDG. | | `guaranteed_output_buffer` | dst | Premium for a guaranteed trade type on a cross-asset lane. See [Trade types](/concepts/trade-types#guaranteed-types). | | `rebalance_cost` | dst | The expected cost of moving inventory back after the order, amortized over the operator's rebalance batch. Absent when the order moves inventory toward where the operator wants it. | | `dst_fulfill_gas` | dst | Gas to submit the fulfillment on the destination chain. | | `dst_ata_create` | dst | Rent to create the recipient's associated token account, on Solana destinations only. | | `referrer_fee` | dst | The share taken by referrers on the quote. | | `gas_drop` | dst | The native asset delivered to the recipient, when requested. | | `src_refund_gas` | src | Gas reserved to refund the deposit if the order cannot be fulfilled. | | `src_ata_create` | src | Rent to create a token account on a Solana source. | | `src_burn_cost`, `dst_burn_cost` | src, dst | Cost reserved for burning a stuck transaction's nonce on either side. | | `sponsor_gas` | src | The relay gas on a gasless order. Absent when the quote was requested with `sponsor_fees`; the partner's funding balance pays it instead. | `side` says which leg of the trade the cost belongs to, not who pays it. Every component is deducted from the same trade before `amount_out` is computed. Components are only present when they apply. An Arbitrum to Solana USDC transfer with no referrer and no gas drop carries the spread and gas components; a cross-asset or gasless quote adds its own. ## Totals | Field | Meaning | | --- | --- | | `src_total_usd_micros` | Sum of the source-side components. | | `dst_total_usd_micros` | Sum of the destination-side components. | | `src_gas_native` | Source gas commitment in native base units. | | `dst_gas_native` | Destination gas commitment in native base units. | USD values are integers in micros: `1000000` is one dollar. Divide by 1,000,000 to display, and keep them as strings until you do, since they exceed safe integer range in aggregate. ```ts import { formatUsdMicros } from "@mayanfinance/hular-sdk"; const total = BigInt(quote.feeBreakdown.srcTotalUsdMicros) + BigInt(quote.feeBreakdown.dstTotalUsdMicros); formatUsdMicros(total.toString()); ``` ## The spread The operator spread is {SPREAD_BPS} basis points on cross-chain quotes and {SAME_CHAIN_SWAP_BPS} on same-chain swaps. It appears as `bps_spread` or `same_chain_swap_fee`. Quotes requested without an API key pay an additional {KEYLESS_SPREAD_BPS} basis points, folded into the same component. The difference is not itemized, so a keyless integration silently prices worse than a keyed one. See [API keys](/integration/api-keys). On top of the spread, every quote carries a flat one cent `fixed_fee`. The spread also carries the inventory discount. An order that refills a chain the operator would otherwise have to fund saves a future rebalance, and that saving is subtracted from the operator's own share of `bps_spread`, never below a configured floor and never from partner, keyless, or pair premiums. The discount is not itemized: a discounted quote simply shows a smaller `bps_spread`, and `rebalance_cost` appears only on orders that move inventory away from its targets. ## Gas is committed, not estimated at settlement `dst_fulfill_gas` and `src_refund_gas` are computed from the live gas price at quote time and then committed. The operator absorbs the difference if gas rises before the fulfillment lands, which is why a quote left sitting for a long time is refreshed rather than honored. The one place this is visible to a user is refunds: if gas has risen far enough that the refund would cost more than the committed `src_refund_gas`, the refund waits for gas to come down rather than eating the deposit. See [Refunds](/concepts/refunds). ## Displaying fees Show `amount_out` as the headline number; it is already net. Use the breakdown for the detail row, grouped by side, and label `gas_drop` as an amount the user receives rather than a cost, because that is what it is. Referrer fees are part of the same breakdown. If you set them, they are yours; see [Referral program](/integration/referrals).