Skip to content
Simple Web frontend for GnuCash, using Django
JavaScript Python CSS HTML Shell
Branch: master
Clone or download
nylen Don't fail on transactions with no opposing splits
I saw a transaction like this that had an amount of $0.00.
Latest commit 2ff14e6 Nov 20, 2015
Type Name Latest commit message Commit time
Failed to load latest commit information.
apache Use virtualenv for great justice Feb 11, 2013
gnucash_api_home Enable adding new transactions Oct 24, 2014
gnucash_data Don't fail on transactions with no opposing splits Nov 20, 2015
middleware Load Transaction and Split objects up-front for account details page Apr 10, 2012
money_templates Don't fail on transactions with no opposing splits Nov 20, 2015
money_views Add charts! Jun 29, 2015
utils Add charts! Jun 29, 2015
.ackrc Add .ackrc Sep 30, 2014
.gitignore Remove old settings stuff Nov 20, 2015 Add charts! Jun 29, 2015 Initial commit - show balances and list transactions Jan 9, 2012 Initial commit - show balances and list transactions Jan 9, 2012
requirements.txt Resize images if they are > 1024px wide Oct 18, 2014 Add charts! Jun 29, 2015 Reload app when starting watch script Oct 18, 2014


A mobile-friendly Web frontend for GnuCash, primarily written using Django.


  • View transactions in a GnuCash account, along with their "opposing account"

  • Filter by opposing account, transaction description, or transaction post date

  • Change the opposing account of any transaction and create rules for future transactions

  • Attach images to transactions

  • Add new transactions from the web interface

  • Import JSON files produced by my banker transaction downloader and automatically categorize transactions according to the saved rules

  • Similarly, import QIF files and categorize transactions


  • Budgeting, etc.

  • Better management of rules and categorization


  • A GnuCash file that uses a database backend (tested with MySQL; should work with Postgres or SQLite as well)

  • pip and virtualenv installed (in Debian/Ubuntu: sudo apt-get install python-pip, then sudo pip install virtualenv)

  • (Optional) Python GnuCash API installed (currently this is only used in the code that imports QIF files)

    After you've followed the installation steps below, something like this should work to make the GnuCash API visible to this application's virtual environment:

     ln -s /usr/local/lib/python2.7/dist-packages/gnucash/ lib/python2.7/site-packages/


  • Download the application code into a folder:

     git clone git://
     cd gnucash-django
  • Initialize virtualenv and install dependencies:

     virtualenv .
     . bin/activate
     pip install -r requirements.txt
  • Copy to and fill in values for all places where the file contains three asterisks (***). At this point you'll need to set up a MySQL database and username, if you haven't done so already. Currently this must be done manually.

    You can use this command to generate a SECRET_KEY value:

     python -c 'import random; r=random.SystemRandom(); print "".join([r.choice("abcdefghijklmnopqrstuvwxyz0123456789!@#$%^&*(-_=+)") for i in range(50)])'
  • Create the database structure: python syncdb

  • In the previous step, you should have been prompted to create a Django superuser. If not, or you didn't create one, do that now by running python createsuperuser. This will be your login to the site.

  • There are two options for starting the application:

    1. Django development server: python runserver

    2. Configure Apache to host the application with mod_wsgi. Here is an example:

        WSGIDaemonProcess processes=2 threads=15
        WSGIScriptAlias /gnucash-django /path/to/gnucash-django/apache/money.wsgi
        <Location /gnucash-django>
          # This setup will allow everyone access to the application.
          # Even though visitors will have to log in, this is probably
          # still not a good idea and you should use Apache auth here.
          Order deny,allow
          Allow from all

      You may also want to set up a baseline environment for mod_wsgi as described here.

      More information about configuring mod_wsgi is on the mod_wsgi website.

  • Browse to the site and log in as the superuser you created earlier. Example URLs:

    • Django development server: http://localhost:8000/
    • Apache and mod_wsgi: http://localhost/gnucash-django/

NOTE: Even though all views are set up to require authentication, this application has NOT been written with security in mind. Therefore, it is advisable to secure it using HTTPS and Apache authentication, or to disallow public access to the application.

You can’t perform that action at this time.