Skip to main content
POST
Use this endpoint to show users expected costs before they confirm a transfer. It quotes exactly what the program will charge: the tier comes from the on-chain fee schedule and the Raydium pool price the program reads, applied to the post-fee hop amount. See Pricing & revenue share.
The estimate includes the compliance screening fee. On networks where the compliance gate is enabled (mainnet today), /prepare collects 0.002 SOL for each wallet the route screens. The estimate returns that amount as sol.breakdown.screeningFeeLamports, and it is already counted in requiredSolUpFrontLamports. Pass the transfer’s arrivalSeconds so payouts that run late, and are screened again, are priced too. It is not refunded. See Compliance & screening.

Request body

string
required
The Solana mint address of the token to transfer.
string
required
Raw token amount as a string (e.g. "1000000000" for 1 SOL).
integer
default:"6"
Decimal precision of the token. Defaults to 6.
integer
default:"7"
Number of intermediate abstraction hops. Range: 3–10. Defaults to your integration setting (7). Not with route.
integer
Price a multi-destination transfer to this many destinations (1–20). Adds the payout accounts’ rent and transactions to sol.
integer
The arrivalSeconds you will create the transfer with (60 to 2,592,000, i.e. 30 days). It prices the screening of payouts that run more than about 6 hours after the route starts, which are screened again. Omitted, the estimate assumes they run within that window. Not with route.
object
Price, and check, a custom route: the same route you will send to create. Every rule that does not need the sender’s, recipient’s or destinations’ addresses is checked here, so this is a free dry run (MH_018 lists every problem at once). Add destinationCount for a route paying several destinations.
integer
Price, and check, a saved route template as if its hops were sent as route. Not with route.
number
Fallback USD price, used only when the on-chain pool price can’t be read (priceSource tells you which was used). The chain never uses it.

Response

string
Fee tier the chain will apply (e.g. "tier_2").
integer
Index into the on-chain fee schedule.
integer
Percent fee in basis points.
string
floor(hopAmountRaw × percentFeeBps / 10000), in token base units.
integer
The tier’s per-hop charge, in lamports.
integer
The tier’s once-per-route charge, in lamports.
integer
flatFeeLamportsPerRoute + flatFeeLamportsPerHop × hops.
string
Your half of the percent fee, paid to your rewards wallet on chain.
integer
Always 0: the per-hop charge is not shared with integrators.
string
What the recipient (or all destinations together) receives.
number
USD value of amountRaw, for display.
string
The program’s USD value of the hop amount (× 10⁶): what selects the tier.
string
onchain_pool (exact), or override / oracle (estimate; re-checked at /prepare).
boolean
true when the hop was capped at a tier boundary; the wallet spends slightly less than amountRaw.
object
amountRaw, feeRaw, netDeliveredRaw (= hopAmountRaw), decimals.
object
requiredSolUpFrontLamports, minTransferAmountLamports, breakdown (incl. dispersionRentLamports), refundableLamports, netCostLamports.
object
With route only: hopCount (hops on chain, the recipient included) and arrivalSeconds (the sum of the waits).
boolean
Whether this estimate was made with a test-mode API key.