diff --git a/docker/ss-atlas/internal/stripe/client.go b/docker/ss-atlas/internal/stripe/client.go index a5c0225..20ea8ce 100644 --- a/docker/ss-atlas/internal/stripe/client.go +++ b/docker/ss-atlas/internal/stripe/client.go @@ -93,10 +93,15 @@ func (c *Client) GetCustomerSubscriptionStatus(customerID string) *SubscriptionS sub := iter.Subscription() log.Printf("stripe: customer=%s sub=%s cancel_at_period_end=%v cancel_at=%d", customerID, sub.ID, sub.CancelAtPeriodEnd, sub.CancelAt) - if sub.CancelAtPeriodEnd { + if sub.CancelAtPeriodEnd || sub.CancelAt > 0 { + // Prefer explicit cancel_at; fall back to current_period_end from the first item + endTs := sub.CancelAt + if endTs == 0 && sub.Items != nil && len(sub.Items.Data) > 0 { + endTs = sub.Items.Data[0].CurrentPeriodEnd + } var cancelAt string - if sub.CancelAt > 0 { - cancelAt = time.Unix(sub.CancelAt, 0).Format("Jan 2, 2006") + if endTs > 0 { + cancelAt = time.Unix(endTs, 0).Format("Jan 2, 2006") } return &SubscriptionStatus{ Label: "Expiring",