Skip to main content

Reconciling Shopify Deferred Revenue

How to reconcile A2X's monthly Shopify Deferred Revenue Adjustments against Shopify order data, which reports to use, and why small variances can appear.

Written by Amy Crooymans

Overview

A2X's Deferred Revenue feature automates your monthly revenue deferrals and recognitions based on Shopify fulfillment data. Because of how Shopify reports order data, you may see small variances between the two. This article explains why those differences occur and how to reconcile them.

What each monthly adjustment contains

A2X’s monthly Deferred Revenue adjustments represent the month’s change to deferred revenue, not a statement of everything currently deferred. This is why establishing an opening balance is important.

These monthly adjustments include two components:

  1. Deferred revenue: how much revenue was deferred for orders unfulfilled at month-end.

  2. Recognized revenue: how much previously deferred revenue was recognized for orders fulfilled during the month.

Both sides can be reconciled from the same Shopify orders export, filtered by order date and fulfilled-at date This process is outlined below.

Note: Shopify's Orders page also has an "unfulfilled" filter, but this is a point-in-time view of the current state, so it is subject to timing issues depending on when you pull it. It's useful as a quick check only.

Reconciling with a Shopify Orders export

Option A: Use the A2X Finance Report

1. Get your A2X data

In your A2X Shopify account:

  1. Navigate to Reports > Finance Report

  2. Set the month you wish to reconcile

  3. Turn on Show Deferred Revenue Adjustments Impact

2. Get your Shopify data

Go to your Shopify Orders page and click Export:

  • Choose Orders by date

  • Select a date range wide enough to capture all unfulfilled orders and any order which was fulfilled during the period being reconciled. A quick-turnaround store may only need a few days buffer, while a store which takes pre-orders months before fulfillment needs a much wider window.

  • Export as "CSV for Excel, Numbers, or other spreadsheet programs".

3. Compare the deferral side

In the Shopify export spreadsheet, filter for orders:

  1. with Created at date during the month

  2. and a Fulfilled at date that's blank or after month-end

These reflect orders from the month that were unfulfilled at month-end. Compare the sum of these columns to your A2X Finance Report. This is how they map:

Shopify Orders Export Column

A2X Finance Report (Deferred Column)

Subtotal

Gross Sales + Discounts

Shipping

Shipping

If you notice any variances, see Common reasons for variances below.

4. Compare the recognition side

In the Shopify export spreadsheet, filter for orders:

  1. with Created at date before the month

  2. with a Fulfilled at date during the month

These reflect orders that would've been previously deferred and were then fulfilled during the month.

Compare the sum of these columns to your A2X Finance Report. This is how they map:

Shopify Orders Export Column

A2X Finance Report (Deferred Column)

Subtotal

Gross Sales + Discounts

Shipping

Shipping

If you notice any variances, see Common reasons for variances below.

Option B: Use the A2X Unfulfilled Orders Report

The A2X Unfulfilled Orders Report shows the orders that A2X determined were unfulfilled at a date you choose based on Shopify’s fulfillment data, each with a deferrable amount calculated on the same basis as the monthly adjustments. Unlike Option A, this is a point-in-time view as of specified date which includes everything unfulfilled up until the selected date rather than a single month's movement.

1. Get the A2X Unfulfilled Orders report

  • Navigate in A2X to Reports > Unfulfilled Orders Report

  • Set the as of date to the month-end you're reconciling.

  • Click Export CSV

    • Use the Summary view for one row per order, or the Detailed view for the underlying revenue lines (recommended for this case).

  • You may use the Exclude cancelled orders toggle to omit cancelled orders from the results and CSV export.

Summary view

Detailed view

2. Get Shopify's unfulfilled orders report.

Go to your Shopify Orders page and select Unfulfilled from the filter dropdown.

Click Export:

  • Choose orders matching your search

  • Export as "CSV for Excel, Numbers, or other spreadsheet programs".

3. Compare the A2X report to Shopify's report

Compare the report against Shopify's view of unfulfilled orders (your export from Option A, or the Orders page's unfulfilled filter). The two should look broadly the same. It's also a good place to spot anything unusual, such as orders that have sat unfulfilled far longer than your normal fulfillment cycle.

For order-level differences, compare the report's order list against your filtered Shopify export from the deferral-side comparison. Any variances can be checked individually if needed (see Checking an Order's Fulfillment History below).

The A2X Unfulfilled Orders Report covers 12 months of orders prior to the selected as-of date for the report. This may be reduced if you have less payout history in A2X or if you are selecting an as-of date which is earlier than the starting month selected in Deferred Revenue settings. Orders prior to June 2025 may not show a deferrable amount.


A2X's raw adjustment data

The raw data behind each Deferred Revenue Adjustment can be downloaded as a CSV from the settlement detail page, just like payouts. This is the most direct way to see exactly what A2X calculated, row by row, for each order in the period.

Key columns

Column

Values / Meaning

posting_action

DEFERRAL or RECOGNITION

adjustment_scope

ENTIRE_ORDER (an order deferred in full; recognitions are always this scope) or

CHANGES_TO_ORDER (only the new lines from an edit to a previously deferred order)

order_status_at_period_start

NOT_FULLY_FULFILLED or FULLY_FULFILLED or blank (the order did not exist yet at the start of the month)

order_status_at_period_close

NOT_FULLY_FULFILLED or FULLY_FULFILLED

order_fulfilled_at

The date & time the order became fully fulfilled from the perspective of this adjustment’s month-end.

Please note:

  • Orders placed and fulfilled within the same month are omitted from the CSV and from the finance report, as the deferral and recognition would cancel out. They still appear under the adjustment on the A2X order ID page for context.

  • A previously fulfilled order that becomes unfulfilled again (e.g. a refund with restock) gets a fresh deferral with no offsetting recognition in the same adjustment, the recognition happened in an earlier period.


Checking an order's Fulfillment History in A2X

When Deferred Revenue is enabled, an order ID page in A2X can include a Fulfillment History table showing the order-level fulfillment timeline A2X computed from Shopify’s fulfillment events. This is shown for orders A2X holds fulfillment data for. This is typically from up to 12 months before your Deferred Revenue starting month onward.

Each row is a fulfillment status transition, showing the date (in your account's timezone) and the status the order moved to: Fully Fulfilled or Not Fully Fulfilled.

This is the fastest way to settle a per-order question: for the month you're reconciling, find the order's status prior to the month in question (if applicable) and the status prior to month-end.

  • These are the statuses A2X uses, even if Shopify's current view now says something different.

  • Orders can move between the two statuses more than once (after a refund or an order edit, for example). Each change shows as its own row so you can see exactly what A2X saw, and when.


Common reasons for variances

A2X should match Shopify for simple order flows. Variances are typically caused by limitations in Shopify’s orders export because Shopify shows orders in their current state, not their state at a given month-end. Here are some common causes:

Timing differences

These come from exporting at a different moment than the month-end A2X reports on.

Timing of your Shopify export

Shopify shows orders as they are now, not as they were at month-end, so the longer you wait to export, the more will have changed. A2X's adjustment reflects each order's status as of its month-end, so export close to month-end where you can.

Order edits after month-end

If shipping, discounts, or line items are modified after the month closes but before you export orders from Shopify, Shopify reflects the edit, but A2X doesn't. If the order is still not fully fulfilled, the next month's adjustment defers just the new lines from the edit, and the original deferral stays. Some edits also rewrite history in Shopify's view: removing the not-yet-shipped items from a partially fulfilled order makes Shopify show it as fulfilled today. A2X still reports what was true at month-end.

Shopify's fulfilled date can be older than A2X's

Shopify shows one current fulfilled date per order, and edits can move it. An order can show a fulfilled date from months ago even though it only became fully fulfilled, every item accounted for, much more recently. A2X recognizes revenue in the month the order became fully fulfilled, so the recognition can land later than Shopify's date suggests. The order's Fulfillment History (above) shows the dates A2X used.

Activity on orders from earlier months

The month's deferred figure can also include new lines added by edits to previously deferred orders, and full re-deferrals of orders that became unfulfilled again (e.g. a refund with restock). These belong to orders created in earlier months, so a filter on orders created during the month can't capture them, expect the finance report's Deferred column to run slightly higher than your filtered export when either has occurred.

Scope and data differences

Refunds

Your export's refund column may not match A2X's deferred Refund figures the finance report: Shopify reports refunds tax-inclusive, tax never defers, and what's deferred depends on how the refund was processed. If needed, check refunds on a case-by-case basis.

Orders that predate A2X’s data:

  1. Before your History Fetch date
    Very old unfulfilled orders that predate A2X's connection aren't visible to A2X. They'll show in your Shopify export but not A2X's data.

  2. Orders from before the Deferred Revenue start date
    Orders placed before your start date but still unfulfilled aren't deferred (they belong in your manual opening balance). As they're fulfilled, A2X recognizes them, drawing down that balance.

Line items that don't require shipping

A2X never defers line items that don't require shipping (e.g. change order fees), as they have no fulfillment to wait for. Shopify's orders export makes no such distinction, so orders containing these items can total slightly higher in your export than in A2X's deferred figures.

A refreshed payout that overlaps the adjustment

Refreshing a Shopify payout that overlaps a Deferred Revenue Adjustment doesn't automatically refresh the adjustment. If you've refreshed payouts and the numbers no longer line up, refresh that month's Deferred Revenue Adjustment and any later adjustments, in order.

Third-party apps with unusual fulfillment patterns

If a third-party app creates, edits, or fulfills orders in a non-standard way (subscription apps, external fulfillment services, point of sale), the deferral tracks whatever that app writes to the order. Unusual fulfillment patterns can create variance and are best checked order by order.

Multiple currencies

On multi-currency accounts, A2X generates one Deferred Revenue Adjustment per currency. Reconcile each currency separately.


FAQs

Why doesn't my Shopify export match A2X exactly?

Shopify's export shows each order's current state, while A2X reconstructs each order's status as of month-end from its fulfillment events. Orders fulfilled or edited between month-end and your export show up as differences. Pull your export close to month-end to minimize them, and use A2X's raw adjustment data to explain what's left. See above sections for detailed on variances and reconciling.

Why does an order ID page show both a deferral and a recognition?

If the order was placed and fulfilled within the same month, the pair cancels out. These pairs are omitted from the raw CSV and the Finance Report, but they still appear under the adjustment entry on the order detail page.

Why hasn't an order's revenue been recognized when Shopify shows it as fulfilled?

The order wasn't fully fulfilled at month-end by A2X's timeline, Shopify's fulfilled date is a current value that edits can move. Check the order's Fulfillment History in A2X to see the dates and statuses the adjustment actually used.

Did this answer your question?