Monetization app + RevenueCat webhooks (chat_web_app#100) #68

Closed
opened 2026-08-03 12:33:13 -07:00 by westfarn · 0 comments
Owner

Goal

Companion to chat_web_app#100.

  1. Rename/move financemonetization Django app (Stripe + RevenueCat services, webhooks, subscription APIs).
  2. Consume RevenueCat webhooks to sync entitlements and upsert Invoice/Payment rows for billing history (parity with Stripe).
  3. Keep Stripe Checkout/Portal for web; store IAP via RevenueCat.

Scope

  • New monetization app; preserve finance_* tables
  • services/stripe.py + services/revenuecat.py
  • URL /api/monetization/ + alias /api/finance/
  • Source/Provider = revenuecat; product→plan mapping
  • Webhook: purchase/renewal/cancel/expiration → subscription + ledger
  • Tests for RC webhook + existing Stripe tests updated
  • Settings: REVENUECAT_WEBHOOK_SECRET, product map

Acceptance

  • Store purchase appears in /finance/invoices/ (or monetization alias) with provider=revenuecat
  • Subscription source=revenuecat after INITIAL_PURCHASE
  • Stripe flows unchanged
## Goal Companion to [chat_web_app#100](https://git.aimloperations.com/ai_ml_operations/chat_web_app/issues/100). 1. Rename/move `finance` → **`monetization`** Django app (Stripe + RevenueCat services, webhooks, subscription APIs). 2. Consume **RevenueCat webhooks** to sync entitlements **and** upsert Invoice/Payment rows for billing history (parity with Stripe). 3. Keep Stripe Checkout/Portal for web; store IAP via RevenueCat. ## Scope - [ ] New `monetization` app; preserve `finance_*` tables - [ ] `services/stripe.py` + `services/revenuecat.py` - [ ] URL `/api/monetization/` + alias `/api/finance/` - [ ] `Source`/`Provider` = `revenuecat`; product→plan mapping - [ ] Webhook: purchase/renewal/cancel/expiration → subscription + ledger - [ ] Tests for RC webhook + existing Stripe tests updated - [ ] Settings: `REVENUECAT_WEBHOOK_SECRET`, product map ## Acceptance - [ ] Store purchase appears in `/finance/invoices/` (or monetization alias) with `provider=revenuecat` - [ ] Subscription `source=revenuecat` after INITIAL_PURCHASE - [ ] Stripe flows unchanged
Sign in to join this conversation.
No labels
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: ai_ml_operations/chat_backend#68