* Stefano Zacchiroli <[email protected]> [2019-04-17 14:56]:
> The traditional way of tracking this in Beancount/Ledger (and, in fact,
> in double-entry accounting with accrual basis) would be:
> 
>   2018-12-20 * "author payment" "Mr Foo Bar"

Note that you mixed up the order of payee and narration in the example.

>       ; cheque: "12345678"
>       Expenses:Writing             1000.00 USD
>       Liabilities:Payables        -1000.00 USD

BTW, technically this may not even be the whole storyfor the accrual
basis because the liability probably arises earlier.  There would in
fact be 3 entries:

1) author submits article/invoice -> liability arises
2) LWN posts checks a week later
3) Author deposits check a few weeks later

>   2019-01-04 * "cashing in author cheque" "Mr Foo Bar"
>       ; cheque: "12345678"
>       Liabilities:Payables         1000.00 USD
>       Assets:Checking             -1000.00 USD
> 
> Unless I'm misunderstanding your needs

I think what you're missing is that checks are handled in a special
way.  Checks are treated as cash and for accounting purposes the
money leaves your bank account the moment you write your check (not
when the check is actually deposited).

This is why a bank reconciliation is needed: your books will say one
bank balance but your actual bank balance is different.  That's why
you add up all outstanding checks during the bank reconciliation.

And this is also why the "deduplication" is needed: because at some
point you import the bank transactions, and voila, the check has been
deposited and now your bank accounts goes down by $1000 twice - once
for when you recorded the check manually, and once for the bank
transaction.

See e.g. 
https://www.bizfilings.com/toolkit/research-topics/marketing/advertising-pr/accounting-for-cash-transactions
for some background on this.

I tried to find out if checks are handled in different ways in cash vs
accruals accounting.  While I couldn't find as much information as I
had hoped, I think it's the same. (But of course the time of the
expense can be different: in accruals, you accrue the expense when the
author submits the invoice, as mentioned above; on the cash basis,
it's at the time you send the check.)

So the question is how to best model this in beancount.  I see two
options:

1) when you send the check, you decrease the bank account.  You then
tell your bank importer script to ignore all entries where checks are
cashed (it might be something like "CHECK POSTED").  This solves the
deduplication problem, but imho doesn't give a satisfactory answer for
the reconciliation step since it's difficult to get a list of all
outstanding checks.

2) You create an account to track checks.  This isn't how you'd report
it to your accountant, but to use internally, so e.g. (assuming
accruals basis):

2018-12-10 * "Foo Bar" "submits article"
  Expenses:Writing             1000.00 USD
  Liabilities:Payables        -1000.00 USD

2018-12-20 * "Foo Bar" "Wrote check for Foo Bar"
  ; cheque: "12345678"
  Liabilities:Payables         1000.00 USD
  Liabilities:Checks          -1000.00 USD

(If you're on the cash basis, you'd ignore the first transaction and
use 'Expenses:Writing' in the second transaction instead of payables.)

2019-01-04 * "Foo Bar" "cashing in author cheque"
  ; cheque: "12345678"
  Liabilities:Checks           1000.00 USD
  Assets:Checking             -1000.00 USD

(When you important the bank transactions, you'll have to go through
all outstanding checks and assign the metadata for cashsed checks
manually, or you might be able to write a progream to match on author
name or something clever.)

So now you can easily track which checks are still outstanding.
Just look at Liabilities:Checks and do a GROUP BY on the 'cheque'
metadata.  Those that have been cashed will be 0, the rest will
show up.  It also solves the deduplication problem.

But it doesn't give the view that accountants would expect and
it doesn't show what the account balance is if you take the uncashed
checks into account (although, as Zack pointed out, you could simply
do a balance on Assets:Checking *and* Liabilities:Checks). For that
I'd write a beancount plugin which would make 2 changes to my
transactions:

  1) For transactions involving Liabilities:Payables and
     Liabilities:Checks, it would change Liabilities:Checks to
     Assets:Checking.
  2) For transactions involving Liabilities:Checks and Assets:Checking
     it would drop the whole transaction (deduplication).

Then if I want to do a bank reconciliation and see what checks are
outstanding, I would turn the plugin off.  Otherwise it's on.

I'm not really satisfied by this answer, but that's the best approach
I can think of.  Maybe someone else has a more elegant solution.

-- 
Martin Michlmayr
https://www.cyrius.com/

-- 
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 post to this group, send email to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/beancount/20190417160131.GK1709%40jirafa.cyrius.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to