Methods
(params: SimulateFeeParams) => Promise<SimulateFeeResponse>
Calculate exact fees for an order before placing it. Requires authentication.Parameters:
tradingPairId: string - Trading pair UUIDside: “BUY” | “SELL” - Order sideprice: string - Price per unitquantity: string - Quantity to tradeorderType: “LIMIT” | “MARKET” (optional) - Defaults to LIMIT behaviour if omitted. Pass"MARKET"to get a slippage-adjustedbuyOrderLockAmountslippageToleranceBps: number (optional, 0–1000) - Slippage tolerance in basis points. Only valid withorderType: "MARKET". Default:1000(10%), matching the protective price band
notional: string - Total order value (price × quantity)monacoTakerFee: string - Monaco protocol taker feemonacoTakerFeeBpsExact: string | null - Tier-resolved Monaco taker rate as a decimal bps string (e.g."6.5") — the exact rate the ledger charges this caller, equal tomonacoTakerFee / notional. Prefer this over the integer field belowmonacoMakerRebateBpsExact: string | null - Tier-resolved Monaco maker rebate as a decimal bps string (negative = rebate, e.g."-1") — the exact rate the ledger credits this callermonacoTakerFeeBps: number - Deprecated. Whole-bps taker rate; an integer cannot carry fractional tiered rates (e.g. 6.5), so this echoes the flat trading-pair column, not the tier-resolved rate. UsemonacoTakerFeeBpsExactorgetMyFeeTiermonacoMakerRebate: string - Monaco maker rebate (negative = rebate)monacoMakerRebateBps: number - Deprecated. Whole-bps maker rebate; same integer limitation as above. UsemonacoMakerRebateBpsExactorgetMyFeeTierapplicationTakerFee: string - Application taker feeapplicationTakerFeeBps: number - Application fee in basis pointsapplicationName: string | null - Application name (if applicable)totalTakerFees: string - Total fees for taker (monaco + application)takerTotalPayment: string - Total amount taker must paymakerTotalReceipt: string - Total amount maker receivesbuyOrderLockAmount: string | null - Amount to lock for BUY orders. For MARKET orders includes slippage buffermaxQuantity: string | null - Maximum quantity affordable at the given price, after fees. Use this for the 100% balance slidermaxQuantityRaw: string | null - Same value in raw (smallest unit) formatslippageToleranceBps: number | null - Slippage tolerance used in the calculation, echoed back.nullfor LIMIT orders
(params: GetMyFeeTierParams) => Promise<GetMyFeeTierResponse>
Look up your current fee tier, rolling 14-day volumes, and a pair’s six-row fee schedule. Requires authentication. The tier and volumes are wallet-wide: they sum the wallet’s trades across every application it trades through, so they read the same from any application.Parameters:
tradingPairId: string - Trading pair UUID whose fee schedule to return
currentTierLevel: number - Resolved tier,1(lowest volume) through6(highest), from the higher ofweightedVolume14dand any volume floor set on the wallet (a floor that is set or changed counts once it applies to the wallet’s fills, usually within a minute, and likewise for an account the wallet opens in a new application; it stops counting at once when removed or expired)weightedVolume14d: string - Weighted 14-day volume (perp + 2.5× spot) the tier resolves from, unless a higher volume floor is set on the walletspotVolume14d: string - Rolling 14-day spot volumeperpVolume14d: string - Rolling 14-day perp volumevolumeToNextTier: string | null - Additional weighted volume needed to reach the next tier, counted from the volume the current tier resolved from; omitted at tier 6nextTierLevel: number | null - Next tier level; omitted at tier 6feeSchedule: FeeTierScheduleRow[] - The pair’s six rows, ascending by tier. Each row:tierLevel(number),minVolumeThreshold(string),makerFeeBps(string — human bps, negative = rebate),takerFeeBps(string — human bps)
Example
Fee Breakdown
Monaco uses a maker-taker fee model:
Use
simulateFees before placing orders to show users exact costs upfront.
