Skip to content

bjmcgill/Tallis-Ledger

Repository files navigation

Tallis-Ledger

A concise ledger based accounting system for small charities.

Screenshot

BJ McGill 24-02-2026 Note:

There are some bugs in this program. Nonetheless I have been using it succesfully to keep the accounts of the charity I work for. Sometimes some extraneous transactions or splits are saved when you click on save transaction. These will appear in the ledger window, and can easily be deleted.

I hope to write a web based version of this app using Typescript and mySQL in the second half of 2026. This will be a lot cleaner and should be free of bugs. Keep looking in my parent folder for this to appear

You will need the following software installed on your computer :

python
git
sqlite tools
DB Browser (or an alternative such as DBeaver)

Once you have installed git you can clone the repository by entering :

git clone https://github.com/bjmcgill/Tallis-Ledger

This will create a directory called Tallis-Ledger in your current directory. Now type :

cd Tallis-Ledger
python -m venv venv

This will create a virtual environment into which you can install the necessary libraries. Now on Windows PCs type:

venv\Scripts\activate

or on a macOS or Linux computer type :

source venv/bin/activate

Now to install the necessary libraries on a Windows, macOS or Linux computer type :

pip install -r requirements.txt

When I was testing my program on Windows, I got the error message library numpy=2.3.1 not available. I fixed this by entering :

pip install pandas
pip install tksheet

This seemed to work fine. You can see what library versions were installed by typing :

pip freeze

You just need to create the tables now by typing :

sqlite3 your_ledger.db < createtables.sql

You can insert sample data now by typing :

sqlite3 your_ledger.db < insertdata.sql

For some reason Windows sqlite doesn't like literal strings in double quotes. It seemed to work fine when I changed double quotes to single quotes.

If you wish to enter data into your own Account and Fund tables use DB Browser. DB Browser is also useful for creating your own reports by entering SQL Select Queries.

To start the application type :

python main.py

This program gives users the power and flexibility of double entry bookkeeping without the hassle of complicated accounting software like Sage and Gnucash. On opening the application (and selecting a valid database), you are met with a simple ledger window which you can filter on fund or account. There are three modes: Initial - Where you can add or select a transaction; Add - Where you can add a transaction; and Edit - Where you can select and edit a previous transaction.

Each transaction consists of two or more splits. The sum of all split amounts in a transaction will sum to zero. That is the double entry feature.

The Add and Edit modes give you the capability to cancel, save a transaction, add a split, delete a split, balance a split or delete a transaction.

Suppose you received a £100 from the council as a restricted grant. You would create a restricted income fund called "Council Fund", a "Council Income" account, and you would put the money in the Bank.

You would create the following rows in the Fund and Account tables using DB Browser

Fund

Id Name  Type
100 Council Fund Restricted Fund

Accounts

Id Name  Type
100 Bank Current Asset
200 Council Income Restricted Income

Then you would enter the following double entry in the main ledger window

Ledger

UserDate Description FundChoice AccountChoice Amount
2025-07-22 Grant from Council Council Fund Bank 100
2025-07-22 Grant from Council No Fund Council Income -100

Note that the second split (row) in the ledger is negative. Money is coming from the income account and going into the bank account. The income is always negative because it is a credit, and the current asset is always positive because it is a debit. This is not what you might expect from looking at a bank statement, but bookkeepers always do it this way.

Once the Accounts and Fund have been entered into the tables using DB Browser, you will be able to select them in the ledger by means of a drop down box.

If you are still confused, I will write more extensive documentation for the application in this repository's wiki.

Creating Reports

Tallis Ledger includes a sql file called views.sql which you can use to create reports on entered data.

To add the views into the database yourledger.db enter the following command:

sqlite3 yourledger.db < views.sql

The createtables.sql file must have been entered into the database first.

After you have typed in the preceeding command, you can launch DB Browser and you can select the views.

LedgerViewWithFundBalance2 shows all the transactions which have been entered partitioned by Fund, and containing a balance column.

If you only want to see the transactions for a particular fund you can enter the following sql and execute it within DB Browser:

SELECT * FROM LedgerViewWithFundBalance2 WHERE FundId=200

LedgerViewWithAccountBalance2 has the same functions as LedgerViewWithFundBalance2 but partitioned by Account.

If you want to list all the funds in your database and examine their balances you can use the view FundSummaryView.

AccountSummaryView has the same functionality as FundSummaryView but with respect to accounts.

Finally you can use the AccountTypeSummaryView to find the totals of transaction amounts grouped by AccountType.

Thankyou for choosing Tallis Ledger.

BJ McGill 22-07-2025

About

A concise ledger based accounting system for small charities

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages