1 <!DOCTYPE html PUBLIC
"-//W3C//DTD XHTML 1.0 Strict//EN"
2 "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
3 <html xmlns=
"http://www.w3.org/1999/xhtml" dir=
"ltr">
5 <meta http-equiv=
"Content-Type" content=
"text/html;charset=utf-8" />
6 <title>Petter Reinholdtsen: Ledger - double-entry accounting using text based storage format
</title>
7 <link rel=
"stylesheet" type=
"text/css" media=
"screen" href=
"http://people.skolelinux.org/pere/blog/style.css" />
8 <link rel=
"stylesheet" type=
"text/css" media=
"screen" href=
"http://people.skolelinux.org/pere/blog/vim.css" />
13 <a href=
"http://people.skolelinux.org/pere/blog/">Petter Reinholdtsen
</a>
21 <div class=
"title">Ledger - double-entry accounting using text based storage format
</div>
22 <div class=
"date">18th December
2012</div>
23 <div class=
"body"><p>A few days ago I came across
24 <a href=
"http://joeyh.name/blog/entry/hledger/">a blog post from Joey
25 Hess
</a> describing
<a href=
"http://ledger-cli.org/">ledger
</a> and
26 hledger, a text based system for double-entry accounting. I found it
27 interesting, as I am involved with several organizations where
28 accounting is an issue, and I have not really become too friendly with
29 the different web based systems we use. I find it hard to find what I
30 look for in the menus and even harder try to get sensible data out of
31 the systems. Ledger seem different. The accounting data is kept in
32 text files that can be stored in a version control system, and there
34 are at least
<a href=
"https://github.com/ledger/ledger/wiki/Ports">five
35 different implementations
</a> able to read the format. An example
36 entry look like this, and is simple enough that it will be trivial to
37 generate entries based on CVS files fetched from the bank:
</p>
45 <p>The concept seemed interesting enough for me to check it out and
46 look for others using it. I found blog posts from
47 <a href=
"http://blog.spang.cc/posts/hledger_rocks_my_world/">Christine
49 <a href=
"http://bugsplat.info/2010-05-23-keeping-finances-with-ledger.html">Pete
51 <a href=
"http://blog.andrewcantino.com/blog/2010/11/06/command-line-accounting-with-ledger-and-reckon/">Andrew
53 <a href=
"http://blog.iphoting.com/blog/2012/11/29/command-line-double-entry-accounting/">Ronald
54 Ip
</a> describing how they use it, as well as a post from
55 <a href=
"https://groups.google.com/forum/?fromgroups=#!topic/ledger-cli/r0oWjwbQ9Bo">Bradley
56 M. Kuhn
</a> at the Software Freedom Conservancy. All seemed like good
57 recommendations fitting my need.
</p>
59 <p>The
<a href=
"http://packages.qa.debian.org/l/ledger.html">ledger
</a>
60 package is available in Debian Squeeze, while the
61 <a href=
"http://packages.qa.debian.org/h/haskell-hledger.html">hledger
</a>
62 package only is available in Debian Sid. As I use Squeeze, ledger
63 seemed the best choice to get started.
</p>
65 <p>To get some real data to test on, I wrote a
66 <a href=
"http://www.nuug.no/tools/lodo2ledger">web scraper
</a> for
67 <a href=
"http://www.lodo.no/">LODO
</a>, the accounting system used by
68 the
<a href=
"http://www.nuug.no/">NUUG
</a> association, and started to
69 play with the data set. I'm not really deeply into accounting, but I
70 am able to get a simple balance and accounting status for example
71 using the "
<tt>ledger balance
</tt>" command. But I will have to
72 gather more experience before I know if the ledger way is a good fit
73 for the organisations I am involved in.</p>
76 <div class="tags
">Tags: <a href="http://people.skolelinux.org/pere/blog/tags/debian edu
">debian edu</a>, <a href="http://people.skolelinux.org/pere/blog/tags/english
">english</a>, <a href="http://people.skolelinux.org/pere/blog/tags/nuug
">nuug</a>.</div>
94 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2013/
01/
">January (11)</a></li>
96 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2013/
02/
">February (1)</a></li>
103 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2012/
01/
">January (7)</a></li>
105 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2012/
02/
">February (10)</a></li>
107 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2012/
03/
">March (17)</a></li>
109 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2012/
04/
">April (12)</a></li>
111 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2012/
05/
">May (12)</a></li>
113 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2012/
06/
">June (20)</a></li>
115 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2012/
07/
">July (17)</a></li>
117 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2012/
08/
">August (6)</a></li>
119 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2012/
09/
">September (9)</a></li>
121 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2012/
10/
">October (17)</a></li>
123 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2012/
11/
">November (10)</a></li>
125 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2012/
12/
">December (7)</a></li>
132 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2011/
01/
">January (16)</a></li>
134 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2011/
02/
">February (6)</a></li>
136 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2011/
03/
">March (6)</a></li>
138 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2011/
04/
">April (7)</a></li>
140 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2011/
05/
">May (3)</a></li>
142 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2011/
06/
">June (2)</a></li>
144 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2011/
07/
">July (7)</a></li>
146 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2011/
08/
">August (6)</a></li>
148 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2011/
09/
">September (4)</a></li>
150 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2011/
10/
">October (2)</a></li>
152 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2011/
11/
">November (3)</a></li>
154 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2011/
12/
">December (1)</a></li>
161 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2010/
01/
">January (2)</a></li>
163 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2010/
02/
">February (1)</a></li>
165 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2010/
03/
">March (3)</a></li>
167 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2010/
04/
">April (3)</a></li>
169 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2010/
05/
">May (9)</a></li>
171 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2010/
06/
">June (14)</a></li>
173 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2010/
07/
">July (12)</a></li>
175 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2010/
08/
">August (13)</a></li>
177 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2010/
09/
">September (7)</a></li>
179 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2010/
10/
">October (9)</a></li>
181 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2010/
11/
">November (13)</a></li>
183 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2010/
12/
">December (12)</a></li>
190 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2009/
01/
">January (8)</a></li>
192 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2009/
02/
">February (8)</a></li>
194 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2009/
03/
">March (12)</a></li>
196 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2009/
04/
">April (10)</a></li>
198 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2009/
05/
">May (9)</a></li>
200 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2009/
06/
">June (3)</a></li>
202 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2009/
07/
">July (4)</a></li>
204 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2009/
08/
">August (3)</a></li>
206 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2009/
09/
">September (1)</a></li>
208 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2009/
10/
">October (2)</a></li>
210 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2009/
11/
">November (3)</a></li>
212 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2009/
12/
">December (3)</a></li>
219 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2008/
11/
">November (5)</a></li>
221 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2008/
12/
">December (7)</a></li>
232 <li><a href="http://people.skolelinux.org/pere/blog/tags/
3d-printer
">3d-printer (13)</a></li>
234 <li><a href="http://people.skolelinux.org/pere/blog/tags/amiga
">amiga (1)</a></li>
236 <li><a href="http://people.skolelinux.org/pere/blog/tags/aros
">aros (1)</a></li>
238 <li><a href="http://people.skolelinux.org/pere/blog/tags/bankid
">bankid (4)</a></li>
240 <li><a href="http://people.skolelinux.org/pere/blog/tags/bitcoin
">bitcoin (6)</a></li>
242 <li><a href="http://people.skolelinux.org/pere/blog/tags/bootsystem
">bootsystem (12)</a></li>
244 <li><a href="http://people.skolelinux.org/pere/blog/tags/bsa
">bsa (2)</a></li>
246 <li><a href="http://people.skolelinux.org/pere/blog/tags/debian
">debian (70)</a></li>
248 <li><a href="http://people.skolelinux.org/pere/blog/tags/debian edu
">debian edu (118)</a></li>
250 <li><a href="http://people.skolelinux.org/pere/blog/tags/digistan
">digistan (9)</a></li>
252 <li><a href="http://people.skolelinux.org/pere/blog/tags/docbook
">docbook (7)</a></li>
254 <li><a href="http://people.skolelinux.org/pere/blog/tags/drivstoffpriser
">drivstoffpriser (4)</a></li>
256 <li><a href="http://people.skolelinux.org/pere/blog/tags/english
">english (176)</a></li>
258 <li><a href="http://people.skolelinux.org/pere/blog/tags/fiksgatami
">fiksgatami (21)</a></li>
260 <li><a href="http://people.skolelinux.org/pere/blog/tags/fildeling
">fildeling (12)</a></li>
262 <li><a href="http://people.skolelinux.org/pere/blog/tags/freeculture
">freeculture (10)</a></li>
264 <li><a href="http://people.skolelinux.org/pere/blog/tags/frikanalen
">frikanalen (9)</a></li>
266 <li><a href="http://people.skolelinux.org/pere/blog/tags/intervju
">intervju (32)</a></li>
268 <li><a href="http://people.skolelinux.org/pere/blog/tags/isenkram
">isenkram (5)</a></li>
270 <li><a href="http://people.skolelinux.org/pere/blog/tags/kart
">kart (17)</a></li>
272 <li><a href="http://people.skolelinux.org/pere/blog/tags/ldap
">ldap (8)</a></li>
274 <li><a href="http://people.skolelinux.org/pere/blog/tags/lenker
">lenker (6)</a></li>
276 <li><a href="http://people.skolelinux.org/pere/blog/tags/ltsp
">ltsp (1)</a></li>
278 <li><a href="http://people.skolelinux.org/pere/blog/tags/multimedia
">multimedia (25)</a></li>
280 <li><a href="http://people.skolelinux.org/pere/blog/tags/norsk
">norsk (219)</a></li>
282 <li><a href="http://people.skolelinux.org/pere/blog/tags/nuug
">nuug (148)</a></li>
284 <li><a href="http://people.skolelinux.org/pere/blog/tags/offentlig innsyn
">offentlig innsyn (6)</a></li>
286 <li><a href="http://people.skolelinux.org/pere/blog/tags/open311
">open311 (2)</a></li>
288 <li><a href="http://people.skolelinux.org/pere/blog/tags/opphavsrett
">opphavsrett (41)</a></li>
290 <li><a href="http://people.skolelinux.org/pere/blog/tags/personvern
">personvern (61)</a></li>
292 <li><a href="http://people.skolelinux.org/pere/blog/tags/raid
">raid (1)</a></li>
294 <li><a href="http://people.skolelinux.org/pere/blog/tags/reprap
">reprap (11)</a></li>
296 <li><a href="http://people.skolelinux.org/pere/blog/tags/rfid
">rfid (2)</a></li>
298 <li><a href="http://people.skolelinux.org/pere/blog/tags/robot
">robot (6)</a></li>
300 <li><a href="http://people.skolelinux.org/pere/blog/tags/rss
">rss (1)</a></li>
302 <li><a href="http://people.skolelinux.org/pere/blog/tags/ruter
">ruter (4)</a></li>
304 <li><a href="http://people.skolelinux.org/pere/blog/tags/scraperwiki
">scraperwiki (2)</a></li>
306 <li><a href="http://people.skolelinux.org/pere/blog/tags/sikkerhet
">sikkerhet (28)</a></li>
308 <li><a href="http://people.skolelinux.org/pere/blog/tags/sitesummary
">sitesummary (4)</a></li>
310 <li><a href="http://people.skolelinux.org/pere/blog/tags/skepsis
">skepsis (4)</a></li>
312 <li><a href="http://people.skolelinux.org/pere/blog/tags/standard
">standard (39)</a></li>
314 <li><a href="http://people.skolelinux.org/pere/blog/tags/stavekontroll
">stavekontroll (3)</a></li>
316 <li><a href="http://people.skolelinux.org/pere/blog/tags/stortinget
">stortinget (5)</a></li>
318 <li><a href="http://people.skolelinux.org/pere/blog/tags/surveillance
">surveillance (12)</a></li>
320 <li><a href="http://people.skolelinux.org/pere/blog/tags/sysadmin
">sysadmin (1)</a></li>
322 <li><a href="http://people.skolelinux.org/pere/blog/tags/valg
">valg (7)</a></li>
324 <li><a href="http://people.skolelinux.org/pere/blog/tags/video
">video (35)</a></li>
326 <li><a href="http://people.skolelinux.org/pere/blog/tags/vitenskap
">vitenskap (4)</a></li>
328 <li><a href="http://people.skolelinux.org/pere/blog/tags/web
">web (26)</a></li>
334 <p style="text-align: right
">
335 Created by <a href="http://steve.org.uk/Software/chronicle
">Chronicle v4.4</a>