Where is my off-ramp payout? How to track it rail by rail, and what to tell the recipient
Track an off-ramp payout from transaction hash to bank: the reference each rail gives you (Pix E2E ID, SPEI key, ACH trace, UETR) and status copy.
To track an off-ramp payout, follow the stablecoin leg by its transaction hash and the fiat leg by the reference its rail assigns: the end-to-end ID on Pix, the clave de rastreo on SPEI, the trace number on ACH, the IMAD on Fedwire, the UETR on SWIFT, or the end-to-end ID on SEPA. The provider's status shows which stage the payout is in.
Most "where is my money" tickets get solved by handing over the right reference. Here's which one, and when.
Key takeaways
- Every off-ramp payout has two trackable halves: an on-chain transfer and a bank payment.
- Each rail has its own reference. The recipient's bank can find a payment in minutes with it, and in days without it.
- Statuses tell you the stage.
On holdis a review, not an error, andcompletedmeans the money reached the rail, not that the recipient checked their app. - Write status copy per stage and per rail before launch. Support teams answer the same five questions all day.
What are the stages of an off-ramp payout?
Seven stages, and a recipient-facing message for each. The statuses are BlindPay's, from the payouts reference. Other providers use similar names.
| Stage | What's happening | Provider status and event | What to tell the recipient |
|---|---|---|---|
| Quote accepted | Rate and fees locked for a few minutes | Quote created | "Your payment of R$5,000.00 is confirmed at this rate." |
| Stablecoins collected | Funds pulled from the sender's wallet | processing, payout.new | "We've received the funds and started your transfer." |
| Compliance review | Payout held for screening or documents | on_hold, payout.update | "Your payment is being reviewed. No action needed unless we contact you." |
| Converting | Stablecoins converted to local currency | processing | "We're converting your payment to reais." |
| Sent to the bank | Payment submitted to Pix, SPEI, ACH, SEPA, or SWIFT | processing, payout.update | "Your payment is on its way to your bank. Expected: within minutes." |
| Settled | Payment reached the receiving bank | completed, payout.complete | "Paid. Reference: E2E ID E1234..." |
| Returned | Stablecoins sent back instead of converting | refunded, payout.complete | "The bank couldn't accept this payment. Please check your account details." |
Two statuses need care. A failed payout fires payout.update, not payout.complete, and at BlindPay it doesn't refund automatically. And on_hold isn't a failure, so never show it in red. The payout statuses explainer covers which statuses are final and why.
Each BlindPay payout also carries tracking objects (tracking_transaction, tracking_liquidity, tracking_payment, tracking_complete) whose step moves through processing, on_hold, pending_review, and completed. They're what lets you split "converting" from "sent to the bank" in your own UI.
Which reference does each rail give you?
| Rail | Reference | Format | Where it's checked |
|---|---|---|---|
| Blockchain | Transaction hash | Hex or base58 string, per chain | Block explorer: Etherscan, Polygonscan, Basescan, Arbiscan, Solscan, Tronscan, StellarExpert |
| Pix (Brazil) | End-to-end ID (E2E ID) | 32 alphanumeric characters | Recipient's bank app or statement |
| SPEI (Mexico) | Clave de rastreo | Up to 30 alphanumeric characters | Banxico's CEP lookup |
| ACH (US) | Trace number | 15 digits, assigned by the originating bank | Recipient's bank |
| Fedwire (US) | IMAD | Input Message Accountability Data | Recipient's bank |
| SWIFT | UETR | 36-character unique identifier | Any bank in the chain, through Swift gpi tracking |
| SEPA | End-to-end ID | Up to 35 characters, set by the sender | Recipient's bank |
A few notes from the field.
Pix. The E2E ID identifies the payment across the whole Pix system. If something goes wrong, it's also what the recipient's bank needs for a devolução (refund). The Central Bank's MED guide sets the rules for fraud-related returns, including an 80-day window from the original payment.
SPEI. The clave de rastreo is the most useful reference in Latin America, because anyone can check it. SPEI runs 24/7, so payouts settle at any hour.
SWIFT. Cross-border SWIFT payments moved to ISO 20022 messages when the coexistence period with the old MT format ended in November 2025, and the UETR carries over. With it, the recipient's bank can see which correspondent is holding the payment and why. BlindPay's SWIFT (POBO/COBO) payouts carry UETR tracking and MT103 confirmations, which recipients' finance teams and auditors already know how to read (how POBO/COBO works).
How do you check a SPEI payment yourself?
Mexico is the one rail where the sender can verify settlement without the recipient's bank.
- Go to banxico.org.mx/cep.
- Enter the date of the transfer.
- Enter the clave de rastreo, or the reference number.
- Select the sending bank and the receiving bank.
- Enter the recipient's CLABE and the exact amount.
- Download the CEP (Comprobante Electrónico de Pago).
The CEP is built from the receiving bank's information, which is why recipients and auditors accept it. It's the best answer to "I didn't get it" on a SPEI payout.
What does BlindPay return for tracking?
Statuses and webhooks for every payout, plus the rail references that the rail provides. Per the POBO/COBO guide, these arrive on GET /payouts/{id} and on the payout.complete webhook:
| Rail | provider_uetr | provider_imad | provider_reference | provider_clearing_system |
|---|---|---|---|---|
| International SWIFT | Yes | No | No | SWIFT |
| Domestic wire | Yes | Yes | Sometimes | FED or CHIPS |
| ACH | No | No | Sometimes | ACH |
provider_uetr stays null while the payment is in flight and fills in once the wire is confirmed. provider_reference is a bank-side booking reference, not the formal ACH trace number, so don't hand it to a bank as one.
SWIFT payouts add one more object. They start on_hold until compliance documents are approved, and tracking_documents reports progress from waiting_documents to compliance_reviewing (SWIFT statuses). Documents must be submitted within 30 days of payout creation.
How should support answer "where is my money"?
Work from the status, in this order.
processinglonger than the rail's normal time. Check which tracking object is still open. A stucktracking_paymentwith a business-day rail usually means a cut-off was missed. The settlement times by rail give the normal window.on_hold. Tell the recipient it's under review. Don't retry. Answer any request for information within hours, since an unanswered one can end in a refund (on-hold transactions).completed, recipient says no. Send the rail reference. The recipient's bank finds the payment with it, then credits it or explains the delay.refunded. The stablecoins went back to the funding source. Fix the bank details, usually a name or account number problem, and send a new payout with a new quote.failed. At BlindPay this doesn't refund automatically. Open a ticket with support instead of waiting.
Keep every reference in your own ledger next to the payout ID. Finance asks for them months later, during reconciliation. The webhooks and reconciliation guide shows how to store events so they don't get processed twice.
How should status copy read?
Short, specific, and per rail.
- Give the ETA for the rail, not the provider. "Within minutes" for Pix and SPEI. "One to two business days" for ACH.
- Say what the recipient can do. Usually nothing, until a reference exists.
- Show the reference as soon as you have it. E2E ID, clave de rastreo, UETR.
- Don't say "instant" before settlement. Say it after.
- Never show a review as an error. Grey or neutral, not red.
The payout mistakes guide lists the errors that cause most returns in the first place.
How does BlindPay help you track payouts?
BlindPay reports every payout through statuses, tracking objects, and webhooks, from the moment the stablecoins are collected to the moment local currency lands. SWIFT and domestic wire payouts carry the UETR, wires carry the IMAD, and SWIFT compliance progress shows up in tracking_documents. Start with the payouts reference, then wire payout.update and payout.complete into your status page.
When the payout lands but the amount looks wrong, the payout amount support playbook walks a ticket from the quote to the rail reference.
This article is for general information only and is not legal, tax, or financial advice.
FAQ
More payments articles
See all payments articlesHow to spend USDC as a freelancer: stablecoin card, exchange off-ramp, or local bank payout
Three ways to spend USDC as a freelancer: a stablecoin card, an exchange off-ramp, or a local payout over Pix, SPEI, or ACH, compared on speed and cost.
From stablecoin to local bank: when to cash out over Pix, SPEI, ACH, SEPA, or SWIFT instead of using a card
When a stablecoin card is the wrong tool and a local bank payout fits: rent, payroll, invoices. Each rail compared, plus how a payout API flow works.
How much does a crypto on-ramp cost? Fees, spreads, and how to read a quote
A crypto on-ramp charges through the rate spread, a service fee, the payment rail, and sometimes the network. How each works, and how to read the quote.