3 homebank2ledger - A tool to convert HomeBank files to Ledger format
11 homebank2ledger --input FILEPATH [--output FILEPATH] [--format FORMAT]
12 [--version|--help|--manual] [--account-width NUM]
13 [--accounts|--no-accounts] [--payees|--no-payees]
14 [--tags|--no-tags] [--commodities|--no-commodities]
16 [--rename-account STR]... [--exclude-account STR]...
20 homebank2ledger converts HomeBank <http://homebank.free.fr/> files to a
21 format usable by Ledger <https://www.ledger-cli.org/>. It can also
22 convert directly to the similar Beancount <http://furius.ca/beancount/>
25 This software is EXPERIMENTAL, in early development. Its interface may
26 change without notice.
28 I wrote homebank2ledger because I have been maintaining my own personal
29 finances using HomeBank (which is awesome) and I wanted to investigate
30 using plain text accounting programs. It works well enough for my data,
31 but you may be using HomeBank features that I don't so there may be
32 cases this doesn't handle well or at all. Feel free to file a bug
33 report. This script does NOT try to modify the original HomeBank files
34 it converts from, so there won't be any crazy data loss bugs... but no
39 * Converts HomeBank accounts and categories into a typical set of
40 double-entry accounts.
42 * Retains HomeBank metadata, including payees and tags.
44 * Offers some customization of the output ledger, like account
47 This program is feature-complete in my opinion (well, almost -- see
48 "CAVEATS"), but if there is anything you think it could do to be even
49 better, feedback is welcome; just file a bug report. Or fork the code
54 You can migrate the data you have in HomeBank so you can start
55 maintaining your accounts in Ledger (or Beancount).
57 Or if you don't plan to switch completely off of HomeBank, you can
58 continue to maintain your accounts in HomeBank and use this script to
59 also take advantage of the reports Ledger offers.
65 Print the version and exit.
71 Print help/usage info and exit.
77 Print the full manual and exit.
83 Specify the path to the HomeBank file to read (must already exist).
89 Specify the path to the Ledger file to write (may not exist yet). If
90 not provided, the formatted ledger will be printed on STDOUT.
96 Specify the output file format. If provided, must be one of:
104 Specify the number of characters to reserve for the account column in
105 transactions. Adjusting this can provide prettier formatting of the
112 Enables account declarations.
114 Defaults to enabled; use --no-accounts to disable.
118 Enables payee declarations.
120 Defaults to enabled; use --no-payees to disable.
124 Enables tag declarations.
126 Defaults to enabled; use --no-tags to disable.
130 Enables commodity declarations.
132 Defaults to enabled; use --no-commodities to disable.
136 Enables budget transactions.
138 Budget transactions are only supported by the Ledger format (for now).
139 This option is silently ignored otherwise.
141 Defaults to enabled; use --no-budget to disable.
145 Specify the opening date for the "opening balances" transaction. This
146 transaction is created (if needed) to support HomeBank's ability to
147 configure accounts with opening balances.
149 Date must be in the form "YYYY-MM-DD". Defaults to the date of the
154 Specifies a mapping for renaming accounts in the output. By default
155 homebank2ledger tries to come up with sensible account names (based on
156 your HomeBank accounts and categories) that fit into five root
169 The value of the argument must be of the form "REGEXP=REPLACEMENT". See
172 Can be repeated to rename multiple accounts.
174 --exclude-account STR
176 Specifies an account that will not be included in the output. All
177 transactions related to this account will be skipped.
179 Can be repeated to exclude multiple accounts.
185 # Convert homebank.xhb to a Ledger-compatible file:
186 homebank2ledger path/to/homebank.xhb -o ledger.dat
188 # Run the Ledger balance report:
189 ledger -f ledger.dat balance
191 You can also combine this into one command:
193 homebank2ledger path/to/homebank.xhb | ledger -f - balance
197 With the "--rename-account STR" argument, you have some control over
198 the resulting account structure. This may be useful in cases where the
199 organization imposed (or encouraged) by HomeBank doesn't necessarily
200 line up with an ideal double-entry structure.
202 homebank2ledger path/to/homebank.xhb -o ledger.dat \
203 --rename-account '^Assets:Credit Union Savings$=Assets:Bank:Credit Union:Savings' \
204 --rename-account '^Assets:Credit Union Checking$=Assets:Bank:Credit Union:Checking'
206 Multiple accounts can be renamed at the same time because the first
207 part of the mapping is a regular expression. The above example could be
210 homebank2ledger path/to/homebank.xhb -o ledger.dat \
211 --rename-account '^Assets:Credit Union =Assets:Bank:Credit Union:'
213 You can also merge accounts by simple renaming multiple accounts to the
216 homebank2ledger path/to/homebank.xhb -o ledger.dat \
217 --rename-account '^Liabilities:Chase VISA$=Liabilities:All Credit Cards' \
218 --rename-account '^Liabilities:Amex$=Liabilities:All Credit Cards'
220 If you need to do anything more complicated, of course you can edit the
221 output after converting; it's just plain text.
225 # Convert homebank.xhb to a Beancount-compatible file:
226 homebank2ledger path/to/homebank.xhb -f beancount -o ledger.beancount
228 # Run the balances report:
229 bean-report ledger.beancount balances
233 * I didn't intend to make this a releasable robust product, so it's
236 * Scheduled transactions are not (yet) converted.
238 * There are some minor formatting tweaks I will make (e.g.
239 consolidate transaction tags and payees)
243 Please report any bugs or feature requests on the bugtracker website
244 https://github.com/chazmcgarvey/homebank2ledger/issues
246 When submitting a bug or request, please include a test-file or a patch
247 to an existing test-file that illustrates the bug or desired feature.
251 Charles McGarvey <chazmcgarvey@brokenzipper.com>
253 COPYRIGHT AND LICENSE
255 This software is Copyright (c) 2019 by Charles McGarvey.
257 This is free software, licensed under:
259 The MIT (X11) License