Skip to main content

Methods

(params: SimulateFeeParams) => Promise<SimulateFeeResponse>
Calculate exact fees for an order before placing it. Requires authentication.Parameters:
  • tradingPairId: string - Trading pair UUID
  • side: “BUY” | “SELL” - Order side
  • price: string - Price per unit
  • quantity: string - Quantity to trade
  • orderType: “LIMIT” | “MARKET” (optional) - Defaults to LIMIT behaviour if omitted. Pass "MARKET" to get a slippage-adjusted buyOrderLockAmount
  • slippageToleranceBps: number (optional, 0–1000) - Slippage tolerance in basis points. Only valid with orderType: "MARKET". Default: 1000 (10%), matching the protective price band
Returns:
  • notional: string - Total order value (price × quantity)
  • monacoTakerFee: string - Monaco protocol taker fee
  • monacoTakerFeeBpsExact: 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 to monacoTakerFee / notional. Prefer this over the integer field below
  • monacoMakerRebateBpsExact: string | null - Tier-resolved Monaco maker rebate as a decimal bps string (negative = rebate, e.g. "-1") — the exact rate the ledger credits this caller
  • monacoTakerFeeBps: 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. Use monacoTakerFeeBpsExact or getMyFeeTier
  • monacoMakerRebate: string - Monaco maker rebate (negative = rebate)
  • monacoMakerRebateBps: number - Deprecated. Whole-bps maker rebate; same integer limitation as above. Use monacoMakerRebateBpsExact or getMyFeeTier
  • applicationTakerFee: string - Application taker fee
  • applicationTakerFeeBps: number - Application fee in basis points
  • applicationName: string | null - Application name (if applicable)
  • totalTakerFees: string - Total fees for taker (monaco + application)
  • takerTotalPayment: string - Total amount taker must pay
  • makerTotalReceipt: string - Total amount maker receives
  • buyOrderLockAmount: string | null - Amount to lock for BUY orders. For MARKET orders includes slippage buffer
  • maxQuantity: string | null - Maximum quantity affordable at the given price, after fees. Use this for the 100% balance slider
  • maxQuantityRaw: string | null - Same value in raw (smallest unit) format
  • slippageToleranceBps: number | null - Slippage tolerance used in the calculation, echoed back. null for 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.Parameters:
  • tradingPairId: string - Trading pair UUID whose fee schedule to return
Returns:
  • currentTierLevel: number - Resolved tier, 1 (lowest volume) through 6 (highest)
  • weightedVolume14d: string - Weighted 14-day volume (perp + 2.5× spot) used to resolve the tier
  • spotVolume14d: string - Rolling 14-day spot volume
  • perpVolume14d: string - Rolling 14-day perp volume
  • volumeToNextTier: string | null - Additional weighted volume needed to reach the next tier; omitted at tier 6
  • nextTierLevel: number | null - Next tier level; omitted at tier 6
  • feeSchedule: 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.