Network and token are inputs to every payout quote. Which quote lines can change by chain, where gas sits, and how to compare two networks fairly.
Partly. On BlindPay, every payout quote takes a network and a token, and fees are scheduled per payment rail and per blockchain network, so the fee lines can differ by chain. The bank rail, the recipient, and the quote's window don't change. Gas sits outside the quote. To know the real difference, quote the same payout on two networks and compare.
Short version: the chain mostly changes what you pay to get the stablecoins in, not how the local currency gets out.
Key takeaways
network and token are required inputs to a payout quote. An incompatible pair fails with a 400.GET /billing/fees, then confirm on a live quote.approve transaction.receiver_amount for the same request, not on token or chain reputation.Because the quote prices the funding leg as well as the conversion. The stablecoins have to leave a wallet on a specific chain, and BlindPay has to know which token contract to pull from and how to settle it.
The request to POST /v1/instances/{instance_id}/quotes always carries both:
For EVM networks, the response also returns a contract object: the token contract address, the ABI, BlindPay's address to approve as spender, and the exact decimal-adjusted amount. Stellar and Solana don't use that allowance pattern; Stellar payouts sign an XDR transaction and Solana payouts sign a token delegation. Same quote, different signing step. The payout quotes reference has every field.
Some lines can. Others are fixed by the bank side of the payment and don't care which chain the USDC came from.
| Part of the payout | Can network or token change it? | Where you see it |
|---|---|---|
Market rate (commercial_quotation) | Possibly, by token; check by quoting both | Quote response |
BlindPay's fee lines (flat_fee, applied rate) | Yes, fees are scheduled per rail and per network | Quote response, GET /billing/fees |
Partner fee (partner_fee_amount) | No, partner fees are set per payin and per payout | Quote response |
| Gas | Yes, and it sits outside the quote | Your wallet's transaction |
| Signing step | Yes: approve on EVM, delegation on Solana, XDR on Stellar | Payout tutorials |
| Offramp wallet additional fee and minimum | Yes, fixed per chain | Offramp wallet docs |
| Bank rail, recipient, arrival time | No | Bank account |
| Quote window | No, set by quote type and rail | expires_at |
The rule for the first row: don't assume. Request two quotes a few seconds apart, identical except for network or token, and diff them. Where the exchange rate gets fixed explains which line holds which part of the price.
Call GET /v1/instances/{instance_id}/billing/fees with an owner or admin key. It returns one fee object per payment rail and one per blockchain network configured for your instance.
The billing reference lists the rails (ach, domestic_wire, rtp, international_swift, pix, pix_safe, ted, ach_colombia, transfers_3, spei, sepa) and the networks (tron, ethereum, polygon, base, arbitrum, stellar, solana). Each object has four fields:
| Field | Unit | Meaning |
|---|---|---|
payout_flat | Cents | Flat fee per payout |
payout_percentage | Basis points (50 = 0.50%) | Percentage fee per payout |
payin_flat | Cents | Flat fee per payin |
payin_percentage | Basis points | Percentage fee per payin |
BlindPay doesn't publish a flat rate card. The schedule is your instance's configuration, and every quote discloses the exact fee for that payment before you execute. Use the schedule to plan and the quote to decide. Stablecoin off-ramp fees explained covers the fee types more broadly.
Illustrative example. A team pays out 10,000 USDC to a Pix account and quotes the same request on two networks. The numbers are made up for the arithmetic, not BlindPay pricing.
| Quote on network A | Quote on network B | |
|---|---|---|
request_amount (sender side) | 10,000.00 USDC | 10,000.00 USDC |
commercial_quotation | 5.40 BRL per USDC | 5.40 BRL per USDC |
| Extra network-level fee | 0.00 USDC | 1.00 USDC |
| Effective rate | 5.373 | 5.373 |
receiver_amount | R$53,730.00 | R$53,724.63 |
Network B delivers 1.00 x 5.373 = R$5.37 less. On one payout, noise. On 2,000 payouts a month, R$10,746 less for the same USDC. Since the market rate matched, the whole difference is fees, which is what you'd confirm in the fee fields.
Worked example with documented offramp wallet fees. Offramp wallets, deposit addresses that pay out to a linked bank account automatically, carry a fixed additional fee per chain, per the offramp wallet docs:
| Chain | Tokens on an offramp wallet | Minimum | Additional fee | Share of a 250 payment |
|---|---|---|---|---|
| Polygon | USDC, USDT | Fees only | 0 | 0.0% |
| Arbitrum, Base, Tempo, Arc | USDC | Fees only | 0 | 0.0% |
| Solana | USDC | 50 USDC | 0.50 USDC | 0.2% |
| Ethereum | USDC | Fees only | 1 USDC | 0.4% |
| Tron | USDT | 200 USDT | 15 USDT | 6.0% |
The math: 15 ÷ 250 = 6.0% on Tron, against 0% for the same USDT on Polygon. For small recurring payouts, the chain is the biggest fee decision you make. More on the mechanism in what an off-ramp wallet is.
It can, depending on the path. The same docs give one concrete case: on an offramp wallet paying out in USD, USDT deposits convert at a flat 1:1 rate with no market spread, while USDC deposits use the live market rate.
For local-currency payouts, quote both tokens and compare commercial_quotation. Token choice is also constrained by the chain. Per BlindPay's supported chains, USDC payouts run on Ethereum, Polygon, Base, Arbitrum, Tempo, Arc, Stellar, and Solana, and USDT payouts run on Ethereum, Polygon, Tempo, Solana, and Tron. Circle lists its USDC contract addresses per chain, and Tether lists its supported protocols.
Mistakes surface early: a token on a chain where it isn't deployed fails at quote time with a 400 that names the pair, before any money moves. USDC vs USDT for payments compares the tokens themselves.
Outside the quote. Gas is the chain's fee for processing your transaction, paid by whoever signs it, and it never shows up in flat_fee or receiver_amount.
On most chains you pay it in the native token: ETH on Ethereum, per ethereum.org, SOL on Solana, per Solana's fee docs, and bandwidth or energy on Tron, per Tron's resource model. Arc uses USDC as its gas token.
On EVM payouts from an external wallet, your wallet signs an approve call for the quoted amount, and that transaction needs gas. Funding from a BlindPay-managed wallet skips the client-side signing, but managed wallets are in beta and custodial. Who pays gas fees breaks this down by flow.
Only the on-chain part. The rail decides the rest. Pix and SPEI deliver in minutes whatever chain funded them, and a SEPA payout's crypto leg always runs on Polygon regardless of which network you funded from. That doesn't change your API call, but it can change the on-chain timing you observe.
Finality by chain is covered in which network to off-ramp on. Choose by token support first, then by the fee lines on a real quote, then by gas and finality. For how live quotes behave when the local currency moves, see live quotes and volatile currencies, and the glossary for any term here.
Pull your fee schedule from GET /billing/fees, then request the same payout quote on your two most likely networks and diff receiver_amount. Ten minutes, and you'll know which chain to default to. The billing reference has the request.
The five risks of a stablecoin card: peg, program failure, custody, smart contracts, and fraud, with the August 2026 incident and a safety checklist.
Stablecoin payments are as safe as the issuer, the network, the provider, and your own controls. The seven risks to check, with real incidents and fixes.
Five stablecoin APIs compared for cross-border payments: primary use case, pre-funding requirement, payout regions, and developer experience, plus how to choose by buyer scenario.