Launch pricing: Lock in Pro at $79/yr before prices go up View pricing →

Changelog

June 10, 2026

Releases: v1.3.0 – v1.4.0

1.4.0

  • Improved (Pro): the monthly digest now renders in your store’s WooCommerce email template (HTML with a plain-text variant) and is customizable under WooCommerce → Settings → Emails — subject, heading, and format.
  • Improved (Pro): the digest opens with a one-line summary of where you stand and shows a color-coded progress bar, your headline total, the change since the last digest, and your top destination countries with their share of sales.
  • New (Pro): once you have crossed the threshold, the digest names your next OSS return’s quarter and its filing deadline (e.g. “Your next return covers Q2 2026 and is due by 31 July 2026”) — including the January edge case where the imminent return is the previous year’s Q4.
  • New (Pro): the digest warns you when WooCommerce’s tax configuration means destination rates are not actually being charged (taxes disabled, or tax calculated from the shop base address).
  • New (Pro): the subject line carries the live standing — “EU VAT OSS: 70% of the threshold — projected to cross around 18 August” — and each January the digest recaps how the previous year closed.
  • These changes ship in the separate Pro add-on; the Free plugin is unchanged apart from uninstall housekeeping.

1.3.1

  • Fixed: order reversals (cancel, refund, fail, hold, trash) that occur while a recalculation is rebuilding the year are now deferred and reconciled when it completes. Previously such a reversal could subtract from totals that did not yet contain the sale, silently under-counting the EUR 10,000 threshold.
  • Fixed: trashing an order from the legacy (non-HPOS) orders list now reverses its tracked amount, matching High-Performance Order Storage behavior.
  • Improved: the recalculation in-progress marker tolerates the brief scheduling window at the start of a pass, so an order arriving in that instant can no longer slip past the deferral.
  • Improved: the plugin row on the Plugins screen now links to the Dashboard and Settings (and to Pro information when the Pro add-on is absent), and the dashboard’s threshold-projection card links to the Pro Features tab.
  • Tested: verified against WooCommerce 10.8.
  • Improved (Pro): the checkout VAT-exemption sync no longer touches the session when the VAT field is handled by a third-party VAT plugin — their B2B exemptions are preserved; a posted-but-empty field still clears the exemption. These changes ship in the separate Pro add-on.
  • Improved (Pro): installs upgraded from earlier versions migrate the monthly digest onto a fixed first-of-month schedule instead of a drifting 30-day interval. These changes ship in the separate Pro add-on.

1.3.0

  • Fixed: the VAT-number field now reliably appears on the block-based (default) WooCommerce checkout — a hook-timing issue could leave it unregistered, causing B2B orders to over-count the EUR 10,000 threshold. Recalculate from the dashboard after updating if you sell B2B.
  • Fixed: the per-country “orders” link on the dashboard now actually filters the orders list to that destination country, on both High-Performance Order Storage and legacy storage.
  • Improved: orders moved to on-hold or pending, or trashed, are now reversed from the threshold total (consistent with recalculation) and re-counted automatically when they resume.
  • Improved: order tracking and refunds that occur while a recalculation is rebuilding the year are deferred and replayed once it completes, so totals can no longer drift mid-recalculation.
  • Updated: bundled standard VAT rates corrected to current 2026 values — Estonia 24%, Romania 21%, Slovakia 23%.
  • Improved: the optional remote VAT-data refresh now requires HTTPS and accepts only feeds covering exactly the 27 EU member states (rates clamped to a plausible range), so a wrong or compromised feed can never change which countries count toward the threshold.
  • Improved: admin notices (setup prompt, non-EUR currency note) stay dismissed once dismissed; no notices render inside the setup wizard; the wizard styles load in the page header and setup finalizes on the form submission rather than a page view.
  • Fixed: an invalid notification email address is rejected with a warning instead of silently replaced; alerts fall back to the site admin email whenever the stored address is unusable; the plain-text threshold email no longer contains HTML entities.
  • Improved (Pro): VIES-validated cross-border B2B customers now have VAT removed during checkout itself (classic and block) — previously the exemption was only recorded after payment. The Article 138 zero-rating statement renders only on orders that genuinely carried no VAT, and a VIES-valid number from the store’s own country no longer zero-rates the order.
  • Improved (Pro): license validation can no longer be disabled by a transient server anomaly (rate limits, proxy error pages keep the cached status), re-entering the same key after a renewal revalidates instead of consuming another activation, and a “Check license status” button restores Pro after renewing an expired license.
  • Improved (Pro): a persistent warning appears when WooCommerce’s tax configuration would make imported destination rates inert (taxes disabled, or tax calculated on the shop base address); the rate importer never overwrites merchant-created rates (it skips and reports them); ECB outages back off instead of delaying checkouts; the monthly digest is anchored to the 1st of the month; a threshold jump sends only the highest-level alert email. These changes ship in the separate Pro add-on.

June 9, 2026

Releases: v1.1.4 – v1.2.0

1.2.0

  • New: An optional VAT-number field at checkout (classic and block-based) captures EU business customers’ VAT numbers so their orders are correctly excluded from the OSS threshold. It defers automatically to an existing VAT plugin, and can be set to always/never show in Settings.
  • New: VAT numbers are now format-validated. A structurally valid number excludes the order from the threshold; a malformed one no longer hides the sale — it keeps counting and the order is flagged for review, so a bad number can never silently under-count your threshold. (Previously, any non-empty VAT number excluded the order.)
  • New setting: Require VIES verification for B2B — optionally exclude a business order only once its VAT number is confirmed via the EU VIES service.
  • Improved: The order edit screen and the orders list now show how each order’s VAT number was treated (VIES-verified / format-valid / marked exempt / invalid).
  • Improved (Pro): VIES B2B validation now attaches to this shared checkout field on both classic and block checkout and records its verdict for the threshold classifier — it no longer registers a separate field. These capabilities ship in the separate Pro add-on.

1.1.4

  • Improved: The threshold admin-notice’s dismissal script is now properly enqueued (moved out of an inline <script> tag into a registered asset, loaded only where the notice appears), in line with WordPress.org’s enqueue guidelines.
  • Improved: The Free plugin now declares its WooCommerce dependency via the Requires Plugins: woocommerce header (WordPress 6.5+ plugin dependencies).
  • Improved: Clarified that the Free plugin makes no external requests by default — the optional VAT-data URL is empty unless you enter your own endpoint — with a new FAQ and a neutral example placeholder, so there is no ambiguity about data being sent anywhere.

June 7, 2026

Release: v1.1.3

1.1.3

  • Fixed (Pro): The B2B zero-rated supply statement on orders and emails now cites Article 138 of Council Directive 2006/112/EC — the exemption for an intra-Community supply of goods, where the customer accounts for the VAT — instead of Article 196 (which governs services). This is the correct legal basis for a cross-border B2B supply of goods; the wording remains overridable via the oss_reverse_charge_legend filter.
  • Fixed: The per-order “EU VAT OSS” box now shows the net amount in EUR (matching what is counted toward the threshold), or labelled in the order’s own currency when conversion isn’t available, instead of showing a non-EUR figure with a euro sign.
  • Fixed: Schema/table upgrades for existing installs now apply reliably right after a plugin update — before the first wp-admin visit — preventing a missing-table error if front-end order processing runs first. Steady-state cost is a single option read.
  • Improved (Pro): The quarterly OSS report now aggregates orders in bounded pages instead of loading all order history at once, so it scales on long-lived stores. The two-sided HPOS date range and the exact sale/refund quarter-and-year attribution are preserved (covered by new equivalence tests).
  • Improved (Pro): The one-click VAT-rate import now updates a country’s standard rate in place when it changes (e.g. a rate increase) rather than leaving a duplicate active rate WooCommerce could mis-apply at checkout, and refreshes the tax cache.
  • Improved (Pro): The license screen now clearly indicates when Pro licensing isn’t available yet, instead of rejecting a pasted key as “invalid”.
  • Improved: Internationalization — license and checkout interface text is now fully translatable, the bundled translation template is refreshed, and “VAT rate(s) removed” uses correct singular/plural forms.
  • Improved: A Free uninstall now also clears any leftover Pro background tasks, so a force-removed Pro leaves no orphaned scheduled actions.

June 6, 2026

Releases: v1.0.1 – v1.1.2

1.1.2

  • Fixed (Pro): The quarterly OSS report and CSV export could come back empty on stores using WooCommerce’s High-Performance Order Storage (the default order storage), silently understating the quarterly VAT filing. The report now uses a bounded date range and reads orders correctly on both the HPOS and legacy storage backends.
  • Improved (Pro): The Pro add-on now requires Free 1.1.1 or newer — the version whose VAT-rate lookup resolves Northern Ireland (XI) and the special EU territories the quarterly reports depend on — so an out-of-date Free install can no longer slip a 0% rate into a filing.

1.1.1

  • Manual adjustments validated server-side: the off-platform adjustment endpoint now re-enforces its own country filter (only cross-border EU member states; home country and non-EU rejected), so the legally load-bearing EUR 10,000 total cannot be skewed by a malformed request.
  • Northern Ireland (XI) resolves the correct rate: NI sales now report against the proper standard VAT rate instead of zero.
  • Failed-order refunds counted in reports: the quarterly OSS report now includes the reversal of failed orders, preventing under-declaration.
  • CSV-export safety: report/country CSV cells are neutralised against spreadsheet formula injection without corrupting legitimate numeric data.
  • Adjustment-driven threshold crossings now alert: recording an off-platform adjustment that crosses the threshold fires the same notifications as an on-platform sale.
  • Fail-closed currency conversion extended to the refund and recalculation paths; cleaner uninstall (also clears cached ECB rates and B2B-validation order meta).

1.1.0

  • Block checkout B2B capture: the VAT-number field now appears on WooCommerce’s block-based Cart/Checkout (Store API), not just the classic checkout. B2B customers can be VIES-validated and zero-rated regardless of which checkout your store uses. (Previously the field only existed on classic checkout, so it was invisible on modern stores.)
  • Reverse-charge compliance: zero-rated intra-community B2B orders now carry the required statement — “VAT reverse-charged — Article 196 of Council Directive 2006/112/EC” — plus the customer’s VAT number, on the order details and emails. A one-time order note is recorded, and an oss_reverse_charge_legend filter lets invoice plugins reuse the text.
  • Special EU VAT territories: sales that ship under an EU country code but lie outside the EU VAT area — Canary Islands, Ceuta, Melilla, Åland, French overseas departments, Büsingen, Heligoland, Mount Athos, Livigno, Campione d’Italia — are no longer counted toward the EUR 10,000 threshold; Northern Ireland is recognised as XI. The table is conservative (only high-confidence exclusions; mainland addresses unaffected) and extensible via the oss_territory_resolution filter.

1.0.3

  • VIES outages no longer mistax B2B customers: a temporarily-unreachable VIES service is now treated as “couldn’t verify, try again” rather than cached as an invalid VAT number, so a valid EU business is never silently turned into a taxed B2C sale.
  • Bounded VIES lookups: the VAT-number check now has an explicit overall timeout (it can’t hang a request) and any service/WSDL failure degrades to “unverified”.
  • Rate-limited validation endpoint: the unauthenticated checkout VAT-number validation is throttled per IP to prevent abuse of the outbound VIES calls.
  • Currency conversion fails safe: when EUR exchange rates can’t be fetched, threshold tracking pauses (with an admin notice) and uses the last known good rates, instead of counting unconverted foreign amounts against the EUR 10,000 threshold; it resumes and back-fills automatically once rates return.
  • Following-year obligation made explicit: the dashboard status, alerts, and automatic destination-rate logic now treat the entire year after you cross the threshold as “destination VAT required”.
  • Front-end safety: database schema upgrades no longer run on public page loads.

1.0.2

  • WordPress Coding Standards compliance: the full codebase (free + pro) now passes WordPress Coding Standards with zero errors.
  • PHP 7.4–8.3 compatibility: verified clean against the supported PHP range via PHPCompatibility.
  • Escaping & clarity hardening: added output escaping in a Pro report code path and made boolean precedence explicit in a couple of admin paths.
  • Internal refactors (behavior-identical): the uninstall routine is wrapped in a single prefixed function, and a shared notification helper moved to its own file.
  • Developer tooling: composer phpcs / phpcbf / phpcompat / test scripts, a phpcs.xml ruleset, and an svn-free bin/install-wp-tests.sh to provision the WordPress test suite (none of this ships in the plugin zip).

1.0.1

  • Stable threshold-crossed state: once you cross EUR 10,000, the “crossed” status is latched per year so it no longer flips back and forth as later orders, refunds, or recalculations come in.
  • Recalculation guard: overlapping background recalculations can no longer run at the same time and double-count or race.
  • More accurate partial refunds: refunds are now reconciled against a per-order ledger, so repeated or partial refunds reduce the tracked cross-border total by exactly the right amount.
  • Internal cleanup & deduplication: shared dashboard helpers, removal of a duplicate monthly digest in Pro (the Predictive digest is retained), and dead-code removal.
  • Expanded automated test coverage: the test suite grew to 220 tests covering threshold math, refunds, classification edge cases, and the order/dashboard surfaces.

June 5, 2026

Release: v1.0.0

1.0.0

  • Threshold tracking: Real-time tracking of cross-border B2C sales against the EUR 10,000 OSS threshold, aggregated per destination country and reset each calendar year.
  • Order classification: Automatic classification of orders as Domestic, EU B2C, EU B2B, or Non-EU; B2B (VAT-number / VAT-exempt) orders are excluded from the threshold.
  • Country breakdown: Per-country table of net cross-border sales, order counts, and share of the threshold, linking into the matching WooCommerce orders.
  • Dashboard: A One Stop Shop screen under WooCommerce with a threshold progress gauge and status cards, plus a wp-admin dashboard widget summarising your current position.
  • Order list column and meta box: Colour-coded OSS classification in the WooCommerce orders list and an “EU VAT OSS” meta box on each order (classification, destination, net amount).
  • Manual adjustments: Record off-platform sales (marketplaces, in-person) that also count toward the threshold, including negative corrections.
  • Email notifications: Alert when you reach the threshold and a follow-up when sales fall back below it.
  • Refund handling: Refunds and cancellations automatically adjust threshold and country-level totals.
  • Setup wizard and weekly VAT-data refresh; full WooCommerce HPOS compatibility.
  • Quarterly OSS reports (Pro): Country-by-country VAT-due tables per quarter, ready for your OSS return, with print and CSV export.
  • Auto-apply VAT rates (Pro): Apply each EU country’s destination VAT rate in WooCommerce automatically once you cross the threshold, with year-over-year carry-over.
  • VAT rate importer (Pro): One-click import of current VAT rates for all 27 EU member states into WooCommerce tax tables.
  • VIES VAT validation (Pro): Optional checkout VAT-number field with real-time validation against the EU VIES service; valid B2B orders are exempted automatically.
  • Multi-currency support (Pro): Automatic EUR conversion for threshold tracking using daily European Central Bank rates.
  • Predictive forecasting (Pro): Projected threshold-crossing date based on sales velocity, plus a monthly position digest.
  • Multi-level notifications (Pro): Additional alerts at 70% and 90% of the threshold and a monthly summary email.
  • CSV export (Pro): Export your country breakdown for accounting and tax filing.