feature/finance-stripe-21
master
finance
SUBSCRIPTION_PRICE_AMOUNT_CENTS = 1000
settings.py
POST /api/finance/checkout/
{ checkout_url, session_id }
GET /api/finance/invoices/
GET /api/finance/payments/
POST /api/finance/webhooks/stripe/
Documented in .env.example / .env.prod.example: STRIPE_SECRET_KEY, STRIPE_PUBLISHABLE_KEY, STRIPE_WEBHOOK_SECRET, optional STRIPE_PRICE_ID, FRONTEND_BASE_URL
.env.example
.env.prod.example
STRIPE_SECRET_KEY
STRIPE_PUBLISHABLE_KEY
STRIPE_WEBHOOK_SECRET
STRIPE_PRICE_ID
FRONTEND_BASE_URL
uv run python manage.py test finance
/admin/
/api/finance/webhooks/stripe/
checkout.session.completed
invoice.paid
Introduce Invoice/Payment ledger models, $10/mo settings-backed pricing, hosted Checkout + signed webhooks, Django admin, and authenticated list APIs.
No dependencies set.
The note is not visible to the blocked user.
Summary
financeapp with Stripe as payment providerSUBSCRIPTION_PRICE_AMOUNT_CENTS = 1000insettings.py(env-overridable)API
POST /api/finance/checkout/— JWT auth →{ checkout_url, session_id }GET /api/finance/invoices//GET /api/finance/payments/— own recordsPOST /api/finance/webhooks/stripe/— Stripe signature-verified webhookConfig
Documented in
.env.example/.env.prod.example:STRIPE_SECRET_KEY,STRIPE_PUBLISHABLE_KEY,STRIPE_WEBHOOK_SECRET, optionalSTRIPE_PRICE_ID,FRONTEND_BASE_URLTest plan
uv run python manage.py test finance(17 tests)/admin//api/finance/webhooks/stripe/and verifycheckout.session.completed/invoice.paid