v2 Gap Analysis — Billing & Payments

Billing & Payments — V2 Review Gap Analysis

Source: BACKEND-RAMBLINGS.md lines 288-367
Spec: docs/admin-spec/08-billing-payments.md
Implementation: src/pages/billing/, src/data/billing.ts, src/data/scholarships.ts, src/data/families.ts


Screens Covered


Payment Overview / Dashboard

Matches

Expands

Deviates

Adds

Ambiguous


Payments List

Matches

Expands

Deviates

Adds

Ambiguous


Payment Plans

Matches

Expands

Deviates

Adds

Ambiguous


Family Plans

Matches

Expands

Deviates

Adds

Ambiguous


Coupons

Matches

Expands

Deviates

Adds

Ambiguous


Scholarships & Deferments

Scholarships Tab

Programs View

Students View

Deferments Tab

Active Deferments

Deferment History

Matches

Expands

Deviates

Adds

Ambiguous


Cross-cutting: Subscription Cancel/Pause Actions

Stakeholder specification (lines 310-311): She does NOT explicitly name all four variants in this section, but the ramblings cover:

Spec detail (implicit across overview and deferments):

Implementation:

Gap: Stakeholder said nothing about these fine-grained cancel variants in lines 288-367, so this is not strictly a gap against her narration. However, spec Section 6.4 mentions cancel/pause actions are in "Student Detail > Payments tab" (not fully specified here), which is out of scope for this review.


Summary

Key Themes

  1. Implementation is complete and spec-aligned structurally. All six screens present with correct layout, columns, filters, and action flows.
  2. Grouping of payment plans: Spec envisions them grouped (Standard / Family / Scholarships / Discounts); implementation shows flat list with type column. Not a gap against stakeholder, but a structural choice.
  3. Mock vs. real Stripe integration: All Stripe-dependent features (coupon sync, subscription pause, decline codes, redemptions) are mocked with static data. No webhook simulation.

Biggest Deviations

Cancel-Action-Variant Status

Top Ambiguities

  1. Family member semester status: Missing "repeat/regular/mastery" tracking in member detail view.
  2. Stripe sync verification UI: Implementation shows toast; spec shows modal with details.
  3. Per-member discount percentage: Spec line 336-337 mentions "each one of them has a payment associated with their name with a percentage of discount... different for essentials and mastery students." Implementation does not surface per-member discounts; assumes all family members share the same family discount percentage.

Validation Questions