Skip to main content

How To Use Reports To Analyze Orders and Transactions

Updated yesterday

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.

  1. Select the column you want to filter by.

  2. Choose a filter operator.

  3. Enter the filter value.

  4. 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

  1. Configure your columns, filters, and sort.

  2. Click Save as report.

  3. Enter a name and optional description.

  4. 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

  1. Open a saved report.

  2. Make your changes.

  3. Click Save and choose Overwrite existing report or Save as new report.

Deleting a report

  1. Open the saved report.

  2. 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.

  1. Click Export.

  2. Enter a name for the export.

  3. Click Export.

The export runs in the background. You will receive an email when it's ready.

To download:

  1. Go to the Reports page and click View exports.

  2. Find your export in the list.

  3. 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: PendingIn progressCompleted (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:

  1. Export both the Child Orders and Transactions reports (include the Reconciliation Key column in both).

  2. 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:

  1. 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.

  2. 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.

  3. 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.

  4. $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.

  5. 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.

  6. 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:

  1. Export both the Child Orders and Transactions reports with the Reconciliation Key column.

  2. In your spreadsheet, filter the Transactions report by Transaction Source = Invoice to isolate concierge invoice payments.

  3. Sum the Transaction Amount for each Reconciliation Key (concierge project number).

  4. In the Child Orders report, sum the Total for all rows with the same Reconciliation Key.

  5. Compare the two totals — any difference indicates an imbalance.

  6. Grouping by Concierge Project Name can help identify which projects need attention.

How do I identify unaccepted e-gifts?

  1. Start a Child Orders exploration.

  2. Add columns: Type, External Order Number, Order Cancellation Date, Total, Customer Name, Recipient Name, Reconciliation Key.

  3. Filter by TypeIs → E-Gift.

  4. Filter by External Order NumberIs empty (rows without a Shopify order # have not been accepted yet).

  5. 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.

  1. Start a Child Orders exploration.

  2. Add columns: Products, Total, Order Submitted Date.

  3. Apply date filters for your desired period.

  4. 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.

  1. Start a Child Orders exploration.

  2. Add columns: Customer Name, Customer Email, Customer Company, Total, Order Submitted Date.

  3. Export the report.

  4. 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.

Did this answer your question?