What a transfer costs
Two commercial components, both computed on the transfer’s hop amount: what the recipient (or all destinations together) receives.
The estimate returns both, plus the SOL you need up front for account rent, transaction fees and keeper funding (
sol.requiredSolUpFrontLamports). Those are network costs, not MultiHopper revenue.
For SOL transfers, amountRaw is the total your wallet spends, fees included: hopAmountRaw + percentFeeRaw + totalFlatFeeLamports ≤ amountRaw. For SPL transfers, the token side is hopAmountRaw + percentFeeRaw ≤ amountRaw, and the per-hop charge is a separate SOL outflow.
How the tier is chosen
The per-hop charge ramps with the transfer’s USD value. The program works out that value itself, and the API reproduces it exactly:- It reads the spot price from the Raydium CLMM pool it is given at route creation.
- It values the hop amount (after fees), not the gross amount.
- It picks the first tier where that value is
≤the tier’s upper bound.
usdValueMicros (USD × 10⁶) and its index as tierIndex. priceSource: "onchain_pool" means the quote came from the same pool the program will read. Any other value means the pool couldn’t be read and the quote is an estimate.
Just above a tier boundary there can be no exact answer: one tier’s fee leaves a hop amount in
the tier below, and that tier’s fee leaves one in the tier above. The API then sets the hop amount
to the top of the lower tier and returns
cappedAtTierBoundary: true. Your wallet spends slightly
less than amountRaw, never more./prepare, /prepare returns MH_040. Create a new transfer to re-quote.
The fee schedule being rolled out
This schedule is live on devnet and is being rolled out cluster by cluster. The percent fee is 0.50% at every size. The per-hop charge is free up to 500, and stays flat above that:
The per-hop charge is set in lamports, so it doesn’t move with the SOL price. The USD value only decides which tier applies.
Worked example
1 SOL at $120, 3 hops (devnet schedule):Revenue share
Integrators receive 50% of every fee, both the percent fee and the per-hop charge, on every transfer created with their API key. The split happens atomically inside the route-creation transaction and goes straight to your registered rewards wallet. There’s no balance to accrue and nothing to claim. Before your first transfer, your rewards wallet must already hold the rent-exempt minimum for an empty account (getMinimumBalanceForRentExemption(0)), or /prepare returns MH_091. Small fee shares can’t create a new account on their own.
GET /usage reports what you have earned: SOL-denominated shares in totalFlatFeeEarned, SPL percent-fee shares per mint in tokenFeesEarned, and totalPayouts settled on chain.
