Changelog
September 13, 2026
Releases: v1.7.2 – v1.7.3
1.7.3
- Fixed: In the year a store crosses the EUR 10,000 threshold, OSS now applies from the sale that crosses it, not from 1 January. The filing calendar starts in that quarter, so earlier quarters no longer show as “Overdue” or send overdue reminders.
- New: Optional OSS registration start date under Settings, for voluntary or pre-existing OSS registrations.
- New: The order screen shows whether each cross-border B2C sale falls under OSS or home-country VAT.
- Fixed: French addresses with a Monaco postcode (980xx) were treated as outside the EU VAT area. Monaco is taxed as France.
- Fixed: No “rates no longer required” email while a voluntary OSS registration is in effect.
- Fixed (Pro): Quarterly OSS reports, CSV exports and filing-reminder figures included sales made before the threshold was crossed. They now contain only sales made while OSS applied. Earlier sales appear in a separate table for the domestic return, and the per-order audit CSV has a new VAT Scheme column.
- Fixed (Pro): Imported destination rates charged full VAT in territories outside the EU VAT area (for example 21% on Canary Islands orders) and no VAT in Northern Ireland. Those territories now get 0%, and Northern Ireland gets its rate. If you imported rates, re-import them once.
- Fixed (Pro): A license that renews could lose Pro features for up to a week after its stored expiry date. It is now re-checked straight away, with a short grace period.
- Fixed (Pro): The 90% threshold alert said OSS registration is mandatory. It now explains that destination VAT applies and that OSS is the simplified way to report it.
- Fixed (Pro): Report links in filing reminders and on the Reports tab opened the wrong year.
- Compatibility: Pro now requires Free 1.7.3.
1.7.2
- Fixed: The optional VAT data feed request no longer sends your site URL. WordPress includes the site URL in its default User-Agent, so the plugin now sends a neutral one, matching the promise that the request carries no information about your store.
- Compatibility: Tested up to WordPress 7.1 and WooCommerce 11.1 (full test suite, Plugin Check, and classic and block checkout verified end to end).
- Updated: The plugin description, features, and FAQ now cover the filing calendar, reduced rates, location evidence, and rate-change alerts. A new External services section documents the opt-in rate feed.
July 5, 2026
Release: v1.7.1
1.7.1
- Fixed (important): emails could silently never send alongside SMTP or email-customizer plugins. The threshold alert and filing reminders registered with WooCommerce’s mailer too late; a mailer initialized early by another plugin was cached without them. Email classes now register at
plugins_loaded, and every send path — including the Pro monthly digest — falls back safely instead of dropping silently. - Fixed: filing reminder subjects were always generic. They are now stage-aware (“Q2 2026 OSS return is due by July 31, 2026” vs “appears to be overdue”), support
{quarter}and{deadline}placeholders in customized subjects, and cannot bleed wording between reminders sent in the same run. - Fixed: checkout VAT feedback no longer reads “Invalid: ✕ Invalid VAT number” — one clean, translatable message, announced to screen readers via a live region. The field is now labelled “Business VAT number”.
- Improved: quarterly reports list countries by net sales (matching the dashboard); the location-evidence review is styled like the other report sections and order screens deep-link to it; the settings notification reference includes the new email types; Pro alert emails use button CTAs.
- Quality: 534 unit tests, 17 end-to-end browser tests (including a new evidence-resolution flow), Plugin Check clean, and an adversarial review round on the fixes themselves.
July 4, 2026
Release: v1.7.0
1.7.0
- OSS filing calendar: the dashboard now tracks each quarter’s return deadline (end of the month after the quarter), with a one-click “Mark as filed” record and email reminders 14 days out, 3 days out, and once when a return goes overdue — each sent at most once. Pro reminders include the quarter’s real figures (countries, net sales, VAT due) and a direct report link.
- VAT rate-change alerts: every rates-feed refresh is diffed against your active data. Detected changes — including future-dated ones announced ahead of time — surface as an admin notice, and rate lookups switch to the new rate automatically on its effective date. With Pro and auto-apply enabled, your WooCommerce tax rates are re-imported automatically that day, with a confirmation email; otherwise you get an action-needed alert with a re-import link.
- Location evidence review (Pro): orders whose billing/IP evidence contradicts are queued for review under Reports. Resolving a conflict records who confirmed which country and applies it on the next recalculation; the per-order audit CSV gains evidence and resolution columns.
- Personalized setup finish: the wizard’s completion step now shows your actual standing against the €10,000 threshold with guidance matched to it (hidden when Pro is installed).
- Verified plugin compatibility: tested against live installs — Germanized (free) no longer hides the VAT field (only Germanized Pro collects VAT IDs; its
_billing_vat_idmeta is now recognised for B2B classification), the Aelia EU VAT Assistant detection matches its real class, and the EU/UK VAT Manager is detected. The full checkout money path passes with Germanized, Aelia, and Polylang active. - Quality: 41 new unit tests (530 total) and 2 new end-to-end tests (16 total); an adversarial review round with all findings fixed and regression-tested.
July 3, 2026
Releases: v1.4.1 – v1.6.0
1.6.0
- Reduced & super-reduced VAT rates (opt-in): map WooCommerce tax classes to OSS categories and the plugin resolves per-category destination rates from a verified, effective-dated EU dataset. Quarterly reports split each country into per-rate lines, and the Pro importer creates per-class WooCommerce tax rows. Off by default — everything stays on the standard rate until you enable it.
- Maintained rates feed (opt-in): a one-click button fills in Sellinor’s maintained EU VAT data feed so member-state rate changes reach your reports without a plugin update. Weekly fetch of rate data only; nothing about your store is ever sent, and the plugin still makes no external requests unless you opt in.
- Capture-time currency conversion: each tracked order stores its EUR net and FX rate at the moment of sale; refunds and recalculations reuse or refresh that capture consistently, so historical totals never drift when exchange rates move.
- Location evidence (advisory): billing vs shipping vs IP country captured on each tracked order for OSS audit support, with conflicts flagged on the order. The IP lookup never contacts an external geolocation API.
- Historical rate accuracy: quarterly reports resolve rates as of the reported quarter and invoice snapshots as of the order date, so past periods keep the rate that was in force then.
- Fixed: setup wizard page registers with a resolvable parent, preventing a PHP 8.1+ deprecation from breaking the wizard’s styling and tab title.
- Quality: 490 unit tests plus a new Playwright end-to-end suite covering checkout (classic + block), VAT exemption, dashboard, reports, settings, and the wizard.
1.5.0
- New: after 30 days of active tracking, the dashboard shows a one-time, fully dismissible note asking for a WordPress.org review — shown once, never again after any interaction.
- Improved: the “rates no longer required” email now renders in your store’s WooCommerce email template, matching the threshold alert and the Pro digest.
- New (Pro): a per-order audit CSV export on the dashboard — one row for every order that has ever been OSS-classified in the year (including reversed and refunded ones), with date, status, destination country, net tracked amount, refund total, whether it currently counts toward the threshold, and the claimed VAT number with its VIES verdict. Built for accountants and tax audits.
- Improved (Pro): the 70% and 90% early-warning emails now render in your store’s WooCommerce email template. These changes ship in the separate Pro add-on.
- The Pro add-on now requires Free 1.5.0.
1.4.1
- Fixed (Pro): the OSS filing deadline in the monthly digest rendered one day late on sites with a positive-offset timezone — i.e. most EU stores (“due by 1 August” instead of 31 July). Deadline and projection dates are now formatted in UTC, with a regression test pinning Europe/Berlin behavior.
- Fixed (Pro): previewing the monthly digest under WooCommerce → Settings → Emails now renders with live store data instead of PHP warnings, and the subject preview shows a real summary instead of a placeholder.
- Fixed (Pro): a request arriving exactly while the monthly digest was sending could schedule a duplicate recurring digest; country share percentages are clamped when negative manual adjustments deflate the total.
- Updated: both translation templates regenerated (the free .pot had gone stale at 1.2.0 and was missing 15 strings); the Pro add-on now ships its own .pot so it can be translated independently.
- Housekeeping: uninstall additionally removes cached VIES verdicts and rate-limit counters, the recalculation cooldown, the demo-seeder marker, and the plugin’s WooCommerce email settings; the free email templates are now covered by the coding-standards and PHP-compatibility CI checks; the WordPress.org deploy job requires the build job to succeed first.
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: woocommerceheader (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_legendfilter. - 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_legendfilter 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_resolutionfilter.
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/testscripts, aphpcs.xmlruleset, and an svn-freebin/install-wp-tests.shto 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.