Many companies using Chargebee, Recurly, Chargify and other recurring billing platforms see an opportunity to migrate their subscriptions to Stripe. Moving to subscriptions to Stripe Billing allows companies to not only manage subscriptions but also leverage the deep feature set available from Stripe. The Stripe platform not only allows for recurring billing but also let's companies to unlock innovations like Stripe Payments, Elements, Connect, Terminal, Identity, Sigma and more.
Growthmill was recently engaged by a SaaS platform in the financial services industry to migrate their recurring billing from Chargebee to Stripe. Our client was dissatisfied with the limited plan configurations, reporting, revenue reconciliation and payment options available from Chargebee. For their Enterprise billing plans, they were making heavy use of coupons to work around the limitations of Chargebee plans and payments. They were unable to generate their desired financial and operational reporting without a cumbersome process of CSV exports and Excel manipulations.
The client was using Stripe to process payments associated with Chargebee subscriptions. This eliminated the sometimes challenging process of migrating customers and payment methods from one processor to another. While this is often possible, it requires significant orchestration between an existing payment processor, Stripe and any in-house platforms capturing payments.
Growthmill created a process in Node.js to get data from Chargebee endpoints and recreate the appropriate pieces in Stripe using Stripe's best in class endpoints. The Node.js process kept a log of successes and exceptions for visibility and traceability into the specific entities migrated.
With the customers, products, prices and coupons in place, Growthmill was able to extract Chargebee subscriptions from the endpoint and recreate them in Stripe using the Create Subscription endpoint.In this case, the client was already using Stripe to process payments, so customers existed in Stripe with their payment method. BUT the customers did not contain the customer name but rather were named ChargebeeHandle:{chargebeeID}
Lack of a proper customer name would cause friction for customer service staff. Growthmill updated customer name during migration and stored the Chargebee Customer ID as metadata on the customer record.
After creating the Subscription, in Stripe be sure to cancel the subscription in Chargebee to prevent duplicate charges.
Use Metadata to store the Chargebee Plan ID with the associated Product/Plan in Stripe. This can be useful in two ways. First, this can serve as a mapping for any scripts automating subscriptions from Chargebee to Stripe. The client's in-house platform also benefitted from knowing the legacy Chargebee Plan when determining the authorization associated with the subsequent subscription.
Chargebee allows coupons in durations of weeks, while Stripe does not. You'll want to account for these in either the source of destination system. Also, Chargebee allows multiple coupons to be applied to a subscription, while Stripe does not.
If you want to backdate subscriptions, make sure to set the backdate_start_date when creating the subscription in Stripe. Most likely, you do not want to charge customers for this backdated time so set proration_behavior to 'none'