28 lines
1.0 KiB
Markdown
28 lines
1.0 KiB
Markdown
|
|
# Sync Billing Plans with Users
|
||
|
|
|
||
|
|
**ID:** ORG-001
|
||
|
|
**Priority:** High
|
||
|
|
**Status:** Planned
|
||
|
|
|
||
|
|
## User Story
|
||
|
|
As an organization owner, I want billing plans to automatically sync with user seats so that I'm only charged for active users and can easily manage costs.
|
||
|
|
|
||
|
|
## Acceptance Criteria
|
||
|
|
- [ ] Adding a user to org automatically updates billing (for per-seat plans)
|
||
|
|
- [ ] Removing a user adjusts billing accordingly
|
||
|
|
- [ ] Prorated charges/credits for mid-cycle changes
|
||
|
|
- [ ] Organization dashboard shows current seat count vs plan limit
|
||
|
|
- [ ] Warning notification when approaching seat limit
|
||
|
|
- [ ] Automatic upgrade prompt when exceeding limit
|
||
|
|
- [ ] Billing history shows seat changes over time
|
||
|
|
|
||
|
|
## Technical Notes
|
||
|
|
- `BillingPlan.syncForUser()` method exists but is not implemented
|
||
|
|
- Paddle integration exists for payment processing
|
||
|
|
- Need to track user-to-organization seat assignments
|
||
|
|
- Consider grace period for temporary overages
|
||
|
|
- Webhook from Paddle for payment confirmations
|
||
|
|
|
||
|
|
## Related TODOs
|
||
|
|
- `ts/reception/classes.billingplan.ts:16` - `// TODO sync this for user`
|