]> pere.pagekite.me Git - homepage.git/blob - blog/Ledger___double_entry_accounting_using_text_based_storage_format.html
dc468cbf05dc7a9966a35c22fdb22befb263a021
[homepage.git] / blog / Ledger___double_entry_accounting_using_text_based_storage_format.html
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">
4 <head>
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" />
9 </head>
10 <body>
11 <div class="title">
12 <h1>
13 <a href="http://people.skolelinux.org/pere/blog/">Petter Reinholdtsen</a>
14
15 </h1>
16
17 </div>
18
19
20 <div class="entry">
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
33
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>
38
39 <blockquote><pre>
40 2004-05-27 Book Store
41 Expenses:Books $20.00
42 Liabilities:Visa
43 </pre></blockquote>
44
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
48 Spang</a>,
49 <a href="http://bugsplat.info/2010-05-23-keeping-finances-with-ledger.html">Pete
50 Keen</a>,
51 <a href="http://blog.andrewcantino.com/blog/2010/11/06/command-line-accounting-with-ledger-and-reckon/">Andrew
52 Cantino</a> and
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>
58
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>
64
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>
74 </div>
75
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>
77
78
79 </div>
80
81
82
83
84 <div id="sidebar">
85
86
87
88 <h2>Archive</h2>
89 <ul>
90
91 <li>2013
92 <ul>
93
94 <li><a href="http://people.skolelinux.org/pere/blog/archive/2013/01/">January (7)</a></li>
95
96 </ul></li>
97
98 <li>2012
99 <ul>
100
101 <li><a href="http://people.skolelinux.org/pere/blog/archive/2012/01/">January (7)</a></li>
102
103 <li><a href="http://people.skolelinux.org/pere/blog/archive/2012/02/">February (10)</a></li>
104
105 <li><a href="http://people.skolelinux.org/pere/blog/archive/2012/03/">March (17)</a></li>
106
107 <li><a href="http://people.skolelinux.org/pere/blog/archive/2012/04/">April (12)</a></li>
108
109 <li><a href="http://people.skolelinux.org/pere/blog/archive/2012/05/">May (12)</a></li>
110
111 <li><a href="http://people.skolelinux.org/pere/blog/archive/2012/06/">June (20)</a></li>
112
113 <li><a href="http://people.skolelinux.org/pere/blog/archive/2012/07/">July (17)</a></li>
114
115 <li><a href="http://people.skolelinux.org/pere/blog/archive/2012/08/">August (6)</a></li>
116
117 <li><a href="http://people.skolelinux.org/pere/blog/archive/2012/09/">September (9)</a></li>
118
119 <li><a href="http://people.skolelinux.org/pere/blog/archive/2012/10/">October (17)</a></li>
120
121 <li><a href="http://people.skolelinux.org/pere/blog/archive/2012/11/">November (10)</a></li>
122
123 <li><a href="http://people.skolelinux.org/pere/blog/archive/2012/12/">December (7)</a></li>
124
125 </ul></li>
126
127 <li>2011
128 <ul>
129
130 <li><a href="http://people.skolelinux.org/pere/blog/archive/2011/01/">January (16)</a></li>
131
132 <li><a href="http://people.skolelinux.org/pere/blog/archive/2011/02/">February (6)</a></li>
133
134 <li><a href="http://people.skolelinux.org/pere/blog/archive/2011/03/">March (6)</a></li>
135
136 <li><a href="http://people.skolelinux.org/pere/blog/archive/2011/04/">April (7)</a></li>
137
138 <li><a href="http://people.skolelinux.org/pere/blog/archive/2011/05/">May (3)</a></li>
139
140 <li><a href="http://people.skolelinux.org/pere/blog/archive/2011/06/">June (2)</a></li>
141
142 <li><a href="http://people.skolelinux.org/pere/blog/archive/2011/07/">July (7)</a></li>
143
144 <li><a href="http://people.skolelinux.org/pere/blog/archive/2011/08/">August (6)</a></li>
145
146 <li><a href="http://people.skolelinux.org/pere/blog/archive/2011/09/">September (4)</a></li>
147
148 <li><a href="http://people.skolelinux.org/pere/blog/archive/2011/10/">October (2)</a></li>
149
150 <li><a href="http://people.skolelinux.org/pere/blog/archive/2011/11/">November (3)</a></li>
151
152 <li><a href="http://people.skolelinux.org/pere/blog/archive/2011/12/">December (1)</a></li>
153
154 </ul></li>
155
156 <li>2010
157 <ul>
158
159 <li><a href="http://people.skolelinux.org/pere/blog/archive/2010/01/">January (2)</a></li>
160
161 <li><a href="http://people.skolelinux.org/pere/blog/archive/2010/02/">February (1)</a></li>
162
163 <li><a href="http://people.skolelinux.org/pere/blog/archive/2010/03/">March (3)</a></li>
164
165 <li><a href="http://people.skolelinux.org/pere/blog/archive/2010/04/">April (3)</a></li>
166
167 <li><a href="http://people.skolelinux.org/pere/blog/archive/2010/05/">May (9)</a></li>
168
169 <li><a href="http://people.skolelinux.org/pere/blog/archive/2010/06/">June (14)</a></li>
170
171 <li><a href="http://people.skolelinux.org/pere/blog/archive/2010/07/">July (12)</a></li>
172
173 <li><a href="http://people.skolelinux.org/pere/blog/archive/2010/08/">August (13)</a></li>
174
175 <li><a href="http://people.skolelinux.org/pere/blog/archive/2010/09/">September (7)</a></li>
176
177 <li><a href="http://people.skolelinux.org/pere/blog/archive/2010/10/">October (9)</a></li>
178
179 <li><a href="http://people.skolelinux.org/pere/blog/archive/2010/11/">November (13)</a></li>
180
181 <li><a href="http://people.skolelinux.org/pere/blog/archive/2010/12/">December (12)</a></li>
182
183 </ul></li>
184
185 <li>2009
186 <ul>
187
188 <li><a href="http://people.skolelinux.org/pere/blog/archive/2009/01/">January (8)</a></li>
189
190 <li><a href="http://people.skolelinux.org/pere/blog/archive/2009/02/">February (8)</a></li>
191
192 <li><a href="http://people.skolelinux.org/pere/blog/archive/2009/03/">March (12)</a></li>
193
194 <li><a href="http://people.skolelinux.org/pere/blog/archive/2009/04/">April (10)</a></li>
195
196 <li><a href="http://people.skolelinux.org/pere/blog/archive/2009/05/">May (9)</a></li>
197
198 <li><a href="http://people.skolelinux.org/pere/blog/archive/2009/06/">June (3)</a></li>
199
200 <li><a href="http://people.skolelinux.org/pere/blog/archive/2009/07/">July (4)</a></li>
201
202 <li><a href="http://people.skolelinux.org/pere/blog/archive/2009/08/">August (3)</a></li>
203
204 <li><a href="http://people.skolelinux.org/pere/blog/archive/2009/09/">September (1)</a></li>
205
206 <li><a href="http://people.skolelinux.org/pere/blog/archive/2009/10/">October (2)</a></li>
207
208 <li><a href="http://people.skolelinux.org/pere/blog/archive/2009/11/">November (3)</a></li>
209
210 <li><a href="http://people.skolelinux.org/pere/blog/archive/2009/12/">December (3)</a></li>
211
212 </ul></li>
213
214 <li>2008
215 <ul>
216
217 <li><a href="http://people.skolelinux.org/pere/blog/archive/2008/11/">November (5)</a></li>
218
219 <li><a href="http://people.skolelinux.org/pere/blog/archive/2008/12/">December (7)</a></li>
220
221 </ul></li>
222
223 </ul>
224
225
226
227 <h2>Tags</h2>
228 <ul>
229
230 <li><a href="http://people.skolelinux.org/pere/blog/tags/3d-printer">3d-printer (13)</a></li>
231
232 <li><a href="http://people.skolelinux.org/pere/blog/tags/amiga">amiga (1)</a></li>
233
234 <li><a href="http://people.skolelinux.org/pere/blog/tags/aros">aros (1)</a></li>
235
236 <li><a href="http://people.skolelinux.org/pere/blog/tags/bankid">bankid (4)</a></li>
237
238 <li><a href="http://people.skolelinux.org/pere/blog/tags/bitcoin">bitcoin (5)</a></li>
239
240 <li><a href="http://people.skolelinux.org/pere/blog/tags/bootsystem">bootsystem (12)</a></li>
241
242 <li><a href="http://people.skolelinux.org/pere/blog/tags/bsa">bsa (2)</a></li>
243
244 <li><a href="http://people.skolelinux.org/pere/blog/tags/debian">debian (65)</a></li>
245
246 <li><a href="http://people.skolelinux.org/pere/blog/tags/debian edu">debian edu (118)</a></li>
247
248 <li><a href="http://people.skolelinux.org/pere/blog/tags/digistan">digistan (9)</a></li>
249
250 <li><a href="http://people.skolelinux.org/pere/blog/tags/docbook">docbook (7)</a></li>
251
252 <li><a href="http://people.skolelinux.org/pere/blog/tags/drivstoffpriser">drivstoffpriser (4)</a></li>
253
254 <li><a href="http://people.skolelinux.org/pere/blog/tags/english">english (171)</a></li>
255
256 <li><a href="http://people.skolelinux.org/pere/blog/tags/fiksgatami">fiksgatami (21)</a></li>
257
258 <li><a href="http://people.skolelinux.org/pere/blog/tags/fildeling">fildeling (12)</a></li>
259
260 <li><a href="http://people.skolelinux.org/pere/blog/tags/freeculture">freeculture (10)</a></li>
261
262 <li><a href="http://people.skolelinux.org/pere/blog/tags/frikanalen">frikanalen (9)</a></li>
263
264 <li><a href="http://people.skolelinux.org/pere/blog/tags/intervju">intervju (32)</a></li>
265
266 <li><a href="http://people.skolelinux.org/pere/blog/tags/kart">kart (17)</a></li>
267
268 <li><a href="http://people.skolelinux.org/pere/blog/tags/ldap">ldap (8)</a></li>
269
270 <li><a href="http://people.skolelinux.org/pere/blog/tags/lenker">lenker (6)</a></li>
271
272 <li><a href="http://people.skolelinux.org/pere/blog/tags/ltsp">ltsp (1)</a></li>
273
274 <li><a href="http://people.skolelinux.org/pere/blog/tags/multimedia">multimedia (25)</a></li>
275
276 <li><a href="http://people.skolelinux.org/pere/blog/tags/norsk">norsk (219)</a></li>
277
278 <li><a href="http://people.skolelinux.org/pere/blog/tags/nuug">nuug (148)</a></li>
279
280 <li><a href="http://people.skolelinux.org/pere/blog/tags/offentlig innsyn">offentlig innsyn (6)</a></li>
281
282 <li><a href="http://people.skolelinux.org/pere/blog/tags/open311">open311 (2)</a></li>
283
284 <li><a href="http://people.skolelinux.org/pere/blog/tags/opphavsrett">opphavsrett (41)</a></li>
285
286 <li><a href="http://people.skolelinux.org/pere/blog/tags/personvern">personvern (61)</a></li>
287
288 <li><a href="http://people.skolelinux.org/pere/blog/tags/raid">raid (1)</a></li>
289
290 <li><a href="http://people.skolelinux.org/pere/blog/tags/reprap">reprap (11)</a></li>
291
292 <li><a href="http://people.skolelinux.org/pere/blog/tags/rfid">rfid (2)</a></li>
293
294 <li><a href="http://people.skolelinux.org/pere/blog/tags/robot">robot (6)</a></li>
295
296 <li><a href="http://people.skolelinux.org/pere/blog/tags/rss">rss (1)</a></li>
297
298 <li><a href="http://people.skolelinux.org/pere/blog/tags/ruter">ruter (4)</a></li>
299
300 <li><a href="http://people.skolelinux.org/pere/blog/tags/scraperwiki">scraperwiki (2)</a></li>
301
302 <li><a href="http://people.skolelinux.org/pere/blog/tags/sikkerhet">sikkerhet (28)</a></li>
303
304 <li><a href="http://people.skolelinux.org/pere/blog/tags/sitesummary">sitesummary (4)</a></li>
305
306 <li><a href="http://people.skolelinux.org/pere/blog/tags/skepsis">skepsis (4)</a></li>
307
308 <li><a href="http://people.skolelinux.org/pere/blog/tags/standard">standard (39)</a></li>
309
310 <li><a href="http://people.skolelinux.org/pere/blog/tags/stavekontroll">stavekontroll (3)</a></li>
311
312 <li><a href="http://people.skolelinux.org/pere/blog/tags/stortinget">stortinget (5)</a></li>
313
314 <li><a href="http://people.skolelinux.org/pere/blog/tags/surveillance">surveillance (12)</a></li>
315
316 <li><a href="http://people.skolelinux.org/pere/blog/tags/sysadmin">sysadmin (1)</a></li>
317
318 <li><a href="http://people.skolelinux.org/pere/blog/tags/valg">valg (7)</a></li>
319
320 <li><a href="http://people.skolelinux.org/pere/blog/tags/video">video (35)</a></li>
321
322 <li><a href="http://people.skolelinux.org/pere/blog/tags/vitenskap">vitenskap (4)</a></li>
323
324 <li><a href="http://people.skolelinux.org/pere/blog/tags/web">web (26)</a></li>
325
326 </ul>
327
328
329 </div>
330 <p style="text-align: right">
331 Created by <a href="http://steve.org.uk/Software/chronicle">Chronicle v4.4</a>
332 </p>
333
334 </body>
335 </html>