The Revenue Recognition tab spreads each subscription payment across the period it actually covers, instead of counting it all on the day it was collected. It also shows the Deferred Revenue balance — the part of prepaid subscription money you have taken but not yet earned.
It is built to save your finance team from exporting raw orders and rebuilding the schedule by hand. Read What the figures include below before using it for a filing — in particular, the amounts are order totals and include tax.
What the report shows
Open WooCommerce → Analytics → Subscription Report and switch to the Revenue Recognition tab. You will see a date range picker, three summary cards, the Monthly Recognition table and the Orders in this Range table.
| Card | What it means |
|---|---|
| Cash Received | Total money collected from subscription orders in the selected date range. This is cash, not recognized revenue. |
| Revenue Recognized | The revenue earned in the selected range, amortized over the billing period of each subscription order. |
| Deferred Balance (EOP) | The un-earned portion of prepaid subscription money still owed to customers as of the end of the selected period. |
Monthly Recognition
The Monthly Recognition table lists each month in the selected range with:
- Cash Received and Recognized Revenue for the month.
- Δ Deferred — how much the deferred balance moved. An increase is shown in orange with a plus sign; a decrease in green. The colour carries no meaning beyond the direction of the change.
- Deferred Balance (EOM) — the deferred balance at the end of that month.
A totals line under the table sums cash received, recognized revenue and the change in deferred revenue for the whole range. Click Export Recognition CSV at the top-right of the table, confirm the range in the pop-up, and click Export — see Per-Order Deferred Revenue Export for the columns.
Orders in this Range
Below the monthly table, Orders in this Range lists every paid subscription order contributing to the selected range, with the order count in the heading. Each row shows Payment Date, Order, Customer, Type (Signup, Renewal, Switch or Refund), the linked Subscription, the coverage Period, the amount Paid, and then Recognized in Range, Total Recognized and Remaining Deferred for that order.
Use the Show: filter to switch between All orders in range and Only with deferred balance, the ⋮ menu to choose which columns are shown, and the pagination controls at the bottom to page through the results. Columns cannot be sorted.
How recognition is calculated
Every paid subscription order is treated as prepaid money and amortized on a straight-line daily basis across the days between the period start and period end it covers. Each day in the period earns the same share of the order total, and the daily amounts are then summed into calendar months.
- An annual $120 subscription paid on 1 January recognizes roughly $10 in each month of that year, carrying the rest as deferred revenue.
- A monthly $30 subscription paid on the 15th recognizes about half in the current month and half in the next.
- Rounding is reconciled so the monthly rows for an order always add up to the order total exactly.
- Cash is recorded in the month the order was actually paid, which is not always the first month of recognition.
Months are bounded by your store’s local time zone, set under Settings → General.
What the figures include
| Item | How it is treated |
|---|---|
| Tax | Included in the amortized amount. Not separated. |
| Shipping | Included in the amortized amount. Not separated. |
| Discounts and coupons | Already deducted — the order total is the amount after discounts. |
| Sign-up fees | Not separated. A sign-up fee is part of the first order’s total, so it is spread across the first billing period like everything else, rather than being recognized on day one. |
| Free trials | A trial order with a zero total creates no recognition rows at all. Where a trial ends part-way into a paid period, recognition starts at the trial end date — the trial days earn nothing. |
| Multiple currencies | Not converted. See the warning below. |
Cancellations, refunds and status changes
| Event | What happens to the schedule |
|---|---|
| Subscription cancelled or expired mid-period | Months after the cancellation are removed, and the cancellation month is prorated down to the days actually delivered. |
| Subscription put on hold mid-period | Treated the same way — future months are pruned from the cancel/hold date. The deferred balance moves as a result. |
| Partial refund | A negative entry equal to the refunded amount is booked in the month the refund was issued. The original schedule is not re-amortized. |
| Order moves to refunded, cancelled, failed, pending or on-hold | The order leaves the paid set and its recognition rows are removed. |
| Order becomes paid (completed or processing) | The schedule is built, or rebuilt, automatically. |
First-time setup — import historical data
Go to WooCommerce → Settings → Subscription Analytics and run the importer, choosing a date range or All. The plugin replays every paid subscription order and builds the month-by-month schedule in the background using WooCommerce’s Action Scheduler. See Importing Historical Data.
You only need to do this once. After the initial import, the plugin keeps the schedule in sync automatically as orders are paid, refunded, or their subscriptions cancelled.
Frequently asked questions
Why does Cash Received not equal Revenue Recognized?
That is the point of the report. Cash is what you have collected; recognized revenue is what you have earned. The gap between the two is your Deferred Revenue — money owed in service until the coverage period is delivered.
Which order statuses count as paid?
Completed and Processing only. This list is fixed and cannot currently be changed by a filter or setting. On-hold orders are excluded because payment is not confirmed.
Do refunds rewrite closed months?
No. A refund is added as a new negative entry in the month it was issued, so previously closed months keep the figures they had. Note that a cancellation behaves differently: it prunes the months after the cancel date, which does change the deferred balance going forward.
Can I use this for my accounts?
It gives you the timing — which periods your subscription income belongs to, and what remains deferred — which is the hard part to work out by hand. It does not give you a tax-separated revenue figure, because the amounts include tax and shipping. Give your accountant the per-order export and your tax reports together, and let them make the split.
Troubleshooting
| Problem | What to check |
|---|---|
| Everything is zero after installing | The historical import has not been run, or has not finished. See Importing Historical Data. |
| Totals do not match WooCommerce’s own revenue report | Expected. WooCommerce counts cash when collected; this counts revenue when earned. They converge only over the full life of a subscription. Tax is included in both. |
| The import never completes | The import runs on Action Scheduler. If WP-Cron is disabled or the scheduler is not processing, batches stall. Check WooCommerce → Status → Scheduled Actions for pending actions in the zorem-subscription-import group. |
| A month shows negative recognized revenue | Usually a refund booked in full in that month. See the refund note above. It can also happen when historical orders were imported with a paid date later than the period they cover. |
| The deferred balance looks too high | Check whether your store takes more than one currency — amounts are not converted. |
| A subscription’s future months disappeared | The subscription was cancelled, expired or put on hold; future months are pruned from that date. |