Since I started in Duda, all the features I was involved in as a product manager were related to online payments: app store, client billing, e-commerce, and membership. I was also responsible to billing Duda users under a unique and complex billing scheme. In this post, I would like to share with product managers the knowledge I gained during this time. The following is some advice from my experience. Don’t repeat my mistakes! 🙂
The content is recommended for you in case you are:
In this post you will find:
Many of the advice here is true for any kind of product management work but becomes crucial when dealing with payments and billing.
Simplicity is always important in product design. It’s even more important with payments and billing. Payments are sensitive, people are generally more concerned and stressed when paying or when dealing with billing. Therefore all the reasons for keeping things simple and standard apply with much greater importance.
Do not innovate! Unless your product innovation is tightly tied to its pricing, payment, or billing experience. Make people understand and feel comfortable by giving them what they are used to and familiar with. At some point I coined a phase in Duda: “if Stripe does not support it out-of-the- box, we should not do it.” The reason here is that Stripe is serving thousands of SaaS companies like Duda, and if their product managers did not think that some payment or billing feature or behavior is a good idea to be part of their product, so probably no other company really needs it, and most chances that we also don’t need it.
Duda’s original billing systems included a lot of custom features. When we developed Duda’s Client Billing, we decided not to support any idea or request that cannot be created by using Stripe features as-is. And actually, we did not hear much demand for such features. From my experience, coming up with non-standard payments and billing requirements is often a result of group thinking within the company and a false sense that “we are special and should do things in a different way.”
The second reason to keep things simple and standard is immutability. Recurring prices usually cannot be changed once used in production. So each change you would like to do will require developers to first develop a new solution and then either carry out a complex migration or maintain two solutions in parallel, which is very costly.
At Duda, we have a very complex billing experience, some of it for good reasons and some for less. Each complexity we introduced to the billing system is still with us. We once analyzed a purchase popup to find out it has 13 possible states, depending on your billing state. Migrating users from our old billing system to the new one is a project that took us 2.5 years. Looking back, our unique billing model allows us to support the unique requirements of our business. But in hindsight, we would have made some different decisions.
Another piece of advice that is always true in product management, and twice as true for payments and billing. This is not always applicable, but I encourage you to try and implement it when you can. Map out the user flows and decide which of them are a must, and which can be implemented later. Once you deliver the must, you are free to decide whether to continue straight ahead to the next flows or to attend to more pressing needs, keeping it agile.
In many cases, you can leverage features of the payment processor or billing system you integrate with to fill for the flows you deprioritize. For example, Stripe’s customer portal is an out-of-the-box billing management feature where your subscribers can upgrade, downgrade, or cancel subscriptions, download invoices, and receipts, and update credit card details. Developing all of these could take weeks. A second example from client billing: we first launched for our beta group with many functionalities available only via Stripe dashboard and customer portal, and not in Duda’s product. These included: configuring products and prices, hosted checkout, and the customer portal. We created deep links to Stripe for each function, instead of developing a UI in our platform.
Money is a sensitive topic. Most software products with more than one user per account have some permissions mechanism. Think about: Who should see billing and payment information? Who can make actions? How do you verify identity in other channels, such as customer support? Once the free trial is over, can all users upgrade to a paid plan? Who can cancel? Can users see upgrade or downgrade options or locked features even if they don’t see prices? Can they see the plan they are on and not have access to payment info?
Another always true advice. Use the same terminology across the entire flow. Remember that your marketing site is also part of the flow, even if managed by the marketing department. Users don’t know it’s two different teams, and they don’t care. IF you are using UI components of your payment processors check the language and design used there and use it within your product.
Give attention to failure scenarios. Payments may fail for multiple reasons and the failure might not be in a system you fully control. For example, a card reported stolen, the payment gateway requires strong authentication and the user fails to provide details, and of course, billing failed charges. Map failure flows, and make them as clear as possible: explain what happened, what are the implications, and what should the user do. Make it clear if the user was charged or not and whether they should try again.
Statement descriptors are the descriptions buyers see in their credit card or bank statements. Make sure it is informative and that users can easily relate it to their purchase or subscription. Unclear statement descriptors are a top reason for users to dispute their charges and for merchants to get chargebacks.
In case your system creates varying charges, consider adding a short description or a reference to an order number to the dynamic part of the descriptor. For example, descriptors like Ben's clothing T-SHIRT or Ben's clothing KMP3W where KMP3W is the order confirmation number will help users to remember they ordered a t-shirt online a few weeks ago, and not contact their bank. This practice is commonly used by airlines and big marketplaces like Amazon.
Many times, business units have a lot of knowledge of users’ needs and preferences regarding payments and billing. Sales, support, customer success, and marketing know why people buy, what they ask, and what makes them angry or delighted. It’s better to have these insights and data as early as possible. In addition, these units will be a major factor in delivering any decision you make regarding payments or billing experience.”
This section explains some basic concepts. Since the online payments domain is very complicated, I’ve chosen to introduce the basics in a simplified way which is not always totally accurate but does work for our current context.
This diagram describes the relations between the different payment entities:
When dealing with recurring payments, there are a few more terms one should be familiar with:
This diagram describes the relations between the different billing entities:
We promise to only send you the good stuff. No spam.
Thanks a lot!!
Proudly built with Duda