> ## 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.

# Earn

> Earn from liquidity, referrals, applications, and proposed markets.

export const referralEarnings = scenario => {
  const perTrader = scenario.volume * 4 / 10000;
  const levels = [scenario.first * perTrader * 0.3, scenario.second * perTrader * 0.15, scenario.third * perTrader * 0.05];
  const monthly = levels.reduce((total, amount) => total + amount, 0);
  return {
    levels,
    monthly,
    yearly: monthly * 12
  };
};

export const ReferralCalculator = () => {
  const [scenario, setScenario] = useState({
    first: 25,
    second: 50,
    third: 100,
    volume: 100000
  });
  const result = referralEarnings(scenario);
  const money = new Intl.NumberFormat("en-US", {
    style: "currency",
    currency: "USD",
    minimumFractionDigits: 0,
    maximumFractionDigits: 2
  });
  return <section className="not-prose referral-calculator" aria-labelledby="referral-calculator-title">
      <div className="calculator-heading">
        <div>
          <span className="small-label">Explore The Numbers</span>
          <h3 id="referral-calculator-title">Illustrative Referral Earnings</h3>
        </div>
        <span className="unlimited-flag" title="There is no limit on how many traders you can refer.">
          ∞ Unlimited referrals
        </span>
      </div>
      <p className="calculator-intro">
        Adjust your referral network and its trading activity to see an
        illustration of your referral earnings.
      </p>
      <div className="calculator-grid">
        <div className="calculator-inputs">
          <div className="referral-control">
            <div className="slider-label">
              <label htmlFor="referral-first">
                Referred Traders <span>First-degree · 30%</span>
              </label>
              <output id="referral-first-value" htmlFor="referral-first">
                {scenario.first.toLocaleString("en-US")}
              </output>
            </div>
            <input id="referral-first" type="range" min="0" max="500" step="1" value={scenario.first} onChange={event => setScenario({
    ...scenario,
    first: event.target.valueAsNumber
  })} aria-valuetext={scenario.first + " traders"} style={{
    "--range-fill": 100 * scenario.first / 500 + "%"
  }} data-referral-input="first" aria-describedby="referral-count-help" />
            <div className="slider-scale">
              <span>0</span>
              <span>500</span>
            </div>
          </div>
          <div className="referral-control">
            <div className="slider-label">
              <label htmlFor="referral-second">
                Second Referrals <span>Second-degree · 15%</span>
              </label>
              <output id="referral-second-value" htmlFor="referral-second">
                {scenario.second.toLocaleString("en-US")}
              </output>
            </div>
            <input id="referral-second" type="range" min="0" max="500" step="1" value={scenario.second} onChange={event => setScenario({
    ...scenario,
    second: event.target.valueAsNumber
  })} aria-valuetext={scenario.second + " traders"} style={{
    "--range-fill": 100 * scenario.second / 500 + "%"
  }} data-referral-input="second" aria-describedby="referral-count-help" />
            <div className="slider-scale">
              <span>0</span>
              <span>500</span>
            </div>
          </div>
          <div className="referral-control">
            <div className="slider-label">
              <label htmlFor="referral-third">
                Third Referrals <span>Third-degree · 5%</span>
              </label>
              <output id="referral-third-value" htmlFor="referral-third">
                {scenario.third.toLocaleString("en-US")}
              </output>
            </div>
            <input id="referral-third" type="range" min="0" max="500" step="1" value={scenario.third} onChange={event => setScenario({
    ...scenario,
    third: event.target.valueAsNumber
  })} aria-valuetext={scenario.third + " traders"} style={{
    "--range-fill": 100 * scenario.third / 500 + "%"
  }} data-referral-input="third" aria-describedby="referral-count-help" />
            <div className="slider-scale">
              <span>0</span>
              <span>500</span>
            </div>
          </div>
          <p className="calculator-help" id="referral-count-help">
            Total traders at each level, not referrals per person. The sliders
            stop at 500; the referral program has no count limit.
          </p>
          <div className="referral-control volume-control">
            <div className="slider-label">
              <label htmlFor="referral-volume">
                Avg Monthly Volume Per Trader
              </label>
              <output id="referral-volume-value" htmlFor="referral-volume">
                {money.format(scenario.volume)}
              </output>
            </div>
            <input id="referral-volume" type="range" min="0" max="10000000" step="10000" value={scenario.volume} onChange={event => setScenario({
    ...scenario,
    volume: event.target.valueAsNumber
  })} aria-valuetext={money.format(scenario.volume) + " per trader per month"} style={{
    "--range-fill": 100 * scenario.volume / 10000000 + "%"
  }} data-referral-input="volume" aria-describedby="referral-volume-help" />
            <div className="slider-scale">
              <span>$0</span>
              <span>$10,000,000</span>
            </div>
            <p className="calculator-help" id="referral-volume-help">
              $10,000 increments · Same average at all three levels.
            </p>
          </div>
        </div>
        <div className="earn-estimate" role="status" aria-live="polite" aria-atomic="true">
          <span className="estimate-kicker">Illustrative Earnings</span>
          <div className="estimate-total">
            <output id="referral-monthly">
              {money.format(result.monthly)}
            </output>
            <span>/ month</span>
          </div>
          <div className="estimate-annual">
            <output id="referral-yearly">{money.format(result.yearly)}</output>
            <span>/ year</span>
          </div>
          <div className="estimate-breakdown">
            <span className="breakdown-title">Monthly By Level</span>
            <div>
              <span>First-degree</span>
              <output id="referral-first-earnings">
                {money.format(result.levels[0])}
              </output>
            </div>
            <div>
              <span>Second-degree</span>
              <output id="referral-second-earnings">
                {money.format(result.levels[1])}
              </output>
            </div>
            <div>
              <span>Third-degree</span>
              <output id="referral-third-earnings">
                {money.format(result.levels[2])}
              </output>
            </div>
          </div>
          <p>Yearly earnings assume 12 identical months.</p>
        </div>
      </div>
      <details className="calculator-assumptions">
        <summary>
          Illustrative Fee Assumption <span>4 bps net</span>
        </summary>
        <p>
          Uses a fixed illustrative net protocol fee of 4 bps (0.04% of trading
          volume). This is a calculator assumption, not a quoted Monaco fee.
          Application fees are excluded. See <a href="/fees">Fees</a> and the{" "}
          <a href="/developers/tradercodes#reward-rates" target="_blank" rel="noopener">
            TraderCodes reward rules
          </a>
          .
        </p>
        <p>
          Monthly earnings at each level = traders × monthly volume per trader ×
          0.04% × that level’s referral rate.
        </p>
      </details>
      <p className="calculator-footnote">
        Illustration only. Applies the assumed net fee to all entered volume.
        Actual rewards depend on activity, fee tiers, maker/taker mix, and
        per-fill rounding.
      </p>
    </section>;
};

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 shares revenue with traders, builders, and market-proposers, accessible at all activity tiers, from retail trader to institutional market-maker.

  ## Ways To Earn

  | Route | For | Reward |
  | - | - | - |
  | Maker Rebates | For traders providing active or passive liquidity. | A rebate on maker fills at every fee tier. |
  | TraderCodes | Referring trading activity across multiple layers | A share of referral revenue from net protocol fees. |
  | BuilderCodes | Building applications on top of Monaco's SDK and shared liquidity layer | Application fees and rewards from base protocol fees. |
  | Market-Proposers | Proposing and actively launching markets | Revenue sharing, subject to liquidity and activity requirements. |

  ## Maker Rebates

  Add liquidity through maker orders and receive a rebate when they fill. There is no minimum volume tier for access to maker rebates. See [Fees](/fees) for the current spot and perpetual schedules.

  ## TraderCodes

  Every user can mint a unique TraderCode and use it to refer other traders. When someone signs up with your code, you earn a share of referral revenue from net protocol fees.

  <div className="referral-levels"><div><strong>L1</strong><span>First-degree referrals</span></div><div><strong>L2</strong><span>Second-degree referrals</span></div><div><strong>L3+</strong><span>Deeper levels, up to 10</span></div></div>

  You earn from direct referrals and from the further layers of activity they bring, across up to 10 referral levels. Monaco sets how many levels earn and the reward rate for each level. These can be configured per client application, and a trade pays the levels of the client it was placed through. Rewards are allocated to your account **at the time of the trade**, and there is no limit on the number of traders you can invite.

  <ReferralCalculator />

  See the [TraderCodes guide](/developers/tradercodes) for integration steps and account methods.

  ## BuilderCodes

  Applications have two revenue routes:

  1. **Application fees.** Add non-negative maker or taker fees on top of Monaco’s base fees and retain 100% of those app-specific fees.
  2. **Protocol revenue rebates.** Earn rewards from base protocol fees in proportion to the volume routed to Monaco’s orderbook.

  The [BuilderCodes guide](/developers/buildercodes) covers attribution, payout accounting, endpoints, and claim safety.

  ## Market-Proposers

  Monaco’s market-proposer model lets proposers bring assets to market without a listing fee. A proposer supplies the minimum required liquidity and receives a **50% revenue share** from activity in that market while it remains listed and active.

  The first instance of a proposed asset becomes the canonical version, avoiding multiple fragmented versions of the same asset.

  <Accordion title="Full Earn Reference" id="full-reference" className="learn-reference">
    Monaco protocol is designed to provide a seamless trading experience, while enabling participants on the ecosystem to earn directly from their contributions. Revenue-sharing is not limited to high-volume institutional programs or specific teams: all traders can earn through maker rebates and TraderCodes, and builders can monetize the applications they create.

    * **Maker rebates:** All traders can earn maker rebates across all levels of volume activity. See [Fees](/fees) for current maker and taker fees.
    * **TraderCodes:** A unified referral program that tracks activity and enables direct revenue-sharing.
    * **BuilderCodes:** Earn on the trading activity routed through your chosen application.
    * **Market proposers:** Proposers can earn from the activity generated by markets they launch on Monaco, once a market meets liquidity and activity requirements.

    <h2 id="reference-tradercodes">TraderCodes</h2>

    Trade together, earn together. Every Monaco user will be able to mint a unique TraderCode, which they can use to refer other traders. When another user signs up with that code, the referrer earns a share of the referral revenue from net protocol fees.

    <Note>
      Building with TraderCodes? See the [TraderCodes developer guide](/developers/tradercodes) for integration steps, SDK methods, and API reference.
    </Note>

    Why share a Trader Code?

    <div className="not-prose" style={{ alignItems: "center", display: "flex", flexWrap: "wrap", gap: "1rem", margin: "1rem 0 1.5rem" }}>
      <svg aria-label="TraderCode referral levels" role="img" viewBox="0 0 220 220" style={{ height: "auto", maxWidth: "220px", width: "100%" }}>
        <circle cx="110" cy="110" r="96" fill="none" stroke="#9cb8a7" strokeWidth="12" />

        <circle cx="110" cy="110" r="68" fill="none" stroke="#5f806b" strokeWidth="12" />

        <circle cx="110" cy="110" r="40" fill="none" stroke="#233329" strokeWidth="12" />

        <circle cx="110" cy="110" r="20" fill="#233329" />

        <text x="110" y="106" textAnchor="middle" fill="#ffffff" fontSize="9" fontWeight="700">YOU</text>
        <text x="110" y="119" textAnchor="middle" fill="#ffffff" fontSize="7">CODE</text>
        <text x="110" y="68" textAnchor="middle" fill="#233329" fontSize="17" fontWeight="800">L1</text>
        <text x="110" y="42" textAnchor="middle" fill="#233329" fontSize="15" fontWeight="800">L2</text>
        <text x="110" y="18" textAnchor="middle" fill="#233329" fontSize="13" fontWeight="800">L3+</text>
      </svg>

      <div style={{ display: "grid", flex: "1 1 14rem", gap: "0.55rem" }}>
        <div style={{ borderLeft: "4px solid #233329", paddingLeft: "0.75rem" }}><strong>L1</strong> first-degree referrals</div>
        <div style={{ borderLeft: "4px solid #5f806b", paddingLeft: "0.75rem" }}><strong>L2</strong> second-degree referrals</div>
        <div style={{ borderLeft: "4px solid #9cb8a7", paddingLeft: "0.75rem" }}><strong>L3+</strong> deeper referral levels, up to 10</div>
      </div>
    </div>

    * **Earn across up to 10 levels:** Users earn from the trading fees generated by direct referrals, but also activity from incremental referrals brought by those traders. Monaco configures how many levels earn, up to 10, and the reward rate for each level. These can be configured per client application, and a trade pays the levels of the client it was placed through.
    * **Instantly accessible:** These rewards are allocated to your account at the time of the trade.
    * **No limits to referrals:** Users can invite as many traders as they want.

    <h2 id="reference-buildercodes">BuilderCodes</h2>

    <Note>
      Integrating a frontend? See the [BuilderCodes developer guide](/developers/buildercodes) for attribution, payout accounting, frontend endpoints, and claim safety.
    </Note>

    There are two ways to earn:

    * **Your fees, your pocket:** Frontends can add additional maker and taker fees (>= 0 bps) in addition to Monaco Protocol's base fees, and keep 100% of these app-specific fees.
    * **Protocol revenue rebates:** Frontends earn additional rewards proportional to the volume they route to Monaco Protocol's order book, coming from base protocol fees.

    <h2 id="reference-market-proposers">Market Proposers</h2>

    Monaco is designed to let proposers bring new assets to market without paying a listing fee. A proposer supplies the required minimum liquidity for the market and receives a 50% revenue share from activity generated in that market while the market remains listed and active.

    Proposer markets are intended to avoid fragmented multiple versions of the same asset, and so the first instance of a proposed asset becomes the canonical version.

    <Note>
      Proposer economics, minimum liquidity requirements, activity thresholds, and delisting rules are subject to Monaco governance and market-review requirements.
    </Note>
  </Accordion>
</div>


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