# Void the debit before it's sent, refund it after it clears

[Cancel or refund a payment](https://devportal.qa.winkpg.io/docs/decide/cancel-or-refund-a-payment.md): Whether undoing a payment is a void, a reversal, or a refund, and what each one does to the money and to your records.

ACH has no hold and no card batch, so there's no reversal. There's a void before origination and a refund after.

**Your answers so far**

- How did the customer pay? By ACH bank debit.
- What happened to the debit? I need to stop it, or give the money back.

**What to build**

Before the processor originates the debit to the ACH network, send a Void. Once the debit has cleared, send a Refund, which creates a new linked transaction that clears on the ACH rail on its own schedule. As on a card, read the transaction's allowedActions list to learn which one applies.

**Worth knowing**

- Transaction.Settled never fires for ACH. Subscribe to Transaction.AchStatusChanged and Transaction.Returned instead.
- A debit can be returned after it reported as cleared. Hold off on irreversible fulfillment for as long as your business can afford to.

**Where to go next**

- [ACH payments](https://devportal.qa.winkpg.io/docs/guides/ach-payments.md)
- [Refunds, voids, and reversals](https://devportal.qa.winkpg.io/docs/guides/refunds-voids-and-reversals.md)
- [Accept an ACH payment](https://devportal.qa.winkpg.io/docs/blueprints/accept-an-ach-payment.md)

- [Start over](https://devportal.qa.winkpg.io/docs/decide/cancel-or-refund-a-payment.md): go back to the first question.

## See also

- [All documentation](https://devportal.qa.winkpg.io/llms.txt): the machine-readable index of every public page on this site.
