FluentCart for Membership Billing: Custom Front End with FluentCart as the Billing Engine?
We are currently configuring FluentCart Pro for recurring monthly membership billing for a local business networking organization. We've made good progress, but our use case is somewhat different from a conventional eCommerce store, and I'd appreciate some guidance from experienced FluentCart users and the FluentCart team.
Our members pay a fixed monthly membership fee plus 5% GST. We eventually intend to use Authorize.Net for credit card payments while retaining offline payment by Interac e-Transfer, cheque or cash when necessary.
We have successfully tested FluentCart's subscription/billing process, including:
- Monthly recurring subscriptions
- GST calculation
- Offline payments and pending orders
- Manually marking offline orders as paid
- Subscription activation, renewal dates and pausing
- Customer purchase/subscription history
- Receipt generation
- Custom invoice numbering
- Creating the invoice/receipt number when the order is created rather than waiting for payment
The underlying FluentCart billing and subscription engine appears capable of doing most of what we need.
Our challenge is primarily the customer-facing workflow.
For example, with an offline subscription payment, the member can currently encounter a workflow similar to:
Checkout β Place Order β Payment Pending β Customer Dashboard β Pay Now β Checkout again
For a membership organization, this can be confusing. The member has already received the invoice and instructions for paying by e-Transfer, cheque or cash, so a subsequent "Pay Now" action that returns them to checkout isn't necessarily appropriate.
We have successfully used WordPress filters/snippets to modify some FluentCart terminology, but before going further down that road, we'd like to understand what FluentCart officially supports for creating a custom customer-facing experience while retaining FluentCart as the billing and subscription engine.
Our ideal workflow would be:
FluentCart generates monthly billing β Member receives invoice notification β Member opens our branded invoice page β Member pays β FluentCart records payment β Member receives confirmation/receipt
We already have a custom WordPress invoice page that can display the member's name, invoice number, invoice date, due date, billing period, membership amount, GST, total due and payment instructions, with Print/Save as PDF capability.
Rather than recreating FluentCart's billing functionality, we'd prefer to have our interface consume FluentCart's data and let FluentCart remain the system of record for subscriptions, orders, taxes, payment status and transactions.
A few questions:
- Can FluentCart's default Confirmation/Payment Pending experience be replaced or redirected to a custom WordPress page without interfering with the underlying order and subscription processes?
- Is there a supported API, PHP model, shortcode or set of hooks for retrieving an order's invoice number, amount, GST/tax, payment status, billing/renewal information and subscription information for display on a custom page?
- Can a custom Pay Invoice button initiate payment against an existing unpaid FluentCart order without requiring the member to navigate the standard FluentCart Customer Portal/checkout workflow?
- Can we provide our own Print/Download Invoice and Download Receipt actions while still using FluentCart's underlying order/receipt data?
- Can FluentCart's Customer Portal be selectively customized, for example removing or redirecting Pay Now, Downloads, Purchase History or other elements that aren't appropriate for our membership application? Or would the recommended approach be to build our own member billing interface using FluentCart data?
- With Authorize.Net, can an existing unpaid subscription renewal invoice/order be paid from a custom payment page? More importantly, does FluentCart support automatic recurring charging through Authorize.Net, or must the member actively pay each renewal?
- Are there supported hooks/actions for events such as subscription paused, resumed, cancelled, renewal generated and payment received so we can trigger our own member/admin notifications?
- Most importantly, is this type of implementation within FluentCart's intended extensibility, or would replacing this much of the customer-facing interface create maintenance/update problems?
We are particularly interested in knowing which FluentCart APIs, hooks, models and endpoints are considered public/stable for this type of development, and which frontend components developers should avoid overriding because plugin updates could break those customizations.
We're not trying to replace FluentCart's billing engine. Quite the opposite. If possible, we'd like FluentCart to remain the system of record for subscriptions, orders, taxes, payments and transactions, while our WordPress site provides a simpler branded membership-billing experience to the member.
If anyone has implemented FluentCart for memberships, associations, service contracts or recurring invoicing rather than a traditional online store, I'd be very interested to hear how you approached it.