// the find
jazzband/django-payments
Universal payment handling for Django.
django-payments is a Django library that provides a unified interface for integrating multiple payment providers behind a single model and URL scheme. You subclass their Payment model, configure a backend, and get charge/refund/webhook handling without rewriting provider-specific logic each time. It's for Django shops that want to swap or support multiple payment gateways without coupling their business logic to any one provider's SDK.
The provider abstraction is genuinely useful — switching from Stripe to Braintree means changing a settings key, not rewriting views. The jazzband umbrella means it's not a single-maintainer bus-factor situation, and the CI/test matrix is solid with per-provider test files. Webhook handling is built into the URL conf rather than bolted on, which is the right approach. The community backend list extends coverage without bloating the core.
Some backends look unmaintained at the edges — Coinbase Commerce deprecated their v1 API years ago, and Sofort was discontinued by Klarna in 2024; both are still in tree with no deprecation notices. The Payment model is a concrete base class you must extend, which means your migration history is coupled to theirs — any upstream model change requires you to track and re-migrate. Stripe backend is v3 but Stripe's current recommended integration path is Payment Intents, and it's not obvious from the docs how well the abstraction handles Stripe's 3DS2/SCA requirements. No async view support, which matters if you're on Django 4.1+ with async handlers.