Cashier upgrades bill late and can lock customers out

Cashier 16.9.0 sends proration_behavior=create_prorations by default, so an upgrade from $29 to $79 on day 10 charges $0 today and adds $33.33 to the next renewal invoice.

When an immediate upgrade payment fails, Cashier has already saved the new plan, the status is past_due, and valid() is false, which locks the customer out of the plan they already paid for.

Use alwaysInvoice() with errorIfPaymentFails() on upgrades: Stripe returns a 402, Cashier throws a CardException, and the old plan stays active.

Read the full post

Read the full post