Background
In the original invoice template, payment buttons were
conditional. Depending on the user’s stored payment details, certain options
would be hidden. The intention was to simplify the interface and avoid
duplicate payment setups, but in practice, it created confusion.
Original Behavior (Before Update):
- Authorize.Net (Store Card Payment): Only displayed if Authorize.Net
Subscriptions were enabled and the user did not already have a stored card and
did not have a GoCardless mandate on file.
- GoCardless (Setup Direct Debit): Only displayed if GoCardless was enabled and
the user had not already signed a mandate.
- PayPal / Stripe / Spreedly / Other Gateways: Displayed when the corresponding
provider was enabled, regardless of other payment details.
- Result for End Users: Once a customer set up a recurring card payment or
direct debit, the related “setup” option would disappear. If they later wanted
to change their card or switch to another payment method, they would not see
all options anymore.
New Behavior (After Update)
With the latest update, we have removed the restrictions
that hid buttons based on previously stored details.
All enabled payment providers are now always visible to all users, including:
- PayPal
- Store Card Payment (Authorize.Net Subscription)
- Store ACH Payment (Forte/eCheck)
- Additional gateways (Stripe, Spreedly, ePay, etc.) if enabled in the system
What This Means for End Users:
- Customers can always see and choose from all available payment methods.
- They are not “locked in” once they have stored a card or direct debit.
- They can update their card, switch from card to ACH, or re-enter details if
their payment method expires or fails.
What This Means for Admins:
- Fewer support requests from customers asking “Why don’t I see a card/ACH
option anymore?”
- More flexibility for customers, but slightly more cluttered payment UI.
Optional Enhancement (Requires Additional Programming)
While the current update ensures all enabled payment methods
(ACH, card, PayPal, etc.) are always visible, there is an opportunity to
improve the user experience with extra development work:
- Dynamic Labels & Behavior:
• If a user already has a card saved,
show “Update Card on File” instead of “Store Card Payment.”
• If a user already has a GoCardless
mandate, show “Update Bank Account” instead of “Store ACH Payment.”
• If any method exists, display helper
text: “Updating here replaces your saved payment method for future charges.”
- Why This Matters:
Avoids confusing users who may think
they are adding another card when in reality they are replacing their stored
method.
- Technical Impact:
• Requires editing the invoices.htm
template beyond the visibility changes.
• Must reference the
HasEnteredPaymentDetails flag to determine whether to show “setup” or “update”
states.
• PayURL endpoints must be switched
between setup and update depending on the scenario.
- Status: Not included in the current rollout. Will require additional
programming effort if adopted later.
Email Scope Alignment
This KB article and the changes implemented directly align
with the commitments made via email:
- Option 1 (always showing ACH, card, and PayPal): Implemented.
- Approval Process & Prerequisites: Confirm approval contact, access to
test user account, and permission to edit the template.
- Steps Completed:
• Reviewed template logic.
• Updated visibility logic so ACH,
card, and PayPal all appear regardless of stored payment method.
• Tested scenarios with card-only,
ACH-only, and no payment method.
• Confirmed Forte ACH flow works.
• Verified card and PayPal unaffected.
• Documented all changes in this KB.
- KB Article for the team: Summarizes changes, outlines test approach, and
provides a permanent reference.
Summary
- Old Behavior: Buttons were hidden once a payment method
was stored.
- New Behavior: Buttons are always visible to all users, giving customers full
flexibility.
- Optional Enhancement: Future code changes could improve clarity by
dynamically showing 'Update' instead of 'Store' labels.
This change reduces support overhead, empowers customers to manage their own
payment preferences, and creates a clearer pathway for handling expired or
failed payment methods.