Sway

Fees and settlement

Sway charges a brand nothing to list an offer or to take part in matching. Fees exist only on verified purchases, and they are calculated on the rebate, not on the product price. The product price goes to the store through its own checkout, and Sway takes nothing from it. Everything settles in USDC with 6 decimals, counted in base units: 1 USDC is 1,000,000.

Brand offers

The brand pays the rebate plus 15% of it. The shopper receives the whole rebate the brand offered.

LineRatePaid byReceived by
RebateAs offeredBrandShopper, at the address chosen at claim
Sway fee1,000 basis points (10% of the rebate)BrandSway treasury
Integrator fee500 basis points (5% of the rebate)BrandThe integrator's payout wallet
sway_fee       = floor(rebate × 1000 / 10000)
integrator_fee = floor(rebate × 500 / 10000)
campaign_debit = rebate + sway_fee + integrator_fee

Cashback

Cashback paid from affiliate commissions is built into the program and turns on when the deployment connects an affiliate network; its split is specified in the whitepaper.

Rounding

Both fees round down to the base unit. For example, a rebate of 12.345678 USDC (12,345,678 base units) carries a Sway fee of 1,234,567 and an integrator fee of 617,283, for a campaign debit of 14,197,528.

Caps

LimitValueWhere it is checked
Rebate per conversionAt most 50 USDC, and at most the campaign's cap per conversionOffer ingest, and again when the receipt is recorded
Campaign fundingAt most 5,000 USDC per campaign, net of withdrawalsEach fund_campaign
Daily capSet per campaign, at most 5,000 USDC. It counts rebate plus fees per UTC dayWhen a verified receipt is recorded
LockAt least the merchant's return window, in whole dayscreate_campaign
Dispute compensationAt most 50 USDC per case, paid from the merchant's bondDispute resolution

When money moves

MomentOn-chain stepWhat moves
The brand funds a campaignfund_campaignUSDC from the brand's wallet into the campaign vault
A receipt arrivesArcium verify_conversionNothing moves. Inside the MXE, the price and the proposed rebate are checked against the sealed offer and the shopper's intent
Verification succeedsrecord_certified, which runs record_conversion and its verification in one transactionThe campaign debit moves from the campaign vault into the claims vault and counts against the daily cap. The unlock time is set to now plus the campaign's lock days
Verification fails—Nothing moves and nothing is recorded. The brand can send the receipt again with the right rebate
The product is returned before unlockrefund_conversionThe whole campaign debit returns from the claims vault to the campaign vault
The shopper claims after unlockclaimThe rebate to the shopper's address, the Sway fee to the treasury, the integrator fee to the payout wallet, in one transaction
The brand withdrawswithdraw_campaignUSDC still in the campaign vault back to the brand's wallet

Sway's fee, 10% of each verified rebate, buys $SWAY on the market and burns it; see The SWAY token.

Sway's relayer pays the Solana transaction fees for recording receipts, refunds and claims. The brand's wallet pays the fees of the transactions it signs itself.

Worked example

The figures below are for example only.

A brand has a 30-day return window. It creates a campaign with a cap per conversion of 50 USDC, a lock of 30 days and a daily cap of 500 USDC, and funds it with 1,000 USDC. Its offer is a pair of running shoes at 120 USDC with a 15 USDC rebate.

LineBase unitsUSDC
Rebate15,000,00015.00
Sway fee, 10%1,500,0001.50
Integrator fee, 5%750,0000.75
Campaign debit17,250,00017.25
  1. Day 0. A shopper buys the shoes for 120 USDC through the brand's checkout. The brand sends the receipt with the exact price, 120 USDC, and the 15 USDC rebate.
  2. Day 0, after verification. In the transaction that records the receipt, 17.25 USDC moves from the campaign vault into the claims vault. The vault holds 982.75 USDC, and the unlock time is 30 days later.
  3. Before day 30. If the shopper returns the shoes, the brand's refund notice sends the 17.25 USDC back to the campaign vault.
  4. Day 30 or later. The shopper claims. 15.00 USDC goes to the address the shopper chose, 1.50 USDC to Sway and 0.75 USDC to the agent developer.

At 17.25 USDC per sale, the 500 USDC daily cap fits 28 sales in one UTC day. A 29th would bring the day to 500.25 USDC, so the program refuses to record it (CapExceeded) until the next UTC day. The 1,000 USDC funding covers 57 sales, which leaves 16.75 USDC in the vault for the brand to withdraw or top up.