> ## Documentation Index
> Fetch the complete documentation index at: https://docs.vortexiq.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Discount as % of Revenue, WooCommerce

> Discount as % of Revenue. Measures the share of gross revenue given away as coupon and cart discounts in the period. How to read it, why it matters, and how to act on it.

**Card class:** [Non-Hero](/nerve-centre/overview#card-classes-explained)  •  **Category:** [Ecommerce Platform](/nerve-centre/connectors#connectors-by-type)

> 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 counts**             | `SUM(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 endpoint**          | `GET /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 fields**            | `discount_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 treatment**        | The 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 filter**              | Both 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.                           |
| **Refunds**                    | The 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-Woo** | Identical 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 window**                | `30D vsP` (default 30D vs the prior 30D)                                                                                                                                                                                                                         |
| **Alert trigger**              | `>15%`, driven by `sentiment_key: wc_discount_total_pct`                                                                                                                                                                                                         |
| **Roles**                      | owner, 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.

| Coupon             | Orders using it | Discount given (`discount_total` contribution) |
| ------------------ | --------------- | ---------------------------------------------- |
| WELCOME10          | 318             | £8,140                                         |
| FREESHIP           | 612             | £3,980                                         |
| SUMMER25           | 141             | £11,260                                        |
| (no coupon)        | 1,420           | £0                                             |
| **Total discount** |                 | **£23,380**                                    |

```text theme={null}
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](/nerve-centre/kpi-cards/woocommerce/top-coupons-by-usage-30d) 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](/nerve-centre/kpi-cards/woocommerce/coupon-stacking-abuse-2-coupons-order): 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](/nerve-centre/kpi-cards/woocommerce/gross-margin) to translate the ratio into profit terms before deciding whether the promotion paid for itself.

## Sibling cards merchants should reference together

| Card                                                                                                                       | Why pair it with Discount as % of Revenue                                                                                  |
| -------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------- |
| [WC Top Coupons by Usage (30d)](/nerve-centre/kpi-cards/woocommerce/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)](/nerve-centre/kpi-cards/woocommerce/coupon-stacking-abuse-2-coupons-order) | One mechanism that pushes this ratio up. Stacked orders carry compounded discounts.                                        |
| [WC Active Coupons](/nerve-centre/kpi-cards/woocommerce/active-coupons)                                                    | The size of the live coupon pool. More aggressive codes live at once means more discount pressure.                         |
| [WC Gross Margin](/nerve-centre/kpi-cards/woocommerce/gross-margin)                                                        | Translates the discount ratio into profit terms. A 15% giveaway can swallow a third of gross profit.                       |
| [WC Average Order Value](/nerve-centre/kpi-cards/woocommerce/average-order-value)                                          | Discounts pull net AOV down. Pair to see whether the giveaway is buying bigger baskets or just shrinking margin.           |
| [BC Discount of Revenue](/nerve-centre/kpi-cards/bigcommerce/discount-of-revenue)                                          | Cross-platform peer for agencies running a multi-platform book.                                                            |
| [Shopify Discount of Revenue](/nerve-centre/kpi-cards/shopify/discount-of-revenue)                                         | SaaS-platform peer with the same ratio definition.                                                                         |

## Reconciling against WooCommerce

**Where to look in WooCommerce Admin:**

[WP Admin > WooCommerce > Reports > Orders > Sales by date](/wp-admin/admin.php?page=wc-reports\&tab=orders\&report=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](/wp-admin/admin.php?page=wc-reports\&tab=orders\&report=coupon_usage) 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:**

| Reason                                                                                                                                                                                                                                        | Direction 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.

***

<details>
  <summary><em>Same-metric documentation cross-reference (for agencies running multiple platforms)</em></summary>

  The same definition of discount-as-share-of-revenue lives on other commerce platforms. This is **not a reconciliation**, your WooCommerce store does not have a parallel store on Shopify or BigCommerce to compare numbers against. These cross-links exist so agencies running multi-platform client books can navigate between identical metrics across the docs.

  * [`shopify.discount_of_revenue`](/nerve-centre/kpi-cards/shopify/discount-of-revenue)
  * [`bigcommerce.discount_of_revenue`](/nerve-centre/kpi-cards/bigcommerce/discount-of-revenue)
</details>

## 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](mailto: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](/nerve-centre/kpi-cards/woocommerce/top-coupons-by-usage-30d): 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](/nerve-centre/kpi-cards/woocommerce/coupon-stacking-abuse-2-coupons-order) 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](https://app.vortexiq.ai/login) or [book a demo](https://www.vortexiq.ai/contact-us) to see this metric running on your own data.
