Docs menu

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) and feeRecipient (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, and userReceives.
  • 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 setuser paysyou keepsynfin 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_ENABLED is false. Every keyed quote and plan discloses your fee in clientFees, 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 generic WalletAdapter does 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.