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" />
15 <a href=
"http://people.skolelinux.org/pere/blog/">Petter Reinholdtsen
</a>
23 <div class=
"title">Ledger - double-entry accounting using text based storage format
</div>
24 <div class=
"date">18th December
2012</div>
25 <div class=
"body"><p>A few days ago I came across
26 <a href=
"http://joeyh.name/blog/entry/hledger/">a blog post from Joey
27 Hess
</a> describing
<a href=
"http://ledger-cli.org/">ledger
</a> and
28 hledger, a text based system for double-entry accounting. I found it
29 interesting, as I am involved with several organizations where
30 accounting is an issue, and I have not really become too friendly with
31 the different web based systems we use. I find it hard to find what I
32 look for in the menus and even harder try to get sensible data out of
33 the systems. Ledger seem different. The accounting data is kept in
34 text files that can be stored in a version control system, and there
36 are at least
<a href=
"https://github.com/ledger/ledger/wiki/Ports">five
37 different implementations
</a> able to read the format. An example
38 entry look like this, and is simple enough that it will be trivial to
39 generate entries based on CVS files fetched from the bank:
</p>
47 <p>The concept seemed interesting enough for me to check it out and
48 look for others using it. I found blog posts from
49 <a href=
"http://blog.spang.cc/posts/hledger_rocks_my_world/">Christine
51 <a href=
"http://bugsplat.info/2010-05-23-keeping-finances-with-ledger.html">Pete
53 <a href=
"http://blog.andrewcantino.com/blog/2010/11/06/command-line-accounting-with-ledger-and-reckon/">Andrew
55 <a href=
"http://blog.iphoting.com/blog/2012/11/29/command-line-double-entry-accounting/">Ronald
56 Ip
</a> describing how they use it, as well as a post from
57 <a href=
"https://groups.google.com/forum/?fromgroups=#!topic/ledger-cli/r0oWjwbQ9Bo">Bradley
58 M. Kuhn
</a> at the Software Freedom Conservancy. All seemed like good
59 recommendations fitting my need.
</p>
61 <p>The
<a href=
"http://packages.qa.debian.org/l/ledger.html">ledger
</a>
62 package is available in Debian Squeeze, while the
63 <a href=
"http://packages.qa.debian.org/h/haskell-hledger.html">hledger
</a>
64 package only is available in Debian Sid. As I use Squeeze, ledger
65 seemed the best choice to get started.
</p>
67 <p>To get some real data to test on, I wrote a
68 <a href=
"http://www.nuug.no/tools/lodo2ledger">web scraper
</a> for
69 <a href=
"http://www.lodo.no/">LODO
</a>, the accounting system used by
70 the
<a href=
"http://www.nuug.no/">NUUG
</a> association, and started to
71 play with the data set. I'm not really deeply into accounting, but I
72 am able to get a simple balance and accounting status for example
73 using the "
<tt>ledger balance
</tt>" command. But I will have to
74 gather more experience before I know if the ledger way is a good fit
75 for the organisations I am involved in.</p>
78 <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>
96 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2016/
01/
">January (3)</a></li>
98 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2016/
02/
">February (2)</a></li>
100 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2016/
03/
">March (3)</a></li>
102 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2016/
04/
">April (8)</a></li>
104 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2016/
05/
">May (8)</a></li>
106 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2016/
06/
">June (2)</a></li>
108 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2016/
07/
">July (2)</a></li>
110 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2016/
08/
">August (3)</a></li>
117 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2015/
01/
">January (7)</a></li>
119 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2015/
02/
">February (6)</a></li>
121 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2015/
03/
">March (1)</a></li>
123 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2015/
04/
">April (4)</a></li>
125 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2015/
05/
">May (3)</a></li>
127 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2015/
06/
">June (4)</a></li>
129 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2015/
07/
">July (6)</a></li>
131 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2015/
08/
">August (2)</a></li>
133 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2015/
09/
">September (2)</a></li>
135 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2015/
10/
">October (9)</a></li>
137 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2015/
11/
">November (6)</a></li>
139 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2015/
12/
">December (3)</a></li>
146 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2014/
01/
">January (2)</a></li>
148 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2014/
02/
">February (3)</a></li>
150 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2014/
03/
">March (8)</a></li>
152 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2014/
04/
">April (7)</a></li>
154 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2014/
05/
">May (1)</a></li>
156 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2014/
06/
">June (2)</a></li>
158 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2014/
07/
">July (2)</a></li>
160 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2014/
08/
">August (2)</a></li>
162 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2014/
09/
">September (5)</a></li>
164 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2014/
10/
">October (6)</a></li>
166 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2014/
11/
">November (3)</a></li>
168 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2014/
12/
">December (5)</a></li>
175 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2013/
01/
">January (11)</a></li>
177 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2013/
02/
">February (9)</a></li>
179 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2013/
03/
">March (9)</a></li>
181 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2013/
04/
">April (6)</a></li>
183 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2013/
05/
">May (9)</a></li>
185 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2013/
06/
">June (10)</a></li>
187 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2013/
07/
">July (7)</a></li>
189 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2013/
08/
">August (3)</a></li>
191 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2013/
09/
">September (5)</a></li>
193 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2013/
10/
">October (7)</a></li>
195 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2013/
11/
">November (9)</a></li>
197 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2013/
12/
">December (3)</a></li>
204 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2012/
01/
">January (7)</a></li>
206 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2012/
02/
">February (10)</a></li>
208 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2012/
03/
">March (17)</a></li>
210 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2012/
04/
">April (12)</a></li>
212 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2012/
05/
">May (12)</a></li>
214 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2012/
06/
">June (20)</a></li>
216 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2012/
07/
">July (17)</a></li>
218 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2012/
08/
">August (6)</a></li>
220 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2012/
09/
">September (9)</a></li>
222 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2012/
10/
">October (17)</a></li>
224 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2012/
11/
">November (10)</a></li>
226 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2012/
12/
">December (7)</a></li>
233 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2011/
01/
">January (16)</a></li>
235 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2011/
02/
">February (6)</a></li>
237 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2011/
03/
">March (6)</a></li>
239 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2011/
04/
">April (7)</a></li>
241 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2011/
05/
">May (3)</a></li>
243 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2011/
06/
">June (2)</a></li>
245 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2011/
07/
">July (7)</a></li>
247 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2011/
08/
">August (6)</a></li>
249 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2011/
09/
">September (4)</a></li>
251 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2011/
10/
">October (2)</a></li>
253 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2011/
11/
">November (3)</a></li>
255 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2011/
12/
">December (1)</a></li>
262 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2010/
01/
">January (2)</a></li>
264 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2010/
02/
">February (1)</a></li>
266 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2010/
03/
">March (3)</a></li>
268 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2010/
04/
">April (3)</a></li>
270 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2010/
05/
">May (9)</a></li>
272 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2010/
06/
">June (14)</a></li>
274 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2010/
07/
">July (12)</a></li>
276 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2010/
08/
">August (13)</a></li>
278 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2010/
09/
">September (7)</a></li>
280 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2010/
10/
">October (9)</a></li>
282 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2010/
11/
">November (13)</a></li>
284 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2010/
12/
">December (12)</a></li>
291 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2009/
01/
">January (8)</a></li>
293 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2009/
02/
">February (8)</a></li>
295 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2009/
03/
">March (12)</a></li>
297 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2009/
04/
">April (10)</a></li>
299 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2009/
05/
">May (9)</a></li>
301 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2009/
06/
">June (3)</a></li>
303 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2009/
07/
">July (4)</a></li>
305 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2009/
08/
">August (3)</a></li>
307 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2009/
09/
">September (1)</a></li>
309 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2009/
10/
">October (2)</a></li>
311 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2009/
11/
">November (3)</a></li>
313 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2009/
12/
">December (3)</a></li>
320 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2008/
11/
">November (5)</a></li>
322 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2008/
12/
">December (7)</a></li>
333 <li><a href="http://people.skolelinux.org/pere/blog/tags/
3d-printer
">3d-printer (13)</a></li>
335 <li><a href="http://people.skolelinux.org/pere/blog/tags/amiga
">amiga (1)</a></li>
337 <li><a href="http://people.skolelinux.org/pere/blog/tags/aros
">aros (1)</a></li>
339 <li><a href="http://people.skolelinux.org/pere/blog/tags/bankid
">bankid (4)</a></li>
341 <li><a href="http://people.skolelinux.org/pere/blog/tags/bitcoin
">bitcoin (9)</a></li>
343 <li><a href="http://people.skolelinux.org/pere/blog/tags/bootsystem
">bootsystem (16)</a></li>
345 <li><a href="http://people.skolelinux.org/pere/blog/tags/bsa
">bsa (2)</a></li>
347 <li><a href="http://people.skolelinux.org/pere/blog/tags/chrpath
">chrpath (2)</a></li>
349 <li><a href="http://people.skolelinux.org/pere/blog/tags/debian
">debian (133)</a></li>
351 <li><a href="http://people.skolelinux.org/pere/blog/tags/debian edu
">debian edu (157)</a></li>
353 <li><a href="http://people.skolelinux.org/pere/blog/tags/digistan
">digistan (10)</a></li>
355 <li><a href="http://people.skolelinux.org/pere/blog/tags/dld
">dld (15)</a></li>
357 <li><a href="http://people.skolelinux.org/pere/blog/tags/docbook
">docbook (23)</a></li>
359 <li><a href="http://people.skolelinux.org/pere/blog/tags/drivstoffpriser
">drivstoffpriser (4)</a></li>
361 <li><a href="http://people.skolelinux.org/pere/blog/tags/english
">english (325)</a></li>
363 <li><a href="http://people.skolelinux.org/pere/blog/tags/fiksgatami
">fiksgatami (23)</a></li>
365 <li><a href="http://people.skolelinux.org/pere/blog/tags/fildeling
">fildeling (12)</a></li>
367 <li><a href="http://people.skolelinux.org/pere/blog/tags/freeculture
">freeculture (28)</a></li>
369 <li><a href="http://people.skolelinux.org/pere/blog/tags/freedombox
">freedombox (9)</a></li>
371 <li><a href="http://people.skolelinux.org/pere/blog/tags/frikanalen
">frikanalen (18)</a></li>
373 <li><a href="http://people.skolelinux.org/pere/blog/tags/h264
">h264 (20)</a></li>
375 <li><a href="http://people.skolelinux.org/pere/blog/tags/intervju
">intervju (42)</a></li>
377 <li><a href="http://people.skolelinux.org/pere/blog/tags/isenkram
">isenkram (12)</a></li>
379 <li><a href="http://people.skolelinux.org/pere/blog/tags/kart
">kart (19)</a></li>
381 <li><a href="http://people.skolelinux.org/pere/blog/tags/ldap
">ldap (9)</a></li>
383 <li><a href="http://people.skolelinux.org/pere/blog/tags/lenker
">lenker (8)</a></li>
385 <li><a href="http://people.skolelinux.org/pere/blog/tags/lsdvd
">lsdvd (2)</a></li>
387 <li><a href="http://people.skolelinux.org/pere/blog/tags/ltsp
">ltsp (1)</a></li>
389 <li><a href="http://people.skolelinux.org/pere/blog/tags/mesh network
">mesh network (8)</a></li>
391 <li><a href="http://people.skolelinux.org/pere/blog/tags/multimedia
">multimedia (39)</a></li>
393 <li><a href="http://people.skolelinux.org/pere/blog/tags/nice free software
">nice free software (7)</a></li>
395 <li><a href="http://people.skolelinux.org/pere/blog/tags/norsk
">norsk (276)</a></li>
397 <li><a href="http://people.skolelinux.org/pere/blog/tags/nuug
">nuug (182)</a></li>
399 <li><a href="http://people.skolelinux.org/pere/blog/tags/offentlig innsyn
">offentlig innsyn (26)</a></li>
401 <li><a href="http://people.skolelinux.org/pere/blog/tags/open311
">open311 (2)</a></li>
403 <li><a href="http://people.skolelinux.org/pere/blog/tags/opphavsrett
">opphavsrett (61)</a></li>
405 <li><a href="http://people.skolelinux.org/pere/blog/tags/personvern
">personvern (92)</a></li>
407 <li><a href="http://people.skolelinux.org/pere/blog/tags/raid
">raid (1)</a></li>
409 <li><a href="http://people.skolelinux.org/pere/blog/tags/reactos
">reactos (1)</a></li>
411 <li><a href="http://people.skolelinux.org/pere/blog/tags/reprap
">reprap (11)</a></li>
413 <li><a href="http://people.skolelinux.org/pere/blog/tags/rfid
">rfid (3)</a></li>
415 <li><a href="http://people.skolelinux.org/pere/blog/tags/robot
">robot (9)</a></li>
417 <li><a href="http://people.skolelinux.org/pere/blog/tags/rss
">rss (1)</a></li>
419 <li><a href="http://people.skolelinux.org/pere/blog/tags/ruter
">ruter (4)</a></li>
421 <li><a href="http://people.skolelinux.org/pere/blog/tags/scraperwiki
">scraperwiki (2)</a></li>
423 <li><a href="http://people.skolelinux.org/pere/blog/tags/sikkerhet
">sikkerhet (48)</a></li>
425 <li><a href="http://people.skolelinux.org/pere/blog/tags/sitesummary
">sitesummary (4)</a></li>
427 <li><a href="http://people.skolelinux.org/pere/blog/tags/skepsis
">skepsis (5)</a></li>
429 <li><a href="http://people.skolelinux.org/pere/blog/tags/standard
">standard (49)</a></li>
431 <li><a href="http://people.skolelinux.org/pere/blog/tags/stavekontroll
">stavekontroll (4)</a></li>
433 <li><a href="http://people.skolelinux.org/pere/blog/tags/stortinget
">stortinget (10)</a></li>
435 <li><a href="http://people.skolelinux.org/pere/blog/tags/surveillance
">surveillance (37)</a></li>
437 <li><a href="http://people.skolelinux.org/pere/blog/tags/sysadmin
">sysadmin (2)</a></li>
439 <li><a href="http://people.skolelinux.org/pere/blog/tags/usenix
">usenix (2)</a></li>
441 <li><a href="http://people.skolelinux.org/pere/blog/tags/valg
">valg (8)</a></li>
443 <li><a href="http://people.skolelinux.org/pere/blog/tags/video
">video (59)</a></li>
445 <li><a href="http://people.skolelinux.org/pere/blog/tags/vitenskap
">vitenskap (4)</a></li>
447 <li><a href="http://people.skolelinux.org/pere/blog/tags/web
">web (38)</a></li>
453 <p style="text-align: right
">
454 Created by <a href="http://steve.org.uk/Software/chronicle
">Chronicle v4.6</a>