Reports let you explore, filter, and export your order and transaction data directly from the Zest dashboard. Build custom views by choosing which columns to display, apply filters to narrow results, sort by any column, and export to CSV — all without needing to contact Zest support.
This guide walks you through creating reports, understanding the available data, and common use cases for reconciliation and analysis.
How Do Reports Work?
Two core report types: Child Orders and Transactions. Each report type starts from a different data source and surfaces different columns.
In-app preview: The first 1,000 rows are displayed in the app. The full dataset is available via CSV export.
Configurable views: Filters, columns, and sorting can be configured and saved as a named report for easy viewing at any time.
Relative date filters: Saved reports preserve relative date filters (e.g., "last 30 days" stays current each time you open the report).
Exports: Exports run in the background and you receive an email when they are ready. Completed exports appear in the Reports > Exports tab.
Multi-month and custom date ranges: Use the "Is between" date filter to query any date range across months.
Can I Access Reports via API?
Please reach out to support with your use case if you'd like to access Reports via API.
What Is the Child Orders Report?
The Child Orders report shows one row per recipient / Child Order. This is the recommended report for:
Accounting reconciliation at the order level
Fulfillment tracking
Line-item and product analysis
Key things to know:
For a single payment covering 1,000 recipients, this report shows 1,000 rows (compared with 1 row in the Transactions report).
Concierge orders only appear here once they have been submitted to Shopify — draft orders are excluded.
The Channel column distinguishes Concierge from Self-Service orders.
Available Columns — Child Orders
Column | Description |
Order Submitted Date | The date the child order was placed in Zest. |
Zest Order | The Zest parent order number. |
Type | Order type by delivery method — E-Gift or Direct Ship. |
Channel | Concierge or Self-Service. |
Scheduled Date | The scheduled delivery date. |
Subtotal | Subtotal before shipping and tax. |
Shipping | Shipping cost. |
Tax | Tax amount. |
Total | Total including subtotal, shipping, taxes, and fees. |
Zest Platform Fees | Zest fees (commission + buyer fee). |
Product Discounts | Discounts applied to line items. Available for orders created after July 21, 2025. |
Volume Discounts | Prorated per-order discount when the parent order qualifies for a volume discount. |
Reconciliation Key | Key for matching child orders with transactions. |
Order Cancellation Date | The date the order was canceled in Zest. |
External Order Number | The order number in your ecommerce platform (e.g. Shopify order #). |
External Order ID | The order ID in your ecommerce platform. |
Fulfillment Status | Current fulfillment status. |
Fulfillment Date | The date the order was fulfilled. |
Fulfillment Cancellation Date | The date fulfillment was canceled (not available for all platforms). |
Products | Comma-separated list of quantity, product name, and SKU. |
Storefront Name | The storefront name. Blank for concierge orders. |
Concierge Project Name | The concierge project name. Blank for self-service orders. |
Customer Name | The customer who placed the order. |
Customer Email | The customer's email address. |
Customer Company | The customer's company. |
Recipient Name | The gift recipient's name. |
Recipient Address 1 | Street address line 1. |
Recipient Address 2 | Street address line 2. |
Recipient City | City. |
Recipient State | State or province. |
Recipient Postal Code | Postal or ZIP code. |
Recipient Country | Country. |
Recipient Phone | Phone number. |
Recipient Email | Email address. |
What Is the Transactions Report?
The Transactions report is a payment-level view — one row per payment or refund. This is the recommended report for:
Revenue tracking and payment reconciliation
Refund monitoring
Invoice-level financial analysis
Key things to know:
Includes "mark as paid" invoices (shown with Payment Gateway = Manual).
The Channel column distinguishes Concierge from Self-Service transactions.
The Payment Gateway Source ID column shows the Stripe Charge ID (when available) or Payment Intent ID. This is the same identifier pushed into Shopify order transactions.
Available Columns — Transactions
Column | Description |
Created Date | The date the transaction was created. For invoices, this may differ from the transaction date. |
Transaction Date | The date of the transaction. |
Transaction Amount | The total amount. |
Transaction Type | Payment or Refund. |
Transaction Source | Checkout or Invoice. |
Channel | Concierge or Self-Service. |
Reconciliation Key | Key for matching transactions with child orders. |
Invoice Number | The Zest invoice number. Blank for checkout transactions. |
Payment Gateway | Stripe, Adyen, or Manual. |
Payment Gateway Source ID | The gateway's transaction identifier (e.g. Stripe Charge ID). Blank for manual transactions. |
Description | Memo for invoices, or recorded reason for refunds. |
Storefront Name | The storefront name. Blank for concierge transactions. |
Concierge Project Name | The concierge project name. Blank for self-service transactions. |
Customer Name | The customer's name. |
Customer Email | The customer's email. |
Customer Company | The customer's company. |
Billing Address State | Billing state. Only available for Stripe transactions. |
Billing Address Postal Code | Billing postal or ZIP code. Only available for Stripe transactions. |
Billing Address Country | Billing country. Only available for Stripe transactions. |
Building a Report
Getting started
Click Reports in the left sidebar. From the reports page you can:
Start a new exploration by clicking New exploration and selecting a data source (Child Orders or Transactions).
Open a saved report from the list.
View exports to download previously exported data.
Selecting columns
Click the Columns button to choose which columns to display. You can add or remove columns at any time. The preview table updates immediately upon applying your selection.
Filtering data
Click the Filters button to add filters. All filters are applied together using AND logic.
Select the column you want to filter by.
Choose a filter operator.
Enter the filter value.
Click Apply.
Active filters appear as tags below the controls. Click the × on any filter tag to remove it.
Filter operators by column type
Text columns (e.g. Customer Name, Storefront Name):
Is / Is not — Match or exclude one or more exact values.
Contains / Does not contain — Match or exclude based on partial text.
Starts with / Ends with — Match based on the beginning or end of the value.
Is empty / Is not empty — Match rows with or without a value.
Number columns (e.g. Total, Transaction Amount):
Is / Is not — Equals or does not equal a specific number.
Greater than / Greater than or equal to / Less than / Less than or equal to
Date columns (e.g. Order Submitted Date, Transaction Date):
Is on — Matches a specific date.
Is on or after / Is on or before — On or after/before a specific date.
Is between — Between two dates (inclusive).
Is in previous — Within a rolling window (e.g. the previous 30 days, the previous 3 months).
Is in current — Within the current period (e.g. the current week, month, or year).
Is empty / Is not empty
Category columns (e.g. Type, Transaction Type, Payment Gateway, Channel):
Is / Is not — Match or exclude one or more values from the available options.
Note: Date filters use UTC time.
Sorting
Click the Sort button to choose a sort column and direction (ascending or descending). You can also click any column header in the preview table to sort by that column. Reports support sorting by one column at a time.
Previewing results
The preview table shows up to 1,000 rows. If your report contains more data, a message indicates that more rows are available. Export the report to CSV to access the full dataset.
Saving Reports
Saving a new report
Configure your columns, filters, and sort.
Click Save as report.
Enter a name and optional description.
Click Save.
Saved reports appear on the main Reports page and can be searched by name. Reports with relative date filters (e.g. "Is in previous 30 days") stay current each time you open them.
Updating an existing report
Open a saved report.
Make your changes.
Click Save and choose Overwrite existing report or Save as new report.
Deleting a report
Open the saved report.
Click Delete and confirm.
Deleting a report does not affect any previously exported data.
Exporting to CSV
You can export any report — saved or unsaved — to a CSV file.
Click Export.
Enter a name for the export.
Click Export.
The export runs in the background. You will receive an email when it's ready.
To download:
Go to the Reports page and click View exports.
Find your export in the list.
Click Download to get a ZIP file containing the CSV.
How long does it take? Most exports complete within a few minutes. Larger datasets may take longer. You'll receive an email notification when it's ready.
Export notes
Exports have no row limit — even if the preview only shows 1,000 rows, the export includes the complete dataset.
Download links expire after a short time. If a link has expired, go back to the exports list and click Download again.
Export statuses: Pending → In progress → Completed (or Failed — try exporting again if this occurs).
Frequently Asked Questions
How do I filter reports by Concierge vs. Storefront orders?
Use the Channel column to filter by Concierge or Self-Service. Both the Child Orders and Transactions reports include this column.
You can also distinguish order sources by looking at:
Storefront Name — populated for self-service / storefront orders, blank for concierge orders.
Concierge Project Name — populated for concierge orders, blank for self-service orders.
How can I associate Transactions with Orders?
Use the Reconciliation Key column, which is available in both reports:
For a multi-recipient self-service order: One row in Transactions corresponds to many rows in Child Orders, all sharing the same Reconciliation Key (the order number).
For a Concierge project with multiple invoices: One project may have multiple transactions and multiple child orders — use the Reconciliation Key (the concierge project number) to connect them.
To link the two reports:
Export both the Child Orders and Transactions reports (include the Reconciliation Key column in both).
In your spreadsheet, match rows across reports using the Reconciliation Key.
How can I reconcile orders across Zest, Shopify, and Stripe?
Several columns help you trace transactions across systems:
System Link | Where to Find It |
Zest ↔ Shopify | External Order Number in the Child Orders report is the Shopify order #. |
Zest ↔ Stripe | Payment Gateway Source ID in the Transactions report is the Stripe Charge ID (or Payment Intent ID). This same identifier appears in the Shopify order transaction as the authorization key. Stripe transaction descriptions also list the Reconciliation Key. |
Zest orders ↔ Zest payments | Reconciliation Key links Child Orders to Transactions. |
Mark-as-paid invoices | These appear in the Transactions report with Payment Gateway = Manual, but there will be no Payment Gateway Source ID (since no payment was processed through Stripe). |
Why do Zest reports show different revenue than Shopify?
There are several reasons revenue may differ between Zest and Shopify:
Timing differences: Zest/Stripe tracks payment at the time of charge; Shopify reflects when orders are pushed. For e-gifts, Stripe payment happens on purchase but the Shopify order is only created when the recipient accepts — this can span days or months.
Concierge invoice vs. order amounts: Invoice amounts may differ from order totals due to manual edits, free-text line items, or custom pricing adjustments. Concierge orders and invoices are configured separately.
Concierge $0 orders: Orders and invoices are configured independently — it's possible for invoices to be paid while corresponding orders show $0 or different amounts.
$0 orders in Shopify: Some brands configure Zest to push $0 orders to Shopify (using Shopify for fulfillment only and Stripe for revenue tracking). This is a toggle in Integrations > Shopify.
Fee portion: When customer-paid fees are collected via Stripe but not included as a Shopify line item, the Shopify total will be lower than the actual payment amount.
Concierge payments processed outside Zest: If a concierge invoice is paid outside of Zest/Stripe and not marked as paid in Zest, that revenue won't appear in Zest reports.
How do the reports handle Concierge orders vs. invoice dollar amounts? Why do some Concierge orders show as $0?
Concierge orders are configured separately from invoices — one project can have multiple parent orders and multiple invoices with no one-to-one relationship.
The Transactions report shows invoice-level payment data (use this for accurate payment information).
The Child Orders report shows order-level configured amounts (use this for line-item order details).
It's possible for orders to show $0 while invoices have been paid, or vice versa, because orders and invoices are managed independently within a concierge project.
How do discounts appear in Zest reporting?
The Child Orders report includes two discount columns:
Product Discounts — Discounts applied to line items (e.g. percentage discounts at order creation, prorated across each child order). Available for orders created after July 21, 2025.
Volume Discounts — Prorated per-order discount when the parent order qualifies for a volume discount.
Other discount types:
Line-item price reductions (manually reducing the item price) — reflected in the Subtotal column.
Invoice-level discounts (editing the Concierge invoice directly) — reflected in the Transactions report's Transaction Amount.
How are fees accounted for in reports?
Zest Platform Fees are shown in the Child Orders report and include commission and buyer fees.
Stripe payment processing fees are not included in Zest reports. These are available in Stripe's own reporting.
How do refunds appear in reports?
Refunds for orders where payment was collected through Zest must be processed in Zest (not Shopify) in order to appear in reports.
In the Transactions report, refunds appear as a separate row with Transaction Type = Refund. The Description column shows the recorded reason for the refund.
How are "mark as paid" invoices reflected in reports?
Mark-as-paid invoices appear in the Transactions report with:
Payment Gateway = Manual
Payment Gateway Source ID = blank (since no payment gateway processed the transaction)
Note: Invoices marked as paid have been included in the Transactions report since March 6, 2025.
How can I reconcile deferred revenue?
Deferred revenue occurs when payment has been collected but the associated Shopify order doesn't exist yet. Three common scenarios:
1. Unaccepted e-gifts
In the Child Orders report, look for rows where External Order Number is empty and Type = E-Gift — these are e-gifts the recipient hasn't accepted yet.
Check the Order Cancellation Date column — some of these may have already been canceled and refunded.
Some may also be $0 orders that don't represent deferred revenue.
2. Concierge projects with paid invoices but unsubmitted orders
Export both reports and link them using the Reconciliation Key in a spreadsheet.
In the Transactions report, filter by Transaction Source = Invoice to find concierge invoice payments.
In the Child Orders report, sum the Total for all rows sharing the same Reconciliation Key.
Group by Concierge Project Name for a project-level view.
3. Future ship date orders on hold
If the brand has "hold future ship date orders in Zest" turned on, paid orders with future ship dates won't be in Shopify yet.
These will have an Order Submitted Date but no External Order Number.
How can I identify Concierge projects that are unbalanced?
An "unbalanced" concierge project has a mismatch between the total collected through invoices and the total value of orders submitted.
To identify these:
Export both the Child Orders and Transactions reports with the Reconciliation Key column.
In your spreadsheet, filter the Transactions report by Transaction Source = Invoice to isolate concierge invoice payments.
Sum the Transaction Amount for each Reconciliation Key (concierge project number).
In the Child Orders report, sum the Total for all rows with the same Reconciliation Key.
Compare the two totals — any difference indicates an imbalance.
Grouping by Concierge Project Name can help identify which projects need attention.
How do I identify unaccepted e-gifts?
Start a Child Orders exploration.
Add columns: Type, External Order Number, Order Cancellation Date, Total, Customer Name, Recipient Name, Reconciliation Key.
Filter by Type → Is → E-Gift.
Filter by External Order Number → Is empty (rows without a Shopify order # have not been accepted yet).
Check the Order Cancellation Date column to exclude any that have already been canceled.
How do I report on product sales and top-selling SKUs?
Use the Products column in the Child Orders report. This column lists the quantity, product name, and SKU for each child order.
Start a Child Orders exploration.
Add columns: Products, Total, Order Submitted Date.
Apply date filters for your desired period.
Export the report and analyze in a spreadsheet — split the Products column to aggregate by product name or SKU.
Tip: Shopify's built-in product analytics may be better suited for this if you need pre-built product performance dashboards.
How do I analyze sales by customer and identify repeat customers?
Both reports include Customer Name, Customer Email, and Customer Company columns.
Start a Child Orders exploration.
Add columns: Customer Name, Customer Email, Customer Company, Total, Order Submitted Date.
Export the report.
In your spreadsheet, use pivot tables to group by Customer Email and aggregate totals. Customers with multiple rows are repeat buyers.
You can do the same in the Transactions report for a payment-level view.
How do invoice-externally storefront orders appear in reports?
Orders that are invoiced externally appear in the Child Orders report like any other order. In the Transactions report, the corresponding invoice will show Transaction Source = Invoice.
How do Shopify bundles appear in reporting?
Bundle products appear in the Child Orders report's Products column as the individual items that make up the bundle, reflecting how Shopify reports the order line items.
Migrating from Legacy Reports
The Transactions and Child Orders reports replace several legacy reports with more flexible alternatives:
Legacy Report | Replacement |
Sales | Use a Transactions report with all columns. |
Invite Level Sales | Use a Child Orders report filtered and sorted by date. |
Unaccepted E-Gifts | Use a Child Orders report filtered by Type → E-Gift. |
Unaccepted E-Gifts Revenue | Use a Child Orders report filtered by Type → E-Gift with financial columns. |
