Project Home

# Differences between Beancount and Ledger

Date: | 2008-04-23
Author: | Martin Blais <blais@furius.ca>

Abstract

A document that summarizes the differences between the valid syntax for Beancount and the syntax of Ledger.

# Introduction

Beancount is an accounting system that uses simple text files, whose syntax is meant to be compatible with John Wiegley's Ledger program. Beancount supports a subset of the Ledger syntax, but also provides some additional directives not found in Ledger. This document summarizes those differences. (This document is meant to be complementary to the Ledger documentation.)

Some of the unsupported syntax is due to the fact that only a partial parser for the Ledger syntax was implement, because the intention is to eventually use the Ledger program as a Python module to do the parsing, but some of it is there because we felt that some features were not necessary.

# Unsupported Syntax

Beancount...

- does not support expressions.

- does not support the syntax that uses symbols instead of explicit commodities, e,g. `$10.00`. You have to use `10.00 USD`

- does not infer the format of the output for each commodity

  This is by choice, the definition is ambiguous: if you use two different syntaxes, which one is preferred? Instead, Beancount will provide a way to "set" the syntax, and will do something reasonable with defaults.

## About Dates

All check dates are assumed to be at midnight at the start of the given day. All transaction dates are assumed to occur something withint the day. Therefore, when you place an @check directive, you are asserting this amount at the beginning of the day, before any of the transactions of that day occur.

# Features not found in Ledger

FIXME todo

- @pad

  > The @pad directive automatically inserts an entry to make the assertions that come before and after itself automatically match. It is used to fill in for missing data in the file, and is typically used to have an opening balances entry automatically created for it.

  > Here is its format:

  > > @pad <DATE> <ACCOUNT> <BALANCE-ACCOUNT>

- @check