Problem. Invoice math is built and test-covered, but actual Stripe charge/collection is a stub (api/services/stripe_service.py, needs test keys). Invoices compute but no money moves — the biggest billing gap, distinct from the calculation.
Fix.
- Wire
stripe_service to create/charge invoices in Stripe TEST mode.
- Handle webhooks (
invoice.paid / payment_failed) → reconcile to invoices.status.
- Rotate all dev secrets (incl. Stripe keys) before any real/paid use.
Problem. Invoice math is built and test-covered, but actual Stripe charge/collection is a stub (
api/services/stripe_service.py, needs test keys). Invoices compute but no money moves — the biggest billing gap, distinct from the calculation.Fix.
stripe_serviceto create/charge invoices in Stripe TEST mode.invoice.paid/payment_failed) → reconcile toinvoices.status.