Skip to main content
Metrics type: Supporting MetricsCategory: Ecommerce Platform
The percentage of orders in a Cancelled status over the window, a direct read on how often confirmed orders fall through before fulfilment.

At a glance

Cancellation Rate is the share of orders that ended up in a Cancelled status during the window, expressed as a percentage of all orders in that window. It is a health gauge for the gap between “order placed” and “order fulfilled”. A creeping cancellation rate usually points at a specific, fixable cause: stock that was oversold, a payment method that authorises but fails to capture, a fraud-screening rule that is too aggressive, or customers changing their minds because delivery promises slipped.

Calculation

Worked example

A Malaysian electronics store on OpenCart 4.x. The 30-day window covers 14 Mar 26 to 12 Apr 26. The store maps “Cancelled” as its own status, separate from “Refunded” and “Failed”. What’s interesting here:
  1. The rate doubled and tripped the alert. At 3.6% the window is over the 3% trigger and up from 1.8% prior. Something changed inside the window, and the breakdown points straight at it.
  2. Oversold stock is the dominant cause. 71 of the 117 cancellations were staff-cancelled because the item was not actually in the warehouse when the order arrived. That is a stock-accuracy problem, and it links directly to a Stock-Out Burst that fired earlier in the window when a feed wrote bad quantities.
  3. Cancelled is not the same as Refunded. None of these 117 are in the refund numbers, because this store maps the two statuses separately. A merchant who lumped them together would double-count the financial impact.
  4. The fix is upstream of the order. Tightening stock accuracy (better feed validation, a buffer on fast-movers) cuts the 71 oversold cancellations directly. The 28 changed-mind cancellations are largely irreducible; the 18 fraud cancellations are arguably a good outcome, not a problem.

Sibling cards merchants should reference together

Reconciling against OpenCart

Where to look in the OpenCart admin: Sales → Orders, filtered to your Cancelled status for the date range, gives the numerator; the same view with no status filter gives the denominator. Reports → Sales → Orders breaks down totals by status, which is the quickest way to see the cancelled count alongside the total. OpenCart admin views that look like the same number but aren’t:
  • Sales → Orders filtered to Cancelled is a count, not a rate. You must divide by total orders yourself.
  • Reports → Sales → Orders by status can blend Cancelled, Refunded, and Failed if those statuses are similarly named; check the exact status IDs.
  • The Dashboard shows no cancellation figure at all.
Why our number may legitimately differ from the OpenCart admin: Cross-connector note: if you run a payment connector, a payment-side void or chargeback may register there but appear in OpenCart only when staff manually move the order to Cancelled. A gap between processor voids and OpenCart cancellations usually means the manual status update is lagging.

Known limitations / merchant FAQs

Is a cancellation the same as a refund? Not in OpenCart, unless you have mapped them to the same status. A cancellation typically happens before fulfilment and money is voided rather than returned; a refund happens after payment was captured. This gauge counts only your Cancelled status. Refunds are on Refund Rate. Why is 3% the alert line? For most stores a steady-state cancellation rate sits comfortably below 3%; crossing it usually signals a specific cause (oversold stock, a payment-capture fault, an over-tight fraud rule) rather than random variation. High-consideration or made-to-order stores may sit higher naturally and should tune the threshold up. My rate looks high but I think the denominator is wrong. That is common. OpenCart can create order skeletons for abandoned or failed checkouts, and whether those land in the denominator changes the rate a lot. Check which statuses are included in the total, the most frequent cause of a “too high” reading is a denominator that excludes incomplete orders. Staff cancel a lot of suspected-fraud orders, does that hurt my number? It raises the rate, but it is often a healthy signal, you caught fraud before shipping. Read the cancellation rate alongside why orders cancelled. A high rate driven by fraud prevention is very different from one driven by oversold stock. Does it count Failed (never paid) orders? Only if you mapped Failed into the Cancelled set. By default Failed is a separate status tracked by Failed Orders (24h). Keep them separate so you can tell payment failures from genuine cancellations. My status is called “Voided”, not “Cancelled”, does the gauge work? Yes, as long as you map “Voided” into the cancelled-status set. OpenCart status names are fully configurable in oc_order_status; the gauge keys on the mapping, not the label. Why use 30 days vs prior rather than a live count? Cancellations are lumpy, one bad stock feed can cluster them. The 30-day-vs-prior comparison shows whether the rate is genuinely trending or just had a noisy week, which is why the alert is evaluated on the rolling window.

Tracked live in Vortex IQ Nerve Centre

Cancellation Rate is one of hundreds of KPI pulses Vortex IQ tracks across OpenCart and 70+ other ecommerce connectors. Nerve Centre runs the detection layer; Vortex Mind investigates the cause when something moves; Ask Viq lets you interrogate any number in plain English. Start for free or book a demo to see this metric running on your own data.