Why you will fail coding your own subscription engine

You might have a newly started business or you are planning to transform your existing business to operate on subscriptions in the near future. Amazing — this is the way the market and economy is moving. Indicators leave no doubt — subscription and recurring revenue is the path forward. Great for loyalty and predictive cashflow.

At Upodi we all love subscriptions as much as we love developers. Remember — we are developers ourselves.

As an IT provider — how do you start on subscription management?

“Let’s code our own billing — it’s just recurring payments — we can use a payment provider — they got most of it”.

And now you think you have a solution. Or so you think. You actually still have 10 problems you never thought about. Let’s go through each of them, one by one:

1. Discounts

You have different discounts for different customers — no problem let’s just use what is already in our financial planning system (ERP).

Oh, wait — we also need vouchers and some of our customers is actually partners.

Well, everything can be coded and tested.

Upodi.Customers.AddDiscountCode(“CU-33829328”, “dis-Rmlk324”);

2. Currencies

Some of our customers have different currencies — no problem we can just do a simple conversion. And what about decimals? Will you support 2…3…4…

Well, everything can be coded and tested.

var customer = Upodi.Customers.Get(“CU-33829328”);
customer.CurrencyCode = “USD”;
Upodi.Customers.Update(customer);

3. Invoices

Some invoices are charged on credit cards some are using offline payments. Not to mention how a certified invoice have to be validate.

Well, everything can be coded and tested.

var invoicePdf = Upodi.Invoices.GetPdf(“424907420”);

4. ERP integration

Deep integration with ERP-systems seems simple at first. Once you go one or two levels deeper you will start to understand the complexity. Which are you implementing? XERO, QuickBooks, E-conomic, Dinero or Microsoft Dynamics 365?

Well, everything can be coded and tested. We did it, already ready for you.

5. Proration

Your customer will never change? Sure! You want to be able to add more users for your service-product. You will have to prorate the invoice for the new amount and send out an invoice.

Well, everything can be coded and tested.

Upodi.Subscriptions.SetAmount(“SB-33829328”, “abdf3-…”, 44893);

6. Payment

This one is easy — because the payment provider got it all. Wrong. What about declined cards — don’t you want to retry those again at a later interval? What if I want to switch from a credit card to an offline payment method like SEPA?

Well, everything can be coded and tested.

upodi.PaymentMethods.CreatePaymentMethod(“3443…”, new CardTokenRequest(“cus-M34kl24ko4jk”));

7. Analytics

The reporting of our subscriptions needs to be integrated into our Data Warehouse so we can view the entire business not just another silo of dead data.

Well, everything can be coded and tested.

8. Email notification and templating

You need to notify your customers that payment is soon due and if their card failed so they can add their new credit card. Remember to include a different template for our customers in the US.

Oh — we also need a different text on our enterprise product because it needs certain details and should be easy to maintain for marketing.

Well, everything can be coded and tested.

9. Dates…

You run monthly subscriptions. Great. That aligns to a 30-day month cycle. Oh wait — leap year, day light saving time, 28 days in February, sometimes 29 days. Dates are the magic that makes subscription tick and tock and they are not as simple as they look.

Well, everything can be coded and tested.

10. All the resources in the world

I bet you have 10 fellow developers just sitting and watching YouTube all day. Nothing to do, and no product og CL to fix? Right? And they never move teams, projects or even quit. Building complex infrastructure is fun, running maintenance in flight is….. no fun.

Well, everything can be coded and tested… when the people are at the office.

There are a lot more problems that you will discover when building your own little platform that seems so simple when you started out. I could go on with co-branding, provider agnostic data storage allowing you to move providers as costs become high.

Well, everything can be coded and tested but the real question you should ask yourself is WHY?

Why not use a tested platform that has gone through all the problems and is a turn-key solution and you can sit back and shoot data in and out if you want?

Not saying that you have to use the platform that we build just saying that you should be prepared to a ton of coding work if you want to do it by your own.

We spend years on building Upodi. Running DKK 150.000.000+ through this software, and have been through more than 100 customer engagements. Upodi is the sum of each engagement and yes — you are the special company of them all, but look at the standardization you gain as benefit.

Upodi does combine the best of both worlds — building and buying.