Skip to main content
Every payment carries two rates in basis points, both frozen onto it at creation and taken in one deduction. 100 bps is 1%, and the collection model is deducted_at_final_settlement, denominated in USD.

Read your rates from configuration

No rate card exists in this documentation. Your platform rate and your partner rate are set in your agreement, written onto your organization, and returned by GET /v2/partners/config. Every number on this page is a labelled example, not your pricing.
Read the rates at startup rather than hardcoding them. fees on that response carries platformFeeBps, partnerFeeBps and totalFeeBps, each with a matching percent, plus model and currency. Your rates can change; an in-flight payment’s cannot.

Read the fee snapshot on the payment

Every payment carries a fees object, returned only to the partner that owns those terms. quote_pending exposes the frozen rates while the three amounts are still null, because a provider quote has not been frozen yet. quoted exposes immutable exact amounts, including genuine zeros. Absent is not zero. A zero fee comes back as the string "0". A null means the amount is not available or fee visibility is restricted for that credential, and your screen needs a state for it that is not 0.00.

Compute each component from the gross

Each component is computed independently from the gross, in atomic units, and floored:
The three always sum back to the gross, so a payment reconciles against itself. Two constraints hold at creation: the combined rate must be under 10000 bps, and the net must be greater than zero.
Amounts are atomic integer strings. 24.812500 USDC is 24812500 at six decimals. Do not rebuild these in floating point, and do not assume six decimals for every asset.

Know which side absorbs the fee

Worked example: depositing funds

A payment for 25.000000 USDC, with example rates of 50 bps platform and 25 bps partner. Settlement delivers the net. See Merchant settlement.

Worked example: sending payments

Deliver exactly 10.000000 USDC, same example rates. On a send, merchantNetAmountAtomic equals the delivered amount, and the three figures sum to sourceAmount.

One payment carries one fee snapshot

Every funding option satisfies the same escrow obligation, so however the payment is funded, the snapshot on it is the whole commercial charge.
  • Routing does not add a fee. A cross-chain or cross-token send uses exact output and does not reduce the authorized destination amount for slippage.
  • Conversion does not add a fee. It happens inside the payment, on the selected option, with no second resource and no second deduction. See Conversion.
  • A funding leg does not add a fee. A Vault-funded leg reports commercialFeeMode: "parent_payment": the parent payment’s snapshot is authoritative and the leg cannot accrue a second commercial fee.
Reconcile against the frozen snapshot rather than recomputing from your current rates. A rate change must never rewrite an in-flight payment, a receipt or a dispute record.

Fiat sends carry a third component

A send to a bank beneficiary, a linked bank account or a local merchant is priced by a provider quote on the payment’s funding object.
totalFees is a breakdown of money already inside required. Adding it to required charges your customer twice. Show it as a breakdown, never as a surcharge.
Every component is denominated in the stablecoin being funded, even when the recipient is paid in local currency. Display them in that asset, and show the rate in the direction it was quoted rather than inverting it. totalFees excludes any additional fee quoted separately by a selected funding method.

Your partner fee accrues per movement

Your partner fee is not invoiced. It is collected in the same deduction as the platform fee and accrues to you as its own ledger entry per movement. Each entry records the gross, net and fee amounts, the rate in basis points and the asset. When fee movement fails, the payment’s operationalReasonCode says so with fee_payout_failed or fee_payout_requires_intervention. How and when your accrued balance is remitted is a commercial term in your agreement, not an API behaviour.

What the calculation excludes

  • Network costs. Gas and unavoidable source-network costs sit outside the basis-point calculation and are not reported inside it.
  • A payout rail’s own fee. Reported separately as funding.providerFee on a fiat send, never folded into the two commercial components.
  • Costs quoted on a selected funding method. Additional, and disclosed on the option that was selected.
  • A published FX spread. None exists. What is published is the directional rate frozen onto each quote, and that is the number to show and reconcile against.
  • Per-account, per-address or per-webhook charges. None are described in this product. If your agreement contains one, your agreement is the authority.
Fees apply wherever money moves. The provider component exists only on fiat sends, in the markets where those rails are enabled. View supported regions and currencies →

Next: On-ramp accounts

Bank details in your customer’s name that convert incoming dollars to stablecoin.