> ## 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 % of Revenue, Adobe Commerce

> Discount % of Revenue for Adobe Commerce stores. Tracked live in Vortex IQ Nerve Centre. How to read it, why it matters, and how to act on it.

**Metrics type:** [Supporting Metrics](/nerve-centre/overview#metrics-types-explained)  •  **Category:** [Ecommerce Platform](/nerve-centre/connectors#connectors-by-type)

## At a glance

> Total discount value as a percentage of revenue, over the trailing 30 days. Margin-compression detector. Adobe Commerce stores often have higher discount-of-revenue % than Shopify equivalents because B2B tier pricing (`customer_group_price`) is structurally always-on. Healthy DTC ranges 3 to 8%; B2B-mixed stores 6 to 15%. Above 15% triggers margin scrutiny.

|                                                        |                                                                                                                                                                                                                                                                         |
| ------------------------------------------------------ | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **What it counts**                                     | `SUM(discount_amount) / SUM(grand_total)`. The numerator includes cart-rule discounts (BOGO, percent-off codes), customer-group price discounts (B2B tier pricing), and applied catalog price rules. Excludes shipping discounts (separate field).                      |
| **API field**                                          | `discount_amount`, `grand_total` from `GET /rest/V1/orders`.                                                                                                                                                                                                            |
| **VAT / tax treatment**                                | The ratio is a percentage so tax-bias washes out only if both numerator and denominator are tax-treated identically. Adobe stores discount typically pre-tax; `grand_total` is post-tax. This means discount % is slightly understated relative to a pure pre-tax view. |
| **Shipping inclusion**                                 | `discount_amount` excludes shipping discount; `grand_total` includes shipping. Mild understatement of discount % because the denominator is "fatter" than the numerator.                                                                                                |
| **Discounts**                                          | This card IS discount measurement.                                                                                                                                                                                                                                      |
| **Credit Memo refund treatment**                       | NOT subtracted. A discount given on an order later refunded still counts as discount spent.                                                                                                                                                                             |
| **`state` machine inclusion**                          | All states except `canceled`.                                                                                                                                                                                                                                           |
| **`pending_payment` quirk**                            | Included; B2B net-30 orders with tier discounts are pipeline.                                                                                                                                                                                                           |
| **Multi-currency `grand_total` vs `base_grand_total`** | Uses `base_discount_amount / base_grand_total` for cross-currency rollup.                                                                                                                                                                                               |
| **Store View scope (`store_id`)**                      | All Store Views; per-Store-View variants useful (B2B portal will show much higher discount %).                                                                                                                                                                          |
| **Time window**                                        | `30D vsP`                                                                                                                                                                                                                                                               |
| **Alert trigger**                                      | `>15% (margin compression)`                                                                                                                                                                                                                                             |
| **Sentiment key**                                      | `discount_dependency`                                                                                                                                                                                                                                                   |
| **Roles**                                              | owner, marketing                                                                                                                                                                                                                                                        |

## Calculation

```
SUM(discount_amount) / SUM(grand_total)
  WHERE date BETWEEN [period_start, period_end]
```

## Worked example

A homewares brand on Adobe Commerce 2.4.6 with US/UK/B2B Store Views. 30-day window ending Monday 4 May 26.

**Discount % by Store View:**

| Stream      | 30D revenue     | 30D discount | Discount % |
| ----------- | --------------- | ------------ | ---------- |
| US consumer | \$312,800       | \$14,800     | 4.7%       |
| UK consumer | \$246,000       | \$12,400     | 5.0%       |
| B2B portal  | \$462,000       | \$42,600     | 9.2%       |
| **Blended** | **\$1,020,800** | **\$69,800** | **6.8%**   |

**Vs prior 30D (blended):** 5.4% prior vs 6.8% current = +1.4 pts.

What this is telling leadership:

1. **B2B at 9.2% reflects tier pricing** (always-on `customer_group_price` discounts). Material but expected; B2B unit margins absorb this in negotiated contracts.
2. **Consumer (US 4.7%, UK 5.0%) is in the healthy DTC range.** A campaign month would push these to 8-10%; current levels suggest light campaign activity.
3. **Blended +1.4 pt rise vs prior** is driven by the B2B share growing (more B2B mix = higher blended discount %) plus a small consumer uptick (Mother's Day campaign extension).
4. **Cross-checking [B2B Revenue Share](/nerve-centre/kpi-cards/adobe-commerce/b2b-revenue-share)**: B2B share rose 5.6 pts in the period. The discount % rise is consistent with the B2B mix shift; not an underlying margin compression issue.
5. **Cross-checking [Discount Over Time](/nerve-centre/kpi-cards/adobe-commerce/discounts-given-over-time)**: the daily chart confirms B2B baseline-discount drove the rise; consumer campaign discount was steady.
6. **Action**: no immediate margin concern, but worth setting up a per-Store-View alert at 12% (consumer Store Views) to catch a future campaign creep without dragging on the B2B alert. The current 15% blended trigger is appropriate for the current B2B-mix shape but would not catch a consumer-side issue.

The point: discount % on Adobe Commerce needs segmentation. The blended view obscures B2B tier pricing dragging the average up; per-Store-View clarity reveals whether margin compression is consumer-side (campaign) or structural (B2B mix).

## Sibling cards merchants should reference together

| Card                                                                                   | Why pair it with Discount %                                            |
| -------------------------------------------------------------------------------------- | ---------------------------------------------------------------------- |
| [Discount Over Time](/nerve-centre/kpi-cards/adobe-commerce/discounts-given-over-time) | Daily trend chart of the absolute value.                               |
| [Total Discount](/nerve-centre/kpi-cards/adobe-commerce/total-discount-used)           | Single-period absolute value.                                          |
| [Total Revenue](/nerve-centre/kpi-cards/adobe-commerce/total-revenue)                  | The denominator.                                                       |
| [AOV](/nerve-centre/kpi-cards/adobe-commerce/average-order-value)                      | Discount campaigns drag AOV.                                           |
| [B2B Revenue Share](/nerve-centre/kpi-cards/adobe-commerce/b2b-revenue-share)          | B2B mix changes blended discount % independently of campaign activity. |
| [B2B AOV vs B2C AOV](/nerve-centre/kpi-cards/adobe-commerce/b2b-aov-vs-b2c-aov)        | B2B tier-pricing impact on per-segment AOV.                            |
| [Refund Rate](/nerve-centre/kpi-cards/adobe-commerce/refund-rate)                      | Discount-driven impulse buys can have higher refund rates.             |
| [`shopify.discount_pct`](/nerve-centre/kpi-cards/shopify/discount-of-revenue)          | Cross-platform peer.                                                   |

## Reconciling against the vendor's own dashboard

**Where to look in Adobe Commerce Admin:**

> **Reports > Sales > Coupons** lists per-rule usage; manual computation needed for the % vs revenue.

> **Reports > Sales > Orders** with date filter has a per-period discount column; the report total includes all discount types.

> **Marketing > Cart Price Rules** for the rule list and per-rule discount totals.

**Why our number may legitimately differ from Admin:**

| Reason                                                                                                                  | Direction of divergence              |
| ----------------------------------------------------------------------------------------------------------------------- | ------------------------------------ |
| **Coupon vs cart-rule scope**. Admin Coupons report shows code-only rules; this card includes all discount types.       | Card higher than coupons-report-only |
| **Customer-group price**. Often invisible in Admin reports as "discounts"; the card includes them in `discount_amount`. | Card higher than admin perception    |
| **Time-zone**. Admin in Store View timezone; card UTC.                                                                  | Boundary effects                     |
| **Currency**. Card uses `base_*` fields. Admin uses Store View base.                                                    | Material on multi-currency           |
| **`canceled` exclusion**. Card excludes; Admin includes unless filtered.                                                | Marginal                             |

**Cross-connector reconciliation (when these connectors are connected for this merchant):**

| Pair                                                                       | Expected relationship                            | What divergence tells you                                                         |
| -------------------------------------------------------------------------- | ------------------------------------------------ | --------------------------------------------------------------------------------- |
| ESP campaign attribution                                                   | ESP-attributed discount ≤ card total             | If ESP shows higher attributed discount than card has spent, attribution overlap. |
| [`google_ads.google_ads_promo`](/nerve-centre/google_ads/google_ads_promo) | Google Ads-attributed promotional revenue ≤ card | Material divergence indicates attribution drift.                                  |

***

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

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

## Known limitations / merchant FAQs

**Why is my Adobe Commerce discount % higher than industry benchmarks for ecommerce?**
Industry benchmarks are dominated by pure-DTC stores. Adobe Commerce skews B2B-mixed; B2B tier pricing structurally drives discount % higher. Use Adobe-Commerce-matched peer benchmarks: pure-DTC 3-6%, B2B-mixed 6-12%, B2B-heavy 10-20%.

**Adobe Commerce vs Magento Open Source: difference?**
None at the calculation. Both editions handle discount machinery identically.

**My multi-store, can I see per-Store-View discount %?**
Yes, configure per-Store-View variants. Strongly recommended because B2B-tier-pricing-driven discount % can mask consumer-side campaign creep.

**Why exclude shipping discounts from the numerator?**
Shipping discounts (`shipping_discount_amount`) are a separately-managed promotional surface (free shipping over £X is a marketing decision distinct from item-discount campaigns). The card defaults to product-discount-only; configure to include shipping if you want a unified view.

**Customer-group price counts as a discount, why?**
Adobe Commerce's data model: every customer-group-price-applied-vs-base-price difference flows into `discount_amount` as a per-line-item discount. From an accounting perspective this is correct (the difference is revenue forgone). From a campaign perspective, it's not a "campaign discount". The card surfaces the total; rule-name decomposition (in [Discount Over Time](/nerve-centre/kpi-cards/adobe-commerce/discounts-given-over-time)) lets you separate.

**My discount % spiked but I didn't run a campaign, why?**
Likely B2B mix shift. If B2B share rose, blended discount % rises mechanically because B2B has higher structural discount. Cross-check [B2B Revenue Share](/nerve-centre/kpi-cards/adobe-commerce/b2b-revenue-share).

**Why does the alert at 15% feel too lenient for my consumer-only Store View?**
The 15% default is for blended (B2B + consumer). Configure per-Store-View thresholds: 8-10% for consumer Store Views, 15-20% for B2B portal Store Views.

**My multi-currency Adobe Commerce, is the % comparable across currencies?**
Yes; the card uses `base_*` for both numerator and denominator so FX-conversion-related artefacts cancel out.

**Why isn't the % subtracting for refunded orders?**
Discount given on a refunded order is still a discount the merchant chose to extend. The customer received the discounted price; the refund returned the post-discount cash. The discount cost was incurred. For pure-net-margin analysis you'd subtract; for marketing-cost analysis the gross figure is right.

***

### Tracked live in Vortex IQ Nerve Centre

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