FluentCart 1.4.0 – Smarter Tax Engine, EU-Ready at the Core

FluentCart 1.4.0 focuses on the parts of a store where money, trust, and tax rules meet. Most of the work this cycle went into making tax legible: not just calculated correctly behind the scenes, but visible and explainable on every surface a customer or store owner ever looks at. Alongside that, this release opens the store up to a new kind of helper, lets the numbers come to you instead of you chasing them, and tightens recurring revenue so subscriptions behave the way both sides expect.
It is a feature-led release with a long tail of reliability work underneath. The theme: clearer tax at every step, smarter ways to read your store, and steadier subscriptions and payments.
Tax That Explains Itself on Every Receipt, Page, and Email
Tax is the area customers question most and store owners least enjoy defending. When a total does not obviously add up, it turns into a support ticket or a lost sale. This release rebuilds tax so the math is shown, not hidden. Every place a tax figure appears – the checkout summary, the thank-you page, the browser receipt, the email, the PDF receipt, the admin order view, and the customer’s own account – now breaks tax down per item and per rate. A buyer can see precisely how each line was taxed, and you can answer “why is my tax this amount” by pointing at the receipt instead of recalculating it by hand.

The same care extends to harder cases. Carts that mix tax-inclusive and tax-exclusive products now total and display correctly. Reverse charge is handled properly for stores selling across EU borders to VAT-registered businesses, including a dynamic price mode so stores that advertise tax-inclusive prices still show the right adjusted total to a B2B buyer. You can choose exactly which EU countries you collect VAT in, register your details inline, and lean on a clear warning when a VAT ID is missing rather than discovering the gap later.

New stores feel this immediately. FluentCart now ships with built-in tax rates across Africa, the Americas, Asia, Europe, and Oceania, and a guided tax step now sits inside onboarding. Day-to-day work gets easier too: tax overrides can target a specific city or postcode, individual product variations can override tax inclusion, and creating or editing an order in the admin calculates tax for you on save. The practical result is fewer tax surprises at checkout and far less manual reconciliation after the sale.
What is new in tax
- EU B2B reverse charge – full flow with price mode (fixed vs. dynamic), strikethrough pricing, reversed shipping tax, across checkout, admin, emails, PDF, and receipts.
- Per-item tax rate breakdown – itemized rate rows on every order surface. Learn more
- Mixed cart tax handling – inclusive/exclusive products in the same cart, including fee tax and subscription initial charges. Learn more
- Per-variation tax inclusion override – individual variations can override store-level setting
- Tax class selector for shipping – per-rate shipping tax with its own tax class and label
- City/postcode granularity – specificity-based matching for tax overrides
- Specific-country EU VAT collection – inline registration UX per destination country. Learn more
- Built-in tax rates – pre-loaded for Africa, Americas, Asia, Europe, and Oceania
- Tax setup in onboarding – step 2 of 4 for new stores. Learn More
- Price suffix split – separate fields for tax-inclusive and tax-exclusive labels
- Auto-calculate tax on admin orders – tax recalculates on save
- Seller Tax ID – in store settings, consolidated from Pro PDF settings
- Enable/disable toggle per country tax page. Learn More
- RC badge on the Taxes admin page
For developers: fluentcart_eu_vat_number_validate for third-party EU VAT number validation, fluent_cart/tax_collecting to control tax collection at runtime, and a reset_tax WP-CLI command.
Your Store’s Numbers, Delivered to Your Inbox
Insight only helps if you actually see it. Store Digest emails let you opt into a daily, weekly, or monthly summary of your store’s key numbers, sent straight to your inbox. Instead of remembering to open the dashboard, the important figures arrive on a rhythm you choose, keeping a finger on the store’s pulse without a daily login. Store Digest documentation

Per-Item Coupon Breakdown
Coupon discounts are no longer a single line at the bottom of the order. Per-item coupon discounts are now stored in line_meta with correct formatted totals, and per-item strikethrough pricing appears on the checkout order summary, admin order detail, and receipt slip. Customers see exactly how much each item was discounted, and store owners see the same breakdown in the admin.
Improvements
Consistency across surfaces. The tax summary card is now the same reusable component across checkout, receipts, emails, and the admin, so what a customer sees on the thank-you page matches what lands in their inbox and on their PDF. Live settings let many changes take effect across the store immediately, without a page reload, which makes configuring a store feel responsive instead of stop-and-start.
Admin tools. Product list columns are now configurable. The fluent_cart/show_admin_top_bar filter lets you hide the admin top navigation bar when embedding FluentCart in custom admin pages. B2B badges appear on admin and customer single order pages, with B2B purchase and reverse charge filters in the orders table.
Bricks Builder. The ProductAddToCart element has been renamed to BuySection with query-type product selection. Product selection controls have been added to ProductGallery, ProductContent, ProductShortDescription, ProductStock, and PriceRange. Iframe embed support and icon-only button rendering have also been improved.
Pricing Table. Product-per-row layout control, a configurable recommended badge, installment variant handling, and active class support for styling the selected plan.
Built to be extended. For developer-tools and agency stores, several store moments – tax validation, gateway notifications, and more – are now adjustable through filters. The extensibility stays out of the way until you need it, then it is there.
Fixes and Stability
Tax (25+ fixes). Reverse charge and dynamic price mode enforced correctly when local RC is off. EU VAT reverse charge with inclusive shipping corrected. Inclusive shipping tax excluded from payable total. Breakdown display suppression and RC multi-component row rendering fixed. Tax rate badge no longer strips trailing zeros. Shipping inclusive label driven by store mode. Correct coupon base and admin line total under dynamic reverse charge. Stale signup fee tax config cleared. Checkout tax summary tooltip made context-aware. “Tax” label shown as fallback. B2B business info gated on order intent. EU VAT registrations migrated from wp_options to fct_meta for reliability.
Subscriptions and recurring revenue. Subscription billing columns now use the subscription’s own currency rather than the store default. Valid subscriptions are no longer wrongly expired by an empty next-billing date. Canceled subscriptions stop re-running expiry on every cycle and expire immediately without grace period. Renewals reliably keep their linked subscription, and zero-value renewal entries no longer clutter the view after a reactivation.
Payments and gateways. A case that falsely blocked a payment retry has been fixed, and Stripe refunds are now fetched separately when not embedded in the charge object. In Pro, Paddle is noticeably steadier: subscriptions migrated from EDD now renew correctly, payment buttons no longer allow accidental double submissions, the checkout no longer gets stuck after a canceled or unconfirmed payment, receipt-page configuration is checked up front, and end-of-period cancellations send the right emails. Mollie now handles tax correctly on mixed carts, and a wrong transaction status has been corrected.
Checkout and orders. Saved addresses now take priority over stale values left on the page, state validation is skipped where a country has no states, business fields are preserved through the flow, and single-shipping-method is auto-selected server-side. Single order views show the order’s own currency, shipping method titles display reliably, and admin-created orders inherit the correct fulfillment type from the product.
Storefront polish. Tax labels and strikethrough pricing render cleanly. Empty tax rows stay hidden. The invisible bot-check widget falls back gracefully when it cannot verify automatically. In Pro, fees no longer show up as product line items on PDF receipts and instead appear in the summary where they belong. Full billing name now renders correctly in PDF receipts.
Breaking Changes
This release includes changes that may require action if you use custom code or third-party integrations:
- Two filters removed:
fluent_cart/order_payment_success_statusesandfluent_cart/payment_retryable_statuseshave been removed. If your code hooks into either filter, those hooks will silently stop firing. Remove theadd_filtercalls. - EU VAT registrations migrated: Data moves automatically from
wp_optionstofct_meta. Any code reading EU VAT registrations directly fromwp_optionswill get stale data after the migration. Use the FluentCart API orTaxManagerinstead. - Local reverse charge defaults to disabled: Fresh installs default to off. Existing installations keep their saved value.
- Bricks element renamed:
ProductAddToCartis nowBuySection. Bricks templates using the old element name will need updating.
Acknowledgements
Releases like this do not happen in a vacuum. Two community members left fingerprints all over 1.4.0.

Juraj Hudák of Plexcore handed us a 218-field developer brief that became the fiscal backbone of this release. The order data model, seller settings, merchant VAT status rules, and the groundwork for Peppol e-invoicing all trace back to it, built on one principle: the invoice is the data model, and one source feeds receipts, e-invoices, and accounting exports.
Jorge de los Reyes Martínez shaped how tax looks to the person actually paying it. His checkout UX and EU VAT research gave us the “one checkout, one display mode” principle, the customer-facing VAT ID field with per-country mapping, the rebuilt checkout prototype, and free EU VAT-rate data that means FluentCart never has to call a third-party tax service.

Update Notice: You may not see the latest version yet due to WordPress.org’s new 24-hour Security Cool-Down period for plugin releases. Once the cool-down ends, the update will appear automatically.
To get it sooner, you can update instantly through the FluentHub plugin (previously FluentKit).
Learn more about the cool-down policy: https://wordpress.org/news/2026/06/pts/
Closing
1.4.0 is a substantial step forward that still feels of a piece with FluentCart’s direction. Tax is now transparent at the line level instead of a black box, key numbers arrive on a schedule, and a deep list of subscription, payment, and checkout fixes makes the everyday flow more dependable. The headline features change what the platform can do, while the quieter repairs make what it already did more trustworthy – and that combination is the shape of a commerce platform maturing in public, release after release.
Full Changelog
Tax: New Features
- EU B2B reverse charge flow across all order surfaces
- Per-item tax rate breakdown on checkout, admin, emails, PDF, and receipts
- Mixed cart tax handling for inclusive/exclusive products
- Per-variation tax inclusion override
- Tax class selector for shipping overrides
- City/postcode granularity for tax overrides
- Specific-country EU VAT collection mode
- Built-in tax rates for Africa, Americas, Asia, Europe, and Oceania
- Enable/disable toggle per country tax page
- Auto-calculate admin order tax on save
- Tax setup step in onboarding
- Price suffix split for inclusive/exclusive labels
- Seller Tax ID in store settings
- RC badge on Taxes admin page
fluentcart_eu_vat_number_validatefilter for third-party VAT validationfluent_cart/tax_collectingfilter for runtime tax controlreset_taxWP-CLI command
Other Features
- Store Digest emails (daily, weekly, monthly)
- Per-item coupon discount in line_meta with strikethrough display
- B2B badge on admin and customer order pages
- B2B purchase and reverse charge filters in orders table
- Unit price rounding tooltip on 1-cent mismatch
- Hash-based deep linking for settings sections
- Configurable product list columns
fluent_cart/show_admin_top_barfilter- Bricks BuySection with query-type product selection
- Bricks product selection controls on Gallery, Content, ShortDescription, Stock, PriceRange
- Bricks iframe embed support in product content element
- Pricing table product-per-row layout and configurable badge
- Live settings propagation without page reload
- Auto-select single shipping method at checkout
- Global search results gated by user permission
Fixes
- 25+ tax-specific fixes (reverse charge, breakdown display, mixed cart, shipping labels, rate badges, tooltip, coupon base)
- Subscription currency in billing column
- Zero-value renewal orders hidden on reactivation
- Subscription expiry race condition, orphaned meta, and zero-date next_billing_date
- Canceled subscriptions expire immediately without grace period
- Missing subscription on renewal order and parent order item fallback
- Falsely blocked payment retry
- Stripe refunds fetched separately when not in charge object
- Paddle: EDD migration renewals, double-submit prevention, overlay stuck on cancel, receipt page validation, end-of-period cancellation emails (Pro)
- Mollie pre-payment tax for mixed carts (Pro)
- Checkout: saved address priority, state validation, B2B field preservation, country detection
- Modal checkout coupon strikethrough
- Coupon null dereference when no coupons applied
- Order currency displayed instead of store currency
- Fulfillment type inherited from variation on admin orders
- Shipping method title on admin order detail
- PDF: full billing name, fee lines moved to summary, seller identity bridged (Pro)
- Logo SVG path warning from build ZIP install
- Webhook 301 redirects on subdirectory installs
- Turnstile widget fallback on auto-verify failure
- NULL values in subscription report rounding
In case you missed
1.3.28 (May 14, 2026)
- Search Bar widget for Elementor.
- Store Logo widget for Elementor.
- Customer Dashboard Button widget for Elementor.
- Product Package Description widget for Elementor, standalone or inside Product Info.
- Draggable, reorderable summary sections inside the Elementor Product Info widget.
- Elementor Popup support for Single Product: variations, gallery, and quantity now work in popups.
- Sort By toggle for the Bricks Products Collection element.
- fluent_cart/show_admin_top_bar shortcode for hiding top menubar.
- LearnDash course management: missing pieces completed.
- Mollie payment list now respects the store’s currency.
- Coupon failures show the specific reason at checkout.
- FluentCart Elementor widgets grouped under one “FluentCart Product” category.
- 1-column checkout layout renders correctly in Elementor templates.
- All Bricks elements grouped under one “FluentCart” category.
- Cleaner admin menu spacing on mobile.
- Decimal trimming logic to only remove trailing zeros when decimal point exists, preventing incorrect formatting of integer tax rates.
- Global search is now with slash (/) instead of (cmd + k).
- Elementor Single Product widgets (Title, Price, SKU, Stock, Buy Section, Gallery) now sync to the active variation.
- Buy button reflects the active variation’s purchase state.
- Stock badge clears when a variation has no stock data.
- Stock label renders as text, not raw markup.
- Empty Elementor product widgets (Excerpt, SKU, Stock, Price) no longer leave empty wrappers.
- Product-template widgets hidden in Elementor outside Single Product documents.
- Product Info widget renders correctly in the Elementor editor; Select2 change events fire reliably.
- Pricing Table shortcode and block render correctly, including group_by tabs.
- Single Product shortcode renders fully: variations, thumbnails, and quantity all work.
- Product descriptions render correctly when third-party shortcodes or blocks need product context.
- Customer Dashboard, Product Card, Product Search, and Pricing Table blocks render in FSE templates and parts.
- Admins can always view a receipt, even on a record that would normally show the not-found page.
- Search Bar widget honors the “Same Tab” setting.
- Enter key in the product title field no longer submits the form.
- Bricks Product Title element renders consistently across layouts.
- French overseas territory VAT mapping issue.
1.3.27 (May 08, 2026)
- Licensing Sites page with top-level list, detail view, and advanced filters
- Variation details shown in licensing site view
- Bricks Builder List/Grid view switcher for product listings
- Bricks Builder customizable display names for category filters
- Bricks Builder partial-match toggle for product search
- Bricks Builder live filter toggle for instant result updates
- Bricks Builder Allow Out Of Stock control for product listings
- Subscription reactivation now triggers integrations and customer emails
- License re-activation on subscription reactivation
- Copy Variation ID action in simple product pricing panel
- Add-More button for faster variant creation
- Tax notes support in PDF receipts (Pro)
- Table filter animations with smoother search bar and fewer background requests
- Bricks Builder rendering rebuilt for speed on product-heavy pages
- Bricks Builder pagination rebuilt for larger catalogs
- Auto-expand pricing section on validation errors for faster editing
- Subscription interval labels and upgrade-path payment summary now translatable
- Offline-payment subscriptions with 100% recurring coupon not activating
- Subscription reactivation after refund failing end to end
- PayPal subscription syncing out of step with gateway
- Authorize.net subscriptions blocked on fully-discounted setups
- LearnDash course expiration not clearing on subscription completion (lifetime access)
- PDF receipts missing dynamic fields in item table
- Long file names pushing download button off-screen on receipt page
- Cart allowing multiple subscriptions in one order
- Cart allowing subscription mixed with one-time product
- Order bump free-shipping checkbox not syncing on product change
- Deleted store pages triggering background errors
- Admin menu highlight bleeding into adjacent menu items
- Bricks Builder dynamic content field and category filter inconsistencies
- Licensing Site Detail amount formatting and customer profile rendering (Pro)
- Ongoing security audits and routine hardening
1.3.26 (May 05, 2026)
- Adds Square Payment gateway
- Adds Private products support in discounts, coupons, and order bumps
- Adds Subscription setup fee to receipts and emails
- Fixes Order/invoice dates showing previous day in profiles
- Fixes Coupon expiration timezone mismatch
- Fixes Duplicate success toast on product update
- Fixes Email preview created_at DateTime issue
- Fixes Safari chevron icon visibility issue
- Fixes Menu button and dropdown styling issues
- Fixes LearnDash course expiry resolution for users
- Improves button feedback with visual indicators only
- Fixes Skip subscription field validation when subscription is disabled
- Fixes Auto-expand Additional display prices section when subscription is enabled
I’m Jewel, founder of FluentCart and CEO at WPManageNinja, the team behind Fluent Forms, Fluent CRM, Fluent Support, FluentLogs and a handful of other WordPress plugins. I have been writing WordPress code since 2009 and still think of myself as a developer first and an entrepreneur second. Most of what I write on this blog comes from arguments we have had inside the team about how to build software people can actually depend on.

Subscribe now






Leave a Reply