[PR #8066] [MERGED] fix(stripe): handle line item price replacement on plan upgrade #24622

Closed
opened 2026-04-15 22:28:38 -05:00 by GiteaMirror · 0 comments
Owner

📋 Pull Request Information

Original PR: https://github.com/better-auth/better-auth/pull/8066
Author: @bytaesu
Created: 2/19/2026
Status: Merged
Merged: 2/19/2026
Merged by: @bytaesu

Base: canaryHead: 2026-02-19/fix/stripe-line-item-replacement-on-plan-change


📝 Commits (4)

  • 63e5a8f fix(stripe): handle line item price replacement on plan upgrade
  • bec8a9d fix: prevent duplicate addition
  • 2431302 fix: seat quantity in scheduled upgrade and immediate base item
  • c47afa7 chore: pretty comment

📊 Changes

2 files changed (+843 additions, -55 deletions)

View changed files

📝 packages/stripe/src/routes.ts (+126 -55)
📝 packages/stripe/test/stripe.test.ts (+717 -0)

📄 Description

Summary by cubic

Fixes Stripe plan upgrades to correctly swap base, seat, and line-item prices without duplicates. Supports immediate and scheduled changes, including asymmetric line items.

  • Bug Fixes
    • Replace prices via a map plus a multiset diff; remove old items, add new ones.
    • Use subscriptions.update for multi-item changes (proration_behavior=create_prorations); bypass Billing Portal’s single-item limit.
    • For scheduled upgrades, rebuild next-phase items with correct removals, replacements, and additions.
    • Set quantities: base item = 1 for auto-managed seats; seat items use memberCount.
    • Prevent duplicate additions when items already exist; added tests for immediate, scheduled, asymmetric, and duplicate cases.

Written for commit c47afa714f. Summary will update on new commits.


🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.

## 📋 Pull Request Information **Original PR:** https://github.com/better-auth/better-auth/pull/8066 **Author:** [@bytaesu](https://github.com/bytaesu) **Created:** 2/19/2026 **Status:** ✅ Merged **Merged:** 2/19/2026 **Merged by:** [@bytaesu](https://github.com/bytaesu) **Base:** `canary` ← **Head:** `2026-02-19/fix/stripe-line-item-replacement-on-plan-change` --- ### 📝 Commits (4) - [`63e5a8f`](https://github.com/better-auth/better-auth/commit/63e5a8f3eaa8917450bc7947c4de80b10074003d) fix(stripe): handle line item price replacement on plan upgrade - [`bec8a9d`](https://github.com/better-auth/better-auth/commit/bec8a9dd05d5121d691a126b8d6770e6c559e326) fix: prevent duplicate addition - [`2431302`](https://github.com/better-auth/better-auth/commit/243130291d01ac0cf47e9805b091a1e6c5dbdecc) fix: seat quantity in scheduled upgrade and immediate base item - [`c47afa7`](https://github.com/better-auth/better-auth/commit/c47afa714faaaaca58c111307d18057fbb083097) chore: pretty comment ### 📊 Changes **2 files changed** (+843 additions, -55 deletions) <details> <summary>View changed files</summary> 📝 `packages/stripe/src/routes.ts` (+126 -55) 📝 `packages/stripe/test/stripe.test.ts` (+717 -0) </details> ### 📄 Description <!-- This is an auto-generated description by cubic. --> ## Summary by cubic Fixes Stripe plan upgrades to correctly swap base, seat, and line-item prices without duplicates. Supports immediate and scheduled changes, including asymmetric line items. - **Bug Fixes** - Replace prices via a map plus a multiset diff; remove old items, add new ones. - Use subscriptions.update for multi-item changes (proration_behavior=create_prorations); bypass Billing Portal’s single-item limit. - For scheduled upgrades, rebuild next-phase items with correct removals, replacements, and additions. - Set quantities: base item = 1 for auto-managed seats; seat items use memberCount. - Prevent duplicate additions when items already exist; added tests for immediate, scheduled, asymmetric, and duplicate cases. <sup>Written for commit c47afa714faaaaca58c111307d18057fbb083097. Summary will update on new commits.</sup> <!-- End of auto-generated description by cubic. --> --- <sub>🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.</sub>
GiteaMirror added the pull-request label 2026-04-15 22:28:38 -05:00
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: github-starred/better-auth#24622