Partial capture / void / refund
Three ways to unwind a charge: capture less than you held, void it before it settles, or refund it after. The clock decides which you get.
See it
What it is
Three different tools for taking back money, and which one you get depends on where the charge is in its life. Partial capture takes less than the amount you authorized and releases the rest of the hold (you held 200, you ship half the order, you capture 100). Void cancels an authorization before it settles, so no money is ever collected, though the hold the customer can already see takes as long as the issuer takes to drop off. Refund sends captured money back after settlement, and it shows up as its own line on the customer's statement next to the original charge.
Reach for void whenever you still can: your side of it happens immediately, it usually costs less than a refund (check your provider's pricing, some charge for reversals), and it never puts a settled charge and a matching credit on the statement. Refund is the fallback once the daily batch has settled, usually within about 24 hours of capture. Partial capture is for the 'we shipped 2 of 3 items' case and is the reason you should authorize first and capture at fulfillment rather than charging up front.
Gotchas: a voided or partially captured hold can still sit on the customer's account as pending for days, because releasing it is the issuer's job, not yours, so support gets 'you charged me twice' tickets either way. Refunds also do not always return the processing fee, so a refunded sale can cost you real money. And a refund does not protect you from a chargeback that was already filed.
Ask AI for it
Implement order cancellation and adjustment against our payment provider using all three unwind paths, not just refunds. Given an order, branch on payment state: if the payment is authorized but not captured, void the authorization; if it is authorized and only part of the order ships, capture only the shipped amount and release the rest; if it is already captured, issue a full or partial refund against the original charge. Make each call idempotent with a key derived from the order and action, store the provider's returned object id on our order record, and expose the resulting state to support as 'voided', 'partially captured', or 'refunded' with the exact amount and timestamp. Handle the case where a void fails because the charge already settled by falling back to a refund automatically.