The short answer
You need a payment gateway set to authorize at checkout and capture later, so the customer's card is checked and the funds are held but no money moves until you approve the order. In WooCommerce this is usually a setting in the gateway, often called manual capture, authorize only, or capture on order status change. The order then sits in a holding status until someone in your team captures the payment from the order screen.
This is the right setup for made-to-order goods, stock you have to confirm, custom quotes, wholesale accounts and anything where you might have to cancel before shipping. It is not a workaround for slow stock control, because authorizations expire. The rest of this guide covers how the flow works, which gateways support it, how to set it up safely, and the mistakes that cost sales.
How authorize and capture actually works
An online card payment has two separate steps that most stores run together. Splitting them is what gives you an approval step.
| Step | What happens | What the customer sees |
|---|---|---|
| Authorization | The gateway checks the card and reserves the amount | A pending or held amount on their statement, not a charge |
| Capture | You confirm and the funds move to you | The charge settles and appears as a normal purchase |
| Void or cancel | You release the authorization before capture | The hold disappears, usually within a few days |
| Refund | You return money after capture | A refund on the statement, which takes longer than a void |
| Expiry | The hold lapses if you never capture it | The hold drops off and you have no payment |
The point that catches stores out is expiry. Authorizations do not last forever, and the window varies by gateway, card type and country. Confirm the window in your gateway's own documentation and build your approval process to finish comfortably inside it.
Which gateways support it
Support depends on the gateway and its WooCommerce extension, not on WooCommerce itself. Several of the major gateways, including Square, Stripe, PayPal and Authorize.net, offer some form of authorize now and capture later, but the setting name, the hold window and the partial capture rules differ, so check the extension's documentation for your account and country before you promise a workflow to your team.
- Look for the wording. In extension settings this appears as a transaction type or capture mode, with options along the lines of authorize and capture, or authorize only.
- Check partial capture. Some gateways let you capture less than the authorized amount, which matters if quantities change. Others require the full amount or a void and a fresh payment.
- Check the hold window. This decides how long your approval step can take.
- Check subscriptions and saved cards. Recurring payments usually behave differently from one-off orders.
For a wider comparison of what each gateway does well, see our guide to WooCommerce payment gateways, and the setup walkthroughs for Square and Stripe.
Setting it up in WooCommerce
The setup is short. The discipline around it is what makes it work.
- Test on a staging copy first. Never change payment settings on a live store. Use the gateway's sandbox or test mode.
- Switch the gateway to authorize only. In the extension settings, change the transaction or capture mode.
- Decide the holding status. Authorized orders should land in a status your team treats as an approval queue rather than as paid.
- Agree who approves. Name the person and the deadline. An approval step with no owner is how authorizations expire.
- Capture from the order. Most extensions add a capture button or a status change that triggers capture. Confirm the money arrived in the gateway dashboard, not just in WooCommerce.
- Void promptly when you decline. Release the hold as soon as you know the order is not going ahead.
- Fix the customer emails. The order confirmation should say the card has been authorized and will be charged when the order is approved.
If you are building the store from scratch, our guide on how to build a WooCommerce store covers the order statuses and emails this depends on, and adding a payment gateway in WooCommerce covers the basic connection.
An approval workflow that does not lose sales
Aim to approve or decline every held order well inside the authorization window, with a clear message to the customer at each step. Most complaints about this setup are about silence, not about the hold itself.
- Tell the customer at checkout. A line above the payment button explaining that the card is authorized now and charged on approval prevents most support tickets.
- Alert the approver. Send held orders to a shared inbox or channel, not to one person's email.
- Set a daily cut-off. Same-day review is a promise you can keep. Reviewing when someone remembers is not.
- Log the decision. Add an order note saying who approved it and why, which is invaluable in a dispute.
- Watch the queue. Any order approaching the end of the hold window needs a decision today, or a void and a fresh payment link.
What goes wrong
Four failures account for most of the trouble.
| Problem | Cause | Prevention |
|---|---|---|
| Expired authorization | Approval took longer than the hold window | A named owner, a daily cut-off and a queue report |
| Customer thinks they were charged twice | The hold appears, then the capture appears before the hold clears | Explain it at checkout and in the confirmation email |
| Stock sold twice | Held orders do not reserve stock in the way the team assumes | Confirm how your setup handles stock, and test it |
| Amount changed after checkout | Shipping or quantity changed and the gateway cannot capture more | Capture less if supported, otherwise void and send a new payment |
Keeping the checkout secure
Manual capture does not change your security duties. Card data should never touch your server: use the gateway's hosted fields or its own checkout so the card details go straight to the gateway, keep the site on HTTPS everywhere, and keep the gateway extension updated like any other plugin.
Beyond that, the basics that protect a store are the ones that protect any WordPress site: strong administrator accounts with two-factor authentication, limited admin access for staff who only process orders, tested off-server backups and an update routine. Our WordPress security guide covers those, and the payments side is worth a conversation with your gateway about fraud rules and strong customer authentication in your market.
Before you go live
- Manual capture tested end to end in sandbox mode, including a void and a refund.
- The hold window confirmed in the gateway's documentation.
- Order statuses set so held orders cannot be treated as paid.
- A named approver and a daily deadline, with a shared alert.
- Checkout copy and the confirmation email explain the hold in plain language.
- Partial capture rules known and written down.
- Stock behaviour tested with two orders for the last item.
- Staff accounts limited to the permissions they need.
- Gateway dashboard checked after the first live capture.
Next step
If you want held orders, an approval queue and a checkout that explains itself, that is a short piece of configuration plus a workflow your team will actually follow. Tell us which gateway you use and what you need to check before charging, and we will confirm what your gateway supports and set it up on a staging copy first. See our WooCommerce development service or use the contact page.