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
| Field | Denomination | Status |
|---|
fee_usd | USD | Use this. USD value of the fee. |
fee_native | chain’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.
- Convert
fee_usd to the maker token’s units: fee_in_maker_token = fee_usd / maker_token_price_usd.
- Subtract that equivalent from the pre-fee
maker_amount you would have quoted.
- Set
reference_price to the pre-fee unit price (not maker_amount / taker_amount).
Example: request 1000 USDC to WETH, fee_usd = 3.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.
| Leg | Ratio | Fee (USD) |
|---|
| 1 | 0.7 | $7.00 |
| 2 | 0.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=10.00`.
| Leg | USD notional | Ratio | Fee (USD) |
|---|
| 1 | $1000 | 1/3 | $3.33 |
| 2 | $2000 | 2/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:
- Call the by-time-range trade history endpoint with
start and end covering the billing period.
- Filter
trades to entries with status: CONFIRMED. Failed on-chain trades appear in the array but are excluded from the fee total.
- 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.