CRIUS
LaunchpadsPonsAnalyticsTutorial

How to Monitor Launchpad Creator Fees and Revenue

Measure what Robinhood Chain launchpad creators earn: hook fees, creator tax, sweeps and pending balances per token and per creator, with Pons examples.

Crius 9 min read

Short answer: GET /v1/robinhood/token/{address}/fees?window=all returns everything traders paid around a launchpad token (hook fee, creator tax, bonding-curve fees, LP fees, token tax and gas), how much the launchpad has already swept to the creator and the protocol, what is still pending, and who the receivers are. To see a creator’s total revenue, list their tokens with GET /v1/robinhood/dev/{address} and sum the fees of each.

Launchpad fees are where most creator income on Robinhood Chain comes from, and they are paid in a way that is easy to misread on a block explorer: fees accrue in an escrow, are swept in batches, and are split between parties by rules set at launch. This guide explains how the money flows on Pons, how to read the Crius fee data, and how to build a creator revenue monitor. All numbers are from Robinhood Chain mainnet in October 2026, valued at the ETH price at time of writing.

How fees flow on Pons

A Pons token’s fee settings are fixed at launch and readable from the chain. GET /token/{address}/launch returns them; for a typical graduated token:

"fees": {
"hook_fee_bps": 100,
"protocol_fee_share_bps": 3000,
"creator_tax_bps": 180,
"creator_fee_recipient": "0x82a563be78c579cf0e9cf9af38b1a1279b2ef936",
"protocol_fee_recipient": "0x31ea5b453a6cd60f36203830de046ff32dec2cdb",
"escrow": "0xd3afeb2a57f70ef218aa82451c51b2fb0416ac9e",
"buyback_enabled": false,
"buyback_burn_bps": 5000,
"snipe_tax": { "start_bps": 9900, "window_s": 3 }
}

Reading it:

  • Hook fee. After graduation, the PonsV2MemeHook takes 1% (hook_fee_bps: 100) of every swap in the token’s Uniswap v4 pool. The pool’s own LP fee is 0; the hook takes the fee instead.
  • Protocol share. 30% of the hook fee (protocol_fee_share_bps: 3000) belongs to the protocol; the rest is the creator’s.
  • Creator tax. An optional extra tax the creator chose at launch, here 1.8% (creator_tax_bps: 180), paid entirely to the creator. Many launches set it to 0.
  • Escrow and sweeps. Fees accumulate in the launchpad’s fee escrow and are periodically swept: one transaction pays out the accumulated amounts to the creator, the protocol and, when enabled, a buyback.
  • Bonding curve fees. While a token is still on its curve, curve trades pay their own fee, reported separately.

The upshot: a creator’s revenue is not the creator tax alone. A token with no creator tax can still earn its creator a great deal through the hook fee, as the creator example below shows.

Reading the fee report for one token

GET /v1/robinhood/token/{address}/fees requires the Starter plan and costs 5 credits. window is 1h, 24h, 7d or all.

Terminal window
curl -s "https://api.crius.sh/v1/robinhood/token/0xdd215018a9c558fcdfb2db56ab4d8c60ddf25491/fees?window=all" \
-H "x-api-key: $CRIUS_API_KEY"

The response has five parts. For CONDUCTOR, a Pons token that graduated about 15 hours before writing, trimmed:

{
"window": "all",
"totals_usd": {
"total": 10408.30, "hook": 2135.90, "creator": 3844.63, "bonding_curve": 1926.87,
"token_tax": 2285.06, "lp": 149.55, "gas": 66.34, "uniswap_protocol": null
},
"launchpad": {
"swept_usd": { "creator": 4399.71, "protocol": 527.97, "buyback": 0 },
"pending": { "creator_tax": "1320633194098255", "fees": "733685107832364", "buyback": "0" }
},
"receivers": [
{ "role": "creator_fee_recipient", "address": "0x82a563be78c579cf0e9cf9af38b1a1279b2ef936", "creator_tax_bps": 180 },
{ "role": "launchpad_protocol", "address": "0x31ea5b453a6cd60f36203830de046ff32dec2cdb", "share_bps": 3000 },
{ "role": "launchpad_fee_escrow", "address": "0xd3afeb2a57f70ef218aa82451c51b2fb0416ac9e" }
],
"claims": [
{ "type": "launchpad_fee_sweep", "block": 96689192, "currency": "ETH",
"amounts_usd": { "creator": 449.34, "protocol": 53.92, "buyback": 0 } }
],
"by_pool": [
{ "dex": "uniswap_v4", "pool": "0xa2ea5773…7ab5", "volume_usd": 177935, "token_tax_usd": 2246.18, "lp_usd": 0 },
{ "dex": "pons_curve", "pool": "0x875cc05e…d70a", "volume_usd": 68165.2, "token_tax_usd": 2.02, "lp_usd": 0 }
]
}

And the response notes, which matter for accounting:

"notes": ["USD at the current ETH price", "uniswap_protocol: protocol fee switch not indexed yet (null)"]

How to read each part:

  • totals_usd is what traders paid in the window, by type. hook is the hook fee, creator the creator tax, bonding_curve the curve fees before graduation, lp the fees earned by liquidity providers in other pools of the same token, and gas the network fees of the token’s trades.
  • launchpad.swept_usd is what actually left the escrow to each party. For CONDUCTOR the creator has received $4,399.71, more than the $3,844.63 of creator tax alone, because the creator also earns a share of the hook fee. Sweeps lag trading, so swept amounts will not reconcile exactly with totals_usd at any given moment; treat totals_usd as accrued and swept_usd as paid.
  • launchpad.pending is what is still sitting in the escrow, as raw wei strings (divide by 10¹⁸ for ETH). Here about 0.00132 ETH of creator tax and 0.00073 ETH of hook fees are waiting for the next sweep.
  • claims lists each sweep with its block and the split. CONDUCTOR had 12 sweeps in its first 15 hours.
  • by_pool shows where the volume and fees came from: the graduated v4 pool, the bonding curve, and any other pools people created for the token.

Two caveats. USD values use the ETH price at request time, not at the time of each fee; for accounting, convert the ETH amounts with your own historical prices. And uniswap_protocol is null because Uniswap’s protocol fee switch is not indexed yet.

Revenue across a creator’s tokens

Creators rarely launch once. GET /v1/robinhood/dev/{address} (Free plan, 5 credits) lists every token a creator launched, with a summary:

"summary": {
"tokens_created": 1, "graduated": 1, "graduation_rate_pct": 100, "rugged": 0,
"best_ath_market_cap_usd": 97278.5, "by_launchpad": { "pons": 1 }
}

Combine the two to monitor a creator’s revenue (Node.js 22+):

// creator-revenue.mjs: node creator-revenue.mjs <creator address>
const API = "https://api.crius.sh/v1/robinhood";
const headers = { "x-api-key": process.env.CRIUS_API_KEY };
const get = async (path) => {
const r = await fetch(`${API}${path}`, { headers });
if (!r.ok) throw new Error(`${path}: HTTP ${r.status}`);
return (await r.json()).data;
};
const creator = process.argv[2];
const dev = await get(`/dev/${creator}`);
let tax = 0, swept = 0;
for (const t of dev.tokens) {
const f = await get(`/token/${t.address}/fees?window=all`);
const lp = f.launchpad ?? {};
const creatorUsd = f.totals_usd?.creator ?? 0;
const sweptUsd = lp.swept_usd?.creator ?? 0;
const recipient = (f.receivers ?? []).find((r) => r.role === "creator_fee_recipient");
tax += creatorUsd; swept += sweptUsd;
console.log(`${t.symbol.padEnd(10)} ${t.status.padEnd(9)} creator tax $${creatorUsd.toFixed(2).padStart(9)}`,
`swept $${sweptUsd.toFixed(2).padStart(9)} claims ${(f.claims ?? []).length}`,
`creator tax rate ${recipient?.creator_tax_bps ?? 0} bps`);
}
console.log(`total: creator tax $${tax.toFixed(2)}, swept to creator $${swept.toFixed(2)} across ${dev.tokens.length} tokens`);

Real output for one creator with five graduated tokens, all set to a 0% creator tax:

NOVAAI graduated creator tax $ 0.00 swept $122786.00 claims 20 creator tax rate 0 bps
NOVAAI graduated creator tax $ 0.00 swept $ 63.05 claims 16 creator tax rate 0 bps
NOVAAI graduated creator tax $ 0.00 swept $ 70.36 claims 6 creator tax rate 0 bps
NOVAAI graduated creator tax $ 0.00 swept $ 122.90 claims 8 creator tax rate 0 bps
NOVAAI graduated creator tax $ 0.00 swept $ 386.08 claims 20 creator tax rate 0 bps
total: creator tax $0.00, swept to creator $123428.38 across 5 tokens

This is the hook fee at work: no creator tax at all, yet $123,428 swept to the creator, almost all from one token that found real volume. Another creator we checked, with 42 launches and four graduations, showed the opposite profile: $66,765 of creator tax collected and $90,641 swept in total. Serial launchers earn mostly from tax on many small tokens; a single breakout earns mostly from the hook fee.

Cost: /dev is 5 credits and /fees 5 credits per token, so a 42-token creator costs about 215 credits for a full pass. Cache results and refresh graduated tokens more often than dead ones.

A per-token report in Python

For dashboards or accounting jobs:

"""Fee breakdown for one launchpad token: what traders paid, what was swept to whom, what is still pending."""
import os, sys, requests
API = "https://api.crius.sh/v1/robinhood"
HEADERS = {"x-api-key": os.environ["CRIUS_API_KEY"]}
def fees(token: str, window: str = "all") -> dict:
r = requests.get(f"{API}/token/{token}/fees", params={"window": window}, headers=HEADERS, timeout=30)
r.raise_for_status()
return r.json()
body = fees(sys.argv[1], sys.argv[2] if len(sys.argv) > 2 else "all")
d, notes = body["data"], body["meta"].get("notes", [])
t, lp = d["totals_usd"], d.get("launchpad") or {}
print(f"window {d['window']} total fees ${t['total']:,.2f}")
for k in ("hook", "creator", "bonding_curve", "token_tax", "lp", "gas"):
print(f" {k:<14} ${(t.get(k) or 0):>10,.2f}")
swept = lp.get("swept_usd", {})
print(f"swept to creator ${swept.get('creator', 0):,.2f}, protocol ${swept.get('protocol', 0):,.2f}, buyback ${swept.get('buyback', 0):,.2f}")
pending = lp.get("pending", {})
print("pending (wei):", {k: v for k, v in pending.items() if v not in (None, "0")})
claims = d.get("claims", [])
print(f"{len(claims)} sweeps; latest at block {max((c['block'] for c in claims), default='-')}")
for n in notes:
print("note:", n)
window all total fees $10,408.30
hook $ 2,135.90
creator $ 3,844.63
bonding_curve $ 1,926.87
token_tax $ 2,285.06
lp $ 149.55
gas $ 66.34
swept to creator $4,399.71, protocol $527.97, buyback $0.00
pending (wei): {'creator_tax': '1320633194098255', 'fees': '733685107832364'}
12 sweeps; latest at block 96723438
note: USD at the current ETH price
note: uniswap_protocol: protocol fee switch not indexed yet (null)

Monitoring sweeps over time

Sweeps are the events creators care about, since they are when money arrives. Two practical patterns:

  • Poll and diff. Store the highest claims[].block you have seen per token and call /fees?window=24h every few minutes; anything with a higher block is a new sweep. Graduated tokens with volume sweep every few hours.
  • Watch pending. A rising launchpad.pending with no new sweep means fees are accumulating in the escrow.

For the token’s trading activity behind the fees, the DEX trades API and trades:<token> stream show every swap, and the liquidity API shows the pool depth that sustains it.

What this tells you about a token

Fee data is also a signal for traders. A creator tax adds directly to swaps, so a 1.8% tax plus the 1% hook fee can cost up to 2.8% per trade, more than 5% for a buy and a later sell, on top of price impact. Check the tax actually paid on recent trades with /security, see token security, and the creator’s history with /dev before you trade a fresh launch.

FAQ

Who receives Pons creator fees? The address in receivers with the role creator_fee_recipient, usually the creator’s wallet. It receives the creator tax and the creator’s 70% of the hook fee when the escrow is swept.

Why is swept_usd.creator higher than the creator tax? Because the creator also earns the non-protocol share of the 1% hook fee. The creator tax is only one of the creator’s income streams, and sweeps arrive in batches, so paid and accrued amounts rarely match exactly.

Are the USD values historical? No. Fee amounts are converted at the ETH price at request time (see meta.notes). Use the ETH amounts with historical prices for accounting.

Which plan do I need? The /fees endpoint is on the Starter plan (5 credits per call). /launch and /dev are on the Free plan.

Does this cover launchpads other than Pons? The fee report covers gas, LP fees, hook fees and token tax for any token. Launchpad-specific fields (escrow sweeps, creator tax configuration) are reported where Crius decodes them, which today means Pons.

Sources

Build with Crius

Robinhood Chain data in one API

Free plan with 1M credits a month. Your key in under a minute.

Related APIs

More from the blog