Practical getting-started questions

288 views
Skip to first unread message

TF

unread,
Nov 26, 2018, 9:33:48 AM11/26/18
to Beancount
I’d like to get started using beancount for personal finance, and have started on the tutorial, etc. I have some practical, (mostly) non-technical questions that I haven’t found answers to. For example:

- Do I need to create all my accounts from the start? They’re all connected, of course — bank account pays credit-card bill and mortgage, checking account funds savings, etc. if I don’t create them all at once, how do I create those connections as I go? Eg, how can I “pay” a credit-card bill before I’ve set up the credit card account?

- How much history does it make sense to create at the beginning? I would have to import bank and card data (no Quicken file or equivalent). I see there’s a way of starting an account, padding it to the present and then going back to add historical transactions from some arbitrary point before I started recording transactions but after the account-open date. Does it make more sense to start with the present or a month back/several months/beginning of the year?

- What’s the best way to get up to speed on importing csv or Quicken-type files downloaded from a bank? I assume there may be some amount of scripting available (I can manage that much python). So far I’ve hand coded my most recent transactions from my checking account, just to get a feel for what’s involved, but I don’t want to keep doing that for long.

Thanks!

Martin Blais

unread,
Nov 26, 2018, 11:46:20 AM11/26/18
to bean...@googlegroups.com
On Mon, Nov 26, 2018 at 9:34 AM TF <theof...@gmail.com> wrote:
I’d like to get started using beancount for personal finance, and have started on the tutorial, etc. I have some practical, (mostly) non-technical questions that I haven’t found answers to. For example:

- Do I need to create all my accounts from the start? They’re all connected, of course — bank account pays credit-card bill and mortgage, checking account funds savings, etc. if I don’t create them all at once, how do I create those connections as I go? Eg, how can I “pay” a credit-card bill before I’ve set up the credit card account?

By "setup" you could mean one of two things:
1. Declaring the existence of the account, or
2. Filling it up with transactions that will show the correct balance at date.
In order to post to an account, you need just the first.
Furthermore, if you'd like that account to show the correct balance at some date, you can pad it with an entry against a generic equity account like "Opening-Balances". Just insert a Balance directive and a preceding (in date) Pad directive to have that done without having to calculate (this way you can then start filling up the account without having go always readjust the padding amount).

There's an example here:


 

- How much history does it make sense to create at the beginning? I would have to import bank and card data (no Quicken file or equivalent). I see there’s a way of starting an account, padding it to the present and then going back to add historical transactions from some arbitrary point before I started recording transactions but after the account-open date.  Does it make more sense to start with the present or a month back/several months/beginning of the year?

That's really a choice that depends on how much time you want to invest before you get started.

One reasonable way is to choose a starting date (e.g. Sep 1st) and update all the accounts you care about from that date on. A good date to start from is the beginning of the calendar year (although this late in December that will give you a fair amount of work to fill all of this  in).

Another way is to begin with just one account (e.g., if you care about budgeting, maybe start with only your credit card) and update the last month, and as you have more time fill in the past months as desired.

I would say the very most important thing is not to sweat the little details too much and to get going and get into the habit, on say, basic accounts like your credit card (and/or checking account), updating them on a regular basis, and to automate importing for those, to develop a discipline to do that over several months. Just focus on nailing down the process for that. The expenses breakdown will already be worthwhile and when you're comfortable with this start expanding to other accounts. (Pretty quickly you'll be at a point where you'll have the desire to cover your entire balance sheet.)
 

- What’s the best way to get up to speed on importing csv or Quicken-type files downloaded from a bank? I assume there may be some amount of scripting available (I can manage that much python). So far I’ve hand coded my most recent transactions from my checking account, just to get a feel for what’s involved, but I don’t want to keep doing that for long.

You'll have to write some small amount of code, there's no way around it unfortunately.
OTOH there's some support library and tools and I created a little interface to try to organize the process and minimize the amount of code you'd have to write.
There's an example CSV importer. 
Writing a QIF importer if pretty straightforward with qifparse (I have an example somewhere I could share).

Also  see other people's  contributions here, there might be something for you:



 

Thanks!

--
You received this message because you are subscribed to the Google Groups "Beancount" group.
To unsubscribe from this group and stop receiving emails from it, send an email to beancount+...@googlegroups.com.
To post to this group, send email to bean...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/beancount/b67a08b4-b720-4b7b-9a3b-563c026109b6%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

TF

unread,
Nov 26, 2018, 7:52:50 PM11/26/18
to Beancount
Thanks! This is very helpful. I think there will be a learning curve, but I'm impressed with what you and others have done.

hjfc

unread,
Mar 1, 2019, 10:23:28 AM3/1/19
to Beancount
Martin,

New user here --- I've followed your ingest examples to get your ofx importer working for my US-based accounts, but I have a question on how to customize it. My reading of the code (as a non-programmer) is that it uses the max date found in the file to set both the balance assertion and the date in the file name via bean-file. Bank of America ofx files include both a statement date (that gives the maximum date covered by the download) and the date the file was downloaded (i.e., the current day). So, as I've been importing my last year's worth of data, the importer wants to assign today's date to all of the balance assertions and bean-file file names. I've been manually changing these values, but I'd like to do it the right way for future imports. 

So, my question is how do I customize the basic importers you provide with the project? Can I override this in .import config file somehow? Or, do I need to modify a local copy of your ofx importer to suit BoA?

Thanks!

PS: As a long-time gnucash user, I had grown dissatisfied with the (lack of) transparency of the underlying data and the inflexibility the reporting system. Beancount is really exciting --- thank you for the project!

Martin Blais

unread,
Mar 3, 2019, 3:30:36 PM3/3/19
to Beancount
On Fri, Mar 1, 2019 at 10:23 AM hjfc <hannan...@gmail.com> wrote:
Martin,

New user here --- I've followed your ingest examples to get your ofx importer working for my US-based accounts, but I have a question on how to customize it. My reading of the code (as a non-programmer) is that it uses the max date found in the file to set both the balance assertion and the date in the file name via bean-file. Bank of America ofx files include both a statement date (that gives the maximum date covered by the download) and the date the file was downloaded (i.e., the current day). So, as I've been importing my last year's worth of data, the importer wants to assign today's date to all of the balance assertions and bean-file file names. I've been manually changing these values, but I'd like to do it the right way for future imports. 

I don't remember the date it used, but I do remember witnessing some inconsistencies in that regard between insistutions, which are probably due to varying interpretations from the bank programmers who generated the file. Selecting which value is being used should probably be made configurable.


So, my question is how do I customize the basic importers you provide with the project? Can I override this in .import config file somehow? Or, do I need to modify a local copy of your ofx importer to suit BoA?

You may need to modify the code (either clone it and modify it locally, or modify the Beancount one and send a patch).
Note that this ofx importer is merely intended to be an example for how you can implement your own...
I think if you have a requirement that would work with some minor adaptation to that existing code I'm happy to merge that in.
OTOH, a while back I've decided I wasn't going to maintain a repository of everyone's importers (*), so more involved changes should probably like outside of that codebase.


(*) That's how it originally began, a project I called "LedgerHub" at the time, which was intended to be a repository of importers that would work with any plain-text accounting system. I realized it's impractical to do that, and eventually decided to shut it down and to fork out my importer codes to a private repository, and merge the common infrastructure bit to beancount/ingest. If you're interested, read about it here: https://docs.google.com/document/d/1Bln8Zo11Cvez2rdEgpnM-oBHC1B6uPC18Qm7ulobolM/

 
Reply all
Reply to author
Forward
0 new messages