Release testing instructions for WC Payments 10.9.0 - Automattic/woocommerce-payments GitHub Wiki
Reports area β Balance & Fees tabs (feature-flagged)
Feature flag: _wcpay_feature_reports_area (off by default).
Adds a new Payments β Reports admin area with two tabs: Balance (reconciliation) and Fees (ledger).
Prerequisites
- A store connected to a WooPayments test/sandbox account.
- The account should have transaction + fee history and at least one payout / balance activity in a recent month, so both reports have data. (A brand-new account with no activity is fine for empty-state checks but won't exercise the happy path.)
- Admin user with the
manage_woocommercecapability.
Enable the feature flag
Use either method:
WP-CLI
wp option update _wcpay_feature_reports_area 1
Code snippet (e.g. via a mu-plugin or Code Snippets)
add_filter( 'pre_option__wcpay_feature_reports_area', fn() => '1' );
To return to the default (disabled) state: wp option delete _wcpay_feature_reports_area (or set it back to 0).
1. Flag gating
- With the flag off (default), go to Payments in the admin menu.
- β There is no βReportsβ submenu item.
- β
Visiting
admin.php?page=wc-admin&path=/payments/reportsdirectly does not render the Reports page.
- Enable the flag and reload wp-admin.
- β A βReportsβ item now appears under Payments.
2. Navigation & tabs
- Open Payments β Reports.
- β The page loads with two tabs: Balance and Fees.
- β Balance is selected by default.
- Click the Fees tab.
- β
The URL updates to include
&tab=fees.
- β
The URL updates to include
- Reload the page on the Fees tab, then use the browser Back button.
- β
Deep-linking to
&tab=feesopens directly on the Fees tab. - β Back/forward navigation switches tabs correctly (no blank panel).
- β
Deep-linking to
3. Balance tab
- On the Balance tab, observe the date control.
- β The date range filter is open/expanded by default (it's the report's only control β this is intentional and differs from the Fees tab).
- β It defaults to the previous full calendar month (e.g. "Date between (inc): 1 May 2026 and 31 May 2026").
- Pick a date range with known activity using a preset (see Β§5) or Custom.
- β
A Balance summary table renders with a starting balance, categorized activity, and an ending balance. Typical rows (vary by account activity):
- Starting balance β {date} UTC
- Total charges captured (n items)
- Fees β with sub-rows Charge fees, Dispute fees, Fee refunds
- Refunds (n items), Refund failures (n items)
- Disputes (n items)
- Financing payout / Financing paydown (Capital β only when present)
- Net balance change in the period
- Payouts (n items)
- Ending balance β {date} UTC
- β Subcategory rows like Reader fees / Network costs appear only when their value is non-zero for the period (expected to be absent for standard merchants).
- β
A Balance summary table renders with a starting balance, categorized activity, and an ending balance. Typical rows (vary by account activity):
- Select a range with no balance activity (e.g. the previous year on a newer account), or click Reset to clear the date filter entirely.
- β The summary is replaced by an empty state: heading "No balance activity" + "Your Balance summary will appear here once there's enough data to display."
- β Print and Export become disabled.
- The Export/Print buttons sit in the page header (above the tabs). When there's no usable data they are visibly disabled (greyed out), and the report body shows the "No balance activity" empty state (or a loading state while fetching).
- Note: the specific reason is announced to screen readers only β exposed via
aria-describedbyto a visually-hidden (screen-reader-text) element, not a hover tooltip. To verify the exact wording, use a screen reader (e.g. VoiceOver) or inspect the button'saria-describedbytarget in DevTools. The three messages are:- No date range applied β "Select a date range to enable Print and Export."
- Still loading β "Print and Export are available once the Balance report finishes loading."
- Selected range has no activity (empty result) β "Print and Export are unavailable when the selected range has no Balance activity."
- Note: the specific reason is announced to screen readers only β exposed via
4. Fees tab
- On the Fees tab, observe the toolbar.
- β No filters are applied by default β the report shows all-time fees (unlike Balance, which defaults to the previous month). Only an Add filter button (collapsed) and a Search fees box are shown.
- Confirm the default-visible columns (in this order): Date & time, Transaction ID, Method, Type, Order ID, Currency, Gross amount, Fees total.
- Note: Settlement date and Payout ID are hidden by default β turn them on via View options (the column-visibility control).
- Open Add filter β the available filters are Date, Method, and Type (Gross amount / Fees total / Settlement date filters were intentionally removed).
- Apply a Date filter.
- β Conditions: On / Before / After / Between (inc).
- β Presets resolve correctly (see Β§5).
- Type into Search fees.
- β The ledger filters to matching rows.
- Sort by Date & time, Gross amount, and Fees total.
- β Sorting works for each.
- Page through results using the pagination control (Page X of N, Previous/Next).
- β Navigation works and the page indicator updates.
- Toggle column visibility via View options, then reload the page.
- β Column visibility persists (stored per user).
- Click links in Transaction ID and Order ID cells (and Payout ID once enabled via View options).
- β Each navigates to the correct destination (transaction details / order edit / payout details).
- Apply filters/sort, then copy the URL into a new tab.
- β
The view is reproduced from the URL (filter + sort state is URL-synced; e.g. a Between range adds
&date_between[0]=β¦&date_between[1]=β¦).
5. Date presets (shared by both tabs β same DataViews date filter)
The presets shown depend on the selected Condition:
- Between (inc) β Previous month, Previous year, Last 7 days, Last 30 days, Month to date, Last year, Year to date, Custom.
- On / Before / After (single date) β Today, Yesterday, Past week, Past month, Custom.
("Previous month" and "Previous year" are the newly-added WooPayments presets; the others come from the native DataViews date filter.)
- Try each preset and verify the resolved range, e.g.:
- β Previous month = the full previous calendar month (1st β last day).
- β Previous year = Jan 1 β Dec 31 of last year (e.g. 2025-01-01 β 2025-12-31).
- β Month to date = 1st of this month β today; Year to date = Jan 1 β today.
- Re-open the popover after applying a preset.
- β The active preset chip is highlighted; a hand-entered range shows as Custom.
6. Feedback survey (Balance tab)
- On the Balance tab, locate the inline feedback prompt: βDid this report give you the information you needed?β with thumbs up/down.
- Click thumbs up β optional comment (βWhat did you use this report for?β); click thumbs down β optional comment (βWhat's missing?β).
- Add a comment and click Send.
- β A success notice (βThanks for your feedback!β) appears.
- β The privacy disclaimer link points to the Automattic privacy policy.
- Dismiss the survey with the close (β) control.
- β It dismisses cleanly.
7. CSV export & Print
Fees export
- On the Fees tab, click Export (primary button in the page header β the Fees tab has no Print button).
- β A CSV downloads containing the currently filtered rows.
Balance export & print
- On the Balance tab with a range that has activity, click Export.
- β
A CSV downloads. The header row is:
business_name,woopayments_account_id,row_key,label,amount,count,currency,period_start,period_end - β The first two columns are business_name and woopayments_account_id on every row, followed by the balance rows (amounts in minor units / cents).
- β
A CSV downloads. The header row is:
- Click Print.
- β The browser print dialog opens with a print-styled layout (not the raw admin chrome).
8. Tracks / analytics events (optional β needs a Tracks inspector)
Requires a way to observe Tracks events (e.g. Tracks Vigilante 2). Each event should fire once per action.
| Action | Event(s) expected |
|---|---|
| Open the Reports page | page_view (path payments_reports) + a load event for the active tab |
| Switch between tabs | wcpay_reports_tab_change |
| Balance loads / fails | wcpay_reports_balance_load_success / wcpay_reports_balance_load_error |
| Change Balance date filter | wcpay_reports_balance_date_filter_change |
| Balance reload | wcpay_reports_balance_reload_click |
| Balance Export | wcpay_reports_balance_export_click β wcpay_reports_balance_export_success (or β¦_export_error) |
| Balance Print | wcpay_reports_balance_print_click |
| Fees loads / fails | wcpay_reports_fees_load_success / wcpay_reports_fees_load_error |
| Change Fees date filter | wcpay_reports_fees_date_filter_change |
| Change other Fees filter | wcpay_reports_fees_filter_change |
| Search the Fees ledger | wcpay_reports_fees_search |
| Fees reload | wcpay_reports_fees_reload_click |
| Fees Export | wcpay_csv_export_click β wcpay_reports_fees_export_success (or β¦_export_error) |
| Feedback survey shown | wcpay_reports_feedback_view |
| Click thumbs up / down | wcpay_reports_feedback_thumbs_up / wcpay_reports_feedback_thumbs_down |
| Submit / cancel / dismiss feedback | wcpay_reports_feedback_submit (or β¦_submit_error) / β¦_feedback_cancel / β¦_feedback_dismiss |
Notes / troubleshooting
- Balance data comes from the server. If the Balance tab shows an error or stays empty for a range that clearly has activity, the Transact Platform balance-summary endpoint may not yet be available for that account β confirm with the server team rather than treating it as a client bug.
- The Balance-open / Fees-collapsed default filter difference is intentional by design β not an inconsistency to report.
- The flag must be disabled before release sign-off (it ships off by default).