- First release: risk score with reasons, block and allow lists, require prepayment, hold for review, COD confirmation by link, code, phone and optional SMS gateway, review queue, order page panel, CSV import and export.
by Kavio Labs · for OpenCart 4.x and 3.0.x
Order fraud scoring for OpenCart 4.x and 3.0.x that runs on your store: a 0-100 score with every reason shown, block and allow lists, cash on delivery hidden for risky buyers, a review queue, and COD confirmation by link, code or phone. No outside service, no lookup limit, no OCMOD.
Order fraud scoring for OpenCart 4.x and 3.0.x that runs on your store: a 0-100 score with every reason shown, block and allow lists, cash on delivery hidden for risky buyers, a review queue, and COD confirmation by link, code or phone. No outside service, no lookup limit, no OCMOD.
Order Risk Guard works with OpenCart 4.1.0.4, 3.0.5.1.
We list the builds we install and test on. “Tested” means the test plan ran on that build; “Supported” means the build is inside the supported range.
| Version | Range | Runs on | Status |
|---|---|---|---|
| OpenCart 4.1.0.x | 4.1.0.0 – 4.1.0.4 | PHP 8.1 – 8.3 | Tested on 4.1.0.4 |
| OpenCart 4.0.2.x | 4.0.2.0 – 4.0.2.3 | PHP 8.0 – 8.2 | Supported |
| OpenCart 3.0.x | 3.0.3.8 – 3.0.5.x | PHP 7.4 – 8.1 | Tested on 3.0.5.1 |
The Documentation tab covers the settings and every screen.
OpenCart 4.1.0.4, 3.0.5.1. Tested on OpenCart 4.1.0.4 and OpenCart 3.0.5.1. The Compatibility tab lists every version range.
No. They work through OpenCart events and standard extension types (modules, order totals, themes). No core file edits, no OCMOD patches, no theme template edits, so OpenCart updates and other extensions keep working.
Yes. Every download has a package for OpenCart 4.0.2 to 4.1.x and one for OpenCart 3.0.3 to 3.0.5, and the license key works with both. Moving from OpenCart 3 to 4 later costs nothing.
One production store domain with every subdomain (www, shop., staging.), plus local development hosts such as localhost, *.local and *.test. A store on another domain needs its own license; a second-store license is 40% off. You have 14 days after installing to enter the key. 12 months of updates and support are included; after that the extension keeps working and renewals are 50% off. How licensing works
Yes. Ask for a full refund within 30 days of your first purchase, no reason needed: open a ticket or write to [email protected] with your order number. The money goes back to the card or bank account you paid with within 5 business days of approval. Refund policy
Open a ticket from your account, so your license details are attached. We answer Monday to Friday: bug reports within 1 business day, how-to questions within 2. Support policy. Not a customer yet? Ask a pre-sales question.
9 more answers about setup and daily use in the Documentation tab.
Code: kv_order_risk_guard · Version: 1.0.0 · Works with: OpenCart 4.x and 3.0.x
Order Risk Guard gives every new order a risk score from 0 to 100, shows every reason behind the number and acts on it. Fake and refused cash-on-delivery orders cost you shipping twice, and a chargeback customer comes back with a new e-mail address. This extension keeps a block list and an allow list, looks at the customer's history in your own store, and stops the risky orders before you ship.
Everything runs on your store. No order data leaves it, there is no account to open, no monthly fee and no lookup limit.
| Page | Contents |
|---|---|
| Installation | Requirements, installing, first steps, updating, removing |
| Configuration | Thresholds, payment methods, statuses, points, SMS, license |
| Usage | The queue, the order panel, lists, confirmations, what buyers see |
| FAQ | Common questions |
| OpenCart | 4.1.0.4 and 3.0.5.1, on the default themes |
| PHP | 8.3 with OpenCart 4.1.0.4, 8.1 with OpenCart 3.0.5.1 |
| Checkout | Stock OpenCart checkout, guest and registered customers |
| Payment methods tested | Cash on delivery, bank transfer |
A third-party one-page checkout is not tested. Hiding payment methods and refusing the checkout need the stock payment and confirm steps. The hold on the first order status runs in the OpenCart order model, so it works behind any checkout that uses that model.
| Tool | What it does | With this extension |
|---|---|---|
| OpenCart fraud extensions (IP, FraudLabs Pro, MaxMind) | Set a status from an IP list or an outside service | Can run next to it |
| Bot & Country Blocker (Kavio Labs) | Stops bots and countries before they reach the shop | Different job: this one looks at orders. If it is installed, its GeoIP database also supplies the IP country here |
kv_order_risk_guard.ocmod.zip.kv_order_risk_guard-oc3.ocmod.zip.There is nothing to refresh under Modifications: the extension uses events only.
Installing adds two order statuses, "Risk review" and "Awaiting confirmation", and scoring starts at once with the default settings.
[email protected], and cash on delivery. You will find it in the review queue.To try the messages without sending anything, set Messages to the test mode in Settings. They are written to system/storage/kv_order_risk_guard/mail/.
Unconfirmed orders are cancelled on time when a cron job calls the Cron URL from Settings, for example every 15 minutes. Without cron the same work runs on storefront visits, at most every 15 minutes. On OpenCart 4 the job is also listed under Extensions > Cron Jobs.
Upload the new package the same way. Your lists, scores and settings stay.
Uninstalling the module removes its tables and settings: lists, scores and open confirmations. Export your lists to CSV first. Orders stay. The two statuses stay if orders still use them, so finish the review queue before you uninstall.
All settings are in Order Risk > Settings.
| Setting | Default | What happens at or above it |
|---|---|---|
| Require prepayment from | 40 | The restricted methods are hidden |
| Hold for review from | 60 | An order with an offline method waits for you |
| Refuse the checkout from | 0 (off) | The buyer cannot finish the order |
| Medium risk from | 30 | Colour and label only |
| High risk from | 60 | Colour and label only |
A list entry works without a score: "hold for review" lifts the order to your hold threshold, "require prepayment" to the prepayment threshold and "refuse" to 100, so the number always matches what happened.
| Setting | Default | Notes |
|---|---|---|
| Ask the buyer to confirm | From the score below | Or never, or every order with these methods |
| Ask from score | 20 | |
| Methods that need it | Cash on delivery | |
| Hours to confirm | 48 | The order is cancelled after this time |
| SMS gateway URL | empty | Optional, your own provider |
Paste the GET address of your SMS provider with the placeholders {phone} and {text}:
https://sms.example.com/send?key=YOURKEY&to={phone}&msg={text}
The extension calls it once for each code, with an 8-second limit. If the gateway fails, the e-mail still goes out and the order page shows which channels were used. Provider fees, if any, are between you and your provider.
| Signal | Default points |
|---|---|
| Each earlier problem order, at most three | 25 |
| Earlier completed orders and no problem | -20 |
| 3 orders or more in 24 hours from the same e-mail, phone or public IP | 20 |
| Billing and delivery country differ | 10 |
| IP country differs from delivery country | 15 |
| Disposable e-mail address | 25 |
| Order at or above the high value (500 in the store currency) | 10 |
| First order of the customer and a high value | 15 |
0 points switches a signal off. Billing country needs the OpenCart setting that asks for a payment address; stores without it skip this signal.
IP country comes from your CDN or web server (Cloudflare CF-IPCountry, GEOIP_COUNTRY_CODE, X-Country-Code) or from the GeoIP database of Bot & Country Blocker. Without one of these the signal stays off.
Customer IP: behind Cloudflare or a proxy, choose the forwarded address. Otherwise every order shows the proxy's address.
system/storage/kv_order_risk_guard/mail/ and sends nothing. Switch back before you go live.Your privacy notice should mention that orders are checked for fraud. The check stays on your store, but it is still processing of personal data.
Enter the key from your Kavio Labs account in Settings > License. A 14-day trial runs without a key. Without a valid license orders are not scored and nothing changes at checkout; orders flow normally and the admin panel with all your data stays open. Links already sent to buyers keep working.
Order Risk > Overview shows what waits for you and what waits for the buyer, the value on hold, and the last refused checkouts. The menu entry shows the number of held orders.
Each row gives the score, the reasons and the buttons:
Changing the status in the normal OpenCart history form works too: the hold ends by itself.
The Scored orders tab lists every order with a filter for level and state, and a search by e-mail, phone, IP or order number.
A panel above the order shows the score, the reasons with their points, the customer's history in your store, the IP address and the state of the confirmation.
The order list shows the score next to the status.
Block and allow lists has one entry per value.
| Type | Examples | How it matches |
|---|---|---|
[email protected] | Any capitalisation | |
| E-mail domain | @example.com | Subdomains too |
| Phone | +1 555 010 0199 | The last 10 digits, in any format |
| IP or range | 203.0.113.7, 203.0.113.0/24 | IPv4 and IPv6 |
| Address | 1 Main St, 02108, US | Letters and digits of the street, postcode, country |
| Customer ID | 152 | The OpenCart customer |
A match on the allow list skips every check, as does the Safe switch of the customer form.
Export gives both lists. Import takes the columns list, type, value, action, points, note, expires. A plain file with one e-mail, phone or IP per line also works: these go to the block list with "add points". Lines that cannot be read are skipped and their numbers are shown.
| Situation | At checkout | After the order |
|---|---|---|
| Must prepay | Cash on delivery is replaced by a short note | Normal order with another method |
| Refused | A short message and a link to the contact page instead of the payment button | No order |
| Held | Nothing | "We are checking a few details" on the success page |
| Confirmation | Nothing | A note on the success page, then a message with a link and a code |
The texts never mention risk, fraud or a score.
The confirmation page has a confirm button, a code field, a new-code link and "I did not place this order". Opening the link changes nothing, so a mail scanner cannot confirm an order. A code allows five tries; three messages per order can be requested, one minute apart.
No. Scoring uses your own orders and lists. The only outgoing messages are the e-mail to the buyer through your own mail settings, and an SMS if you enter your own gateway.
Not for card fraud networks. A paid service sees data from many shops, including proxies and known devices. This extension knows your store: your refused orders, your lists and the patterns in each order. It is made for fake cash-on-delivery orders, repeat offenders and orders you want a person to look at. It can run next to such a service.
No. An order paid online is only flagged, because the money has already moved. Holding applies to the methods you mark as offline.
No. OpenCart reduces stock when an order reaches a processing or complete status, so that happens when you approve it or the buyer confirms.
The panel shows each reason with its points. Lower the points of that signal in Settings, or add the customer to the allow list.
The first-status hold works with any checkout that uses the OpenCart order model. Hiding payment methods and refusing the checkout were tested on the stock checkout only.
No. They are scored and show the panel, but they are never held or sent to confirmation.
I use multiple stores. Lists and settings are shared by all stores of one installation. Multi-store is not part of our tests.
They stay as they are and you can approve or cancel them. New orders are no longer scored.
The texts are in system/library under kv_order_risk_guard/lang/ (OpenCart 4: extension/kv_order_risk_guard/system/library/lang/). The extension ships in English.
Buy with confidence
This product was tested on these builds. Builds we did not test are not listed.
Updates and support are included in the price. The product keeps working afterwards; renewing is optional.
How licensing worksIf it is not what you expected, tell us within 30 days and we refund the order.
Refund policyCard payments are processed by Stripe. Your card number never reaches our server.
Ask a pre-sales questionSold by Kavio Labs Software Limited, registered in England and Wales No. 17532441. About us
More for OpenCart
Server-side tracking for OpenCart 4.x and 3.0.x: purchases, refunds, add to cart, checkout, product views and leads go from your server to the free official GA4 Measurement Protocol, Meta Conversions API and TikTok Events API, deduplicated with the browser pixels through shared event ids. Consent-aware, SHA-256 hashed customer data, order status mapping, queue with retries, test mode and an event log. No paid relay, events only, no OCMOD.
The department store theme for OpenCart 4.x and 3.0.x: colour-coded departments, a department list beside the hero slider with two side promos, a big search with a department selector, tabbed product blocks, a 2 + 1 + 2 offer grid, deals of the day with real countdowns, a department showcase, a promotions band and a three-column product page with a sticky buy box. Four styles (Meridian, Harbor, Citrus, Night) and your own colours on top. Events only, no core changes.
Stop AI crawlers, scrapers, vulnerability scanners and unwanted countries before OpenCart 4.x or 3.0.x builds a page. Googlebot and Bingbot are verified by DNS and always allowed; 50+ bots get one switch each; country rules use free GeoIP databases and can close only the checkout; IP and network lists, rate limits, honeypots and the cart flood fix; a one-second challenge instead of a captcha; learning mode, dashboard, log, IP tester and Cloudflare export. No core changes, no OCMOD.