---
title: "Refunds and chargebacks when shoppers pay by bank transfer"
seoTitle: "Refunds and chargebacks on bank transfer checkouts (2026)"
description: "How refunds and disputes work when shoppers pay by Pix, SPEI, Transfers 3.0, ACH, or RTP in 2026, and how to design a refund policy for a checkout."
date: "2026-10-25"
updated: "2026-10-25"
category: "payments"
author: "BlindPay Team"
faq:
  - q: "Can a shopper charge back a Pix payment?"
    a: "Not the way a card works. Brazil's MED (Mecanismo Especial de Devolução) covers fraud, scams, and operational failures, and a recovery can be opened for a transaction up to 80 days old. The Banco Central do Brasil guide says commercial disagreements, such as late delivery or a product that did not match expectations, are not grounds for MED and go to the courts."
  - q: "How do I refund a shopper who paid by bank transfer?"
    a: "Send the money back as a new payment. With BlindPay, refund a completed checkout with a payout to the shopper's bank account: request a payout quote, which locks the rate and fees for 5 minutes, then execute it over Pix, SPEI, Transfers 3.0, ACH, or another rail. Decide in your policy whether you refund the local amount or the dollar amount."
  - q: "What does a refunded status mean on a BlindPay payin?"
    a: "It means the deposit was returned to the sender and the payin is final. The merchant did not get paid for that order, so mark the session failed and tell the shopper the payment did not go through. BlindPay's docs note that fiat refunds are credited once the banking network returns the funds, and fees may apply to fiat refunds."
  - q: "Are ACH payments reversible?"
    a: "In limited cases. Stripe's bank transfer docs describe USD transfers over the ACH network as reversible on request to the sender's bank, with the reversal sent no later than 5 days after the payment. RTP settlement is final, according to The Clearing House. Plan the US side of a checkout so goods ship after the payment status is completed."
  - q: "What should a bank transfer refund policy say?"
    a: "State the refund window, which amount you return (the local amount paid or the dollar price), who pays the refund's fees and exchange, how long it takes per rail, and which details you need from the shopper to send it, such as a Pix key or bank account. Publish it before checkout. Baymard found 13% of shoppers abandoned over an unsatisfactory returns policy."
---

When shoppers pay by bank transfer, there is no card-style chargeback for buyer's remorse. Pix, Transfers 3.0, and RTP credit the merchant with final payments, and Brazil's MED covers only fraud and operational failures. So a refund is a new payment you send back. Write the policy before launch: which amount, which rail, how fast, who pays.

This guide is part of the series on [what a global payments checkout is](/resources/more/what-is-a-global-payments-checkout). For the exchange-rate math of a refund, read [refunding a cross-border payment after the FX moved](/resources/more/refund-cross-border-payment-after-fx-move).

**Key takeaways**

- Brazil's MED handles fraud, scams, and operational failures for transactions up to 80 days old; commercial disputes go to the courts, per the Banco Central do Brasil.
- A Pix receiver may return all or part of a payment voluntarily within 90 days.
- Argentina's BCRA describes Transfers 3.0 payments as irrevocable, and The Clearing House describes RTP settlement as final.
- On BlindPay, a payin ends `completed`, `failed`, or `refunded`; refund a completed checkout with a payout quote and payout.
- Baymard found 13% of US shoppers abandoned an order because the returns policy was not satisfactory.

## How do bank transfer disputes differ from card chargebacks?

A card payment can be pulled back through the card network's dispute process. A bank transfer is pushed by the shopper from their own bank app, and most instant rails treat it as final.

That changes who holds the risk. On cards, the merchant waits to see if a dispute arrives. On push transfers, the shopper trusts the merchant to refund, and the merchant decides how. Each rail has its own rules:

| Rail | Can the payer pull the money back? | Return path | Source |
| --- | --- | --- | --- |
| Pix (Brazil) | Only through MED, for fraud, scams, or operational failures, up to 80 days | Receiver may return all or part within 90 days | [BCB MED guide](https://www.bcb.gov.br/content/estabilidadefinanceira/pix/Guia_MED.pdf) |
| Transfers 3.0 (Argentina) | No, payments are irrevocable | A new transfer from the merchant | [BCRA](https://www.bcra.gob.ar/en/transfers-3-0/) |
| RTP (US) | No, settlement is final | A new RTP or ACH payment | [The Clearing House](https://www.theclearinghouse.org/payment-systems/rtp) |
| ACH (US) | In limited cases, on request to the sender's bank, within 5 days | A new ACH credit | [Stripe bank transfer docs](https://docs.stripe.com/payments/bank-transfers) |
| Card (any) | Yes, through the card network's dispute process | Refund to the card | The card network's rules |

The Pix row matters most for Latin America. The [Banco Central do Brasil's MED guide](https://www.bcb.gov.br/content/estabilidadefinanceira/pix/Guia_MED.pdf) lists purchases delivered late, products that did not meet expectations, or the wrong model as examples where a refund cannot be requested through MED. Those disagreements are resolved in the courts, not by the payment system.

Card gateways that offer Pix reflect the same split. [Stripe's Pix docs](https://docs.stripe.com/payments/pix) list refunds within 90 days and full disputes only, and say a Pix dispute can't be contested through Stripe, because the partner's decision is final.

## What payment outcomes does a bank transfer checkout have to handle?

Three terminal outcomes, plus one waiting state. Each needs a screen and a webhook to the merchant.

On BlindPay, a payin moves through these statuses:

- **`completed`.** Stablecoins were delivered to the merchant's wallet. Confirm the order.
- **`failed`.** The payin did not go through, for example because the deposit never arrived in the monitoring window. No money to return.
- **`refunded`.** The deposit was returned to the sender. Mark the session failed and show "This payment did not go through."
- **`on_hold`.** Manual risk or compliance review. Not final. Keep the order open and tell the shopper the payment is being reviewed.

BlindPay's [cut-off reference](/docs/kb/cut-off-times) lists common causes of failed or refunded payments: incorrect details, a receiving bank rejection, a closed or restricted account, or unmet compliance requirements. It also notes that fiat refunds are credited once the banking network returns the funds, and fees may apply to fiat refunds.

Listen for `payin.complete`, which fires when the payin finishes, and read `status` to know which outcome you got. [Payout statuses explained](/resources/more/stablecoin-payout-statuses-explained) uses the same status words on the outbound side.

## How do you refund a shopper after a completed checkout?

Send the money back as a payout. The merchant's balance sits in stablecoins, so a refund converts back to the shopper's currency and lands over a local rail.

1. **Approve the refund in your system** and record the reason, the order, and the original payin id.
2. **Collect the shopper's payout details.** A Pix key or bank details for Brazil, a CLABE for Mexico, a CBU or CVU for Argentina, a bank account for Colombia or the US. A payout goes to a bank account saved under a BlindPay customer, so follow the onboarding steps in the [payouts docs](/docs/payouts).
3. **Decide the amount.** Refund the local amount the shopper paid, or the dollar price. The exchange rate has likely moved since the purchase.
4. **Request a payout quote.** It locks the rate and fees for 5 minutes. Use a receiver-side amount if you promised the exact local amount back.
5. **Execute the payout** before the quote expires, with an `Idempotency-Key` tied to the refund so a retry never pays twice.
6. **Tell the shopper** the expected arrival time for that rail, and close the refund when the payout completes.

Pix, SPEI, and Transfers 3.0 refunds settle in minutes. ACH Colombia takes about 1 business day, and ACH and wire about 1 to 2 business days.

## How do you design a refund policy for a bank transfer checkout?

Decide five things and publish them before checkout, not after a complaint. [Baymard's research](https://baymard.com/lists/cart-abandonment-rate) found 13% of US shoppers abandoned because the returns policy was not satisfactory.

- **Window.** For example, 30 days from delivery. Pix's 90-day voluntary return window is a ceiling for the rail, not a policy you must match.
- **Amount.** Local amount paid, or the dollar price converted at the refund date. Shoppers usually expect the local amount back.
- **Fees and exchange.** Who pays the refund payout's fees. If you charged the shopper's fees at checkout, consider absorbing them on the refund. [Who pays the fees at checkout](/resources/more/who-pays-fees-cross-border-checkout) covers the quote settings.
- **Timing per rail.** Minutes for Pix, SPEI, and Transfers 3.0; about 1 to 2 business days for ACH and wire.
- **What the shopper sends you.** Which payout details you need, and how to send them safely.

One more rule for the US. Because ACH payments can be reversed in limited cases, ship goods only after the payin status is `completed`. [Pay by bank at a US checkout](/resources/more/us-pay-by-bank-checkout-ach-wire-rtp) compares the US rails by speed.

## How does BlindPay handle failed, refunded, and returned payments?

BlindPay reports every outcome as a typed payin status and lets you send refunds over the same local rails your shoppers used to pay.

On the way in, a payin ends `completed`, `failed`, or `refunded`, with `on_hold` for manual review, and the `tracking_transaction`, `tracking_payment`, and `tracking_complete` objects show finer steps for a support view. Webhooks (`payin.new`, `payin.update`, `payin.complete`) are signed, and `GET /v1/e/payins/{id}` powers a payer receipt without an API key.

On the way out, a refund is a payout: a quote that locks rate and fees for 5 minutes, then delivery over Pix, PIX Safe, TED, SPEI, Transfers 3.0, ACH Colombia, ACH, wire, RTP, SEPA, Faster Payments, or SWIFT (POBO/COBO). If a payout cannot be delivered after the stablecoins are collected, BlindPay refunds them to the quote's refund wallet, or to the sending wallet when none is set; on Pix and other non-USD local rails the refund is automatic, while USD payouts and payouts whose review times out are refunded after an operator review.

On a development instance, `request_amount` 66600 forces `failed` and 77700 forces `refunded`, so you can test both screens before launch. Confirm consumer refund obligations in each country with your compliance counsel.

**Who this is for:** merchants and checkout platforms that accept Pix, SPEI, Transfers 3.0, PSE, ACH, or RTP and need a refund process that works without card chargebacks.

## Methodology and sources

Pix return and MED rules come from the [Banco Central do Brasil's MED guide](https://www.bcb.gov.br/content/estabilidadefinanceira/pix/Guia_MED.pdf), version 4.3. Transfers 3.0 comes from the [BCRA](https://www.bcra.gob.ar/en/transfers-3-0/) and RTP from [The Clearing House](https://www.theclearinghouse.org/payment-systems/rtp). ACH reversals and Pix dispute handling on a card gateway come from [Stripe's bank transfer docs](https://docs.stripe.com/payments/bank-transfers) and [Stripe's Pix docs](https://docs.stripe.com/payments/pix). Returns-policy abandonment comes from [Baymard](https://baymard.com/lists/cart-abandonment-rate). BlindPay behavior comes from the [payins](/docs/payins), [payouts](/docs/payouts), and [cut-off times](/docs/kb/cut-off-times) docs, as of October 2026. For Pix collection details, read [accepting Pix payments from abroad](/resources/more/accept-pix-payments-from-abroad).

## What to do next

Write your refund policy in five lines: window, amount, fees, timing per rail, and the details you need. Then test it on a BlindPay development instance: force a refunded payin with 77700, and send a refund payout for a completed one.
