> ## Documentation Index
> Fetch the complete documentation index at: https://docs.0xmonaco.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Fees

> Base trading fees, maker rebates, and application charges.

export const formatFeeRate = (rate, percent) => percent ? (rate / 100).toFixed(4).replace(/0+$/, "").replace(/\.$/, "") + "%" : rate.toFixed(2);

export const feeSchedules = {
  spot: [[1, "< $5mm", -0.1, 6.5], [2, ">= $5mm", -0.2, 6.0], [3, ">= $25mm", -0.3, 5.0], [4, ">= $100mm", -0.4, 4.0], [5, ">= $500mm", -0.5, 3.0], [6, ">= $2bn", -1.0, 2.5]],
  perps: [[1, "< $5mm", -0.1, 4.5], [2, ">= $5mm", -0.2, 4.25], [3, ">= $25mm", -0.3, 4.0], [4, ">= $100mm", -0.4, 3.5], [5, ">= $500mm", -0.5, 3.0], [6, ">= $2bn", -1.0, 2.5]]
};

export const FeeTables = () => {
  const [market, setMarket] = useState("perps");
  const [percent, setPercent] = useState(false);
  const unit = percent ? "%" : "bps";
  const selectTab = event => {
    if (!["ArrowLeft", "ArrowRight", "Home", "End"].includes(event.key)) return;
    event.preventDefault();
    const next = event.key === "Home" ? "perps" : event.key === "End" ? "spot" : market === "perps" ? "spot" : "perps";
    setMarket(next);
    event.currentTarget.parentElement.querySelector('[id="learn-' + next + '-tab"]').focus();
  };
  return <div className="not-prose fee-block">
      <div className="fee-controls">
        <div className="fee-tabs" role="tablist" aria-label="Fee market">
          {["perps", "spot"].map(name => <button key={name} type="button" role="tab" id={"learn-" + name + "-tab"} aria-controls={"learn-" + name + "-panel"} aria-selected={market === name} tabIndex={market === name ? 0 : -1} onClick={() => setMarket(name)} onKeyDown={selectTab}>
              {name === "perps" ? "Perpetuals" : "Spot"}
            </button>)}
        </div>
        <button type="button" aria-pressed={percent} onClick={() => setPercent(!percent)}>
          {percent ? "Show basis points" : "Show percentages"}
        </button>
      </div>
      {["perps", "spot"].map(name => <div key={name} className="fee-panel" id={"learn-" + name + "-panel"} role="tabpanel" aria-labelledby={"learn-" + name + "-tab"} hidden={market !== name} tabIndex={0}>
          <table className="fees-table">
            <caption>
              {name === "perps" ? "Perpetual Futures" : "Spot"} Fees
            </caption>
            <thead>
              <tr>
                <th scope="col">Tier</th>
                <th scope="col">Effective Volume</th>
                <th scope="col">Maker ({unit})</th>
                <th scope="col">Taker ({unit})</th>
              </tr>
            </thead>
            <tbody>
              {feeSchedules[name].map(([tier, volume, maker, taker]) => <tr key={tier}>
                  <td>{tier}</td>
                  <td>{volume}</td>
                  <td>{formatFeeRate(maker, percent)}</td>
                  <td>{formatFeeRate(taker, percent)}</td>
                </tr>)}
            </tbody>
          </table>
        </div>)}
    </div>;
};

export const LearnStyles = () => {
  useEffect(() => {
    const revealReference = () => {
      let id;
      try {
        id = decodeURIComponent(window.location.hash.slice(1));
      } catch {
        return;
      }
      if (!id) return;
      const target = document.getElementById(id);
      if (!target) return;
      let opened = false;
      for (let parent = target.parentElement; parent; parent = parent.parentElement) {
        if (parent.tagName === "DETAILS" && !parent.open) {
          parent.open = true;
          opened = true;
        }
      }
      if (opened) target.scrollIntoView({
        block: "start"
      });
    };
    const frame = requestAnimationFrame(revealReference);
    window.addEventListener("hashchange", revealReference);
    return () => {
      cancelAnimationFrame(frame);
      window.removeEventListener("hashchange", revealReference);
    };
  }, []);
  return <style>{`
.monaco-learn {
  --bg:#fff;
  --fg:#18261e;
  --body:#465149;
  --muted:#69756d;
  --line:#dce3dd;
  --accent:#233329;
  --callout:#f0f5ef;
  --amber:#9a6418;
}
.dark .monaco-learn {
  --bg:#0e1410;
  --fg:#edf3ed;
  --body:#c3cdc5;
  --muted:#9daa9f;
  --line:#344239;
  --accent:#c4dfc8;
  --callout:#1c2b20;
  --amber:#edc680;
}
.monaco-learn [data-as=p] {
  display: block;
  margin: 1.25em 0;
}
.monaco-learn .small-label {
  display: block;
  font-size: 11px;
  font-weight: 600;
  letter-spacing: .07em;
  text-transform: uppercase;
  color: var(--muted);
  margin-bottom: 8px;
}
.monaco-learn .example,
.monaco-learn .formula {
  margin: 24px 0;
  padding: 20px;
  border: 1px solid var(--line);
  border-radius: 10px;
  background: var(--callout);
}
.monaco-learn .example strong {
  display: block;
  font-size: 19px;
  color: var(--fg);
}
.monaco-learn .example p {
  margin: 10px 0 0;
}
.monaco-learn .formula {
  font-family: monospace;
  overflow-x: auto;
}
.monaco-learn .callout {
  margin: 24px 0;
  padding: 18px 20px;
  border-left: 3px solid var(--accent);
  background: var(--callout);
  border-radius: 0 8px 8px 0;
}
.monaco-learn .callout.warning {
  border-color: var(--amber);
}
.monaco-learn .primary-link {
  display: inline-block;
  padding: 10px 18px;
  border-radius: 8px;
  background: #233329;
  color: white;
  text-decoration: none;
}
.monaco-learn .account-cards,
.monaco-learn .referral-levels {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 12px;
  margin: 24px 0;
}
.monaco-learn .account-cards > div,
.monaco-learn .referral-levels > div {
  padding: 18px;
  border: 1px solid var(--line);
  border-radius: 10px;
}
.monaco-learn .account-cards h3 {
  margin: 0 0 8px;
  font-size: 16px;
}
.monaco-learn .account-cards p {
  margin: 0;
  font-size: 14px;
}
.monaco-learn .referral-levels {
  text-align: center;
}
.monaco-learn .referral-levels strong {
  display: block;
  font-size: 32px;
  color: var(--accent);
}
.monaco-learn .referral-levels span {
  display: block;
  font-size: 12px;
}
.monaco-learn .flow {
  display: flex;
  gap: 12px;
  align-items: center;
  margin: 24px 0;
}
.monaco-learn .flow > div {
  flex: 1;
  min-width: 0;
  padding: 16px;
  border: 1px solid var(--line);
  border-radius: 10px;
}
.monaco-learn .flow b {
  display: block;
  color: var(--muted);
}
.monaco-learn .flow p {
  font-size: 13px;
  margin: 8px 0 0;
}
.monaco-learn .learn-reference {
  border: 1px solid var(--line);
  border-radius: 10px;
  padding: 20px;
  margin-top: 36px;
}
.monaco-learn .learn-reference > summary {
  cursor: pointer;
  font-weight: 600;
  color: var(--accent);
}
.monaco-learn .fee-controls {
  display: flex;
  flex-wrap: wrap;
  justify-content: space-between;
  gap: 12px;
  margin-bottom: 18px;
}
.monaco-learn .fee-tabs {
  display: flex;
  gap: 8px;
}
.monaco-learn .fee-controls button {
  cursor: pointer;
  border: 1px solid var(--line);
  border-radius: 7px;
  padding: 8px 12px;
  font-size: 13px;
  color: var(--fg);
}
.monaco-learn .fee-tabs button[aria-selected=true] {
  background: var(--callout);
  font-weight: 600;
}
.monaco-learn .fee-panel {
  overflow-x: auto;
}
.monaco-learn .fees-table {
  width: 100%;
  border-collapse: collapse;
  font-size: 14px;
  font-variant-numeric: tabular-nums;
}
.monaco-learn .fees-table th,
.monaco-learn .fees-table td {
  padding: 12px;
  text-align: right;
  border-bottom: 1px solid var(--line);
  white-space: nowrap;
}
.monaco-learn .fees-table th:first-child,
.monaco-learn .fees-table th:nth-child(2),
.monaco-learn .fees-table td:first-child,
.monaco-learn .fees-table td:nth-child(2) {
  text-align: left;
}
.monaco-learn .fees-table caption {
  text-align: left;
  font-weight: 600;
  margin-bottom: 10px;
}
.monaco-learn button:focus-visible,
.monaco-learn input:focus-visible,
.monaco-learn summary:focus-visible {
  outline: 2px solid var(--accent);
  outline-offset: 4px;
}
@media (max-width: 600px) {
  .monaco-learn .account-cards {
    grid-template-columns: 1fr;
  }
  .monaco-learn .flow {
    flex-direction: column;
    align-items: stretch;
  }
  .monaco-learn .flow > span {
    display: none;
  }
  .monaco-learn .referral-levels > div {
    padding: 14px 6px;
  }
  .monaco-learn .referral-levels span {
    font-size: 10px;
  }
}
@media print {
  .monaco-learn .fee-controls {
    display: none;
  }
  .monaco-learn .fee-panel[hidden] {
    display: block;
    margin-top: 20px;
  }
}
.monaco-learn .referral-calculator {
  margin: 30px 0;
  border: 1px solid var(--line);
  border-radius: 13px;
  padding: 25px;
  background: var(--bg);
}
.monaco-learn .calculator-heading {
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: 14px;
  flex-wrap: wrap;
}
.monaco-learn .calculator-heading h3 {
  font-size: 19px;
  margin: 0;
  letter-spacing: -.025em;
}
.monaco-learn .calculator-heading .small-label {
  margin-bottom: 5px;
}
.monaco-learn .unlimited-flag {
  display: inline-flex;
  align-items: center;
  border: 1px solid var(--line);
  border-radius: 30px;
  background: var(--callout);
  padding: 4px 9px;
  font-size: 10px;
  color: var(--accent);
  white-space: nowrap;
}
.monaco-learn .calculator-intro {
  font-size: 13px;
  line-height: 1.7;
  margin: 13px 0 25px;
}
.monaco-learn .calculator-grid {
  display: grid;
  grid-template-columns: minmax(0, 1.2fr) minmax(0, 1fr);
  gap: 26px;
  align-items: start;
}
.monaco-learn .referral-control {
  margin: 0 0 20px;
}
.monaco-learn .slider-label {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  margin-bottom: 8px;
}
.monaco-learn .slider-label label {
  font-size: 13px;
  font-weight: 600;
  line-height: 1.5;
  color: var(--fg);
}
.monaco-learn .slider-label label span {
  display: block;
  font-weight: 400;
  font-size: 10px;
  color: var(--muted);
  margin-top: 2px;
}
.monaco-learn .slider-label output {
  font-size: 16px;
  font-weight: 600;
  font-variant-numeric: tabular-nums;
  color: var(--accent);
  flex: none;
}
.monaco-learn .referral-calculator input[type=range] {
  display: block;
  appearance: none;
  -webkit-appearance: none;
  width: 100%;
  height: 24px;
  margin: 0;
  background: transparent;
  cursor: pointer;
  --range-fill:0%;
}
.monaco-learn .referral-calculator input[type=range]::-webkit-slider-runnable-track {
  height: 5px;
  border-radius: 5px;
  background:
    linear-gradient(
      to right,
      var(--accent) var(--range-fill),
      var(--line) var(--range-fill));
}
.monaco-learn .referral-calculator input[type=range]::-webkit-slider-thumb {
  -webkit-appearance: none;
  width: 17px;
  height: 17px;
  border-radius: 50%;
  background: var(--accent);
  border: 3px solid var(--bg);
  box-shadow: 0 0 0 1px var(--accent);
  margin-top: -6px;
}
.monaco-learn .referral-calculator input[type=range]::-moz-range-track {
  height: 5px;
  border-radius: 5px;
  background: var(--line);
}
.monaco-learn .referral-calculator input[type=range]::-moz-range-progress {
  height: 5px;
  border-radius: 5px;
  background: var(--accent);
}
.monaco-learn .referral-calculator input[type=range]::-moz-range-thumb {
  width: 12px;
  height: 12px;
  border-radius: 50%;
  background: var(--accent);
  border: 3px solid var(--bg);
  box-shadow: 0 0 0 1px var(--accent);
}
.monaco-learn .slider-scale {
  display: flex;
  justify-content: space-between;
  font-size: 10px;
  line-height: 1.5;
  color: var(--muted);
  font-variant-numeric: tabular-nums;
}
.monaco-learn .referral-calculator .calculator-help {
  font-size: 10px;
  line-height: 1.7;
  color: var(--muted);
  margin: 6px 0 0;
}
.monaco-learn .calculator-inputs > .calculator-help {
  margin: -7px 0 20px;
}
.monaco-learn .volume-control {
  border-top: 1px solid var(--line);
  padding-top: 18px;
  margin-bottom: 0;
}
.monaco-learn .volume-control .slider-label {
  flex-wrap: wrap;
  gap: 4px;
}
.monaco-learn .volume-control label {
  font-size: 12px;
}
.monaco-learn .volume-control output {
  font-size: 17px;
}
.monaco-learn .earn-estimate {
  background: var(--callout);
  border: 1px solid var(--line);
  border-radius: 10px;
  padding: 23px 20px;
  color: var(--accent);
  min-width: 0;
}
.monaco-learn .estimate-kicker {
  font-size: 10px;
  letter-spacing: .07em;
  text-transform: uppercase;
  font-weight: 600;
}
.monaco-learn .estimate-total,
.monaco-learn .estimate-annual {
  display: flex;
  align-items: baseline;
  gap: 8px;
  flex-wrap: wrap;
  line-height: 1.25;
}
.monaco-learn .estimate-total {
  margin: 14px 0 15px;
}
.monaco-learn .estimate-total output {
  font-size: clamp(24px, 2.3vw, 34px);
  font-weight: 600;
  letter-spacing: -.045em;
  font-variant-numeric: tabular-nums;
  overflow-wrap: anywhere;
}
.monaco-learn .estimate-total span,
.monaco-learn .estimate-annual span {
  font-size: 11px;
  color: var(--muted);
}
.monaco-learn .estimate-annual output {
  font-size: 23px;
  font-weight: 500;
  letter-spacing: -.03em;
  font-variant-numeric: tabular-nums;
  overflow-wrap: anywhere;
}
.monaco-learn .estimate-breakdown {
  border-top: 1px solid var(--line);
  padding-top: 17px;
  margin-top: 23px;
}
.monaco-learn .breakdown-title {
  display: block;
  font-size: 10px;
  font-weight: 600;
  margin-bottom: 10px;
  color: var(--accent);
}
.monaco-learn .estimate-breakdown > div {
  display: flex;
  justify-content: space-between;
  gap: 12px;
  font-size: 11px;
  margin: 9px 0;
  line-height: 1.5;
}
.monaco-learn .estimate-breakdown > div > span {
  color: var(--body);
}
.monaco-learn .estimate-breakdown output {
  font-variant-numeric: tabular-nums;
  text-align: right;
  overflow-wrap: anywhere;
  min-width: 0;
}
.monaco-learn .earn-estimate p {
  font-size: 10px;
  line-height: 1.7;
  color: var(--muted);
  margin: 20px 0 0;
}
.monaco-learn .calculator-assumptions {
  border-top: 1px solid var(--line);
  margin-top: 24px;
  padding-top: 16px;
  font-size: 12px;
}
.monaco-learn .calculator-assumptions summary {
  display: flex;
  justify-content: space-between;
  gap: 10px;
  list-style: none;
  cursor: pointer;
  color: var(--fg);
  font-weight: 500;
}
.monaco-learn .calculator-assumptions summary > span {
  color: var(--muted);
  font-size: 11px;
  font-weight: 400;
}
.monaco-learn .calculator-assumptions summary::-webkit-details-marker {
  display: none;
}
.monaco-learn .calculator-assumptions p {
  font-size: 11px;
  line-height: 1.8;
  margin: 12px 0 0;
}
.monaco-learn .referral-calculator .calculator-footnote {
  font-size: 10px;
  line-height: 1.8;
  color: var(--muted);
  margin: 13px 0 0;
}
@media (max-width: 600px) {
  .monaco-learn .referral-calculator {
    padding: 20px;
  }
  .monaco-learn .calculator-grid {
    grid-template-columns: 1fr;
    gap: 24px;
  }
  .monaco-learn .calculator-heading {
    gap: 10px;
  }
  .monaco-learn .calculator-heading h3 {
    font-size: 18px;
  }
  .monaco-learn .calculator-intro {
    font-size: 12px;
  }
  .monaco-learn .calculator-heading .small-label {
    font-size: 9px;
  }
  .monaco-learn .slider-label label {
    font-size: 13px;
  }
  .monaco-learn .slider-label output {
    font-size: 18px;
  }
  .monaco-learn .volume-control .slider-label {
    display: block;
  }
  .monaco-learn .volume-control output {
    display: block;
    font-size: 21px;
    margin: 6px 0;
  }
  .monaco-learn .earn-estimate {
    padding: 22px;
  }
  .monaco-learn .estimate-total output {
    font-size: 36px;
  }
  .monaco-learn .estimate-annual output {
    font-size: 27px;
  }
  .monaco-learn .estimate-breakdown > div {
    font-size: 12px;
  }
  .monaco-learn .calculator-assumptions summary {
    flex-wrap: wrap;
    gap: 4px;
  }
}
@media print {
  .monaco-learn .calculator-grid {
    grid-template-columns: 1.2fr 1fr;
  }
  .monaco-learn .referral-calculator {
    break-inside: avoid;
  }
  .monaco-learn .calculator-assumptions > * {
    display: block !important;
  }
  .monaco-learn .calculator-assumptions summary {
    display: flex !important;
  }
}
`}</style>;
};

<LearnStyles />

<div className="monaco-learn">
  Monaco uses maker and taker fees. **Maker fills add liquidity and receive a rebate at every fee tier. Taker fills remove liquidity and pay a fee.**

  A limit order may fill immediately against existing liquidity, so placing a limit does not by itself make a fill a maker fill.

  ## Base Trading Fees

  <FeeTables />

  <div className="example"><span className="small-label">Illustrative tier-1 perpetual fill · before application fees</span><strong>\$10,000 taker fill → \$4.50 fee</strong><p>At 4.50 bps, the fee is \$10,000 × 0.045%. At the same notional, the −0.10 bps maker rate gives a \$0.10 rebate.</p></div>

  ## How Your Tier Is Calculated

  Spot and perpetual volume are combined over the trailing **14 days**, with spot volume weighted by **2.5**:

  <div className="formula">Effective volume = 14-day perps volume + 2.5 × 14-day spot volume</div>

  Volume is counted per wallet across every application you trade through. That combined total sets your tier on every application.

  Monaco can also set a volume floor on a wallet. Your tier then resolves from the higher of your weighted volume and that floor, while the volumes reported for your account stay as recorded, so a wallet with a floor can show a tier above what its weighted volume alone reaches.

  Tiers are recalculated once per day at **00:00 UTC**.

  ## Application-Owned Fees

  Applications built on Monaco can add their own maker or taker fees on top of the base fees and retain **100%** of those additional fees.

  BuilderCodes separately attribute taker-side order flow to an application. Enrolled frontends receive a share of base protocol fees per fill. The revenue-share target and the TraderCodes referral levels and rates can be configured per client application, and a trade pays by the settings of the client it was placed through. See [BuilderCodes](/developers/buildercodes) for the revenue share and payout accounting.

  Fee simulations let applications show estimated costs before order submission. Use the application’s fee preview to review the estimated charges for your order.

  <Accordion title="Full Fees Reference" id="full-reference" className="learn-reference">
    Traders adding liquidity into the order book through maker orders receive a rebate with every fill, while takers pay a competitive fee for execution. Every fee tier includes a maker rebate, which is available to retail and institutional market participants, rather than being limited to designated market maker programs or only the highest-volume accounts.

    <h2 id="fee-tiers">Fee Tiers</h2>

    Monaco Protocol uses a maker-taker fee structure, tailored to the most active participants. Fee tiers are determined based on a combined trailing 14-day volume, counted per wallet: volume from every application you trade through adds up to one total, and that total sets your tier on every application.

    ```text theme={null}
    Volume = (14d Perp Volume) + 2.5 x (14d Spot Volume)
    ```

    Fee tiers are recalculated once per day at 00:00 UTC from trailing 14-day volume.

    <h2 id="spot-fees">Spot Fees</h2>

    <div className="not-prose" style={{ margin: "1rem 0 1.5rem", width: "100%" }}>
      <table style={{ borderCollapse: "collapse", fontSize: "0.88rem", lineHeight: 1.45, maxWidth: "36rem", tableLayout: "fixed", width: "100%" }}>
        <thead>
          <tr>
            <th style={{ borderBottom: "1px solid var(--border)", padding: "0.55rem 0.45rem", textAlign: "left", width: "16%" }}>Tier</th>
            <th style={{ borderBottom: "1px solid var(--border)", padding: "0.55rem 0.45rem", textAlign: "left", width: "30%" }}>Volume</th>
            <th style={{ borderBottom: "1px solid var(--border)", padding: "0.55rem 0.45rem", textAlign: "right", width: "27%" }}>Maker (bps)</th>
            <th style={{ borderBottom: "1px solid var(--border)", padding: "0.55rem 0.45rem", textAlign: "right", width: "27%" }}>Taker (bps)</th>
          </tr>
        </thead>

        <tbody>
          <tr><td style={{ padding: "0.5rem 0.45rem" }}>1</td><td style={{ padding: "0.5rem 0.45rem" }}>{"< $5mm"}</td><td style={{ padding: "0.5rem 0.45rem", textAlign: "right" }}>-0.10</td><td style={{ padding: "0.5rem 0.45rem", textAlign: "right" }}>6.50</td></tr>
          <tr><td style={{ padding: "0.5rem 0.45rem" }}>2</td><td style={{ padding: "0.5rem 0.45rem" }}>{">= $5mm"}</td><td style={{ padding: "0.5rem 0.45rem", textAlign: "right" }}>-0.20</td><td style={{ padding: "0.5rem 0.45rem", textAlign: "right" }}>6.00</td></tr>
          <tr><td style={{ padding: "0.5rem 0.45rem" }}>3</td><td style={{ padding: "0.5rem 0.45rem" }}>{">= $25mm"}</td><td style={{ padding: "0.5rem 0.45rem", textAlign: "right" }}>-0.30</td><td style={{ padding: "0.5rem 0.45rem", textAlign: "right" }}>5.00</td></tr>
          <tr><td style={{ padding: "0.5rem 0.45rem" }}>4</td><td style={{ padding: "0.5rem 0.45rem" }}>{">= $100mm"}</td><td style={{ padding: "0.5rem 0.45rem", textAlign: "right" }}>-0.40</td><td style={{ padding: "0.5rem 0.45rem", textAlign: "right" }}>4.00</td></tr>
          <tr><td style={{ padding: "0.5rem 0.45rem" }}>5</td><td style={{ padding: "0.5rem 0.45rem" }}>{">= $500mm"}</td><td style={{ padding: "0.5rem 0.45rem", textAlign: "right" }}>-0.50</td><td style={{ padding: "0.5rem 0.45rem", textAlign: "right" }}>3.00</td></tr>
          <tr><td style={{ padding: "0.5rem 0.45rem" }}>6</td><td style={{ padding: "0.5rem 0.45rem" }}>{">= $2bn"}</td><td style={{ padding: "0.5rem 0.45rem", textAlign: "right" }}>-1.00</td><td style={{ padding: "0.5rem 0.45rem", textAlign: "right" }}>2.50</td></tr>
        </tbody>
      </table>
    </div>

    <h2 id="perpetual-futures-fees">Perpetual Futures Fees</h2>

    <div className="not-prose" style={{ margin: "1rem 0 1.5rem", width: "100%" }}>
      <table style={{ borderCollapse: "collapse", fontSize: "0.88rem", lineHeight: 1.45, maxWidth: "36rem", tableLayout: "fixed", width: "100%" }}>
        <thead>
          <tr>
            <th style={{ borderBottom: "1px solid var(--border)", padding: "0.55rem 0.45rem", textAlign: "left", width: "16%" }}>Tier</th>
            <th style={{ borderBottom: "1px solid var(--border)", padding: "0.55rem 0.45rem", textAlign: "left", width: "30%" }}>Volume</th>
            <th style={{ borderBottom: "1px solid var(--border)", padding: "0.55rem 0.45rem", textAlign: "right", width: "27%" }}>Maker (bps)</th>
            <th style={{ borderBottom: "1px solid var(--border)", padding: "0.55rem 0.45rem", textAlign: "right", width: "27%" }}>Taker (bps)</th>
          </tr>
        </thead>

        <tbody>
          <tr><td style={{ padding: "0.5rem 0.45rem" }}>1</td><td style={{ padding: "0.5rem 0.45rem" }}>{"< $5mm"}</td><td style={{ padding: "0.5rem 0.45rem", textAlign: "right" }}>-0.10</td><td style={{ padding: "0.5rem 0.45rem", textAlign: "right" }}>4.50</td></tr>
          <tr><td style={{ padding: "0.5rem 0.45rem" }}>2</td><td style={{ padding: "0.5rem 0.45rem" }}>{">= $5mm"}</td><td style={{ padding: "0.5rem 0.45rem", textAlign: "right" }}>-0.20</td><td style={{ padding: "0.5rem 0.45rem", textAlign: "right" }}>4.25</td></tr>
          <tr><td style={{ padding: "0.5rem 0.45rem" }}>3</td><td style={{ padding: "0.5rem 0.45rem" }}>{">= $25mm"}</td><td style={{ padding: "0.5rem 0.45rem", textAlign: "right" }}>-0.30</td><td style={{ padding: "0.5rem 0.45rem", textAlign: "right" }}>4.00</td></tr>
          <tr><td style={{ padding: "0.5rem 0.45rem" }}>4</td><td style={{ padding: "0.5rem 0.45rem" }}>{">= $100mm"}</td><td style={{ padding: "0.5rem 0.45rem", textAlign: "right" }}>-0.40</td><td style={{ padding: "0.5rem 0.45rem", textAlign: "right" }}>3.50</td></tr>
          <tr><td style={{ padding: "0.5rem 0.45rem" }}>5</td><td style={{ padding: "0.5rem 0.45rem" }}>{">= $500mm"}</td><td style={{ padding: "0.5rem 0.45rem", textAlign: "right" }}>-0.50</td><td style={{ padding: "0.5rem 0.45rem", textAlign: "right" }}>3.00</td></tr>
          <tr><td style={{ padding: "0.5rem 0.45rem" }}>6</td><td style={{ padding: "0.5rem 0.45rem" }}>{">= $2bn"}</td><td style={{ padding: "0.5rem 0.45rem", textAlign: "right" }}>-1.00</td><td style={{ padding: "0.5rem 0.45rem", textAlign: "right" }}>2.50</td></tr>
        </tbody>
      </table>
    </div>

    <Note>
      This base fee structure is subject to change by protocol vote.
    </Note>

    <h2 id="reference-application-owned-fees">Application-Owned Fees</h2>

    Builders wanting to build on top of Monaco Protocol's infrastructure can add their own maker or taker fees on top of Monaco's base fees. This lets frontends and tailored trading experiences create a direct revenue stream from the volume they route, and own 100% of the fees they charge on top of Monaco's base fees.

    In addition to this, Monaco uses BuilderCodes to attribute taker-side routed order flow to an application, and a portion of its base fees is shared with enrolled frontends per fill. The revenue-share target and the TraderCodes referral levels and rates can be configured per client application, and a trade pays by the settings of the client it was placed through. See the [BuilderCodes developer guide](/developers/buildercodes) for the revenue share and RAW-unit payout semantics.

    Use the fee simulation endpoints and SDK helpers before order submission so users can see estimated costs before placing a trade.
  </Accordion>
</div>


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.