The importance of your payment architecture is undeniably a critical facet of your application’s functionality. The UI/UX of your payment architecture are obvious considerations, but what are the core components required to build a well-rounded payment workflow? Designing and developing a payment architecture for your application can quickly become an overwhelming experience, especially if you aren’t an experienced developer. As a guide, we will identify and discuss the necessary components required for a subscription-based payment architecture based upon highly successful applications, mainly Namecheap. Regardless of your internal payment processing implementation (Stripe, Braintree, etc), these principles apply.
Establish your payment card CRUD functionality
Payment cards should be respected as any other model within your application providing the core CRUD functions. A subscription service will usually require you to persist a default payment card for payments and auto-renewal. This will require you to provide the customer with the necessary forms for the management of their payment cards. Generally speaking, the interface of your application should establish an obvious domain for the management of payment cards absent of any subscription or product information. In other words, customer action related to products or subscriptions should not be required to perform any CRUD functionality regarding their payment cards. Respect the property of your customer and allow them unhindered management of their payment cards, regardless of subscription or account state. This includes easily accessible forms for creating, updating and deleting payment cards. Do not require customer’s to call or email support to manage a subscription or payment card.
Set a default payment card
Explicitly set the customer’s first payment card as the default, as this will be the card that will be charged for auto-renewal subscriptions. It is important to have a default payment card, or even a first and second backup payment card for subscriptions or products that demand timely paid auto-renewal (Namecheap), as without it recurring charges will be impossible i.e. lost revenue. If the default payment card is deleted and the account has an active subscription then issue an email notification to alert the customer that an active payment card is required for uninterrupted service.
Provide an invoice/receipt
The customer’s account interface should provide an easy way to view all payments and download detailed invoices regarding payment card charges for any product or subscription. This is not a substitute for an email notification containing the invoice and charge details, but a supplementary component. Often, a customer will want a paper trail for review, tax or other financial purposes and providing this functionality is a cheap convenience for your customers. Stripe provides payment card charge invoices via an API call, and if you are using Ruby on Rails you can use PrawnPDF to build a customized branded pdf invoice.
Notify customer of payment cards that will expire soon
In order to avoid lost revenue to expired payment cards, notify your customer of payment cards on their account that will soon expire. Proactive customer service can pay exponential dividends, so there is really no excuse to not provide such functionality. Patrick McKenzie has written a short piece on this topic here.
- Provide CRUD functionality for a customer’s payment cards
- Set a default payment card for subscription-based services
- Provide a customized branded invoice for all payment card charges
- Issue an email notification for payment cards that will expire soon
- Do not require a customer support email or phone call to change a subscription or payment card
- Do not prevent a customer from deleting their payment cards
Do not be overwhelmed while developing a payment card or subscription integration. The myriad of payment processors such as Stripe or Braintree provides comprehensive APIs that allow easy integration and customer management via web consoles. The main focus of your customer payment card integration should be a focus on building a clean payment card management component(s).