Skip to content

Pricing dashboard does not reflect early-bird discount #2613

@Al629176

Description

@Al629176

Summary

Update the billing/pricing dashboard so the early-bird discount shown in Stripe is reflected clearly in the app before checkout.

Problem / Context

The current in-app billing page shows the regular monthly prices for Basic and Pro, plus an early-bird banner that tells users to use a discount code at checkout. Stripe checkout does apply the early-bird discount, but the app pricing cards do not show the discounted prices directly.

Expected behavior: the app should show the early-bird discounted price on the plan cards before users enter checkout, matching the prototype and Stripe checkout totals.

Actual behavior: users see full plan prices in the app, then see the discount later in Stripe checkout. This can create confusion and reduce conversion because the offer is not clearly reflected where users choose a plan.

Impact: pricing feels inconsistent between the app and Stripe, and users may miss or distrust the early-bird discount.

Steps to reproduce:

  1. Open the OpenHuman billing/pricing dashboard.
  2. View the Basic and Pro plan cards.
  3. Observe that the plan cards show full monthly prices.
  4. Start checkout for a plan with the early-bird offer.
  5. Observe that Stripe applies the early-bird discount and shows a lower total.
  6. Compare this with the prototype, where discounted prices are shown directly on the plan cards.

Version / platform: desktop app billing dashboard, screenshots captured May 25, 2026. Exact app version unknown.

Scope (optional)

Implement the pricing page closer to the provided prototype:

  • Show the early-bird banner with the discount code and remaining spots.
  • Show crossed-out original prices and discounted early-bird prices on Basic and Pro cards.
  • Highlight Basic as the most popular plan.
  • Keep Free clearly marked as the current plan when applicable.
  • Make discounted prices match Stripe checkout for monthly and annual billing.
  • Avoid hardcoding values that can drift from Stripe/backend configuration if a pricing API is available.

Acceptance criteria

  • Discount visible before checkout — Basic and Pro cards show early-bird discounted prices directly on the pricing dashboard.
  • Original price shown — Original monthly prices are shown as crossed-out or secondary pricing when the discount applies.
  • Stripe parity — Displayed app prices match Stripe checkout totals for the same plan, currency, interval, and discount.
  • Offer banner updated — Early-bird banner includes the discount code and remaining-spot messaging from the prototype if backend data is available.
  • Current plan clear — The current plan state remains obvious and does not conflict with upgrade CTAs.
  • Monthly/annual safe — Monthly and annual toggles correctly reflect discounted and regular pricing.
  • Regression safety — Unit or integration coverage verifies pricing display for no discount, early-bird discount, current plan, monthly, and annual states.
  • Diff coverage ≥ 80% — the implementing PR meets the changed-lines coverage gate (Vitest + cargo-llvm-cov, enforced by .github/workflows/coverage.yml) when code changes are involved.

Related

  • Current billing dashboard screenshots: Screenshot 2026-05-25 at 3.06.09 PM.png, Screenshot 2026-05-25 at 3.05.53 PM.png
  • Prototype screenshot: IMG_20260521_205906_550.jpg

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type
No fields configured for issues without a type.

Projects

Status

Done

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions