🧾 django-finacc
Plug-and-Play Financial Accounting for Django — a reusable double-entry bookkeeping engine with REST APIs, period locking, GST/VAT support, and chart of accounts templates.
Works with Django 5.x and Python 3.11+.
Built for modular integration into ERP, CRM, or eCommerce projects.
🚀 Features
- 🧮 True Double-Entry Accounting — balanced journal entries enforced at DB level
- 🧑💼 Multi-Company & Multi-Currency (with FX rate tables)
- 🧾 Chart of Accounts (CoA) templates (India GST ready)
- 🧷 Period Locking & Year Close helpers
- 💰 GST/VAT Tax Models — inclusive/exclusive with CGST/SGST/IGST splits
- ⚙️ DRF APIViews — clean JSON endpoints for accounting automation
- 📊 Trial Balance / Ledger Helpers
- 🔐 Immutable Entries (reversal-only edits, planned)
- 🧱 Plug-and-Play — drop into any Django project as an app
📦 Installation
pip install django-finacc
setting.py entry
INSTALLED_APPS += ["rest_framework", "finacc"]
Adding Urls to project settings.py
path("api/finacc/", include("finacc.api.urls"))
python manage.py finacc_bootstrap_coa --company=1 --template=india_basic
example
POST /api/finacc/journal/entries/
{
"company": 1,
"date": "2025-11-08",
"currency": "INR",
"memo": "Opening capital",
"lines": [
{"account": 1, "debit": "100000.00", "credit": "0.00"},
{"account": 2, "debit": "0.00", "credit": "100000.00"}
]
}
App Installation In Project Setting
INSTALLED_APPS += ["rest_framework", "finacc"]
Project Setting Initialization
FINACC = {
"BASE_CURRENCY": "INR",
"AUTO_POST_ON_CREATE": True,
}
example
from decimal import Decimal
from finacc.posting.rules import create_simple_entry
from finacc.posting.engine import post_entry
je = create_simple_entry(company, date, "INR", "Sale", [
{"account": ar_acc, "debit": Decimal("1180.00")},
{"account": rev_acc, "credit": Decimal("1000.00")},
{"account": gst_payable_acc, "credit": Decimal("180.00")},
])
post_entry(je)
def post_invoice(company, invoice):
# map lines -> AR, Revenue, Tax
...
return post_entry(je)
Implementation Notes & Roadmap
- Immutable posted entries: disable updates/deletes; allow reversal entries only (planned: reverse_entry(entry_id)).
- Reports: Add Ledger, Balance Sheet, and P&L helpers with tree aggregation.
- Tax: Load taxes_india_gst.json via setup script; provide posting helpers that split CGST/SGST/IGST to mapped accounts.
- FX: Add revaluation utilities for period end.
- Permissions: Add IsCompanyMember mixin to filter by company_id.
- Docs site: MkDocs with Quickstart, API reference, and diagrams.
- CI: GitHub Actions matrix for Python 3.11/3.12 and Django 5.0/5.1.
Metadata
Release files for django-finacc 0.1.2
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| django_finacc-0.1.2.tar.gz | 9.5 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| django_finacc-0.1.2-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 24.6 kB
Release files / django_finacc-0.1.2.tar.gz
| Download URL | django_finacc-0.1.2.tar.gz |
|---|---|
| Size | 9.5 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
4481b6fe5f7de2cf6c1cac1010823ce94fcd1894e15e64b05048500b1790f313
|
|
BLAKE2b-256 checksum How to use checksums |
6909f3bc9d2d5b7b95cc00988ffc32b53fc05d31dee140e137dd5a00b94bd1e5
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.11.12
|
Release files / django_finacc-0.1.2-py3-none-any.whl
| Download URL | django_finacc-0.1.2-py3-none-any.whl |
|---|---|
| Size | 15.2 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
e6bfe1c21b27fc75113a6fa79dac6ca4b066537877fffe8c7e0e8e0d74b66ae6
|
|
BLAKE2b-256 checksum How to use checksums |
67cb9b714398b5deebf180eda669bec91779fae7deaef0a07b40b5f7c4241ec1
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.11.12
|