Skip to main content
Fees are moving to USD. Every quote request and trade now carries a USD-denominated fee_usd alongside the existing native-token fee_native. From 1 July 2026 invoices are denominated in USD (payable in USDC). The native fields - fee_native, and surplus in trade history - are deprecated and will be removed on 31 August 2026; migrate to fee_usd / surplus_usd before then. Both are sent until removal, so you have a clean overlap window.
Bebop’s RFQ commercial model is per-trade: every quote request includes a fee that the maker absorbs on execution. Bebop invoices the accumulated fee per chain on a regular cadence, denominated in USD and payable in USDC.

Fee fields

FieldDenominationStatus
fee_usdUSDUse this. USD value of the fee.
fee_nativechain’s native token (ETH, POL, HYPE, …)Deprecated - removed 31 Aug 2026
fee_usd is the USD value of the fee, rounded up to 3 decimal places - so the smallest non-zero fee is $0.001. fee_native is the same fee expressed in the chain’s native token; for the list of chains and their native tokens, see the chain tables on Build › Core Concepts.

How to apply fees to a quote

Each quote request carries the fee to absorb. Absorb it by quoting a reduced maker_amount and reporting the pre-fee price in reference_price. reference_price is the price of the taker token denominated in the maker token. For taker USDC to maker WETH, it’s how many WETH one USDC is worth.
  1. Convert fee_usd to the maker token’s units: fee_in_maker_token = fee_usd / maker_token_price_usd.
  2. Subtract that equivalent from the pre-fee maker_amount you would have quoted.
  3. Set reference_price to the pre-fee unit price (not maker_amount / taker_amount).
Example: request 1000 USDC to WETH, fee_usd = 3.00,WETH3.00, WETH ≈ 3000. The fee is 3 / 3000 = 0.001 WETH.
  • Raw pre-fee quote: 0.3 WETH total.
  • maker_amount = 0.3 − 0.001 = 0.299 WETH.
  • reference_price = 0.3 / 1000 = 0.0003 (WETH per USDC, pre-fee).
If reference_price equals maker_amount / taker_amount on a quote with a non-zero fee, Bebop’s ONE_TO_ONE_WITH_FEE self-test flags it.
Until fee_native is removed (31 Aug 2026) you can equivalently absorb using the native amount directly - on Ethereum a fee_native of 0.001 ETH ≈ 0.001 WETH. fee_usd and fee_native are two denominations of the same fee.

Splitting fees across multi-token trades

For multi-token requests, split the fee proportionally across each leg of the trade.

One-to-many (taker-amount ratios)

fee_i = fee_usd * (taker_amount_i / Σ taker_amounts) Example: 1 ETH → USDC + USDT split 70/30, fee_usd = $10.00.
LegRatioFee (USD)
10.7$7.00
20.3$3.00

Many-to-one (USD notional ratios)

fee_i = fee_usd * (notional_usd_i / Σ notional_usd) Example: 1000 USDC + 2000 USDT → ETH, assuming 1 USDC = 1 USDT = 1,feeusd=1, `fee_usd = 10.00`.
LegUSD notionalRatioFee (USD)
1$10001/3$3.33
2$20002/3$6.67

Reconciling against an invoice

Bebop invoices accumulated fee_usd per chain on a regular cadence; invoices are denominated in USD. To cross-check an invoice against your own records:
  1. Call the by-time-range trade history endpoint with start and end covering the billing period.
  2. Filter trades to entries with status: CONFIRMED. Failed on-chain trades appear in the array but are excluded from the fee total.
  3. Sum fee_usd on the filtered set, or use summary.total_fees_usd (already excludes failed trades).
Paginate with next_ts until it returns 0.