Skip to main content
← Back to list
01Issue
BugShippedSwamp ClubTeam
Assigneeskeeb

Relationships

#1150 Stripe checkout product description says '2–20 portable seats' but platform allows 1–20 for Team

Opened by kneel · 7/14/2026· Shipped 7/14/2026

Description

There is a copy mismatch between the seat range advertised on the Stripe-hosted checkout and the seat range the platform actually enforces for the Swamp Club – Team plan.

  • Stripe checkout product description reads: "Full product functionality for 2–20 portable seats, any external datastore, and Standard Support."
  • Platform Subscribe page labels the seat selector as SEATS (1–20) and accepts a value of 1 before Team rolls over to Business at 21+ seats.

So the true Team range is 1–20, but the Stripe description tells customers 2–20. A customer who selects 1 seat on the platform is then handed a checkout whose description contradicts their selection.

Steps to reproduce

  1. Go to the Subscribe page, select the TEAM · $9/SEAT/MO plan.
  2. Set SEATS to 1 (the selector allows it; label says 1–20).
  3. Proceed to Stripe checkout.
  4. Observe the line-item / product description: "…for 2–20 portable seats…" — inconsistent with the 1-seat selection and the platform's own 1–20 label.

Expected

Stripe product description and the platform seat selector agree on the Team range (either both 1–20 or both 2–20). Presumably the platform behavior (1–20) is correct and the Stripe product description copy should read 1–20.

Environment

  • Swamp Club Team subscription checkout (Stripe-hosted), yearly billing ("$108.00 per year", "$9.00 / month billed annually").
  • Observed 2026-07-14.
02Bog Flow
OPENTRIAGEDIN PROGRESSSHIPPED+ 1 MOREASSIGNEDCLASSIFICATION

Shipped

7/14/2026, 7:57:31 PM

No activity in this phase yet.

03Sludge Pulse
keeb assigned keeb7/14/2026, 7:47:34 PM
Editable. Press Enter to edit.

keeb commented 7/14/2026, 7:57:42 PM

Shipped. Fix was a Stripe dashboard edit to the Team Product description (2–201–20 portable seats) — no code change. The platform side was already correct: the SEATS (1–20) selector is derived from PLANS.team.minSeats/maxSeats (lib/billing-plans.ts), never from Stripe. Root cause was drift: #775 lowered the Team floor 2→1 on the platform but the hand-authored Stripe Product copy still read the old 2–20. Nothing was functionally broken (Team-at-1-seat checkouts succeeded); this was stale descriptive copy on Stripe’s hosted checkout only.

Sign in to post a ripple.