=== TaxPack Canada – Tax Reports for WooCommerce ===
Contributors: guilhermeperotta
Tags: woocommerce, canada, tax reports, gst, hst
Requires at least: 6.5
Tested up to: 7.1
Requires PHP: 8.2
Requires Plugins: woocommerce
Stable tag: 1.0.0
License: GPLv2 or later
License URI: https://www.gnu.org/licenses/gpl-2.0.html

Report recorded GST, HST, PST, QST and RST by Canadian province. Includes refunds, review flags and a summary CSV. No account required.

== Description ==

TaxPack Canada helps Canadian WooCommerce store owners and bookkeepers answer: which recorded taxes belong in each province and tax-type group?

Choose a date range, classify your existing rate IDs, and review recorded tax amounts inside WooCommerce. Download a summary CSV without creating an account or entering a license key.

**Included in this free plugin**

* Any selected reporting period, using order creation dates in the store timezone.
* Explicit GST, HST, PST, QST and RST classification by recorded rate ID.
* Province grouping using your choice of shipping or billing address.
* Separate order tax, signed refund tax, net tax and included shipping tax.
* Refunds queried by their own dates, including refunds of older orders.
* Review flags for unmapped rates, missing provinces, conflicting addresses, missing refund allocations and tax differences.
* A summary CSV with source event IDs and separate exception rows, including events without tax lines.
* Exact arithmetic and separate currencies. No currency conversion or silent rounding.
* WooCommerce HPOS and legacy order storage support.

TaxPack reports what WooCommerce already recorded. It never changes orders, refunds, tax rates or checkout calculations. It does not calculate taxes, input-tax credits or filing obligations, provide tax advice, or file returns. Reporting attribution is not a determination of tax jurisdiction.

**Free and paid editions**

Everything included in this download works without payment, an account, a license key or an expiry date. There is no premium code to unlock.

The separately distributed [paid TaxPack](https://taxpack.ca/free#compare) adds saved report snapshots, detailed tax-line and order/refund CSVs, and printable English/French worksheets. The free edition includes the same refund and accuracy safeguards. Both editions share your rate mappings and can coexist; older paid reports keep their original mappings. Paid software is installed separately by the store administrator, never downloaded or installed by this plugin.

[Reporting guides](https://taxpack.ca/guides) | [Product and installation](https://taxpack.ca/free)

== Installation ==

1. Install and activate WooCommerce 8.2 or later. Use WordPress 6.5+ and 64-bit PHP 8.2+.
2. Upload the plugin ZIP through Plugins > Add New > Upload Plugin, then activate TaxPack Canada.
3. Open WooCommerce > TaxPack Free > Rate mappings. Classify the existing rate IDs after checking your records.
4. Open Tax summary, choose a period, current order statuses and an address basis, then generate a summary.
5. Review exceptions and download the summary CSV. Keep the original CSV for your records.

== Frequently Asked Questions ==

= Is this a trial? =
No. All included features are free with no account, key, time limit, or paid unlock. The 5,000-event limit per report is a resource safeguard shared by both editions, not a paid tier. Generate as many reports as needed using shorter periods.

= Does it change how my store charges tax? =
No. It reads stored WooCommerce order and refund tax lines through WooCommerce APIs. You choose the reporting type for each rate ID. Unknown IDs remain UNMAPPED; no classification is guessed from a label or percentage.

= How are dates and refunds handled? =
Orders use creation dates and selected current statuses. Refunds use their own creation dates, independently of the parent order's current status or date. Both period endpoints are inclusive in your store timezone. Refund taxes keep their recorded sign; amount-only refunds without tax allocation are flagged, not estimated.

= Which province is used? =
You choose shipping or billing address without fallback. Missing, invalid or non-Canadian selected addresses stay UNRESOLVED. Conflicting shipping and billing addresses are flagged. This is a reporting choice, not a legal determination.

= How do I read the CSV? =
The record_type column distinguishes summary rows from review_event exception rows. Add only summary rows, keeping each currency separate. Exception rows explain recorded event tax, line totals and differences; they are not additional tax to add. Events with missing tax lines are retained as review rows. A report with no groups or flags includes a period_info row. Filters, generation time, source event counts and mapping revision accompany every row. Source IDs link back to WooCommerce. Spreadsheet formula-like text is escaped.

= Does Download export the exact page I viewed? =
It rebuilds the same period from current store records. If orders change, results can change. A changed mapping revision requires a fresh summary before downloading. Free reports are not saved snapshots. Keep downloaded files yourself and avoid editing source records during generation.

= Are shipping tax and discounts counted twice? =
No. Shipping tax is already included in net tax and is also shown as an included component. Discounts already reflected in recorded tax are not subtracted again. Fee tax is included in the recorded tax-line amounts.

= What are the practical limits? =
Reports support up to 5,000 combined order/refund events, subject to hosting memory and time limits. Use shorter, non-overlapping date ranges for larger stores. Exact arithmetic preserves up to eight decimal places; unsupported precision or oversized values stop the report explicitly. No partial result is returned. Reports read records in batches without locking the live store database.

= Who can see the report? =
Only WordPress users with manage_woocommerce, normally administrators and shop managers. Reports and exports require permission checks and nonces. Customer names, emails and street addresses are not included in report output.

= Does TaxPack contact external services? =
No. This plugin performs no external requests, telemetry, licensing or custom update checks. WordPress handles its normal plugin updates. Clicking an optional website link opens that site in your browser; the plugin does not send order or report data.

= What happens when I uninstall or move to paid TaxPack? =
Rate mappings are retained in the taxpack_mappings option. Free reports are only generated for the current request. Any reports previously saved by paid TaxPack remain in the database, with their original revisions. Neither edition deletes accounting records on uninstall. Back up the database. The paid edition reads the same mappings, so you do not need to remap rates.

== Changelog ==

= 1.0.0 =
Initial free release: Canadian province and tax-type summaries, signed refunds, review flags, summary CSV, exact amounts, and HPOS/legacy support.
