Subscription lifecycle and billing for a global e-commerce platform
The problem
Subscriptions were rigid. A plan could only renew on the term it was bought on, changing product or quantity partway through meant a support call, and pricing those changes correctly was manual and error-prone. Every renewal was a churn risk and every change was a ticket.
What we did
A set of high-availability services covering the whole subscription lifecycle: flexible term renewals so an annual plan could bill monthly, mid-term product and quantity changes with a prorated cart preview, add-on management, prorated refunds and configurable discounts when converting auto-renewal to manual, and scheduled renewal processing driven by an external smart-renewals system. Built as REST APIs over a distributed Kafka-backed architecture so operations stayed consistent across services.
The outcome
Plan changes and term conversions moved from a support ticket to something the customer could do themselves, and renewals stopped forcing a cancel-and-repurchase at every term boundary.
- Java
- Spring Boot
- Spring MVC
- REST
- Apache Kafka
- JDO
- Oracle