finds.dev← search

// the find

djaodjin/djaodjin-saas

★ 603 · Python · NOASSERTION · updated Jun 2026

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.

View on GitHub →

// want more like this?

We dig through GitHub every week and send a few repos picked for what you actually care about — each with an honest take like this one.

Get finds in your inbox → Search again →