Em processo de adequação ao regime das SPSAV, na modalidade de intermediária de ativos virtuais, nos termos da Resolução BCB nº 520/2025 (regime de transição do art. 88)

  • Em processo de adequação ao regime das SPSAV, na modalidade de intermediária de ativos virtuais, nos termos da Resolução BCB nº 520/2025 (regime de transição do art. 88)

Guides

How to send USDC to a bank account in Mexico (SPEI, step by step)

A step by step guide to sending USDC to a Mexican bank account over SPEI: the CLABE, the sequence, the published limits, timing, and why payments come back.

Caio Barbosa

Fundador & CO-CEO

Forbes Under 30. Uma das principais vozes em Fintech & Crypto no Brasil. Escreve semanalmente sobre stablecoins, pagamentos e o futuro da infraestrutura financeira na América Latina.

Cover image for Lumx blog article: How to send USDC to a bank account in Mexico (SPEI, step by step)
Cover image for Lumx blog article: How to send USDC to a bank account in Mexico (SPEI, step by step)

Sending USDC to a bank account in Mexico means selling the dollars for pesos and delivering them over SPEI (Mexico's interbank transfer system, run by Banxico) to the recipient's CLABE (the 18-digit Mexican bank account number). The blockchain moves the value to a provider, the provider converts it, and SPEI credits the account. To the sender it looks like one payment, but the failures that cost money sit on the Mexican side: a valid CLABE that belongs to someone else, a tax ID that does not match, a receiving bank that returns or holds the payment. When a CLABE is valid but wrong, the sender carries the loss and the support load, because Banxico says a SPEI payment cannot be cancelled once the money is deposited.

This guide assumes you know what USDC is. The conversion leg is in the off-ramp explainer, and the Brazil version is sending USDC to Brazil.

What do you need before the first payment to Mexico?

A verified sender. The company paying runs through KYB (know your business, the verification of a company and its owners) once, and an individual runs through KYC (know your customer, the verification of an individual). The wallet stays disabled until approval, so start here.

The recipient's CLABE. Banxico says a SPEI payment can be addressed by CLABE (18 digits) or by other identifiers tied to the account. On Lumx the destination identifier is the CLABE, so that is the field to collect.

The recipient's legal name and tax ID. For a company, the legal name as the bank registered it, which can differ from the brand name on its website, plus its RFC (Mexico's taxpayer registry number). For an individual, the full name and the RFC. The tax ID is a required field on the destination, so it cannot be skipped to save time.

The relationship between payer and recipient. Your own entity, a supplier, an employee and a contractor are different relationships, and the destination can record the relationship to the customer, which is what marks it as the customer's own. A destination marked as the customer's own is refused if the holder's tax ID differs from the customer's.

A stablecoin on a network the corridor accepts. For MXN, USDC is supported on Ethereum, Polygon and Base, and USDT on Ethereum, Polygon and Tron, per the supported-pairs table read on October 29, 2026.

How do you validate a CLABE before sending?

SPEI payments are addressed by account number. If a CLABE is valid and belongs to someone else, the payment can reach that person, and Banxico says a SPEI payment cannot be cancelled once the money is deposited. Getting it back depends on the receiving bank and the account holder, so your own bank and counsel are the people to ask. The sender carries the loss and the support load meanwhile.

What you can catch for free is a typo. The 18th digit of a CLABE is a check digit computed from the first 17. The standard procedure multiplies the 17 digits by the repeating weights 3, 7 and 1, keeps the last digit of each product, adds those digits, and takes the amount needed to reach the next multiple of ten, which is (10 - sum mod 10) mod 10, so a sum already ending in 0 gives a check digit of 0, not 10. A worked example on a made-up number, 0021 8000 1234 5678 9 with the check digit left off: the first 17 digits are 00218000123456789, the products' last digits sum to 44, and the check digit is 6, which gives 002180001234567896. Any CLABE whose last digit does not match fails before it reaches a bank.

Put this check in the form. It proves only that the number is well formed.

The steps, from USDC balance to pesos in the account

1. Register the recipient as a destination. Create a destination for the customer with the SPEI rail, the MXN currency, the CLABE and the holder block. Type, name (legal name for a company, full name for an individual) and tax ID are required. The relationship is optional but worth setting, because compliance reads it and it is what makes a destination the customer's own. Run the destination, the quote and the off-ramp in the sandbox (api-sandbox.lumx.io) first, so the first real payout is not the first time the flow runs. The destination goes through verification before it can receive a payout, so do not submit the off-ramp until it is approved. Lumx tells your system by webhook (an automatic notification sent when a status changes): destinations.approved means go, destinations.under_verification means in progress, and destinations.final_rejection means permanently rejected.

2. Fund the wallet. Every approved customer has a wallet on each supported network. Send USDC to the address on a network from the list above, or on-ramp into it. One funding transfer can cover many payouts.

3. Check the room under the limit. Check the customer's remaining daily and monthly limit for off-ramps, and compare the amount with it. The next section has the published numbers.

4. Quote. A floating rate is a live reference with no lock, fine for an estimate. A locked rate fixes the conversion for 30 seconds, 1 minute or 5 minutes, and only the 30-second lock carries no fee.

5. Submit the off-ramp. The request carries the destination, the USDC amount (or the locked rate), a purpose and an optional memo. Pick the purpose that matches what the money is for: PERSONAL_ACCOUNT is allowed only to a destination marked as the customer's own, and a supplier invoice or a contractor fee uses a commercial purpose instead.

6. Follow the status. An off-ramp moves from the stablecoin transfer to the trade to the fiat transfer and then to success, and each change fires a webhook, with a separate event if it fails. Send a unique key with each payout request, so a retry after a timeout cannot pay twice.

7. Keep the reference. Store the transaction id and the receipt returned on the transaction (it carries the blockchain transaction hash) next to your payout record. If a recipient says the money is missing, ask your bank or the recipient for the SPEI tracking key, which is what Banxico's receipt lookup takes.

Webhook status

What it means

What to do

offramp.transferring_stablecoin

USDC is moving to the provider

Wait

offramp.trading

USDC is being converted to MXN

Wait

offramp.transferring_fiat

Pesos are being sent over SPEI

Keep the transaction id

offramp.success

Funds left the banking partner

Mark paid

offramp.failed

The payout did not complete

Read the error code, fix the data, resubmit

What SPEI does with the pesos

Banxico describes SPEI as a real-time settlement system that began operating on August 13, 2004, on a 24/7 schedule. Its published rule is that a SPEI payment should not take more than 30 seconds after approval, citing Notice 17/2010, no. 3.3, a, first paragraph, as stated on Banxico's SPEI information page. We read both on Banxico's pages on October 29, 2026.

Our cut-off table lists no cut-off and instant settlement for MXN over SPEI, 24/7/365. Correspondent banking turns a Friday evening payment into a Monday one. The same page lists SPEI under Banxico's bank holidays, where requests are queued for the next business day, so test a holiday payment once before promising one.

The 30 seconds is Banxico's rule for the SPEI leg only. A large transaction can add up to about two business hours of risk review (docs, sla-and-cutoffs). A compliance hold (a request for information, covered below) lasts until you answer, and an unanswered one may be refunded after 24 hours. A payout counts as complete when the funds leave our banking partner, and the receiving bank can still hold them for its own review.

To prove a payment arrived, Banxico issues the CEP, the electronic payment receipt, from the receiving bank's confirmation. It can take up to 30 minutes to become available and can be looked up for payments from the last 45 working days. The lookup is on Banxico's CEP page.

What it costs and what limits apply

Three costs make up a peso payout, and the spread is the one most easily missed.

The network fee on the send leg applies to any transfer you make to fund the wallet. The conversion spread between the quoted rate and the mid-market USD to MXN rate is the real price, and the number to compare across providers. The platform and per-transaction fees are the third. Lumx pricing is a monthly platform fee plus usage-based per-transaction fees, with no pre-funding. No plans are published, so we quote no number.

To compute the spread yourself, use illustrative figures, not a Lumx price. Sending 10,000 USDC when mid-market USD to MXN is 18.00 means 180,000 pesos at mid. A quoted rate of 17.91 delivers 179,100 pesos, so the spread is (18.00 - 17.91) / 18.00 = 0.5 percent, or 50 basis points, and the shortfall is 900 pesos. On a 10,000 USDC payout, a 900-peso shortfall is the line to compare against the per-transaction fee you can look up. The network fee is a separate line on top. The mechanics are in how stablecoin payout pricing works.

A limit belongs to the customer and it is stated in US dollars against the verification tier. See limits and cut-offs by rail. These are the published defaults for a peso payout, which uses the off-ramp limit.

Published default transaction limits by verification tier, in USD, read October 29, 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

On standard KYB the monthly cap equals the daily one, 100,000 dollars, so one heavy day uses the whole month. A payment above its type's limit is rejected (TRANSACTION_LIMIT_EXCEEDED), so the check in step 3 prevents the rejection rather than explaining it afterwards. A higher limit comes from enhanced verification and a documented request, which the documentation targets at one business day.

No MXN off-ramp minimum is published in the docs today. The API enforces a minimum and returns MINIMUM_AMOUNT_NOT_MET when it is not met, so test a small ticket in the sandbox and handle that code when you design the flow. The receiving bank also applies its own limits to its own customers, which no provider can see.

Why do payments to Mexico fail or come back?

The tax ID does not match. A destination the customer marks as its own is refused when the holder's tax ID differs from the customer's (HOLDER_TAX_ID_MISMATCH) or the holder type differs (HOLDER_TYPE_MISMATCH), and a tax ID the bank rejects comes back as INVALID_TAX_ID. All three are data problems, and all three are fixed at the destination.

The destination is not valid. The payment destination was refused (INVALID_PAYMENT_DESTINATION). Check the CLABE, holder name and tax ID against the bank's records.

The CLABE is valid and belongs to someone else. SPEI will not catch this. The receiving bank can return a payment, and Banxico's MI-SPEI service shows the states, from being processed to liquidated, rejected, undergoing return or returned. Banxico says a payment cannot be cancelled once the money is deposited, and what happens next depends on the receiving bank and the holder, so take it to your own bank and counsel.

The quote expired. A locked rate that lapses is rejected (EXCHANGE_RATE_EXPIRED), and so is one already used (EXCHANGE_RATE_ALREADY_USED). Quote right before you submit.

The wrong network on the send leg. USDC sent on a network the corridor does not credit is the one mistake that is painful to undo. Read the supported pairs before the first transfer.

I recommend a small test transfer, confirmed by the recipient, before the first full payment on a new corridor. It costs one extra transfer and a short wait, and it checks what SPEI cannot, which is whether the account belongs to the person you meant to pay.

A compliance hold. Transactions flagged by monitoring are held while compliance asks for context, usually the relationship between sender and receiver, the purpose and the expected outcome, an RFI (request for information). Compliance reaches out by email or Slack, and an unanswered hold may be refunded to the sender, so answer within 24 hours. It is a pause, not a rejection. The guide to why payouts get rejected has the full list.

When sending USDC to Mexico is the wrong tool

When both sides already hold pesos. Send SPEI directly.

When the recipient wants to keep dollars. Converting on their behalf removes what they asked for.

When the payment may need to be recalled. The blockchain leg is final and the SPEI leg is final once liquidated. Recovery depends on the receiving bank and the account holder, so ask your own bank and counsel before you rely on it.

When a regulator question is the real question. This guide describes the mechanics of a payment. How Mexican law treats the stablecoin leg is a separate matter, covered in stablecoin regulation in Mexico, and your counsel decides what applies to your company.

A SPEI payout 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.

A payout to Mexico on the global payments API is a transaction from the customer's custodial wallet to a destination with the SPEI rail and the MXN currency. SPEI is the rail it runs on: the rail coverage page lists it with instant settlement as of October 2026. The USDC to MXN page shows the live rate for the pair.

Two things are worth knowing about the flow. The first is who the recipient sees as the sender: the customer, by the legal name registered during KYB or KYC. The second is how a payment surfaces. Each stage emits a webhook: stablecoin transfer, trade, fiat transfer, then success or failure. The legs are described in the corridor explainer.

Methodology and sources

Product behavior, the supported-pairs table, the SPEI cut-off row, the sender-of-record table, the transaction limits, the error codes, the destination fields and the off-ramp lifecycle were read on docs.lumx.io on October 29, 2026, including the OpenAPI specification. SPEI's start date, 24/7 schedule, the 30-second rule under Notice 17/2010, the 40-character description and seven-digit reference limits, and the CEP details were read on Banxico's SPEI page and SPEI information page the same day.

The CLABE check digit uses the standard 3-7-1 scheme that Mexican payment providers publish; we verified the example by hand. Banxico's SPEI pages do not publish it, so it is not attributed to them. Banxico's statement that a deposited payment cannot be cancelled, and the MI-SPEI states, come from its SPEI pages. No fee quote is given because Lumx publishes no plans.

Verified on October 29, 2026. Operational context, not legal, tax, or investment advice.

Cover photo: Zan Lazarevic on Unsplash.

  • Can I send USDC straight to a Mexican bank account?

    No. A bank holds pesos, not tokens, so a provider sits in the middle to convert the USDC and pay the recipient over SPEI.

  • What details do I need to pay someone in Mexico?

    An 18-digit CLABE, the recipient's legal name as registered at the bank, and their RFC. The destination also records whether the holder is a business or an individual, and how they relate to the sender, such as supplier, employee or contractor.

  • Can I send USDT instead of USDC to Mexico?

    Yes. For MXN the supported pairs list USDT on Ethereum, Polygon and Tron, and USDC on Ethereum, Polygon and Base. The stablecoin only changes the funding leg.

  • How long does a payment to Mexico take?

    SPEI settles instantly on our rail table, and Banxico's rule is no more than 30 seconds after approval. A large transaction can add up to about two business hours of risk review, and a compliance hold lasts until you answer the request for information. The blockchain confirmation and the conversion add time too.

Fique por dentro do que a Lumx está desenvolvendo.

Inscreva-se para recebê-los por e-mail.

Compartilhe nas redes sociais:

how-to-send-usdc-to-bank-account-mexico

A

how-to-send-usdc-to-bank-account-mexico

How to send USDC to a bank account in Mexico (SPEI, step by step)

Copiar link

Copiado!

how-to-send-usdc-to-bank-account-mexico

FALE COM NOSSO TIME

Pronto para transformar seu negócio com stablecoins?

Descubra como nossa infraestrutura pode integrar stablecoins às suas operações financeiras de forma rápida, segura e eficiente.

Guides

Nesta página

©2026. Todos os direitos reservados.

A LUMX SOCIEDADE PRESTADORA DE SERVIÇOS DE ATIVOS VIRTUAIS LTDA., pessoa jurídica de direito privado, inscrita no CNPJ/MF sob o nº 42.887.120/0001-00 (“Lumx”), presta serviços de ativos virtuais e, nos termos das regras de transição da Resolução BCB nº 520/2025, protocolou junto ao Banco Central do Brasil, em 27 de outubro de 2026, pedido de autorização para funcionar como Sociedade Prestadora de Serviços de Ativos Virtuais (SPSAV), na modalidade intermediária (Protocolo nº 18600132499202667). O pedido encontra-se em análise e, conforme permitido pela regulamentação, a Lumx segue em funcionamento até a decisão do Banco Central do Brasil. O protocolo do pedido não representa autorização, aprovação ou recomendação do Banco Central do Brasil quanto aos serviços oferecidos pela Lumx.


A Lumx não é banco, instituição financeira ou instituição de pagamento. A guarda dos ativos virtuais é realizada por custodiante terceiro contratado pela Lumx. Determinados serviços disponibilizados por meio da Plataforma poderão ser prestados por parceiros terceiros devidamente autorizados e regulados, nos termos da legislação aplicável, que respondem pelos serviços que prestam. Operações com ativos virtuais envolvem riscos, inclusive de perda do valor aplicado, e não contam com a garantia do Fundo Garantidor de Créditos (FGC).


Consulte os Termos de Uso e o Aviso de Privacidade da Lumx para obter mais informações sobre as condições de utilização da Plataforma e o tratamento de seus dados pessoais.