tldr;
For the Subscription object:
Why is there a timestamp field for the status of canceled but not other Subscription statuses ('unpaid', 'past_due')?
Why is it canceled_at and not status_assigned (or status_changed_at)?
I'd love it I'm missing something, thanks in advance for reading.
When a Subscription arrives at the final stage of the Payment Failure workflow, you can set the status of a Subscription to 1 of 3 statuses:
past_due
canceled
unpaid
We tried each of them, we weren’t certain what fit our needs the most. Finally settling on ‘unpaid’. We primarily chose ‘unpaid’ so that a Customer could easily continue the same Subscription they signed up with, without having to store that Subscription anywhere (except in Stripe), as well as give us the option to reopen Invoices that were missed.
We feel pretty confident ‘unpaid’ is exactly what we want, but there is a ‘gap’ in what the API provides for ‘past_due’ and ‘unpaid’ versus the ‘canceled’ status.
Reporting 'requirements' we have:
1) Give me a list of Customer’s with ‘unpaid’ Subscriptions.
That’s easy, we’re storing the Subscription data on our side and we have easy access to it.
2) Give me a list of Customer’s who have Subscriptions that entered into the status of ‘canceled’ in the last 3 months.
That’s also easy, grab everyone who has a status of ‘canceled’ where the ‘canceled at’ timestamp is in the last 3 months.
3) Give me a list of Customer’s who have Subscriptions that entered into the status of ‘unpaid’ in the last 3 months.
The only solution I see is storing all of the invoice data on our side, and querying to find out at what Date a Subscription became 'unpaid'.
‘canceled_at’ seems really specific to the status of ‘canceled’, what if that was more generically ‘status_changed’ (timestamp) or ‘status_assigned_at’ (timestamp)?
Cheers,
Freddy