⚠️   Shopify Scripts will no longer be supported as of June 30, 2026  ⚠️   read the Shopify article 

Shopify Report Orders with Discount or Sale Price

Table of Contents

  1. Introduction
  2. The Technical Distinction: Sale Price vs. Discount Price
  3. Navigating Native Shopify Sales Reports
  4. The Impact of Shopify Functions on Reporting Logic
  5. Advanced Strategies for Reporting on Discounted Orders
  6. Constraints and Platform Limits to Consider
  7. Choosing the Right Tool for Your Reporting Needs
  8. The Nextools Playbook: A Structured Approach to Order Reporting
  9. Dealing with “Sales Reversals” in Reports
  10. How to Handle Italian Compliance and Invoicing
  11. Real-World Scenario: BFCM Tiered Discounts
  12. Troubleshooting Common Reporting Discrepancies
  13. Nextools Shopify App Suite (Quick Links)
  14. Conclusion
  15. FAQ

Introduction

High-volume merchants frequently face a visibility crisis during peak sales periods. When you are managing thousands of transactions across multiple markets, reconciling the difference between a “sale price” (compare-at price) and a “discounted price” (coupon or automatic discount) becomes a technical hurdle that native Shopify reports don’t always solve out of the box. For Shopify Plus merchants and the agencies that support them, the transition from legacy Shopify Scripts to the new Shopify Functions ecosystem adds another layer of complexity to how data is captured and reported at the order level.

At Nextools, we specialize in helping developers and merchants navigate these platform shifts with precision. Our focus on Shopify Functions and Checkout Extensibility allows us to build tools that provide cleaner data structures from the moment a customer hits the cart. This post is designed for Plus merchants, technical leads, and agency developers who need to generate a reliable shopify report orders with discount or sale price to protect their margins and audit their promotional performance.

To master reporting in this environment, we follow the Nextools Playbook: first, clarify your goals and constraints (such as Shopify plan limits and regional tax requirements); next, confirm the platform’s technical capabilities and API limits; choose a durable, Functions-first approach for logic implementation; deploy safely via staging environments; and finally, measure the impact on key metrics like Net Sales and Average Order Value (AOV). You can explore our full range of solutions designed to streamline this workflow at the Nextools Shopify App Suite.

The Technical Distinction: Sale Price vs. Discount Price

Before generating any reports, it is essential to define exactly what data you are trying to extract. In the Shopify ecosystem, there is a significant technical difference between a product being “on sale” and a product being “discounted.”

Understanding Compare-at Prices (Sale Prices)

A “sale price” is typically defined by the compare_at_price field on the product variant. When a merchant sets a lower price in the “Price” field and a higher price in the “Compare-at price” field, Shopify displays this as a sale on the storefront.

Crucially, this is not treated as a “discount” in Shopify’s financial reporting database. From an API and reporting perspective, the order simply reflects the lower price as the gross sale amount. If you need to report on how much revenue was “lost” due to compare-at pricing, standard sales reports often fail because they don’t natively track the delta between the original price and the sale price once the order is finalized.

Understanding Discount Applications

A “discount price” occurs when a price reduction is applied via a discount code, an automatic discount, or a Shopify Function. These are tracked in the discount_applications object within the Shopify API. Unlike compare-at prices, these discounts are explicitly line-itemed in sales reports.

If your store uses Multiscount to manage tiered or stackable discounts, these reductions are passed through the Shopify Functions API. This ensures that the discount logic is robust and properly attributed in your Nextools Shopify App Suite ecosystem, but it also means your reporting strategy must account for how these discounts are distributed across line items.

Navigating Native Shopify Sales Reports

Shopify provides several built-in reports that serve as the starting point for most merchants. However, understanding the terminology is the first step toward accurate data.

Sales by Discount Code Report

This is the most common report used to track promotional performance. It provides a breakdown of:

  • Discount Code: The specific string used at checkout.
  • Order Count: Total number of transactions using that code.
  • Gross Sales: Total value before discounts and returns.
  • Discounts: The total dollar value of the reduction.
  • Net Sales: Gross sales minus discounts and reversals.

The primary limitation here is that “Automatic Discounts” and “Script-based/Function-based discounts” may not always appear with a specific “code” unless the logic is specifically configured to include a discount title.

Sales by Product and Variant

If you are heavily reliant on “Sale Prices” (compare-at prices), the “Sales by Product” report is where you will find your data. However, as noted, this report will show the price the item was sold at, not the discount amount. To see the effectiveness of a compare-at price campaign, you often have to compare these reports against historical periods or use custom metafields to track the “original” price at the time of sale.

The Impact of Shopify Functions on Reporting Logic

With the deprecation of Shopify Scripts, the platform has moved toward Shopify Functions. This is a critical shift for reporting because Functions offer a more structured way to apply logic to the checkout.

When you use a tool like SupaEasy, you are creating discount or payment logic that runs directly on Shopify’s infrastructure. For a developer or a Plus merchant, this means the discount attribution is more reliable. Legacy scripts often had “race conditions” or rounding errors that could make reporting a nightmare. Functions provide a consistent JSON output that maps directly to the discount_applications field in your order reports.

Script-to-Functions Migration and Data Integrity

If you are currently migrating from Scripts to Functions, your reporting may show a temporary “split” in how data is categorized. Scripts often applied discounts as “Script Discount” in the report, whereas Functions (like those generated by SupaEasy) allow for custom titles that can be used to segment reports by campaign type, customer segment, or region.

Advanced Strategies for Reporting on Discounted Orders

For high-volume stores, basic reports are rarely enough. Here is how advanced teams handle their data.

1. Using Shopify Flow for Custom Attribution

Shopify Flow is an underrated tool for reporting. By using an app like Hook2Flow, you can send webhooks to Flow whenever an order is created. You can then check if the order contains specific discount titles or if the price of any line item is below a certain threshold.

Once the condition is met, Flow can:

  • Add a specific tag to the order (e.g., “BFCM_2024_Sale”).
  • Update a Google Sheet or an external database with the original vs. discounted price.
  • Send an alert if a discount exceeds a specific percentage (useful for fraud prevention).

2. Leveraging Cart Attributes for Deep Analysis

Sometimes the “why” behind a discount is more important than the “how much.” By using AttributePro, merchants can attach hidden attributes to the cart that track the source of a discount (e.g., an influencer ID or a specific A/B test variant).

When you pull your shopify report orders with discount or sale price, these attributes can be exported alongside the order data. This allows you to see not just that a $10 discount was applied, but that it was applied because of a specific customer behavior or marketing channel.

Constraints and Platform Limits to Consider

When building a reporting workflow, you must stay within the boundaries of the Shopify platform.

Shopify Plan Requirements

Most advanced sales reports and the ability to filter by discount code are available on the “Shopify” plan or higher. However, Shopify Plus is required for full access to Checkout Extensibility and the most advanced Function capabilities. If you are on a Basic plan, your reporting will be significantly more limited, often requiring manual CSV exports and VLOOKUPs in Excel to match orders with discount codes.

API Rate Limits

If you are building a custom reporting app or using a middleware to pull data, remember that the GraphQL Admin API has rate limits. For Plus merchants, these limits are higher, but complex queries that pull “all orders with line-item discount details” can still be “expensive” in terms of API cost. It is often better to use a “push” model (webhooks) rather than a “pull” model (polling the API) for real-time reporting.

Data Latency

Shopify reports are generally up-to-date within a few minutes, but during high-traffic events like Black Friday, there can be a slight delay in data propagation. When measuring the impact of a live sale, always account for this window before making drastic strategy changes.

Choosing the Right Tool for Your Reporting Needs

Not every merchant needs a custom-coded solution. Depending on your specific goal, different apps in the Nextools Shopify App Suite can help clean up the data before it even reaches your reports.

  • Goal: Prevent Discount Abuse. Use Cart Block to validate orders at checkout. If a customer tries to stack codes that shouldn’t be stacked, Cart Block stops the order before it happens, keeping your reports clean of “invalid” discounted orders.
  • Goal: Report on Free Gifts. If you offer “Buy One Get One” or “Gift with Purchase,” use AutoCart. It ensures the gift items are added with the correct $0.00 value and a specific discount title, making them easy to track in a Sales by Product report.
  • Goal: Regional Pricing Reports. For merchants using Shopify Markets, CartLingo ensures the checkout experience is localized. Accurate reporting in these cases requires looking at the currency and total_discounts_set fields to see how currency conversion affects your net margins.

The Nextools Playbook: A Structured Approach to Order Reporting

At Nextools, we believe in a disciplined, engineering-minded approach to Shopify management. When a client asks how to better report on discounted orders, we follow these five steps.

Step 1: Clarify the Goal and Constraints

Are you looking for a high-level financial audit, or are you trying to measure the ROI of a specific influencer campaign? What is your current Shopify plan? Do you have existing apps that might be injecting discounts in a non-standard way? Identifying these constraints early prevents technical debt later.

Step 2: Confirm Platform Capabilities

Check if the data you need exists in the native Sales by Discount Code report. If not, can it be retrieved via the GraphQL API? If you are a Plus merchant, can we use Checkout UI extensions to capture more data?

Step 3: Choose the Simplest Durable Approach

Avoid “brittle” theme hacks. If you need a custom discount, use a Shopify Function via SupaEasy. If you need to categorize orders, use Shopify Flow. The goal is to build a system that won’t break when Shopify updates its core architecture.

Step 4: Implement Safely

Never roll out a new discount logic or reporting webhook directly to a live store. Use a development or staging store to ensure that the data is appearing in the reports exactly as expected. Test edge cases: What happens if an order is partially refunded? Does the discount report adjust correctly?

Step 5: Measure and Iterate

Once the system is live, monitor the reports daily. Look for discrepancies between “Gross Sales” and “Total Sales.” If your “Sales Reversals” are higher than normal, it may indicate that a specific discount is attracting “low-quality” traffic that results in frequent returns.

Dealing with “Sales Reversals” in Reports

A common point of confusion when looking at a shopify report orders with discount or sale price is the “Sales Reversal” category.

Shopify recently updated its terminology to distinguish between physical returns and financial adjustments. A “Sales Reversal” includes:

  • Full and partial refunds.
  • Canceled orders.
  • Order edits (removing an item).
  • Goodwill refunds (e.g., refunding shipping costs).

When reporting on discounts, it is vital to look at Net Sales rather than Gross Sales. A deep discount might drive a high volume of gross sales, but if those customers are returning items at a rate of 30%, your net revenue might be lower than if you had offered no discount at all.

How to Handle Italian Compliance and Invoicing

For merchants operating in the Italian market, reporting isn’t just about marketing—it’s about legal compliance. When an order has a discount or a sale price, the invoice must accurately reflect the taxable base.

Fatturify is designed to handle this complexity by syncing Shopify order data directly with “Fatture in Cloud.” It ensures that discounts are proportionally distributed across line items so that the VAT (IVA) calculation is correct. This is a perfect example of why “clean data” at the order level is so important; if your discount reporting is messy, your tax compliance will be too.

Real-World Scenario: BFCM Tiered Discounts

Imagine a store running a “Spend $100, Save $10; Spend $200, Save $30” promotion.

Using Multiscount, the merchant sets up these tiers. During the sale, the merchant notices that the “Sales by Discount Code” report isn’t showing a single code, but rather a “Title” associated with the automatic discount.

To analyze this, the merchant uses a custom CSV export and filters by the “Discount Title” column. They discover that while the $30 tier has a higher AOV, the $10 tier actually has a higher conversion rate among new customers. By using this data, they can pivot their marketing spend mid-campaign toward the $10 tier to maximize new customer acquisition.

Troubleshooting Common Reporting Discrepancies

If your numbers don’t add up, check for these three common issues:

  1. Test Orders: Shopify excludes test orders from sales reports. If you’ve been testing your discounts and don’t see them in the report, this is likely why.
  2. Deleted Orders: If an order is deleted (not just canceled), its data is purged from the sales reports.
  3. Compare-at Price Confusion: Again, remember that reductions in “Compare-at price” do not show up in the “Discounts” column of your reports. They are simply baked into the “Gross Sales” figure.

Nextools Shopify App Suite (Quick Links)

To implement the strategies discussed in this article, explore the following tools designed for the Shopify platform:

  • SupaEasy — Create custom payment, delivery, and discount logic via Shopify Functions.
  • SupaElements — Customize your Checkout, Thank You, and Order Status pages.
  • HidePay — Hide, sort, or rename payment methods based on conditions.
  • HideShip — Conditional shipping rates and method management.
  • Multiscount — Advanced stackable and tiered discount logic.
  • Cart Block — Checkout validation and fraud prevention.
  • AutoCart — Automatic gift-with-purchase and companion product logic.
  • ShipKit — Dynamic, rule-based shipping rates.
  • Hook2Flow — Connect Shopify webhooks to Shopify Flow for automation.
  • AttributePro — Manage cart attributes and line-item properties.
  • Formify — Custom drag-and-drop checkout forms for Shopify Plus.
  • CartLingo — AI-powered checkout translation.
  • NoWaste — Discount and promote expiring or refurbished inventory.
  • Hurry Cart — Urgency timers to drive checkout completion.
  • Fatturify — Sync invoices with Fatture in Cloud (Italy).
  • PosteTrack — Tracking for Poste Italiane shipments.

Conclusion

Accurately generating a shopify report orders with discount or sale price is the foundation of a profitable scaling strategy. By distinguishing between compare-at prices and discount applications, and by moving toward a Functions-first architecture, merchants can ensure their data is both reliable and actionable.

Implementation Checklist:

  • Verify whether your promotions use Compare-at prices or Discount Codes.
  • Use the “Sales by Discount Code” report for coupon-based tracking.
  • Use custom Cart Attributes via AttributePro to track discount sources.
  • Set up Shopify Flow with Hook2Flow to tag orders with specific sale identifiers.
  • Audit your “Net Sales” vs. “Gross Sales” to identify high-return discount tiers.
  • Ensure Italian tax compliance using Fatturify if applicable.

The Nextools Playbook ensures that your technical infrastructure supports your business goals. By clarifying constraints and choosing durable solutions, you can spend less time fighting with data and more time growing your brand. Explore the Nextools Shopify App Suite today to start building a more robust Shopify store.

FAQ

Does Shopify report compare-at price “savings” in the Discounts column?

No. Shopify’s native sales reports treat compare-at price reductions as a change in the product’s base price. The “Discounts” column only reflects reductions applied via discount codes, automatic discounts, or Shopify Functions. To track “savings” from sale prices, you must compare the sold price against the variant’s compare-at price metafield in a custom report.

Can I track which specific Shopify Function applied a discount in my reports?

Yes, provided the Function is configured to return a clear “Title” for the discount application. When using tools like SupaEasy, you can define the name that appears in the order summary and the “Sales by Discount Code” report, allowing for precise attribution of custom logic.

Why don’t my discount reports match my actual revenue?

The most common reason is the distinction between “Gross Sales” and “Net Sales.” Your discount report shows the total value of the discounts given, but it doesn’t always account for “Sales Reversals” (refunds and cancellations) in the same view. Always use the “Total Sales” metric to see the final financial impact after discounts, shipping, taxes, and refunds.

Is Shopify Plus required for advanced discount reporting?

While basic discount reports are available on most plans, Shopify Plus is required to use Checkout Extensibility and advanced Shopify Functions that provide the cleanest data for custom reporting. Plus also allows for higher API rate limits, which are necessary if you are using third-party business intelligence (BI) tools to sync large volumes of order data.

SupaEasy is a product built & designed by Nextools

Company

© [2024] website by Nextools. All Rights Reserved. PIVA: 16711981007