Explainers

How stablecoin payments work: every step, every party

A stablecoin payment runs in three legs: collect local currency, move a dollar stablecoin, pay out locally. Every step and party, with a USD to BRL example.

Caio Barbosa

Founder & CO-CEO

Forbes Under 30. One of the leading voices in Fintech & Crypto in Brazil. Writes weekly about stablecoins, payments, and the future of financial infrastructure in Latin America.

Cover image for Lumx blog article: How stablecoin payments work: every step, every party
Cover image for Lumx blog article: How stablecoin payments work: every step, every party

A stablecoin payment is a transfer that runs in three legs. The sender's money is collected and converted into a dollar stablecoin such as USDC or USDT, the stablecoin moves between wallets on a blockchain, and it is converted again and paid into the recipient's bank account over a local rail. The sender pays in dollars, and the recipient receives reais without ever handling the stablecoin.

This post follows one payment, a US company paying a supplier in Brazil, names every party the money touches and which of them Lumx is, and shows where it can stall. For the route as a concept first, read what a stablecoin corridor is.

Who touches the money in a stablecoin payment

A payment looks like one transfer and is eight roles inside, six of them separate parties and two of them functions. The table lists them in the order the money meets them.

The parties in a USD to BRL stablecoin payment and the role Lumx plays in each (as of November 2026).

Party

What it does

Lumx plays this role

Read more

Sender's bank

Sends the dollars by ACH, FEDWIRE (the Federal Reserve's same-day wire system) or SWIFT

No

Stablecoins vs SWIFT for B2B payments

Banking partner

Provides the local account and the bank rails behind the named virtual account

No. Lumx orchestrates the account through its banking partners

What a named virtual account is

Stablecoin issuer

Mints and redeems the stablecoin: Circle for USDC, Tether for USDT

No

What a stablecoin on-ramp is

Blockchain network

Records the transfer between wallets

No

Stellar, Ethereum, Polygon and Tron compared

Custodial wallet

Holds the stablecoin balance between legs

Yes

What a custodial wallet is

Conversion

Trades dollars for stablecoin on the way in and stablecoin for reais on the way out

Yes

What a stablecoin off-ramp is

Screening

Verifies the sender and checks each payment before it moves

Yes

What a VASP is

Local rail and recipient's bank

Pix runs the transfer and the recipient's bank credits the account

No

Global payments

Lumx is not an issuer, since Circle issues USDC and Tether issues USDT, and it is not a bank. What it runs is the custodial wallet, the conversion and the screening.

Step 1: the sender is verified before any money moves

Nothing starts until the sender is verified. A company goes through KYB (know your business, the verification of a company and its owners), and an individual goes through KYC (know your customer, the verification of an individual).

The Travel Rule sits on top. It is the reason a stablecoin payment has a named sender and a named recipient: the identifying details travel with the transfer. The FATF published a revised Recommendation 16 on payment transparency on June 18, 2025, as recorded in a notice from Japan's Financial Services Agency. The Travel Rule guidelines cover where the rule comes from and how it is applied across jurisdictions.

Onboarding is one integration, not three vendors. KYB and KYC run inside the Lumx API through Sumsub, Chainalysis monitors blockchain transactions, and Lumx is Travel Rule aligned. Every transaction, inbound and outbound, is screened before it runs. Lumx targets one business day for KYB. A KYB Standard customer can move up to $50,000 per transaction and $100,000 per day, in every country. Each payee is registered as a destination under the customer, with its relationship to the holder.

Step 2: dollars arrive in an account in the sender's name

The sender pays into a named virtual account (a local account number issued in the customer's own name), so the deposit is matched to the customer without a reference code. A USD account takes ACH, FEDWIRE and SWIFT on one account number.

This leg runs on bank hours, and a payment that misses the cut-off waits for the next business day. The rail table below has the times.

Funding needs no call per deposit. A standing autoconversion rule on a Lumx account turns every deposit into stablecoin, and the 50 USD minimum applies to every deposit, not only to autoconversion. A USD or EUR account with no active rule and no on-ramp keeps the deposit as fiat. The USD account activates within one business day of the customer's approval, and the BRL and MXN accounts activate right away. See the product page for named virtual accounts.

Step 3: the quote fixes the price

The quote prices the payout leg, stablecoin to reais. The first leg, dollars to stablecoin, runs at market. Before the stablecoin is sold for reais, the platform asks for a quote: the rate, the fees and the amount the recipient will get. A locked rate holds for a fixed window and is what a customer confirms against.

How stablecoin payout pricing works breaks down the cost, and the live rates are on the USD to USDC and USDC to BRL pages.

You can show the customer a price before anything is sent. Lumx gives a locked rate through the exchange-rates endpoint, with a lock of 30 seconds, one minute or five minutes. The 30-second lock carries no fee, and longer locks include a fee for the volatility risk. You pass the quote's id on the payout, and if the lock has expired the API returns EXCHANGE_RATE_EXPIRED and you ask for a new one. A locked quote belongs to a single off-ramp, because the standing autoconversion rule on the account always converts at market.

Step 4: the stablecoin lands in a custodial wallet

Once the dollars clear, they are converted to USDC or USDT and delivered to a wallet. The wallet holds the balance between legs, so a platform can fund once and pay out many times. The network decides which stablecoin the wallet holds, and Lumx lists these combinations:

Network

Stablecoins

Ethereum

USDC, USDT

Polygon

USDC, USDT

Base

USDC

Tron

USDT

Stellar

USDC, on-ramp only, BRL collection

Stellar is on-ramp only, so payouts and USD routes run on Ethereum, Polygon, Base or Tron. Nobody on your side signs a transaction, and Lumx subsidizes the network fee on its own legs, so the customer needs no ETH or TRX. Every Lumx customer gets a wallet on each supported blockchain at creation, usable once the customer is approved, and Lumx holds the keys, so a payment is an API call.

Step 5: the stablecoin moves, the bank leg follows, and webhooks report both

The payout debits the wallet, converts the stablecoin to reais and sends them over Pix (Brazil's instant payment system, run by the Central Bank). The recipient's bank credits the account and the payment is done. Lumx publishes no blockchain confirmation time, so plan around the bank legs, which have documented cut-offs.

The first payout to a new supplier is where this usually goes wrong. Check the CPF (the Brazilian individual taxpayer ID) or CNPJ (the Brazilian company taxpayer ID) against the account holder before the invoice is due, because a mismatch comes back as INVALID_TAX_ID.

The supplier sees your company's name as the payer on a Pix payout, and nothing is taken out of the amount that arrives. Lumx charges the fee in the conversion and shows it on the receipt, and only the recipient's own bank can charge the recipient. The payout starts with a destination registered for the recipient, then an off-ramp that names it. For the full sequence on this route, see USDC to a Brazilian bank.

A payment is asynchronous, so Lumx reports each status change instead of making the platform poll. Lumx sends each status as a webhook event, from onramp.transferring_fiat and offramp.transferring_fiat up to onramp.success and offramp.success, plus onramp.failed, offramp.failed and onramp.expired. Requests are signed with HMAC-SHA256, and the success event carries the receipt: amounts, rate, Lumx and partner fees, and the blockchain transaction hash.

When is the recipient actually paid, and what can stop it?

A confirmed transfer on the blockchain does not mean the supplier has been paid. Paid means reais in the supplier's account, and that depends on the rails at both ends.

Settlement time and cut-off by rail, from the Lumx coverage and cut-off pages and Lumx's current position on COP (as of November 2026).

Rail

Used for

Settlement

Cut-off

Pix

BRL payout and collection

Instant, 24/7/365

None

SPEI (Mexico's interbank transfer system, run by Banxico)

MXN payout and collection

Instant, 24/7/365

None

Bre-B (Colombia's instant payment system)

COP payout

Instant

n/a

FEDWIRE

USD collection and payout

Same business day, typically within hours

3:00 PM ET

ACH

USD collection and payout

1 to 2 business days

2:00 PM ET

SWIFT

USD collection and payout

1 to 5 business days

3:00 PM ET

Add the collection rail and the payout rail, and that is most of the wait. USD by FEDWIRE into BRL by Pix is same-day when funded before the cut-off, while SWIFT brings its own window. Lumx counts an off-ramp as complete when the funds leave its banking partner, and the recipient's own bank can still hold a credit for its own review.

I recommend that a platform shows its customers two states and never one: sent, when the stablecoin leg confirms, and paid, when the local payout completes. A single "paid" at the first confirmation will be wrong whenever the bank leg is held for review, and the customer then hears it from the supplier. I would rather the screen say "sent" for a few minutes than say "paid" and be corrected.

A confirmed blockchain transfer is final, which is why the destination is registered and checked before anything moves. The bank legs can still fail, as reversal of stablecoin payments explains. A deposit that lands after its Lumx transaction expired goes back to the sender.

Where a payment can stop, and what surfaces when it does, on the Lumx API (as of November 2026).

Stage

What stops it

What you see

Verification

A document is blurry or a field is missing

The customer moves to RFI (request for information, a compliance hold that asks for a document before a transaction clears) and a customer.rfi event names the document

Collection

A deposit under the 50 USD minimum, over the limit, or arriving after an on-ramp window

Under the minimum, no conversion starts. Over the limit, the balance is held. After the window, the funds go back to the sender on the same rail

Quote

The lock expired before the payout was sent

EXCHANGE_RATE_EXPIRED, then a new quote

Limits

The amount passes a single, daily or monthly limit

TRANSACTION_LIMIT_EXCEEDED, naming the limit

Monitoring

A payment is flagged for review

A hold and an RFI by email or Slack. Without a reply in 24 hours the payment may be refunded to the sender

Wallet

The wallet holds less than the payout

INSUFFICIENT_BALANCE

Payout

The recipient's bank rejects the tax ID or the account

INVALID_TAX_ID, or offramp.failed, a terminal state whose message points to support with the transaction id

A failed payout reaches you as a webhook that carries the transaction id for support. Why stablecoin payouts get rejected covers the payout failures, and what to tell the customer, in more detail.

When a stablecoin payment is the wrong tool

When both sides are in one country and one currency, the domestic rail is faster and cheaper: Pix for a Brazilian company paying a Brazilian supplier, ACH for a US payroll. A stablecoin in the middle only earns its place when the money crosses a border or a currency.

It is also the wrong tool when the funds belong to someone Lumx has not onboarded, because passing money through for third parties needs written approval from compliance first, and for an amount above the $50,000 per-transaction limit of a KYB Standard customer, which needs a limit increase or Enhanced KYB first.

What a USD to BRL payment looks like on Lumx

Lumx is stablecoin payments infrastructure for businesses that move money between Latin America and the rest of the world: one API to collect, hold, convert, and pay out in BRL, MXN, COP, USD, EUR, and GBP or in USDC and USDT, over local rails such as PIX, SPEI, PSE, Bre-B, ACH, FEDWIRE, SEPA, and Faster Payments, with SWIFT and on-behalf-of payments and collections (POBO and COBO) in USD, EUR, and GBP, plus named virtual accounts, custodial wallets, and KYB/KYC built in.

For a US company paying a Brazilian supplier, the sequence is this. The company is verified once and gets a USD account in its own name. It pays in by ACH, FEDWIRE or SWIFT, and a standing rule converts the deposit to USDC in the company's wallet on a network that supports payouts. When an invoice is due, the platform registers the supplier as a destination with the SUPPLIER relationship, asks for a locked quote, and sends the off-ramp. The supplier receives reais by Pix, the receipt arrives by webhook, and the supplier sees the company's name as the payer.

For other currencies, a Mexican supplier is paid in MXN by SPEI (Mexico's interbank transfer system, run by Banxico) and a Colombian one is paid in COP by Bre-B (Colombia's instant payment system) or by ACH Colombia, chosen when the destination is registered. Bre-B carries a regulatory cap of 1,000 UVB per transaction, which is COP 12,110,000 for 2026, and a payout above it is refused rather than split, so larger invoices go to ACH Colombia. The coverage page lists the rails, the operator map shows how the legs connect, and supported countries lists jurisdictions.

On safety, see whether stablecoin payments are safe. On wallets, see the crypto wallet question.

Methodology and sources

Product behavior comes from the Lumx documentation pages read on November 1, 2026, including coverage, wallets, transactions, exchange rates and webhooks. The Pix sender of record, the KYB review target and the COP rails are stated as of November 2026. The Bre-B cap follows Banco de la República's Circular Reglamentaria Externa DSP-465, Asunto 18, section 3.2, in the sheet of March 31, 2026.

Verified on November 1, 2026. Operational context, not legal, tax, or investment advice.

Cover photo: Mark McLaughlin on Unsplash.

  • How do stablecoin payments work?

    A stablecoin payment moves in three legs. The sender's local currency is collected and converted into a dollar stablecoin such as USDC or USDT, the stablecoin moves between wallets on a blockchain, and it is converted again and paid into the recipient's bank account over a local rail such as Pix or SPEI. One Lumx API runs all three legs, with verification, a custodial wallet, a quote and webhooks for each step.

  • How long does a stablecoin payment take from start to finish?

    It takes about as long as the two bank legs together, which are the legs with published cut-offs. A payment collected by FEDWIRE and paid out by Pix can complete the same business day, while one collected by SWIFT takes one to five business days on that first leg. Pix and SPEI payouts on Lumx run 24 hours a day, and ACH, FEDWIRE and SWIFT follow cut-offs of 2:00 PM, 3:00 PM and 3:00 PM Eastern Time.

  • Is the payment finished when the blockchain confirms it?

    No. Only the middle leg is final at that point. The recipient has been paid when the local payout lands in the bank account, so show sent first and paid second. The Lumx offramp.success webhook marks the payout complete and carries the receipt, and offramp.failed tells you when it did not.

  • Does the blockchain I pick change the payment?

    It changes the middle leg only, and which stablecoin the wallet can hold. The collection and payout legs run on the same local rails either way. You pass the blockchain to Lumx on each request or fall back to the project default. Stellar carries USDC on-ramp only, so payouts and USD routes run on Ethereum, Polygon, Base or Tron, and the coverage table shows which stablecoin each network supports.

  • Does the recipient ever touch the stablecoin?

    No. In a bank-to-bank payment the recipient receives local currency in an ordinary bank account, and the stablecoin exists only between the two conversions. The stablecoin sits in a custodial wallet that Lumx holds for the customer, and the recipient sees a Pix or SPEI credit from the customer's name.

Stay up to date with what Lumx is developing.

Sign up to receive them by email.

Share on socials:

how-stablecoin-payments-work

A

how-stablecoin-payments-work

How stablecoin payments work: every step, every party

Copy link

Copied!

how-stablecoin-payments-work

TALK TO OUR TEAM

Ready to transform your business with stablecoins?

Discover how our infrastructure can seamlessly integrate stablecoins into your financial operations quickly, securely, and efficiently.

Explainers

In this page

©2026. All rights reserved.

Lumx US OP LLC ("Lumx") is a financial technology and payments infrastructure company. Lumx US OP LLC is a Money Service Business (MSB) registered with the Financial Crimes Enforcement Network (FinCEN) (MSB #31000316459619). Lumx is not a state-licensed money transmitter and does not, in its own capacity, engage in the provision of regulated money transmission services. All such regulated activities are conducted exclusively through, and under the licenses of, duly authorized financial-institution partners.


Lumx is not a bank, financial institution, payment institution, or custodian of client funds. Certain services made available through the Platform may be provided by duly authorized and regulated third-party partners, in accordance with applicable laws and regulations.

Please refer to Lumx’s Terms of Use and Privacy Notice for further information regarding the conditions governing the use of the Platform and the processing of your personal data.