FluentCart 1.3.23 – small things done right

FluentCart 1.3.23 focuses on the long tail of running a real store the moments where customers, licenses, and compliance details intersect. This release tightens how subscription lifecycles communicate with customers, sharpens the data that ends up on receipts and renewals, and removes a number of small frictions across licensing, checkout, and reporting.
It is a maintenance led release with meaningful additions on the edges that store owners and developers touch every day. The theme: clearer information, more reliable license delivery, and a smoother experience across the surfaces that quietly shape buyer trust.
Subscription cancellations now communicate the access end date
When a subscription is cancelled, customers should know exactly when their access ends not be left guessing whether cancellation is immediate or runs through the paid period. Cancellation emails now include the subscription’s access end date, giving customers a clear timeline and reducing the wave of “do I still have access?” support tickets that typically follows a cancellation.

For store owners running courses, memberships, or licensed products, this small change closes a recurring gap between billing and customer expectation.
VAT numbers on PDF receipts
Receipts now carry the customer’s VAT number in the address field of generated PDFs. For stores selling into the EU, UK, and other VAT jurisdictions, this is a compliance must and previously required manual workarounds. With VAT details rendered natively, FluentCart receipts are dropin ready for B2B customers who need them for their own bookkeeping.

Oneclick installer for licensed addons
The addons page now includes a oneclick installer for licensed addons. Instead of downloading, uploading, and activating each addon manually after a purchase, store owners can install directly from inside FluentCart. It collapses a multistep process into a single click and makes the addon ecosystem feel like a firstclass part of the platform rather than an afterthought.
LearnDash course expiration tied to subscriptions and licenses
For stores using LearnDash, course access can now be set to expire automatically based on the customer’s subscription or license expiration date. Previously, course access and billing lifecycles drifted a customer could keep accessing course content after their subscription lapsed, or lose access while still paying.
This addition aligns the two systems so course access mirrors the underlying commercial relationship. It is especially useful for membershipstyle course bundles and timelimited learning programs.
Improvements
Paddle email flexibility All default Paddle emails are now allowed and can be modified via filter hook. Stores running Paddle as their gateway gain finer control over transactional messaging without forking templates or disabling automation outright.
// Add or remove Paddle email notifications
add_filter('fluent_cart/paddle_allowed_email_notifications', function ($emails) {
// Default allowed emails:
// 'order_paid_customer', 'order_paid_admin',
// 'subscription_renewal_customer', 'subscription_renewal_admin',
// 'subscription_renewal_reminder_customer', 'subscription_renewal_reminder_admin',
// 'subscription_canceled_customer', 'subscription_canceled_admin',
// 'order_refunded_customer', 'order_refunded_admin'
// Example: also allow subscription expiration emails
$emails[] = 'subscription_expired_customer';
return $emails;
});
Refined product card and singleproduct styling Subtle visual adjustments to product cards and the singleproduct layout improve readability and visual rhythm across catalog and detail pages.
Fixes & Stability
Licensing & downloads. Several issues affecting customers on ported or migrated site URLs have been resolved both download token parsing and licensed package downloads now correctly handle URL changes after a site move. License status during the grace period no longer reports as “Expired”, giving customers and store owners an accurate view of where each license actually stands. PDF custom template deletion has also been fixed.
Data integrity. A missing fee_total column that surfaced during version upgrades has been corrected, the advanced filter merge relation has been repaired, and customer address update and delete permission handling now behaves as expected.
Compatibility & UI polish. Timezone resolution has been updated to handle PHP 8.4’s deprecated timezone aliases. Reports and dashboard empty states now render correctly in dark mode. Product variant cost fields now accept comma decimal separators for locales that use them. Subscription interval units render in the singular form where appropriate. The editor modal now closes correctly when navigating from iframe links. The inventory menu now verifies the stock module is active before rendering, and the missing checkout info label in gateway settings has been restored.
Security & maintenance. This release includes ongoing security audits and routine hardening across both FluentCart core and FluentCart Pro.
Closing
1.3.23 is a quiet but meaningful step forward. Subscription communication is more transparent, receipts are more complianceready, licensed addons install in a click, and a long list of papercut fixes removes friction across checkout, reporting, and license delivery. Each change is small on its own together they reflect FluentCart’s continued direction: a selfhosted commerce platform that gets sharper, more reliable, and more thoughtful with every release.
In Case You Missed Recent Updates
1.3.22 (Mar 13, 2026)
- Adds Gutenberg Package Description block
- Adds New stock management in Pro
- Improves Package Description support for block themes & emails
- Improves Email templates with 5 new merge tags
- Fixes Shipping zone list loading issue
1.3.21 (Apr 22, 2026)
- Adds AWS S3 storage driver with guided three-step setup wizard
- Adds S3 bucket creation, browsing, and selection from admin
- Adds S3 connection verification and credential validation
- Adds S3 Block Public Access toggle in setup flow
- Adds presigned download URLs with configurable expiration
- Adds two auth modes: wp-config.php constants and encrypted database
- Adds S3 reset and reconfigure flow
- Adds pluggable storage driver architecture
- Adds unified provider list with enable/disable toggles
- Improvements storage settings UI with loading states and polished labels
- Fixes PayPal checkout security to ensure pricing integrity
- Fixes checkout error on null product reference
- Fixes SKU duplicate issue in product variation creation
- Fixes provider badge not displaying correctly on files
- Fixes bucket creation, dropdown selection, region mismatch, and fetching
- Fixes S3 file deletion behavior
- Adds Cloudflare R2 storage driver with dedicated setup wizard
- Adds R2 bucket creation with jurisdiction selection
- Adds R2 connection verification and bucket browsing
- Adds R2 file upload, download, and delete operations
- Adds R2 presigned download URLs with AWS4-HMAC-SHA256 signing
- Fixes PDF template styling issue
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