Order verification in PrestaShop is the essential line of defense that protects your store from chargebacks, stock reservation issues, and payment fraud. Holding suspicious orders in a dedicated verification state ensures you only capture payments and ship goods after confirming buyer details.
Establishing a systematic verification process, whether using built-in PrestaShop statuses or automated modules, allows you to verify orders cleanly within your payment provider's authorization window. This proactive workflow safeguards your profit margins while ensuring smooth, secure fulfillment for real customers.
Why Order Verification Matters in PrestaShop
The money at risk explains why this deserves a real process rather than a hunch. Card networks treat anything above roughly 1% of transactions as an excessive chargeback level, and typical ecommerce chargeback rates sit between 0.6% and 1%, so a small cluster of bad orders can push a store over that line. Each chargeback also costs you the goods if they shipped, the shipping, the dispute fee, and the time spent defending it.
Verification before capture changes who carries that risk. An authorisation reserves the funds on the customer's card without moving them. If the identity check fails, you void the authorisation, and no money changes hands. If it passes, you capture and dispatch with confidence.
PrestaShop's order lifecycle is where the workflow lives. Every order sits in an order state (Awaiting payment, Payment accepted, Shipped, and so on), and those states drive customer emails, invoices and stock movements. Some payment modules create the order in an authorisation state and only capture later from the Orders screen. That gap between authorisation and capture is your verification window.
Stock compounds the problem. An unverified order that is later refunded or charged back has often already reserved or shipped inventory, so a fraudulent run on your best-selling line can leave genuine customers waiting.
Set a rule and hold to it: if the money has not been captured, you still have leverage; once it is captured and the parcel is gone, you are negotiating a refund from a weak position.
The signals you weigh are the same ones a manual reviewer uses every day:
- Billing and delivery addresses that do not match, especially across countries
- First-time buyers placing unusually large or multiple rapid orders
- Email addresses and phone numbers that do not fit the customer name
- Order values well above your normal basket size, or requests for expedited shipping
None of these is proof of fraud on its own. Together they decide whether an order waits in the queue or goes out with the morning courier.
How to Manage PrestaShop Orders That Need Extra Verification?
There are two workable routes: a module that builds the queue for you or a manual process built from PrestaShop's own order states, payment settings and order notes. Both protect the same thing: the gap between authorisation and capture.
Method 1: Add a Dedicated Order Verification Plugin to PrestaShop
A verification module gives you a repeatable queue instead of a manual routine that depends on someone remembering to check. Rather than watching the Orders list for anything that looks off, you set the rules once and let PrestaShop flag the orders that need a second look before you capture payment.
The aim is a clean workflow: suspicious orders land in a holding status, your team reviews them against a short checklist, and only then does the payment get captured. Everything below is set up in the PrestaShop back office, with the module handling the rules and routing.
Step 1: Install and Enable the Order Verification Module
The module is the engine behind every rule you set later, so it needs to be active and registered before you configure anything. Go to Modules -> Module Manager in the back office.
- Search for the order verification module in the Module Manager search bar.
- Click Install, then Configure once it is listed as installed.
- Confirm the module shows as enabled so it can hook into the order process.
You should now see the module's configuration screen, where the verification rules are set.
Step 2: Create a "Pending Verification" Order Status
A dedicated status is what separates flagged orders from the rest, so nothing ships or is captured by accident. Navigate to Shop Parameters -> Order Settings -> Statuses.
- Add a new status and name it clearly, for example, Pending verification.
- Set it so that it does not mark the order as paid or as ready to ship.
- Assign a colour so reviewers can spot it at a glance in the Orders list.
You should now see the new status available in the order status dropdown, ready to be used as the holding state.
Tip: Keep this status separate from your existing "Awaiting payment" state. That way a reviewer can tell the difference between a customer who has not paid and an order you have chosen to hold.
Step 3: Set the Rules That Trigger Verification
Rules decide which orders pause for review, and a sensible set catches most risk without holding up honest customers. Open the module's rules tab.
- Order value: flag orders above a threshold you are comfortable shipping unchecked.
- Country mismatch: hold orders where the billing and delivery countries differ.
- First order: route a first-time buyer's order to review until you build trust.
- Failed AVS/3DS: flag orders where the address or authentication check did not pass.
You should now see flagged orders defaulting to the holding status instead of moving straight to processing.
Step 4: Route Flagged Orders into a Review Queue and Capture After Verification
This is where the money at risk gets protected, because capture waits until a person has signed off. Add an internal note field or checklist to each held order, and only change the status to your processing state (which triggers capture, depending on your payment provider's authorisation setup) once the checks pass.
You should now see a small, reviewable list of held orders in the Orders view, each with a note explaining why it was flagged and what you confirmed.
Warning: Authorisation holds expire. Check your payment provider's authorisation window and clear held orders well inside it, or re-authorise before capture so you do not lose the sale.
Method 2: Manual and Code-Based Verification in PrestaShop
Not every store needs a module on day one. If your order volume is modest, PrestaShop's back office plus a careful payment configuration can carry the same verification discipline, provided you enforce it consistently. The trade-off is that you're building the queue by hand rather than having a module assemble it for you.
Step 1: Create Custom Order States for the Verification Queue
PrestaShop ships with a set of default statuses, but none of them means "paid, pending checks". Creating your own state gives verified orders a clear home and keeps unverified ones out of your fulfilment flow.
Go to Shop Parameters > Order Settings > Statuses, then select Add new order status. Fill in the Name, pick a Colour that stands out on the orders list, and set the Order status options so the state does not trigger any customer email until you're ready. Name it something unambiguous, such as "Awaiting Verification", so staff never confuse it with "Awaiting Payment".
You should now see your new status in the Statuses list, available for use on any order.
Step 2: Switch the Payment Module to Authorise Rather Than Capture
This step is where the money is protected. If you capture funds the moment the checkout completes, a fraudulent order has already moved cash before anyone checks it. An authorisation hold reserves the amount on the customer's card without settling it, giving you a window to verify first.
Most card payment modules offer a capture setting, though the exact label varies by provider. Open Modules > Module Manager, find your payment module and open its Configure screen. Look for a setting named along the lines of capture type, payment action, or transaction mode, and set it to authorise only, sometimes labelled "Authorize Only" or "Manual Capture". Save the change.
You should now see new orders arriving with an authorised but uncaptured payment, ready for manual capture once checks pass.
Warning: Authorisation holds expire. Confirm your provider's hold window with them and set an internal rule to verify and capture well inside it, or the funds will simply drop off and you'll have to re-request payment.
Step 3: Use Order Messages and Internal Notes as Your Audit Trail
A verified order is only as good as the record behind it. When a chargeback lands months later, the bank wants evidence, and a trail of internal notes is exactly that.
Open the order from Sell > Orders and use the New message area on the order page. Tick the option to keep the message private if you don't want the customer to see it, then record what you checked, who checked it, and when. Change the status to your verification state from Step 1 once the order enters the queue.
You should now see a dated log on the order showing each verification decision.
Step 4: Verify the Order Details Before You Capture
Now do the actual work. Run every flagged order through the same short checklist so nothing slips through on a busy morning:
- Compare the billing address with the delivery address. A mismatch on a high-value order is not automatically fraud, but it deserves a call.
- Check the phone number against the delivery country, and search the email address for previous orders or disputes.
- For high-value baskets, request a copy of the ID or a recent utility bill matching the billing address, and store it against the order.
- For digital or download products, confirm the email domain is genuine before releasing access.
Step 5: Pull the Queue Together with a Database Query
The back office orders list can be filtered, but a direct query gives you a clean snapshot. PrestaShop stores status against the order in the orders table as an ID, so a read-only SELECT againstPREFIX_orders, joined to PREFIX_customer, will list every order sitting in your verification state. Run it through phpMyAdmin or your host's database tool, and never run a write query there.
You should now see a simple list of orders awaiting checks. For richer filtering and one-click state changes, a purpose-built module such as the ones at FME Modules replaces this manual step entirely.
How Do You Troubleshoot Stuck or Wrongly Flagged Verification Orders?
Most verification problems are not mysterious. They come from a payment module that captures before you can check, a status that never fires an email, or a rule set that is too blunt. Work through the pairs below in order.
| Symptom | Likely cause | Fix |
|---|---|---|
| Order is marked Paid while still in the queue | Your payment module is set to capture funds on authorisation | Switch the module to authorise-only, then capture after approval |
| Status changes, but no email arrives | Missing or misassigned email template for that order state | Assign a template to the verification state in the order status settings |
| Trusted customers keep getting held | Rules flag order value alone with no other condition | Layer rules: combine value with payment method, country or customer history |
| Two identical orders appear | Customer refreshed or resubmitted while waiting | Cancel the duplicate and keep one reference in the verification note |
Start with the capture setting, because everything else follows from it. If your payment module takes the money the moment the customer submits, the verification queue is decorative. You are checking an order you have already been paid for, and reversing it means a refund rather than a void. The fix is to move the module into an authorise-only mode so the hold sits on the card while your team reviews.
Silent status changes are usually an email configuration gap. PrestaShop lets you create custom order statuses and attach templates to them, but a new state with no template assigned will update the order quietly and tell nobody. Check that the verification status has a template pointing to the right file, then place a test order to confirm the customer actually receives it.
Over-broad rules are the third common culprit. A store that holds every order above a set value will trap plenty of loyal buyers who simply bought a lot. Layer two or three conditions instead, such as order value plus payment method plus a mismatch between billing and delivery country. You can read more about building PrestaShop modules that add these rule layers if the built-in options are not granular enough.
Duplicate orders and expired holds are the two failures that cost real money rather than time. Duplicates appear when a customer resubmits during a slow redirect; cancel the extra one and record the surviving order number in the verification note. An authorisation left too long before capture can expire, so set an internal deadline shorter than your acquirer's hold window and capture or void before it lapses.
- Confirm the payment module is in authorise-only mode before you trust any queue (see Method 2, Step 2).
- Give every custom order status its own email template.
- Combine rule conditions rather than relying on a single threshold.
- Set a capture deadline and check the queue against it daily.
Conclusion
You now have a working verification routine: a holding state that keeps unverified orders out of fulfilment, a payment setting that leaves the money uncaptured until someone signs off, and a written trail behind every decision. Together, those turn a risky grey area into a queue your team can clear in minutes each morning.
The single most valuable habit is the capture deadline. Diarise a daily pass over the queue, capture or void every held order inside your acquirer's authorisation window, and the routine holds itself together even on a busy week. If you would rather have the rules and routing handled for you, browse the PrestaShop order verification modules and pick one that matches your order volume.