Skip to content

feat(billing): let the client request a plan, seat count and interval - #270

Merged
kipavy merged 1 commit into
devfrom
feat/billing-plans-and-interval
Sep 12, 2026
Merged

kipavy merged 1 commit into
devfrom
feat/billing-plans-and-interval

Conversation

@kipavy

@kipavy kipavy commented Sep 12, 2026

Copy link
Copy Markdown
Contributor

Client half of VoltiusApp/server#20.

openBillingCheckout sent only { plan }, so the server defaulted every purchase to monthly at three seats:

  • the yearly variants were unreachable from the app, even though the pricing page leads with annual prices
  • a ten-person team could not buy ten seats from the app

BillingPlan now includes business, and the function accepts optional seats and interval, omitting each when unset so every existing caller keeps its current behaviour.

No UI passes these yet — the seat and interval picker lives in the web portal, which already sends both. This is the plumbing that would let the app offer one; building that picker is a separate piece of work with real design choices.

Testing

Five new tests, the first coverage this module has had:

sends only the plan when nothing else is specified
forwards a yearly interval so the annual variant is reachable
forwards a seat count for per-seat plans
accepts the business plan
opens the checkout url the server returns

tsc --noEmit exit 0.

Order of deployment

This is inert without the server change. interval: "yearly" reaches a server that still ignores it until VoltiusApp/server#20 ships, and plan: "business" returns 400 until then and until a Business variant exists.

openBillingCheckout sent only { plan }, so the server defaulted every purchase
to monthly at three seats. The yearly variants were unreachable from the app
even though the pricing page leads with annual prices, and a ten-person team
could not buy ten seats.

Widen BillingPlan to include business and accept optional seats and interval,
omitting each when unset so existing callers keep their current behaviour.

No UI passes these yet — the seat and interval picker lives in the web portal.
This is the plumbing that lets the app offer one.
@kipavy
kipavy merged commit 44c8649 into dev Sep 12, 2026
4 checks passed
@kipavy
kipavy deleted the feat/billing-plans-and-interval branch September 12, 2026 22:02
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant