Splitting Expenses Monthly

Josh Sled jsled at asynchronous.org
Sat Mar 11 16:01:42 EST 2006

On Sat, 2006-03-11 at 14:45 -0500, Mike Kopilot wrote:
> Hi, this is a question mostly about using formulas in
> transactions. I live in a house with five other
> people, and we share expenses. Some people are
> excluded from some of the expences. 
> At the end of the month, we figure out who owes money
> to whom.
>  Does anyone have any suggestions as to how I might do
>  this?

I would not try to do it in the form "sum monthly expenses and divide",
but instead handle it on a per-expense basis.

If the transactions aren't actually SXes and you're entering them
manually, just create the split for payment of the expense as normal,
then one split for each individual's share.  If someone is acting as
treasurer for the house, then that individual might have "Assets:Money
Owed to Me:«other person»" accounts for each other person in addition to
their own Expenses:«Expense» account.  The value of the Asset accounts
is how much each person owes, and you can take its balance periodically
with a normal transaction report.  Note that accounts might change  if
the books are from the perspective of the "house" instead of a person,
but the idea is the same.

If the expenses are indeed regular and you want to setup an SX for them,
then the SX can contain the same splits.  As a bit of a bonus, you can
use variables and formulae to write these transaction templates to make
data-entry easier. 


A good example is a phone bill, where the local/unmetered "base" expense
is shared evenly, but each individual's long-distance portion is

| Phone | Assets:Checking               | <A> |     |
| Mike  | Expenses:Phone                |     | <B> |
| Bob   | Assets:Money Owed To Me:Bob   |     | <C> |
| Sally | Assets:Money Owed To Me:Sally |     | <D> |

<A> := base + sally_ld + bob_ld + mike_ld
<B> := base/3 + mike_ld
<C> := base/3 + bob_ld
<D> := base/3 + sally_ld

Then, the SX since-last-run dialog will prompt you for the four values:
base, {bob,sally,mike}_ld, and construct the transaction appropriately.

http://asynchronous.org/ - `a=jsled; b=asynchronous.org; echo ${a}@${b}`

More information about the gnucash-user mailing list