An upgrade confirmed across a renewal answers "Try again in a moment" instead of showing fresh figures #292

Open
opened 2026-10-30 00:30:57 +00:00 by cgalo5758 · 0 comments
Owner

What happens

A member opens an upgrade's confirmation, which shows a prorated charge computed for a moment in the current billing period, and confirms it after the subscription has renewed. The upgrade sends that moment to Stripe as the proration date, and Stripe refuses a proration date before the current period's start with a 400. The member reads the generic "We couldn't complete that change. Try again in a moment." The upgrade checks only how old the preview is before it calls Stripe, not whether the period it was computed in has ended.

The switch of a paused plan already makes this check after it reads the subscription, and answers a stale preview by showing fresh figures, the same answer a preview that is too old gets.

What should happen

An upgrade whose preview was computed before the subscription's current period started is answered as a stale preview: the member sees the confirmation again with the new period's figures, and nothing is sent to Stripe.

Where

upgradeNow, internal/fulfillment/plan_change.go (the check against PreviewValidFor); the paused form's check in internal/fulfillment/paused_switch.go

Why it matters

A member who confirms an upgrade around their renewal is told to retry something that fails the same way until they reopen the page, with no sign that the figures changed.

### What happens A member opens an upgrade's confirmation, which shows a prorated charge computed for a moment in the current billing period, and confirms it after the subscription has renewed. The upgrade sends that moment to Stripe as the proration date, and Stripe refuses a proration date before the current period's start with a 400. The member reads the generic "We couldn't complete that change. Try again in a moment." The upgrade checks only how old the preview is before it calls Stripe, not whether the period it was computed in has ended. The switch of a paused plan already makes this check after it reads the subscription, and answers a stale preview by showing fresh figures, the same answer a preview that is too old gets. ### What should happen An upgrade whose preview was computed before the subscription's current period started is answered as a stale preview: the member sees the confirmation again with the new period's figures, and nothing is sent to Stripe. ### Where `upgradeNow`, `internal/fulfillment/plan_change.go` (the check against `PreviewValidFor`); the paused form's check in `internal/fulfillment/paused_switch.go` ### Why it matters A member who confirms an upgrade around their renewal is told to retry something that fails the same way until they reopen the page, with no sign that the figures changed.
cgalo5758 added the
kind
bug
area/billing
priority
low
labels 2026-10-30 00:30:57 +00:00
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: wiki-cafe/member-console#292