Earn with your fee
Attach your fee to any keyed quote and keep 100 percent of it. Your fee and
Synfin's flat service fee are two INDEPENDENT legs at settlement, no revenue
share: set feeBps and it lands in full on your own party. The fee
is a disclosed line the user sees on every keyed quote today.
Honest status: the disclosed fee lines are live now, but on-ledger
collection is flag-gated off (FEE_COLLECTION_ENABLED is
false), so every swap is fee-less today and no fee lands in any
wallet yet. See Collection status below for
exactly what happens when it flips, including the current limitation that the
partner fee legs are planned and disclosed but not yet executed by the SDK.
How it works
-
Add
feeBps(0 to 10, the cap) andfeeRecipient(your Canton party) to a keyed quote or plan. -
Every venue's quote gains
clientFees: your integrator line (bps,amount,recipient) which you keep in full, Synfin's flat service line, anduserReceives. - The same bps apply to every venue, so your fee never changes which venue wins: ranking stays by net receive only.
The numbers
All in bps of routed notional. "User pays" is the sum of Synfin's flat 10 bps service fee and your fee; you keep your fee in full and Synfin keeps its flat service fee, two independent legs. The user ceiling is 20 bps; at the 10 bps cap that is a 50/50 headline (framing, not a computed split).
| you set | user pays | you keep | synfin keeps |
|---|---|---|---|
| 0 | 10 | 0 | 10 |
| 5 | 15 | 5 | 10 |
| 10 (cap, 50/50) | 20 | 10 | 10 |
Worked example
Selling 1,000 CC (about 140 USD notional) with a 10 bps fee: the user pays 20 bps total; you keep your full 10 bps (1.00 CC); Synfin keeps its flat 10 bps (1.00 CC), a separate leg. The venue's network fee is a separate disclosed line on the quote and never goes to Synfin. You can see these exact lines in the quickstart's keyed response: on the Tradecraft quote with net 100.000000, the integrator line is 0.100000 (kept in full to your recipient), the service line is 0.100000, and userReceives is 99.800000.
Collection status, and what the flip changes
The disclosed lines are live. On-ledger collection is not. Stated exactly:
- Today: DISCLOSED, not COLLECTED.
FEE_COLLECTION_ENABLEDisfalse. Every keyed quote and plan discloses your fee inclientFees, but the plan carries no fee step (collectsFees: false) and no fee is taken. Show the numbers to your user; nothing settles yet. - When it flips: two independent fee legs. The plan gains one leg to the
Synfin fee party (Synfin's flat service fee) and one leg to your
feeRecipient(your full fee, kept 100 percent), both in the receive asset, riding one atomic CIP-0112 batch with the deposit. No cross-split: two legs, never a fan-out. - Current limitation, stated plainly: the partner path through
@synfin/client's genericWalletAdapterdoes not perform the CIP-0112 batch yet, so even after the flip the partner fee legs are planned and disclosed but not SDK-executed until that adapter gains batch capability. This is where it stands, not an aspiration. - Both fees degrade together. If the signing wallet's Canton participant
lacks the batching package (
splice-util-token-standard-wallet, Loop's does not today), the whole fee set drops to fee-less and the swap still succeeds. Never a partial charge (never only yours, never only ours), never a broken swap for a fee. See the support matrix.
Privacy of the fee
The only identity that enters on-ledger is the key holder's, your chosen
feeRecipient party. The end user is never linked to you beyond the
taker-to-feeRecipient relationship your own app already holds. The
fee leg carries an intent-free memo: no pair, no size, no route.
The service fee, plainly
Synfin charges a flat 10 bps service fee on every pair, a launch default
with no volume ladder and no separate stable-pair rate. Negotiated terms exist
for partners; whatever applies to your key is pinned in every response's appliedSchema, so the numbers are always traceable to a versioned schema.
What we never do
- No venue-side fees. Venues never pay for placement or ranking; revenue comes from the demand side only.
- No positive slippage capture. When execution beats the quote, the user keeps the difference. Permanent product decision.
- No hidden lines. Every fee on a quote is a disclosed line with its real application direction.
Ready? Request a key and run the quickstart.