---
title: "How to send USDC to a bank account in Mexico: a step-by-step guide over SPEI"
seoTitle: "How to send USDC to a bank account in Mexico over SPEI"
description: "Send USDC to a Mexican bank account: verify the recipient, quote in pesos, fund from a wallet, and confirm on SPEI. Recipient data, statuses, and failures."
date: "2026-10-05"
updated: "2026-10-05"
category: "payments"
author: "BlindPay Team"
howto:
  name: "How to send USDC to a bank account in Mexico"
  steps:
    - name: "Onboard your business"
      text: "Complete KYB with the payout provider so your company can send. Individuals sending for themselves complete KYC instead."
    - name: "Add the recipient's bank account"
      text: "Collect the beneficiary's legal name and an 18-digit CLABE, or a debit card or phone number linked to the account plus the bank's institution code. Validate the CLABE check digit before you save it."
    - name: "Request a quote in pesos"
      text: "Ask for a USDC to MXN payout quote against that bank account, choosing whether the amount is the USDC you send or the pesos the recipient gets, and who pays the fee. Execute before the quote expires."
    - name: "Fund the payout from a wallet"
      text: "Pick the network and token the quote prices, then fund from a provider-managed balance or authorize the transfer from a wallet you control."
    - name: "Execute and let SPEI settle"
      text: "Create the payout against the quote. The provider converts USDC to pesos and sends them over SPEI, which runs 24/7 and settles in seconds once the transfer is released."
    - name: "Confirm delivery"
      text: "Listen for the payout's completion webhook, store the SPEI tracking key, and use Banxico's CEP lookup if the recipient says the money never arrived."
faq:
  - q: "How long does it take to send USDC to a bank account in Mexico?"
    a: "Usually minutes. SPEI is Banco de México's real-time settlement system and runs 24/7, and Banxico's rules say a SPEI payment should not take more than 30 seconds after approval. The longer part is the step before it: receiver checks, the quote, and converting USDC to pesos. A payout held for a compliance review takes longer, whatever the rail."
  - q: "What details do I need to pay someone in Mexico?"
    a: "The beneficiary's full legal name and an account identifier. The default is the 18-digit CLABE. SPEI also accepts a 16-digit debit card number or a 10-digit mobile number linked to the account, and those two need the receiving bank's institution code. For companies, use the legal name the bank registered, not the brand name on their website."
  - q: "Can I send USDT instead of USDC to Mexico?"
    a: "Yes, if the provider accepts USDT on the network you hold it on. The recipient still gets pesos over SPEI, so the stablecoin only changes the funding leg. Check network support first: on many payout APIs, USDT runs on Ethereum, Polygon, Solana, and Tron, but not on Base or Arbitrum, while USDC is the reverse on Tron."
  - q: "What happens if the CLABE is wrong?"
    a: "If the CLABE fails its check digit, a good provider rejects it when you save the bank account. If it is valid but closed or belongs to someone else, the receiving bank can return the SPEI transfer, and Banxico's MI-SPEI service would show it as undergoing return or returned. A valid CLABE for the wrong person is the expensive case, because SPEI routes on the account number."
  - q: "Do I need the recipient's RFC to pay them over SPEI?"
    a: "Not to route the money. SPEI moves pesos on the CLABE, card, or phone number. Collect the RFC anyway when your finance team needs it for supplier invoices, contractor records, or tax filings, and keep it next to the payout record. Paying from a stablecoin balance does not change what you owe on the Mexican tax side."
  - q: "How does the recipient prove the payment arrived?"
    a: "With a CEP, the electronic payment receipt Banco de México issues from the receiving bank's confirmation. Banxico says the CEP can take up to 30 minutes to become available and can be looked up for payments from the last 45 working days. It needs the date, the tracking key or reference, both banks, the receiving account, and the amount."
---

To send USDC to a bank account in Mexico, onboard with a stablecoin payout API, add the recipient's CLABE and legal name, request a USDC to MXN quote, fund it from a wallet, and execute. The provider converts to pesos and delivers them over SPEI, which runs 24/7, so most payouts land in minutes.

That's the short version. The rest of this guide is the detail that decides whether the first payout works: what to collect from each type of recipient, what each SPEI status means, and where Mexican payouts fail.

**Key takeaways**

- SPEI is Banco de México's real-time settlement system. It has run since August 13, 2004 and operates 24/7, so weekends and holidays don't delay a peso payout.
- Collect the legal name and an 18-digit CLABE. A debit card or phone number also works, but needs the bank's institution code.
- Quote in pesos when the recipient must get an exact amount, and decide up front who pays the fee.
- SPEI routes on the account number. A valid CLABE that belongs to the wrong person is the most expensive mistake in the corridor.
- Store the SPEI tracking key with every payout. Banxico's CEP lookup turns it into a receipt anyone can check.

If you're new to the categories of APIs that do this, start with [the types of stablecoin APIs](/resources/more/types-of-stablecoin-apis). This guide assumes a payout API: one that takes stablecoins in and sends local currency out.

## What do you need before the first payout to Mexico?

You need three things before any money moves: a verified sender, a verified recipient bank account, and USDC or USDT on a network the provider accepts.

The sender side is onboarding. A business completes KYB once, an individual completes KYC. Nothing in the Mexico corridor skips this.

The recipient side is where most teams under-collect. What you need depends on who you're paying, so build the form per recipient type instead of one generic "bank details" box.

### Recipient data checklist by recipient type

| Recipient | Account identifier | Name to collect | Keep on file |
| --- | --- | --- | --- |
| Employee | CLABE | Full legal name on the account | Payroll record, RFC if finance needs it |
| Independent contractor | CLABE | Full legal name on the account | Contract and the invoice being paid |
| Supplier (company) | CLABE of the company's account | Legal company name, not the trade name | The supplier's invoice and its RFC |
| Family member (remittance) | CLABE, debit card, or phone number | Full legal name | Relationship and, if asked, source of funds |
| Your own Mexican entity | CLABE | The entity's legal name | Intercompany agreement |

Two details from that table trip teams up. First, a debit card or phone number only works with the receiving bank's institution code, so the form has to ask for the bank too. Second, the relationship matters to compliance. Payout APIs usually ask whether the account belongs to the sender, an employee, a contractor, or a supplier, and some run a name-match check only when you pay your own account.

The field-by-field anatomy of a CLABE, including the check digit math, is in [what details you need to pay someone in Brazil or Mexico](/resources/more/pix-key-cpf-clabe-payout-details). Validate it client-side. It catches typos before they become returns.

## How do you send USDC to a Mexican bank account step by step?

You add the bank account once, then quote, fund, and execute each payout against it. The field names below come from BlindPay's API ([bank accounts](/docs/bank-accounts), [payout quotes](/docs/payout-quotes), [payouts](/docs/payouts)); other providers use similar objects with different names.

1. **Add the bank account.** Create a SPEI bank account on the customer with `beneficiary_name`, `spei_protocol` (CLABE, debit card, or phone), the identifier, and `spei_institution_code` when the protocol is card or phone. Validation runs the same way on development and production, so a malformed CLABE fails in testing.
2. **Filter the bank list.** If you build a bank picker from the provider's bank-details endpoint, drop inactive banks. Some providers, BlindPay included, return them flagged `is_active: false` instead of removing them.
3. **Request a quote.** Quote against the bank account with a `network` and `token`. Set `currency_type` to `receiver` to fix the peso amount, or `sender` to fix the USDC amount. Set `cover_fees: true` if the recipient must get the full amount. Amounts are integers in minor units.
4. **Execute before the quote expires.** Here that's 5 minutes after creation. Past that, request a new one.
5. **Fund it.** From a managed wallet, pass its address and you're done. From a wallet you control, authorize first: an ERC-20 approve on EVM chains, a signed transaction on Stellar, or a token delegation on Solana.
6. **Create the payout.** One call against the quote ID. The stablecoins leave the funding wallet, convert to pesos, and go out over SPEI.
7. **Track it.** `payout.update` fires on status changes and `payout.complete` fires when the payout reaches `completed`, `failed`, or `refunded`.

Network choice is part of step 3. In this API's matrix, USDC payouts can be funded on networks including Ethereum, Polygon, Base, Arbitrum, Stellar, and Solana, and USDT on Ethereum, Polygon, Solana, and Tron. USDT isn't available on Base, Arbitrum, or Stellar, and USDC isn't on Tron. The full matrix is in [supported chains](/docs/kb/supported-chains). The recipient never sees any of this. They get pesos.

## What happens to the pesos inside SPEI?

Once the provider releases the transfer, SPEI settles it between the two banks in real time, and the receiving bank credits the account.

Banco de México runs SPEI as a [real-time settlement system on a 24/7 schedule](https://www.banxico.org.mx/servicios/spei_-informacion-banco-mex.html). Its [user guide](https://www.banxico.org.mx/services/interbanking-electronic-payme.html) cites Notice 17/2010: a SPEI payment should not take more than 30 seconds after approval. That's why "minutes" is a fair ETA for the whole payout, and why a Friday night payout lands like a Tuesday morning one.

Your provider's status is the first thing to check. When you need the bank-level view, Banxico's MI-SPEI service reports these states:

| SPEI status | What it means | What to do |
| --- | --- | --- |
| Being processed | SPEI received the order, money not yet deposited | Wait. This normally clears in seconds |
| Liquidated | SPEI settled it; the receiving bank can credit the account | Send the recipient the tracking key |
| Cancelled | The sending bank cancelled before the money moved | Check the payout status with your provider |
| Rejected | SPEI rejected it for errors or inconsistent data | Fix the account data, then send a new payout |
| Undergoing return | The receiving bank is sending the money back | Don't resend yet; wait for the return to finish |
| Returned | The money is back with the sender | Confirm the account details, then resend |
| Cancelled at the close | Not authorized before SPEI's close of operations | Check with your provider before resending |
| Not found | No SPEI record matches the search | Recheck the date, key, and amount you searched |

"Liquidated" is the state that matters for disputes. From there, the recipient's bank has the money, and a CEP can prove it.

## How do you prove a SPEI payment arrived?

You prove it with the CEP, the electronic payment receipt Banco de México issues from the receiving bank's confirmation.

According to Banxico, the CEP can take up to 30 minutes after the deposit to become available, and it can be looked up for SPEI payments from the last 45 working days. The lookup needs the date, the tracking key or reference, the sending and receiving banks, the receiving account, and the amount. Download it at [Banxico's CEP page](https://www.banxico.org.mx/cep/). The CEP comes as a PDF and an XML file with a digital seal, so an auditor can validate it.

Practical rule: store the tracking key on your payout record the moment you have it. A recipient who says "I didn't get it" gets a CEP link, not a support ticket. [How to track an off-ramp payout](/resources/more/how-to-track-a-crypto-off-ramp-payout) covers the same idea across every rail.

## Where do USDC payouts to Mexico fail?

Most failures come from recipient data, not from SPEI. Here are the eight that show up most, with the fix.

1. **CLABE with a bad check digit.** Fix: validate the 18th digit in the form.
2. **A 16-digit card number in the CLABE field.** Fix: a length check per protocol.
3. **Card or phone payout without the institution code.** Fix: make the bank field required for those protocols.
4. **Trade name instead of legal name.** Fix: ask for the name exactly as the bank registered it.
5. **A valid CLABE that belongs to someone else.** SPEI won't catch this. Fix: confirm new accounts with the recipient before the first large payout, for example with a small first payment.
6. **Expired quote.** Fix: quote right before execution, never from a cache.
7. **Recipient doesn't recognize the sender.** On BlindPay, SPEI payouts show BlindPay's name as the sender ([payout descriptor](/docs/kb/payout-descriptor)). Fix: tell recipients in advance and put your invoice or payroll ID in the reference.
8. **Assuming `failed` means refunded.** It doesn't. Here, `refunded` means the stablecoins went back to the funding source; `failed` does not refund automatically, so contact support.

On references: Banxico's guide says the payment description that reaches the payee runs up to 40 characters. Whatever your provider passes through, put the invoice or payroll ID at the front.

## How should different businesses run the Mexico corridor?

The steps are the same for everyone; the quote settings and records change by use case. These are illustrative scenarios, not customer stories.

| Use case | Illustrative scenario | Quote setting | Record to keep |
| --- | --- | --- | --- |
| Contractor payroll | A US startup pays 40 engineers in Guadalajara every two weeks | Fix the peso amount, sender covers fees | Contract and invoice per contractor |
| Supplier payments | An importer pays a Monterrey manufacturer a MXN invoice | Fix the peso amount to match the invoice | Supplier invoice and RFC |
| Marketplace payouts | A platform pays out weekly seller balances | Fix the USDC amount, fees from the payout | Seller ledger entry per payout |
| Remittance | An app lets US users send pesos to family | Show the peso amount before confirming | Sender KYC and relationship |

Payroll is the clearest case for fixed-receiver quotes: contractors expect a round peso number, not whatever is left after fees. [Stablecoin payroll for LATAM contractors](/resources/more/stablecoin-payroll-latam-contractors) goes deeper on that flow.

## What Mexican rules should you know about?

Mexico regulates financial technology and virtual asset activity under its 2018 Fintech Law, with Banco de México and the CNBV as the main authorities, and the SAT handles tax. Paying from a stablecoin balance doesn't change the recipient's tax treatment or your payroll and supplier obligations; it changes how the pesos get there.

The rules for converting USDC to pesos, and the stablecoin bill introduced in the Senate in May 2026, are covered in [USDC to MXN routes compared](/resources/more/usdc-to-mxn-routes-2026). Confirm your specific obligations in Mexico with qualified counsel before launching a corridor.

## How do you choose a provider for Mexico payouts?

Score each provider on eight criteria, and test the ones you can in a sandbox instead of asking.

| Criterion | What to test | Red flag |
| --- | --- | --- |
| SPEI protocols | Can you pay to CLABE, debit card, and phone? | CLABE only, with no plan for the rest |
| Validation | Does a bad CLABE fail at bank account creation? | It fails days later as a return |
| Quote control | Can you fix the peso amount and choose who pays fees? | Only sender-side amounts |
| Funding networks | Is your token supported on the network you hold it on? | One chain, or USDC only |
| Pre-funding | Do you need a peso balance parked in Mexico? | A float that grows with volume |
| Status detail | Do webhooks separate conversion from bank delivery? | One "pending" until "done" |
| Tracking reference | Do you get a reference you can take to Banxico's CEP lookup? | No rail reference exposed |
| Refund rules | What happens to the stablecoins when a payout can't complete? | No written answer |

## How does BlindPay handle Mexico payouts?

BlindPay pays out pesos over SPEI to a CLABE, debit card, or phone number, funded with USDC or USDT from a managed wallet or a wallet you control, with no pre-funded peso balance. KYC, KYB, and sanctions screening run inside the payout flow. The same API also pays out over Pix, ACH, RTP, SEPA, and SWIFT (POBO/COBO), and SDKs for Node.js, Python, Go, PHP, and Swift wrap it.

For the Brazil version of this walkthrough, see [how to send USDC to a bank account in Brazil](/resources/more/how-to-send-usdc-to-bank-account-brazil). Then send a test payout to a CLABE on a free development instance with the [payout quickstart](/docs/quickstart-payout), and check today's rate on the [USDC to MXN page](/usdc-to-mxn).

*This article is general information, not legal or tax advice.*
