How to send USDC to a bank account in Mexico: a step-by-step guide over SPEI

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.

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. 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

RecipientAccount identifierName to collectKeep on file
EmployeeCLABEFull legal name on the accountPayroll record, RFC if finance needs it
Independent contractorCLABEFull legal name on the accountContract and the invoice being paid
Supplier (company)CLABE of the company's accountLegal company name, not the trade nameThe supplier's invoice and its RFC
Family member (remittance)CLABE, debit card, or phone numberFull legal nameRelationship and, if asked, source of funds
Your own Mexican entityCLABEThe entity's legal nameIntercompany 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. 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, payout quotes, 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. 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. Its user guide 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 statusWhat it meansWhat to do
Being processedSPEI received the order, money not yet depositedWait. This normally clears in seconds
LiquidatedSPEI settled it; the receiving bank can credit the accountSend the recipient the tracking key
CancelledThe sending bank cancelled before the money movedCheck the payout status with your provider
RejectedSPEI rejected it for errors or inconsistent dataFix the account data, then send a new payout
Undergoing returnThe receiving bank is sending the money backDon't resend yet; wait for the return to finish
ReturnedThe money is back with the senderConfirm the account details, then resend
Cancelled at the closeNot authorized before SPEI's close of operationsCheck with your provider before resending
Not foundNo SPEI record matches the searchRecheck 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. 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 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). 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 caseIllustrative scenarioQuote settingRecord to keep
Contractor payrollA US startup pays 40 engineers in Guadalajara every two weeksFix the peso amount, sender covers feesContract and invoice per contractor
Supplier paymentsAn importer pays a Monterrey manufacturer a MXN invoiceFix the peso amount to match the invoiceSupplier invoice and RFC
Marketplace payoutsA platform pays out weekly seller balancesFix the USDC amount, fees from the payoutSeller ledger entry per payout
RemittanceAn app lets US users send pesos to familyShow the peso amount before confirmingSender 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 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. 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.

CriterionWhat to testRed flag
SPEI protocolsCan you pay to CLABE, debit card, and phone?CLABE only, with no plan for the rest
ValidationDoes a bad CLABE fail at bank account creation?It fails days later as a return
Quote controlCan you fix the peso amount and choose who pays fees?Only sender-side amounts
Funding networksIs your token supported on the network you hold it on?One chain, or USDC only
Pre-fundingDo you need a peso balance parked in Mexico?A float that grows with volume
Status detailDo webhooks separate conversion from bank delivery?One "pending" until "done"
Tracking referenceDo you get a reference you can take to Banxico's CEP lookup?No rail reference exposed
Refund rulesWhat 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. Then send a test payout to a CLABE on a free development instance with the payout quickstart, and check today's rate on the USDC to MXN page.

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

FAQ