Guides

How to Off-Ramp USDC to a US Bank Account: ACH or Wire

How to off-ramp USDC to a US bank account: ACH or FEDWIRE, the fields to collect, cut-offs in local time, limits, purpose codes and why a payout stops.

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 to Off-Ramp USDC to a US Bank Account: ACH or Wire
Cover image for Lumx blog article: How to Off-Ramp USDC to a US Bank Account: ACH or Wire

To off-ramp USDC to a US bank account means selling USDC for US dollars and paying them into a US checking or savings account over ACH or FEDWIRE (the Federal Reserve's same-day wire system). ACH settles in one to two business days, FEDWIRE on the same business day, if you request before the cut-off.

The day's rate sits on the USDC to USD page. This guide covers the payout itself and assumes you know what USDC is; the conversion leg is in the off-ramp explainer.

ACH or FEDWIRE: choosing the rail

Pick by deadline, not by habit. ACH is the default for a payment that can take a day or two, and FEDWIRE is for one that has to land today. Both are domestic dollar transfers, so the recipient never handles a stablecoin.

ACH and FEDWIRE payouts to a US bank account, from the Lumx cut-off times page read on November 1, 2026


ACH

FEDWIRE

Cut-off

2:00 PM ET

3:00 PM ET

Settlement

1 to 2 business days

Same business day, typically within hours

Fits

Supplier invoices, contractor fees, anything with a few days of slack

An invoice due today, a time-sensitive transfer

Neither rail runs on a weekend or a US federal holiday, so a request sent then waits for the next business day.

On Lumx, ACH and FEDWIRE are both live for USD payouts, ACH as credit (push) only, with no ACH debit, and the rail is set on the recipient's destination, so a supplier that needs wires and one that takes ACH can sit in the same customer. A payout request carries no rail field of its own.

What do you need to pay a US bank account from USDC?

You need a verified sender, USDC in a wallet and the recipient's US bank details. The sender is either a company that has passed KYB (know your business, the verification of a company and its owners) or an individual that has passed KYC (know your customer, the verification of an individual). The recipient is registered once as a destination, and each payout points at it.

Fields of a US dollar destination, the same for ACH and FEDWIRE, from the Lumx destination reference read on November 1, 2026

Field

What goes in it

Note

Account type

Checking or savings

Match it to the recipient's account

Account number

The recipient's account number

Copy it from the recipient's own written instructions

Routing number

The nine-digit ABA routing number

Ask the recipient for the routing number for the rail you choose

Bank

Name and full address: line, city, state, postal code, country

The full address is required for these two rails

Holder

Business or individual, legal name, tax ID, full address

Use the legal name the bank holds, which for a company can differ from the brand on its website

Relationship

Self, supplier, employee, business partner and the other values on the destination

Tells the compliance team why the money moves

On Lumx, the destination is created through the API with rail set to ACH or FEDWIRE and currency set to USD, and it goes through verification before it can receive a payout. Webhooks tell you where it stands: destinations.under_verification means in progress, destinations.approved means go, and destinations.final_rejection means permanent.

The steps from a USDC balance to dollars in the account

1. Register the recipient as a destination. Use the fields above, test in the sandbox, and wait for approval.

2. Fund the wallet. The off-ramp debits the sender's own wallet. Send USDC to the wallet address on a network the pair accepts, or convert local currency into USDC first. The inbound side is in USD payments for Brazilian companies, the full flow in the US supplier guide.

3. Quote and submit. Check the customer's remaining off-ramp allowance, then ask for a locked rate if the payer needs a number before committing. Submit the off-ramp with the destination, the quote, a purpose code and a unique idempotency key, so a retry cannot pay twice.

4. Follow the status. The payout moves from the stablecoin transfer to the trade to the fiat transfer and then to success. Each change fires a webhook, and a separate event fires if it fails.

Off-ramp webhooks and what to do on each, from the Lumx webhooks page read on November 1, 2026

Webhook

What it means

What to do

offramp.transferring_stablecoin

USDC is leaving the wallet

Wait

offramp.trading

The USDC is being traded for dollars

Wait

offramp.transferring_fiat

Dollars are on their way to the bank

Keep the transaction id

offramp.success

The payment left the banking partner

Mark as sent; the recipient's bank may still take time to post it

offramp.failed

The payout did not complete

Read the error code, fix the data, resubmit

On Lumx, an idempotency key expires after 24 hours, and reusing a key with a different body returns a 409. An off-ramp counts as complete once the funds leave Lumx's banking partner, so give the Lumx team the transaction id if a recipient says the money is missing.

Purpose codes for a US payout

Every off-ramp carries a purpose code that says why the funds move. Compliance checks it against the holder relationship on the destination, so choose by what the payment is for.

Purpose codes most used on a US dollar payout, from the Lumx purpose codes page read on November 1, 2026

Payment

Holder relationship

Purpose code

Your own US account

Self

PERSONAL_ACCOUNT

A supplier invoice for goods or services

Supplier

TRADE_TRANSACTIONS

A consultant, lawyer or accountant

Supplier or business partner

PROFESSIONAL_SERVICES

Reimbursing an employee or contractor

Employee

EXPENSES_REIMBURSEMENT

PERSONAL_ACCOUNT works only on a destination whose relationship is self; anywhere else it returns a validation error. A code that does not match the underlying activity can hold the transaction or trigger an RFI (request for information, a compliance hold that asks for a document before a transaction clears).

On Lumx, the accepted values are the nine on the purpose codes page, and picking the code before you submit is cheaper than answering a hold afterwards.

What time is the cut-off where you are?

Lumx's cut-offs are stated in Eastern Time. The offset between Eastern Time and your office changes twice a year when the US clocks change, so the same cut-off lands at a different local hour. At 4:00 PM in São Paulo you are before the FEDWIRE cut-off in US standard time (November to March), on it in daylight time (March to November), and past the ACH cut-off in both.

Cut-offs converted to local time, computed from the ET cut-offs on the Lumx cut-off times page. First figure in US standard time, second in US daylight time

Rail

ET cut-off

São Paulo

Mexico City

ACH

2:00 PM

4:00 PM / 3:00 PM

1:00 PM / 12:00 PM

FEDWIRE

3:00 PM

5:00 PM / 4:00 PM

2:00 PM / 1:00 PM

Four requests, read against the table, in US standard time:

Where each request ends up

Request sent

Rail

What happens

Tuesday 1:30 PM ET

ACH

Before 2:00 PM, processed Tuesday, arrives Wednesday or Thursday

Tuesday 2:30 PM ET

ACH

Misses the cut-off, processed Wednesday, arrives Thursday or Friday

Tuesday 2:30 PM ET

FEDWIRE

Before 3:00 PM, usually lands Tuesday

Saturday 10:00 AM ET

Either

Waits for Monday, then follows the same timeline

These are processing targets, not commitments. More rails are in limits and cut-offs by rail.

On Lumx, a request after the cut-off or on a US holiday is queued for the next business day, and the off-ramp webhooks tell you where it stands.

Limits, and what else lowers the amount

What a US payout costs is the provider's fees plus the spread on the trade. The customer's own limit, stated in US dollars against the verification tier, caps the size of a payout.

Default off-ramp limits by verification tier, in USD, from the Lumx transaction limits page read on November 1, 2026

Limit

KYC standard

KYC enhanced

KYB standard

KYB enhanced

Per transaction

7,500

25,000 and above

50,000

50,000 and above

Daily

15,000

50,000 and above

100,000

100,000 and above

Monthly

15,000

50,000 and above

100,000

100,000 and above

Off-ramp limits are tracked apart from on-ramp and transfer limits. A payment above its limit is rejected with TRANSACTION_LIMIT_EXCEEDED. A higher limit needs enhanced verification and a documented request. A balance smaller than the payout fails with INSUFFICIENT_BALANCE, and an amount under the per-currency minimum with MINIMUM_AMOUNT_NOT_MET.

Three things can make the recipient's credit smaller than the USDC you sent: the spread on the trade, the provider's platform and per-transaction fees, and what the recipient's own bank deducts. Ask for an itemized quote per rail. Proof that the money moved is the per-rail reference on every transfer plus the webhooks. The mechanics are in how stablecoin payout fees work.

Lumx prices this as a monthly platform fee plus usage-based per-transaction fees, transparent FX on locked quotes, no pre-funding; no published plans, so this guide quotes no figure per rail. A locked rate lasts 30 seconds, 1 minute or 5 minutes, and only the 30-second lock has no fee. The limits above apply to every customer, in any country, and includeTransactionLimits=true on the customer read returns the used and remaining amounts.

Why a US payout stops, comes back or is held

The account details are wrong. A transposed digit in the account number, a routing number for the wrong rail or the wrong account type points the payment at a different account or at none. No sending-side check knows the supplier mistyped it.

The holder does not match. A destination marked as the customer's own is refused if the holder's tax ID or type differs from the customer's (HOLDER_TAX_ID_MISMATCH, HOLDER_TYPE_MISMATCH). A tax ID that bank validation rejects comes back as INVALID_TAX_ID, and a destination the bank cannot accept as INVALID_PAYMENT_DESTINATION. All of these are fixed on the destination.

The quote lapsed. A locked rate that has expired or was already used is rejected (EXCHANGE_RATE_EXPIRED, EXCHANGE_RATE_ALREADY_USED). Request the rate at confirmation, then submit.

I recommend defaulting to ACH and treating FEDWIRE as the exception you reach for when an invoice is due that day. I also recommend sending the first payment to any new US recipient as a small test and releasing the full amount only after the recipient confirms it arrived. It costs one extra payment and covers what no validation can: whether the account is the right person's.

A compliance hold. A transaction flagged by monitoring is held while the compliance team asks for context, usually the relationship between sender and receiver, the purpose and the expected outcome. It is a pause, not a rejection, and an unanswered hold may be refunded to the sender after 24 hours. Screening is covered in wallet screening for stablecoin payouts, and the paperwork a hold can ask for in source of funds for crypto off-ramps. More is in why payouts get rejected.

On Lumx, blockchain activity is monitored with Chainalysis, fiat movements are monitored by Lumx and its banking partners, and customers are verified with Sumsub. When a transaction is flagged, the compliance team reaches out on your usual channel, email or Slack, with the transaction details. Compliance reviews your reply and decides whether to release the payment; with no reply in 24 hours, the transaction may be refunded.

When an off-ramp to a US bank account is the wrong tool

When the money has to arrive on a weekend. ACH and FEDWIRE settle on US business days, so a Saturday deadline means paying on Friday.

When the payer already holds dollars in a US bank account. A domestic transfer needs no stablecoin, and a round trip through USDC adds a spread twice.

When the recipient banks outside the US. A routing number reaches US accounts only; pounds, for one, have their own rail in Faster Payments.

What this looks like on a US dollar payout with 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 dollar payout, the sender is a customer approved through KYB (business) or KYC (individual); Lumx targets two business days for KYB Standard and three for Enhanced. After approval the customer has a custodial wallet on each supported blockchain, and a USDC payout to a US bank account works from the wallet on Ethereum, Polygon and Base.

The path is the sequence above. The destination carries the account type, account number and ABA routing number, plus the bank and the holder, with the rail set to ACH or FEDWIRE. The off-ramp debits the wallet, trades USDC for dollars and reports each stage by webhook until offramp.success. A customer that also collects local currency can convert those deposits into USDC and pay out from the same wallet. See global payments and the coverage page, and compare other routes in our ranking of stablecoin off-ramp APIs. The same payout toward Brazil is in USDC to a Brazilian bank.

Methodology and sources

We read the Lumx documentation on November 1, 2026: Coverage, cut-off times, Destinations, the create a destination reference, Purpose codes, Transaction limits, Exchange rates, Request for information, Webhooks, Idempotency, the off-ramp reference and Errors. The local-time cut-offs are our own arithmetic on the Eastern Time cut-offs in that table. The one outside source is the Federal Reserve's Fedwire Funds Service page, for the definition of FEDWIRE. Every figure, cut-off and limit comes from the Lumx pages above, and no Nacha rule is used.

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

Cover photo: Oxana Melis on Unsplash.

  • How do you off-ramp USDC to a US bank account?

    You register the recipient's US bank account with its account type, account number and ABA routing number, plus the bank and the holder, ask for a rate, and submit a payout from a USDC balance with a purpose code. The USDC is traded for dollars and paid over ACH or FEDWIRE. On Lumx, the destination is verified first, the rail is set on it, and webhooks report each stage until success.

  • Should I use ACH or FEDWIRE for a USDC payout?

    Use ACH when the payment can take one to two business days, and FEDWIRE when it must land the same business day. Neither runs on weekends or US federal holidays. On Lumx, ACH has a 2:00 PM ET cut-off and FEDWIRE a 3:00 PM ET cut-off, and both are set on the destination.

  • How long does a USDC to US bank account payout take?

    ACH takes one to two business days and FEDWIRE usually lands within hours, counted from a request made before the cut-off. A request after the cut-off or on a holiday waits for the next business day. On Lumx, the off-ramp is complete once the funds leave the banking partner, and a compliance review or a large payment can add time.

  • Which purpose code should I send for a payout to a US supplier?

    Send the code that describes the underlying activity, which for a supplier invoice is trade transactions. A code for your own account works only on a destination you own. On Lumx, the supplier destination carries the relationship SUPPLIER, the off-ramp request carries the purpose TRADE_TRANSACTIONS, and a mismatch between the two can hold the payment for an RFI.

  • What is the largest USDC payout to a US bank account?

    It is the sender's limit, not the rail's. On Lumx, a standard business customer can send 50,000 US dollars per transaction and 100,000 per day or month, and enhanced verification raises it. A payment above its limit is rejected with TRANSACTION_LIMIT_EXCEEDED.

Stay up to date with what Lumx is developing.

Sign up to receive them by email.

Share on socials:

how-to-off-ramp-usdc-to-us-bank-account

A

how-to-off-ramp-usdc-to-us-bank-account

How to Off-Ramp USDC to a US Bank Account: ACH or Wire

Copy link

Copied!

how-to-off-ramp-usdc-to-us-bank-account

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.

Guides

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.