Comparison

Fuul vs Merkl

Both platforms distribute incentives onchain. Only one of them tells you who brought the user, which action earned the reward, and what the program returned.

Used by
Accelerated by a16z Crypto CSX. Onchain and offchain incentives in one program.
Every claim about Merkl on this page comes from their public documentation and their published rate card. Last verified 2026-08-12.

The short version

Fuul
Knows who brought the user, across multiple levels of referral
Rewards onchain activity and product activity in the same program
A platform fee that does not scale with the budget, so all of it reaches users
Merkl
Pays wallets for holding a position, with no notion of who referred them
Eligibility is computed from onchain positions only
Take rate deducted from the campaign budget, charged on deposit
01 / Attribution

Merkl pays wallets. It does not know who brought them.

Every incentive program runs the same five stages. Merkl starts at the third one, when eligibility is already an onchain position. The two before it are the ones growth teams end up building in house. The two are not the same purchase: Merkl distributes a liquidity campaign, Fuul runs the attribution underneath it and the affiliate program on top of it. Teams that run both are not doing anything strange.

Fuul
Event captured
Referral attribution
Eligibility
Reward calculation
Payout
Merkl
Event captured
Referral attribution
Eligibility
Reward calculation
Payout
FuulMerkl
Referral attributionMulti-level, with sub-affiliatesSingle level
Affiliate commissionsPaid on top of the budget, as a separate commissionReferral boosts redistribute the campaign budget
Affiliate operationsApplication queue, terms acceptance, invoices, separate accountingA configuration flag on a campaign
Fraud protectionML behavioral clustering over 30+ onchain signals, self-referral detection, bot detection, payout capsCompliance gates: OFAC lists, optional World ID, health factor and duration rules
02 / Reward events

Merkl reads onchain positions. A signup and a payment are not positions.

A deposit and a trade are onchain. A signup, a payment and a completed KYC are not, and those are often the actions actually worth paying for.

Deposit
Trade
Bridge
Staking
Signup
Stripe checkout
KYC completed
In-app action
Social action

Grey is what both platforms can reward. Blue is what only Fuul can turn into a payout, in the same program and out of the same budget.

Fuul trigger catalogue showing offchain reward triggers for X, GitHub, Discord, Zealy and Galxe alongside onchain categories

The trigger catalogue in Fuul. Every one of these pays out of the same budget as your onchain incentives. Merkl puts social actions out of scope by design.

FuulMerkl
Offchain and product eventsAny event through the API, including payments and in-app activityEligibility is computed from onchain positions
Social actionsSupportedOut of scope
PointsFuul issues and holds the balanceIndexed only, you keep the canonical balance
Tax and KYCW-9, W-8BEN and W-8BEN-E collected in the portal, claims gated until approvedPseudonymous by design, no KYC
03 / Cost

One cost climbs with every dollar you distribute. The other does not.

Merkl charges a percentage of what you distribute, on a published degressive ladder. Fuul charges a platform fee for the software, and it does not move with the size of the budget.

Merkl: a take rate
Their published rate card, applied to the amount distributed.
$30,000$63,750$107,500$182,500$1M$2.5M$5M$10MAmount distributed per yearAnnual fee
Fuul: a platform fee
Priced by the scope of what you run. It does not move with the amount you distribute.
Same fee at every level$1M$2.5M$5M$10MAmount distributed per year

A worked example, on Merkl's published ladder. A program distributing $10M in a year pays 3% on the first $1M, 2.25% on the next $1.5M, 1.75% on the next $2.5M and 1.5% on the last $5M. That is $182,500, a blended 1.83%, taken out of the budget before a single user is paid. On Fuul the fee is invoiced separately, so the full $10M reaches users. The platform fee covers running an attribution and affiliate program, and it does not move with the size of the budget. Distributing token incentives at scale is quoted separately, on a schedule that decreases as volume grows.

Fuul
The budget is not the product
The budget stays separate from the price, so the full budget reaches users
Handing out more rewards does not make the software cost more
What you quote your depositors is what they get
Merkl
The fee lives inside the budget
The fee comes out of the campaign budget, so every basis point is a reward that never reached a user
Charged when you deposit, so a campaign that underperforms costs what one that works costs
If you publish an APY, the fee is already inside the number you quoted your depositors

Merkl's own documentation is explicit about both consequences.

Merkl's fees are deducted directly from the tokens deposited into the campaign. The fee is taken out of the campaign budget itself.
You deposit the full budget, Merkl takes its cut upfront, and the remainder is what gets distributed.

Honest note. Below roughly $800,000 distributed per year, a take rate is cheaper than a platform fee and Merkl is the right call. Their ladder charges 3% on the first $1M, which is $30,000, and reaches $182,500 by the time you distribute $10M in a year. The arithmetic turns when incentives stop being a campaign and become something you run every week.

Full comparison

Everything above in one table, including the rows where Merkl is ahead.

FuulMerkl
Onchain reward distributionToken, stablecoin and points payouts, with claim infrastructureMerkle root published onchain for users to claim
Chain coverageMulti-chain, EVM and SVM60+ networks, the widest in the category
Position mathSnapshot basedIntegrated across the campaign window
Reward forwarding through nested contractsAddress forwarding resolves a contract address to the end user through a configured mappingFollows beneficial ownership
Offchain and product eventsAny event through the API, including payments and in-app activityEligibility is computed from onchain positions
Referral attributionMulti-level, with sub-affiliatesSingle level
Affiliate commissionsPaid on top of the budget, as a separate commissionReferral boosts redistribute the campaign budget
Affiliate operationsApplication queue, terms acceptance, invoices, separate accountingA configuration flag on a campaign
Fraud protectionML behavioral clustering over 30+ onchain signals, self-referral detection, bot detection, payout capsCompliance gates: OFAC lists, optional World ID, health factor and duration rules
Tax and KYCW-9, W-8BEN and W-8BEN-E collected in the portal, claims gated until approvedPseudonymous by design, no KYC
PointsFuul issues and holds the balanceIndexed only, you keep the canonical balance
Social actionsSupportedOut of scope
Pricing modelPlatform fee, independent of the amount distributedTake rate on the amount distributed, deducted from the budget

When Merkl is the better choice

There are cases where we are not the answer. Three of them.

You are running a one-off liquidity campaign on a network we do not support.

Eligibility is entirely onchain and nobody is asking who brought the user.

It is a single distribution, small enough that a take rate costs less than a platform fee.

We would rather say this here than in the third call.

Moving a program that is already running

Nothing has to be paused. Past events are backfilled through the API, so the history a program already has does not reset. Both programs can run in parallel while you move: a campaign in flight on Merkl finishes on Merkl, while attribution starts collecting on Fuul from day one.

Questions we get asked

Can I run both?

Yes, and some teams do. Merkl distributes a liquidity campaign while Fuul runs attribution, affiliates, and the programs that depend on product activity.

Does Fuul distribute onchain?

Yes. Token, stablecoin, and points payouts, with claim infrastructure and automated distribution.

Can Fuul reward something that never touches a blockchain?

Yes. Any event your product can emit becomes a trigger: a signup, a Stripe checkout, a KYC completion, an action inside your app. It is the same program and the same budget as your onchain incentives.

What happens to my existing program if I migrate?

Past events can be backfilled through the API, and both programs can run in parallel while you move. Nothing has to be paused.

See it against your own program

Bring a program you are running today. We will show you what the attribution looks like underneath it.

Book a demo