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.

ComponentHow it is computedWhere the live figure comes from
Service fee0.4% of the amount; with Extended screening, at least the $0.45 equivalentfee, serviceFeeBps, serviceFeeMinUsd on the payment and the quote
Network feeFlat estimate per asset and networknetworkFee on the quote · networkFeeUsd from GET /v1/blockchains
Withdrawal feeFlat, network-dependent, per withdrawalConfigured 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.

terminal
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"
  }'
response.json
{
	"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.

ConfigurationCustomer paysYou receive
merchant / merchant defaultthe amount, exactlyamount − service fee − network fee
customer / merchantamount + service feeamount − network fee
merchant / customeramount + network feeamount − service fee
customer / customeramount + both feesthe amount, exactly
[PLACEHOLDER: the four configurations priced on one $100 example — figures rendered from POST /v1/payments/quote at build time, never written by hand]

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.