I recently looked into how to build out robust usage reporting with Stripe. This comes basically from the set of challenges around:
- Workaround Stripe API Rate Limits
- Handle billing cycles and minimize usage drift into the next billing cycle
- Deliver usage exactly once to avoid under and over-billing
- Stripe requires to report usage on Subscription Items
You can read the full blog post here:
https://openmeter.io/blog/how-to-report-usage-to-stripe
I'm curious about what people do to build our usage reporting. Do you use message queues? Workflow management software like Temporal? Simple CRON job?
I ran into Stripe's API rate limits while developing a revenue forecasting app[1]. The metrics calculated requires retrieving two months of charges using Stripe's API, which can result in long loading times because only 100 records can be retrieved at a time[1] and because:
...listing charges (or most resources) can be quite slow as you need to render many objects. The Charge API especially is quite a large object to render and paginate through.[3]
Overall, getting 100 records from Stripe's charges endpoint takes 3 to 4 seconds
[1] https://github.com/hbcondo/revenut-app
[2] https://stripe.com/docs/api/pagination#pagination-limit
[3] https://github.com/stripe/stripe-dotnet/issues/2284#issuecom...