Stripe Models for Django.
dj-stripe implements all of the Stripe models, for Django. Set up your webhook endpoint and start receiving model updates. You will then have a copy of all the Stripe models available in Django models, as soon as they are updated!
The full documentation is available on Read the Docs.
- Stripe Core
- Stripe Billing
- Stripe Cards (JS v2) and Sources (JS v3)
- Payment Methods and Payment Intents (SCA support)
- Support for multiple accounts and API keys
- Stripe Connect (partial support)
- Tested with Stripe API
2020-08-27
(see API versions)
- Django 2.2+
- Python 3.6+
- PostgreSQL engine (recommended) 9.5+
- MySQL engine: MariaDB 10.2+ or MySQL 5.7+ (Django 3.2.5+ required for MySQL 8 support)
- SQLite: Not recommended in production. Version 3.26+ required.
Install dj-stripe with pip:
pip install dj-stripe
Or with Poetry (recommended):
poetry add dj-stripe
Add djstripe
to your INSTALLED_APPS
:
INSTALLED_APPS =(
...
"djstripe",
...
)
Add to urls.py:
path("stripe/", include("djstripe.urls", namespace="djstripe")),
Tell Stripe about the webhook (Stripe webhook docs can be found
here) using the full URL of your
endpoint from the urls.py step above (e.g.
https://example.com/stripe/webhook
).
Add your Stripe keys and other settings:
STRIPE_LIVE_SECRET_KEY = os.environ.get("STRIPE_LIVE_SECRET_KEY", "<live secret key>")
STRIPE_TEST_SECRET_KEY = os.environ.get("STRIPE_TEST_SECRET_KEY", "<test secret key>")
STRIPE_LIVE_MODE = False # Change to True in production
DJSTRIPE_WEBHOOK_SECRET = "whsec_xxx" # Get it from the section in the Stripe dashboard where you added the webhook endpoint
DJSTRIPE_USE_NATIVE_JSONFIELD = True # We recommend setting to True for new installations
DJSTRIPE_FOREIGN_KEY_TO_FIELD = "id" # Set to `"id"` for all new 2.4+ installations
Add some payment plans via the Stripe.com dashboard.
Run the commands:
python manage.py migrate
python manage.py djstripe_sync_models
See https://dj-stripe.readthedocs.io/en/latest/stripe_elements_js/ for notes about usage of the Stripe Elements frontend JS library.
Assuming the tests are run against PostgreSQL:
createdb djstripe
pytest
See release notes on Read the Docs.
You can now become a sponsor to dj-stripe with GitHub Sponsors.
We've been bringing dj-stripe to the world for over 7 years and are excited to be able to start dedicating some real resources to the project.
Your sponsorship helps us keep a team of maintainers actively working to improve dj-stripe and ensure it stays up-to-date with the latest Stripe changes. If you're using dj-stripe in a commercial capacity and have the ability to start a sponsorship, we'd greatly appreciate the contribution.
All contributions through GitHub sponsors flow into our Open Collective, which holds our funds and keeps an open ledger on how donations are spent.