// the find
djaodjin/djaodjin-saas
Django application for software-as-service and subscription businesses
djaodjin-saas is a Django app that handles the billing and subscription infrastructure for SaaS products — plans, charges, renewals, coupons, ledger entries, and multi-tenant role management. It's designed to be embedded in a larger Django project rather than used standalone, with djaoapp as the reference integration. Aimed at developers who want the hard billing plumbing handled without locking into a hosted solution like Stripe Billing or Paddle.
Double-entry bookkeeping ledger is a real differentiator — most SaaS billing libs skip this and you regret it when reconciling payments. Payment processor abstraction is genuinely pluggable: Stripe, Razorpay, Flutterwave, and a fake processor for testing, all behind the same interface. Actively maintained with Django 5.2/6.0 and Python 3.12/3.14 support as of mid-2026, not abandonware. Ships management commands for renewals and reconciliation so cron-driven billing flows don't need to be written from scratch.
The 'bare bone templates' warning in the README is underselling it — you're signing up to build all the UI yourself, which is a significant time investment for a billing flow where UX mistakes cost you money. The separation of billing profiles from auth users is architecturally correct but adds non-trivial complexity upfront; new adopters will spend real time understanding the Organization/User model before writing any product code. No webhooks abstraction out of the box — you wire up Stripe webhook handling yourself through signals, which is fine until you need idempotency handling and ordering guarantees. Test coverage surface area is hard to judge from outside; `saas/tests.py` being a single flat file for a project this size is a yellow flag.