Fork me on GitHub
More Information
The Open Source Accounting System With Features That Programmers Expect

About

GoDBLedger is a central server for all your financial transactions. It acts as an endpoint for apps to transmit their financial transactions which it records in a database of your choice that you control. Out of the box it supports SQLite and MySQL.

Download

Features

GRPC Endpoints

var transaction_proto = grpc.loadPackageDefinition(packageDefinition).transaction;
client = new transaction_proto.Transactor(this.network, grpc.credentials.createInsecure());

client.AddTransaction({
  date: journal.date,
  description: journal.description,
  lines: lineitems,
  signature: ""
}, callback());

Database Backends - SQL

--Trial Balance directly from MySQL
SELECT
  split_accounts.account_id as Account,
  SUM(splits.amount) as Balance
FROM splits
JOIN split_accounts
  ON splits.split_id = split_accounts.split_id
WHERE splits.split_date <= CURDATE()
GROUP BY split_accounts.account_id

+--------------------+---------+
| Account            | Balance |
+--------------------+---------+
| Assets:Checking    |    1000 |
| Revenue:Sales      |   -1000 |
+--------------------+---------+
2 rows in set (0.00 sec)

Programmable Journal Entries! (Coming Soon)

var MyJournal = Yurnell.newJournal();

module.exports = function(deployer) {
  MyJournal.description = "my first description"

  MyJournal.date = "30 june 2019"

  lineitem = Yurnell.newLineItem();
  lineitem.particulars = "something particular";
  lineitem.amount = -10.0;
  lineitem.account = "Income";
  MyJournal.add(lineitem);

  MyJournal.add(Yurnell.newLineItem({
    particulars: "something particular",
    amount: 10,
    account: "Cash"
  }));

  //console.log(MyJournal.date.toString())
  //console.log(MyJournal.length)
  //console.log(MyJournal.balance().toFormat())
  //console.log(MyJournal.Get(1))
  //console.log(MyJournal.valid())
  //console.log(Yurnell.frontend())

  // deployment steps
  deployer.deploy(MyJournal)
};