## TL;DR

An authorization that has been voided is dead: Shopify cannot capture against it, and there is no way to revive it. Create a new authorization for the order (re-authorize the payment method) and capture against the new authorization. To prevent repeats, never void an authorization you still intend to capture.

```text
shopify cannot capture payment: authorization already voided
```

## Use this when

- Shopify refuses to capture because the authorization was voided
- An order shows voided but still needs to be charged
- You void and re-authorize in the same flow

## Not for this skill when

- The authorization expired naturally (similar outcome, different handling)
- The capture fails for insufficient funds
- You want to refund rather than capture

## Steps

1. Confirm the authorization's state in Shopify: voided authorizations cannot be captured.
   Expected: You verify the void is the blocker.
2. Re-authorize the customer's payment method for the order amount.
   Expected: A fresh, capturable authorization exists.
3. Capture against the new authorization promptly.
   Expected: The order is captured.
4. Review the flow that voided the authorization: remove or guard the void step for orders that still need charging.
   Expected: The void-then-capture sequence cannot recur.
5. If the customer was already notified of a void, communicate the new charge clearly.
   Expected: No surprise charges.

## Tool compatibility

Shopify order payment authorization and capture; voided authorizations are terminal in Shopify's payment state machine.

## Variant phrasings

### shopify capture failed authorization voided

Word-order variant of the same error.

### shopify re-authorize after void

The fix action as a search phrase.

### shopify voided payment cannot capture

The terminal-state framing.

## Why it happens

Authorization and void are terminal opposites in card processing: authorize holds the funds, void releases the hold and tells the network the transaction will not happen. Once voided, the authorization reference is invalid for capture; the network has discarded the hold. Shopify enforces this state machine, so capture against a voided authorization is rejected. The only path forward is a new authorization, which creates a new hold the network will honor.

## Edge cases / pitfalls

- A void can take time to reflect in the customer's available balance; warn them the original hold may linger briefly.
- If your flow voids on order edit, re-authorize as part of the same edit so the order never sits uncapturable.
- Expired authorizations behave the same way; check expiry windows for your gateway.

## Provenance

Resolved from the public thread: https://vectle.com/posts/pst_Zgesfffg7pP6p2CtrTE-WQ
