Fees & who pays what
Every payment carries a 0.4% service fee and a fixed network fee that depends on the asset and network. Both are quoted before confirmation — nothing is discovered after.
Components
Every payment carries a 0.4% service fee and a fixed network fee that depends on the asset and network. The service fee has no minimum with Basic screening; Extended screening carries a $0.45 minimum per payment (complianceLevel — see Screening levels). Withdrawals carry a flat network-dependent fee, configured in the dashboard. Every fee is quoted before confirmation — nothing is discovered after.
| Component | How it is computed | Where the live figure comes from |
|---|---|---|
| Service fee | 0.4% of the amount; with Extended screening, at least the $0.45 equivalent | fee, serviceFeeBps, serviceFeeMinUsd on the payment and the quote |
| Network fee | Flat estimate per asset and network | networkFee on the quote · networkFeeUsd from GET /v1/blockchains |
| Withdrawal fee | Flat, network-dependent, per withdrawal | Configured in the dashboard — not exposed on the API-key surface |
Quote before you create
POST /v1/payments/quote returns the exact economics of a payment without creating anything: the service fee, the estimated networkFee, the gross (what the customer pays) and the netAmount (what you receive) — for any fee configuration and screening level. The USD price used for a quote is indicative; the binding quotedPrice is locked when the payment is created, so your net is deterministic from that moment.
curl -X POST https://api.suward.com/v1/payments/quote \
-H "X-Api-Key: $SUWARD_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"asset": "USDT_ARBITRUM",
"amount": "100000000",
"serviceFeePayer": "customer",
"networkFeePayer": "customer",
"complianceLevel": "basic"
}'{
"asset": "USDT_ARBITRUM",
"amount": "100000000",
"fee": "400000",
"networkFee": "…",
"gross": "…",
"netAmount": "…",
"quotedPrice": "1.0001",
"complianceLevel": "basic"
}All monetary fields are integer strings in the asset's smallest unit — read decimals from GET /v1/assets before you format anything for a human. → Quote payment fees
Who pays
Two independent settings, fixed per payment at creation: serviceFeePayer and networkFeePayer, each merchant or customer. Default: both merchant — your customer pays exactly the displayed amount, and both fees are deducted from your proceeds. Set a payer to customer and that fee is added on top of what the customer pays instead.
| Configuration | Customer pays | You receive |
|---|---|---|
merchant / merchant default | the amount, exactly | amount − service fee − network fee |
customer / merchant | amount + service fee | amount − network fee |
merchant / customer | amount + network fee | amount − service fee |
customer / customer | amount + both fees | the amount, exactly |
The boundaries, stated plainly
- On small payments the fixed network fee is the cost that matters; if it matters for your tickets, shift it to the customer — one setting.
- With Extended screening, the $0.45 minimum applies below $112.50; from $112.50 up, Extended costs the same 0.4%.
- Fee figures on this page and on the pricing page come from the same configuration source as the API — they cannot disagree.
Static-wallet deposits
Deposits report fee, networkFee, and netAmount per deposit, so every incoming transfer reconciles on its own. → Static wallets
Next: what screening levels change → Screening levels.
Something unclear? payments@suward.com — we treat every integration question as a documentation defect.