Django Ledger
A Double Entry Accounting Engine for Django
Django Ledger is a powerful financial management system built on the Django Web Framework. It offers a simplified API for handling complex accounting tasks in financially driven applications.
Created and developed by Miguel Sanda.
FREE Get Started Guide | Join our Discord | Documentation | QuickStart Notebook
Key Features
High-level API
Double entry accounting
Hierarchical Chart of Accounts
Financial statements (Income Statement, Balance Sheet, Cash Flow)
Purchase Orders, Sales Orders, Bills, and Invoices
Financial ratio calculations
Multi-tenancy support
Ledgers, Journal Entries & Transactions
OFX & QFX file import
Closing Entries
Inventory management
Unit of Measures
Bank account information
Django Admin integration
Built-in Entity Management UI
Getting Involved
Feature Requests/Bug Reports: Open an issue in the repository
For software customization, advanced features and consulting services: Contact us or email msanda@arrobalytics.com
Contribute: See our contribution guidelines
Who Should Contribute?
We’re looking for contributors with:
Python and Django programming skills
Finance and accounting expertise
Interest in developing a robust accounting engine API
If you have relevant experience, especially in accounting, we welcome your pull requests or direct contact.
Installation
Django Ledger is a Django application. If you haven’t, you need working knowledge of Django and a working Django project before you can use Django Ledger. A good place to start is here.
Make sure you refer to the django version you are using.
The easiest way to start is to use the zero-config Django Ledger starter template. See details here. Otherwise, you may create your project from scratch.
To create a new Django Ledger project:
Make sure you have the latest version of python here (recommended).
Install Django:
pip install django
Install Python Pipenv (python package manager):
pip install pipenv
Go to your desired development folder and create a new django project:
django-admin startproject django_ledger_project && cd django_ledger_project
Install Django on you virtual environment.
pipenv install django
Install Django Ledger
pipenv install "django-ledger[graphql,pdf]"
Alternatively, you can use:
pipenv install django-ledger\[graphql,pdf\]
Activate your new virtual environment:
pipenv shell
Add django_ledger to INSTALLED_APPS in you new Django Project.
INSTALLED_APPS = [
...,
'django_ledger',
...,
]
Perform database migrations:
python manage.py migrate
Add Django SuperUser and follow the prompts.
python manage.py createsuperuser
Add URLs to your project’s urls.py:
from django.urls import include, path
urlpatterns = [
...,
path('ledger/', include('django_ledger.urls', namespace='django_ledger')),
...,
]
Run your project:
python manage.py runserver
Navigate to Django Ledger root view assigned in your project urlpatterns setting ( typically http://127.0.0.1:8000/ledger if you followed this installation guide).
Use your superuser credentials to login.
How To Set Up Django Ledger for Development
Django Ledger comes with a basic development environment already configured under dev_env/ folder not to be used for production environments. If you want to contribute to the project perform the following steps:
Navigate to your projects directory.
Clone the repo from github and CD into project.
git clone https://github.com/arrobalytics/django-ledger.git && cd django-ledger
Install PipEnv, if not already installed:
pip install -U pipenv
Create virtual environment.
pipenv install
If using a specific version of Python you may specify the path.
pipenv install --python PATH_TO_INTERPRETER
Activate environment.
pipenv shell
Apply migrations.
python manage.py migrate
Create a Development Django user.
python manage.py createsuperuser
Run development server.
python manage.py runserver
How To Set Up Django Ledger for Development using Docker
Navigate to your projects directory.
Give executable permissions to entrypoint.sh
sudo chmod +x entrypoint.sh
Add host ‘0.0.0.0’ into ALLOWED_HOSTS in settings.py.
Build the image and run the container.
docker compose up --build
Add Django Superuser by running command in seprate terminal
docker ps
Select container id of running container and execute following command
docker exec -it containerId /bin/sh
python manage.py createsuperuser
Navigate to http://0.0.0.0:8000/ on browser.
Run Test Suite
After setting up your development environment you may run tests.
python manage.py test django_ledger
Screenshots
Financial Statements Screenshots