These two actions get mixed up constantly, and using the wrong one makes a mess of your books. Here's the clean distinction.
Void — cancel an invoice locally
Voiding cancels an invoice you shouldn't have issued (wrong client, duplicate, mistake). It's a local action — no money moves. The invoice number is retained (never reused) so your numbering stays gapless and auditable, and the invoice is clearly marked void. Voiding is admin-only.
Use void when: the invoice was a mistake and no payment has been taken, or a payment was recorded in error and needs reversing on your books.
Refund — send money back through Stripe
Refunding returns money a client actually paid by card. An admin issues it from the invoice, fully or partially, and it goes through Stripe against the original payment. This is the only action that moves real money.
Use refund when: the client paid by card and is owed some or all of it back.
Which one do I want?
- Issued the wrong invoice, nobody paid → void.
- Client paid by card and needs money back → refund.
- Recorded a manual/external payment by mistake → void the payment (local reversal), not a Stripe refund.
All of these are audited, so there's always a record of who did what and when.