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.

Reply via email to