This is something that I've been refining my approach to over the last few
years as I learn beancount, and generally get my personal and business
finances in order.
Boring background:
In addition to our personal finances, I have a business that
transitioned from a sole proprietorship to an LLC taxed as an S-corporation
~3 years ago. (I own 100%, so I don't have to worry about tracking equity
between several owners). Initially, I had a business checking account, but
there was quite a bit of intermingling of funds between business and
personal credit cards, ebay purchases, etc. Once the LLC was formed, I've
had to be much better about keeping them seperate.
What I'm currently doing:
In order to keep the business and personal accounting separate, but
still allow an overall view of both (for currently tracking net worth, and
historical data where they really were inseparable several years ago), I am
splitting the beancount files by both year, and business / personal data.
For older, pre-LLC years, I keep both the business and personal data in the
same file, split by year. Once the LLC was formed, I broke that off into
its own file by year. The resulting data files look like:
combined_2019.beancount, combined_2020.beancount, personal_2021.beancount,
business_2021.beancount... etc.
Then, to look at them usefully, I have top level files that only exist
to set various Fava options, and then include the various subfiles. I have
3 top level files: "personal.beancount", "business.beancount", and
"master.beancount". Personal has include statements for the combined
files, and the personal files since the LLC formation. Business includes
just the post LLC files, and Master includes everything. Then, I can load
up any of the three top level files in Fava (I actually have all three
permanently loaded on a server that mirrors my personal files, so they're
always accessible) and see just what aspect of my finances I'm interested
in.
What has taken me too long to figure out is how to report / book the
various transfers between business and personal without making them show up
as either expenses or income, and keep Fava's reports sane for any of the
three views of the data, depending on how you slice it. The solution is a
an adaptation of the the concept of a "zero sum transfer account" (I
picked this up from someone on this group a few years ago, and it fixed a
number of problems for me.) One of the big problems with beancount was
that you can only have one date for a given transaction, while in the real
world, your money often spends time in flight where it's not really
accessible to you. If you transfer $100 from your bank account on the 1st,
it may not show up in your brokerage account until the 3rd or 4th. If
you're just booking one transaction of Bank Account -> Brokerage Account,
then you have to pick one of those dates, and just live with the fact that
you're showing money that isn't really there any more, or yet in one of the
two accounts. To get around this, you can split any transfer into two
bookings involving a new, made up account that holds and accounts for these
"funds in flight". One posting will be Bank Account ->
Assets:Transfers:Brokerage, and the second posting will be
Assets:Transfers:Brokerage -> Brokerage Account. Each posting can have the
effective date where your money either was sent, or received, and the
"Assets:Transfer:Brokerage" account will only show a balance while the
funds are in flight. This does add some cruft to the files, but in my
opinion it's well worth it. It makes reconciling accounts much easier, as
you no longer have any funds mysteriously applied days before or after what
your financial institutions have on their statements. Also, since the
transfer account should always have a net zero balance, it helps make sure
you're catching both ends of the transaction in case you're importing
things automatically. (Which I, and many others do.) This is also why
it's helpful to have seperate transfer accounts for each actual pair of
institutions you transfer between. You could do it all with one generic
"Assets:Transfers", but then when you find an unbalanced transaction, it
may be very hard to find out where the missing leg should be.
Finally, you can adapt the same concept of a transfer account for
Personal -> Business transaction, but using the "Equity" base account,
rather than "Assets". This makes sure that when you split the personal and
business transactions, you aren't left with unbalanced "Asset" accounts
where only half of each transaction is recorded in the current set of data
files. I use "Equity:OwnerCapital", and then further break it down by year
i.e. "Equity:OwnerCapital:2023". Alternatively, you can split incoming and
outgoing transfers along the lines of "Equity:OwnerContributions", and
"Equity:OwnerDraws" This would make the flow of money more obvious on the
respective personal and business reporting, but it seemed extraneous to me.
All I care about, (and the IRS) is how much net money I transferred in or
out of the business over the year. I don't want to report, and then have
to sum up inflows and outflows separately.
This still leaves a minor problem in that the above LLC->Personal
capital flows aren't recorded as "Income" in the personal files. I'm
getting around this currently by only recording them as Equity in the
business files, and as "Income:LLC:Distributions" in the personal file leg
of the transactions. This makes sure that the views under Fava for either
the personal or business files make sense, but essentially double counts
the distributions as extra income when viewing everything under the
"master" file. I'm planning to fix this using a plugin from "Red S" called
"rename_accounts"
https://github.com/redstreet/beancount_reds_plugins/tree/main/beancount_reds_plugins/rename_accounts
This should allow for on the fly renaming of "Equity:OwnerCapital" to
"Income:LLC:Distributions" only when the files are included in the
"personal.beancount" file. But I haven't done this yet, as it's a minor
problem. (I get all the tax info I need from either the personal or
business files, while the master only is needed to see our net worth under
Assets).
I should also mention that the above equity transfer is just for funds
over and above my salary that I pay myself from the LLC. (One of the
advantages, and requirements of an S-Corporation). I have a base salary
that I pay myself, that is booked as "Expenses:Payroll" in the LLC files,
and "Income:LLC" in the personal files. (There are also taxes split out in
the LLC, from the payroll expense, but that doesn't affect the personal
side). The "Equity:OwnerCaptial" is "Income" that is reported as "Other
Income" on Schedule 1 when doing taxes, but doesn't show up as "Income" on
the Fava reports.
If you have more than one owner in the LLC, you can easily handle that
by splitting the "OwnerCapital" entries into "Owner_A_Capital" and
"Owner_B_Capital", etc. One of the real benefits of beancount, or any of
the plain text accounting tools is that you can go back and refine things
as your understanding and reporting needs evolve. Also, with the BQL or
beancount query language, it's very easy to extract all kinds of
information from your files. If possible it helps to be fairly granular
with sub accounts. It's trivial to query and combine income or expenses
from any and all sub accounts, but if you book everything as just "Income",
then you may have a lot of work to suss out LLC income from say W-2 income
from another job. Same applies to expenses. I have expense postings for
both "Expenses:Payroll", as well as "Expenses:Fees:Payroll", and
"Expenses:Taxes:Payroll". That way I can either see every expense related
to payroll by querying "Account ~ 'Payroll'", or just fees related to
payroll by querying "Account ~ 'Fees:Payroll'", or just how much I'm paying
in fees across the board by querying "Accounts ~ 'Fees'".
Hope this helps.
--
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 [email protected].
To view this discussion on the web visit
https://groups.google.com/d/msgid/beancount/baf9e86f-d54a-403a-a632-9a5844b2bd71n%40googlegroups.com.