Skip to main content
Card class: Non-HeroCategory: Ecommerce Platform
Discount as % of Revenue for the selected period.

At a glance

The proportion of gross revenue handed back to customers as discounts over the period, shown as a gauge. It is total discount value divided by total order value. A creeping ratio is the quiet way coupons erode margin, this is the card that makes the giveaway visible before it shows up as a margin problem.
What it countsSUM(order.discount_total) / SUM(order.total) x 100 over the period. The numerator is every coupon and cart discount applied; the denominator is gross customer-billed revenue.
REST API endpointGET /wp-json/wc/v3/orders. Fields used: discount_total (per-order discount, string-typed decimal) for the numerator and total for the denominator. Coupon definitions come from GET /wp-json/wc/v3/coupons for attribution.
Discount fieldsdiscount_total is the order-level sum of all coupon discounts; discount_tax is stored separately and is not added here. Each individual coupon’s contribution sits in that order’s coupon_lines[]. The card sums discount_total across orders.
VAT / tax treatmentThe denominator (total) is tax-inclusive, the WC standard. The numerator (discount_total) is the pre-tax discount value. For a directional ratio this is the conventional Woo reading; treat the gauge as an indicator, not a penny-exact accounting figure.
Status filterBoth numerator and denominator are summed over real revenue statuses (completed, processing); pending, failed, cancelled, and refunded are excluded so the ratio reflects discounts on revenue that was actually realised.
RefundsThe denominator is gross of refunds (WC stores refunds as separate objects and does not reduce order.total). A heavily refunded period can therefore understate the true discount burden slightly.
Self-hosted vs managed-WooIdentical on self-hosted LAMP, WordPress.com, and managed-Woo (Woo.com Cloud, WP Engine, Pressable, Kinsta). Discount-extension plugins can store discounts outside discount_total, see FAQs.
Time window30D vsP (default 30D vs the prior 30D)
Alert trigger>15%, driven by sentiment_key: wc_discount_total_pct
Rolesowner, finance

Calculation

Calculated automatically from your WooCommerce data. See the At a glance summary above for what the metric tracks and the worked example below for a typical reading.

Worked example

A UK homeware brand on self-hosted WooCommerce 8.7 with the Stripe Gateway plugin. Three coupons ran in the window: WELCOME10 (10% off), FREESHIP (free shipping), and a flash SUMMER25 (25% off). The 30-day window covers 22 May 26 to 20 Jun 26.
CouponOrders using itDiscount given (discount_total contribution)
WELCOME10318£8,140
FREESHIP612£3,980
SUMMER25141£11,260
(no coupon)1,420£0
Total discount£23,380
Gross revenue (sum of order.total, completed + processing)  =  £142,600
Discount as % of Revenue  =  23,380 / 142,600 x 100  =  16.40%
The gauge reads 16.40%, above the >15% threshold, so Vortex IQ Nerve Centre raises an alert. Four things to notice:
  1. One flash code did most of the damage. SUMMER25 was used on only 141 orders but contributed nearly half the discount value because it is a steep percentage off. A single aggressive code can push the whole ratio over threshold. Cross-check Top Coupons by Usage to confirm which code is driving the spike, usage rank alone would not have flagged SUMMER25 (it ranks third by count).
  2. The prior 30D was 11.2%. The ratio jumped from 11.2% to 16.4% vsP, tracking the SUMMER25 launch on 30 May 26. The vsP comparison is what turns a single high number into a trend the merchant can act on.
  3. Stacking inflates it further. If customers combined SUMMER25 with FREESHIP (no “Individual use only” flag), some orders carried both discounts. That is the link to Coupon Stacking Abuse: stacking is one of the mechanisms that pushes this ratio up.
  4. The margin impact is larger than the ratio looks. A 16.4% revenue giveaway on a brand with a 45% gross margin means roughly a third of the period’s gross profit went to discounts. Pair with Gross Margin to translate the ratio into profit terms before deciding whether the promotion paid for itself.

Sibling cards merchants should reference together

CardWhy pair it with Discount as % of Revenue
WC Top Coupons by Usage (30d)Tells you which codes are driving the ratio. A steep percentage code can dominate the discount value despite modest usage.
WC Coupon Stacking Abuse (>2 coupons / order)One mechanism that pushes this ratio up. Stacked orders carry compounded discounts.
WC Active CouponsThe size of the live coupon pool. More aggressive codes live at once means more discount pressure.
WC Gross MarginTranslates the discount ratio into profit terms. A 15% giveaway can swallow a third of gross profit.
WC Average Order ValueDiscounts pull net AOV down. Pair to see whether the giveaway is buying bigger baskets or just shrinking margin.
BC Discount of RevenueCross-platform peer for agencies running a multi-platform book.
Shopify Discount of RevenueSaaS-platform peer with the same ratio definition.

Reconciling against WooCommerce

Where to look in WooCommerce Admin: WP Admin > WooCommerce > Reports > Orders > Sales by date shows Coupons / Discounts as a line alongside Gross sales. Divide one by the other for the closest match to this gauge. The Coupons by date report breaks the discount total down per code so you can see which one is driving the ratio. Other WP Admin views that look related but are not:
  • WooCommerce Analytics > Coupons (WC 4.0+): uses the separate Analytics engine with its own status filtering and refund handling; it can read lower because it nets refunds differently.
  • Home > Stats overview widget: shows revenue only, no discount ratio.
Why our number may legitimately differ from WP Admin:
ReasonDirection of divergence
Refund treatment. This card’s denominator is gross of refunds; WC Analytics nets refunds out, which changes the ratio.Ours and WC Analytics differ; legacy Sales report is closer
Tax treatment of the numerator. discount_total is pre-tax while total is tax-inclusive. A report that puts both on the same tax basis reads slightly differently.Marginal; directionally identical
Time-zone. WC reports run on WP-site timezone (Settings > General > Timezone); Vortex IQ runs on UTC. Boundary-day orders fall on different sides.+/- a day’s discounts at the boundary
Status filter. This card sums completed + processing; a report including on-hold or pending shifts both numerator and denominator.Variable; match the filter
Plugin-stored discounts. Some discount plugins write their reduction outside discount_total (for example as a negative fee line). The Vortex IQ engine reads discount_total, so a plugin that bypasses it will be under-counted here.Ours lower than the merchant expects
Self-hosted server uptime. An outage during the indexer poll delays recent orders by up to 24 hours. Managed hosts are steadier.Ours temporarily lower; self-resolves at next sync
The legacy Sales-by-date report (Coupons / Discounts divided by Gross sales) is the cleanest apples-to-apples comparison, since it shares this card’s gross-of-refunds basis.

Known limitations / merchant FAQs

Does this include tax in the discount figure? No. The numerator uses discount_total, which is the pre-tax discount value; discount_tax is stored separately and is not added. The denominator (total) is tax-inclusive, the WC standard. Treat the gauge as a directional indicator of giveaway pressure rather than a penny-exact accounting ratio. For exact accounting, use WC Analytics with a consistent tax basis. Is the denominator net or gross of refunds? Gross. WooCommerce stores refunds as separate objects and does not reduce order.total, so this card’s denominator is gross revenue. A heavily refunded period can therefore slightly understate the true discount burden. WC Analytics nets refunds out, which is why the two engines can disagree. A discount plugin is not showing up in the ratio, why? Some plugins apply their reduction outside the standard discount_total field, for example as a negative fee line or a price override. The Vortex IQ engine reads discount_total, so a plugin that bypasses it will be under-counted. If your real giveaway looks higher than this gauge, check how your discount plugin records its reduction and contact support@vortexiq.ai so the engine can be extended for your shape. Why did the ratio jump when usage did not? Because this card weights by value, not count. A steep percentage code used on a handful of orders can move the ratio far more than a small free-shipping code used on hundreds. Read it alongside Top Coupons by Usage: high value plus low count is the signature of an aggressive promotion. What is a healthy discount ratio? It is category-dependent. Fashion and homeware often run 10 to 20% in promotional months; commodity goods run lower. The >15% alert is a generic baseline. Set your own threshold in the Sensitivity tab to match your margin structure rather than relying on the default. How does stacking affect this card? Stacking compounds discounts on individual orders, which raises discount_total per order and pushes the ratio up. If this gauge is rising, check Coupon Stacking Abuse to see whether unrestricted coupon combinations are part of the cause.

Tracked live in Vortex IQ Nerve Centre

Discount as % of Revenue is one of hundreds of KPI pulses Vortex IQ tracks across WooCommerce 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.