* 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.
