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.
| Line | Rate | Paid by | Received by |
|---|---|---|---|
| Rebate | As offered | Brand | Shopper, at the address chosen at claim |
| Sway fee | 1,000 basis points (10% of the rebate) | Brand | Sway treasury |
| Integrator fee | 500 basis points (5% of the rebate) | Brand | The 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
| Limit | Value | Where it is checked |
|---|---|---|
| Rebate per conversion | At most 50 USDC, and at most the campaign's cap per conversion | Offer ingest, and again when the receipt is recorded |
| Campaign funding | At most 5,000 USDC per campaign, net of withdrawals | Each fund_campaign |
| Daily cap | Set per campaign, at most 5,000 USDC. It counts rebate plus fees per UTC day | When a verified receipt is recorded |
| Lock | At least the merchant's return window, in whole days | create_campaign |
| Dispute compensation | At most 50 USDC per case, paid from the merchant's bond | Dispute resolution |
When money moves
| Moment | On-chain step | What moves |
|---|---|---|
| The brand funds a campaign | fund_campaign | USDC from the brand's wallet into the campaign vault |
| A receipt arrives | Arcium verify_conversion | Nothing moves. Inside the MXE, the price and the proposed rebate are checked against the sealed offer and the shopper's intent |
| Verification succeeds | record_certified, which runs record_conversion and its verification in one transaction | The 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 unlock | refund_conversion | The whole campaign debit returns from the claims vault to the campaign vault |
| The shopper claims after unlock | claim | The rebate to the shopper's address, the Sway fee to the treasury, the integrator fee to the payout wallet, in one transaction |
| The brand withdraws | withdraw_campaign | USDC 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.
| Line | Base units | USDC |
|---|---|---|
| Rebate | 15,000,000 | 15.00 |
| Sway fee, 10% | 1,500,000 | 1.50 |
| Integrator fee, 5% | 750,000 | 0.75 |
| Campaign debit | 17,250,000 | 17.25 |
- 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.
- 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.
- Before day 30. If the shopper returns the shoes, the brand's refund notice sends the 17.25 USDC back to the campaign vault.
- 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.