The two modes
A swap pays either the protocol fee or the partner fee, never both. When you pass a
partner, the protocol fee is replaced by your fee, and Soroswap’s share comes out of it. The
floor on the partner fee exists so that Soroswap’s share stays at or above what it would have
earned without a partner.
Read it the way other aggregators express it: a 10 bps base plus your fee, shared. At the
25 bps floor with the standard 50/50 share, you keep 12.5 bps and Soroswap keeps 12.5 bps.
Both dials,
protocol_bps and min_partner_bps, are set on the aggregator contract by its
admin and can change. The current values are readable on-chain from the contract’s config().
The contract itself accepts a partner fee up to 1,000 bps; the API lets you set 25 to 300.Pool fees are separate
Each liquidity source charges its own pool fee (for example, 0.3% on Soroswap AMM pools, paid to liquidity providers; other venues have their own). The aggregator fee described here is charged on top of the pool fees of the route and is the only fee Soroswap itself collects on an aggregated swap. The Fees concept page describes the AMM pool fee.Setting your fee
Through the API. The fee belongs to your API account, not to each request. Once Soroswap activates your account as a partner, every mainnet quote you make carries your fee and reports it inplatformFee, so you can show it to your user before they sign. The fee is always taken
from the input token.
amountOut already has
the fee taken out. feeBps and referralId in a /quote body are accepted for backwards
compatibility and ignored for pricing.
The rate endpoint returns 403 until your account is activated as a partner. To activate it,
write to the contact in Questions.
Calling the aggregator contract directly. Pass a Partner { id, bps } in swap_exact_in
or swap_exact_out. id is the partner identifier Soroswap assigns to you (at most 9
characters); bps is your fee. Without a partner struct the swap pays the protocol fee and
nothing is attributed to you.
Your partner identifier is the partnerId that GET /partner returns. Ask in your integration
channel if you do not have it yet.
Settlement
Partner fees are collected on-chain in the token of each swap and booked under your partner identifier in the Soroswap fee treasury. At the end of each calendar month Soroswap converts them to USDC at market rate, pays your share to the wallet you designate on Stellar, and sends a statement listing, per token, the fees collected, the conversion rate and time, and the resulting allocation. Everything is verifiable on-chain against your partner identifier. Your statements are also available through the API:GET /partner/statements lists your
payouts and GET /partner/statements/{payoutId} returns one in full. Amounts are in stroops.
Positive slippage (output above the quoted amount) is passed to the user today and is not
captured as a fee.