Payables and Receivables payment/aging?

409 views
Skip to first unread message

tommyk

unread,
Jun 26, 2010, 2:55:36 PM6/26/10
to Ledger
Has anyone implemented any kind of a/r and a/p aging and payment
scheme for accrual accounting in ledger? You know the kind of thing:

Water (say) bill received on May 31st for water consumed in May. Bill
due for payment by June 30th. You'd have something like:

2010/05/31 * (-) May Bill from Water Inc
expenses:utllities:water $100
liabilities:accounts-payable

2010/06/30 * (-) Pay Water Inc May Bill
assets:bank -$100
liabilities:accounts-payable

However, there are at least three things missing (versus, say, a
QuickBooks implementation)

a. There's nothing about aging; i.e. nothing in that first entry about
payment terms (the fact that the bill is due within 30 days in this
case)

b. There's nothing tying that particular $100 payment on June 30th to
the water supplier. Now this could be fixed by using a/p subaccounts.
So instead of liabilities:accounts-payable" I'd use
"liabilities:accounts-payable:water-inc". But even if that was done:

c. There's nothing tying that specific payment to that specific bill
from the water supplier

I imagine this is beyond the scope of the core ledger engine, but I
wondered if anyone had looked at maybe using comment fields to add
these kind of a/p and a/r functions?

thanks,
Tommy

Zack Williams

unread,
Jun 26, 2010, 11:51:50 PM6/26/10
to ledge...@googlegroups.com
> b. There's nothing tying that particular $100 payment on June 30th to
> the water supplier. Now this could be fixed by using a/p subaccounts.
> So instead of liabilities:accounts-payable" I'd use
> "liabilities:accounts-payable:water-inc". But even if that was done:

Just to throw out an example

2009/10/08 * Invoice
Assets:Accounts Receivable:Customer Name
Customers:Customer Name:Invoice:Services -270.00

2009/10/12 * Check #12345
Customers:Customer Name:Payments:Check 270.00
Customers:Customer Name:Equity -270.00
Assets:Accounts Receivable:Customer Name -270.00
Assets:Checking Deposits

This way, I can tell who owes me what, puts amounts in my AR, then
checking deposits (different from checking - transfers from checking
deposits to checking happen when I enter a deposit slip), and I can
balance each individual customer's account.

Doesn't do aging, or tie bills/payments together like you're asking,
but it works for my purposes.

- Zack

Simon Michael

unread,
Jun 27, 2010, 9:33:05 AM6/27/10
to ledge...@googlegroups.com
No explicit aging, but here's how I identify client and specific invoice:

2010/03/04 client A invoice
assets:accounts receivable:client A:2010304 $900
income:consulting:client A $-900

2010/03/30 client A payment
assets:accounts receivable:client A:2010304 $-900
assets:bank:wells fargo:checking $900


tommyk

unread,
Jun 27, 2010, 1:37:16 PM6/27/10
to Ledger
Ah, that could work. Effectively a subaccount per invoice, right?

And ten I wonder if aging could be achieved by simply encoding the due
date in the invoice number. So your 2010304 would become
2010304_20100630 (i.e. due on June 30th). Then I could envisage an
aging report being produced (maybe with some perl/python-ish post
processing of a core ledger report) to find all invoice "subaccounts"
with non-zero balances where an age is calculated simply by taking the
difference of the date suffix with today's date (or some specified
"effective" date).

Tommy

John Wiegley

unread,
Jun 27, 2010, 9:41:30 PM6/27/10
to ledge...@googlegroups.com
On Jun 26, 2010, at 2:55 PM, tommyk wrote:

> b. There's nothing tying that particular $100 payment on June 30th to
> the water supplier. Now this could be fixed by using a/p subaccounts.
> So instead of liabilities:accounts-payable" I'd use
> "liabilities:accounts-payable:water-inc". But even if that was done:
>
> c. There's nothing tying that specific payment to that specific bill
> from the water supplier

You can annotate commodities with this information:

2010/05/31 * (-) May Bill from Water Inc

expenses:utllities:water $100 (Bill: Water Inc) [may 2010]
liabilities:accounts-payable

2010/06/30 * (-) Pay Water Inc May Bill

assets:bank -$100 (Bill: Water Inc) [may 2010]
liabilities:accounts-payable = $0

To see exactly which bills haven't been paid yet:

ledger bal --lots accounts-payable

This is with 3.0.

John

Martin Michlmayr

unread,
Jul 5, 2010, 12:06:03 PM7/5/10
to ledge...@googlegroups.com
* John Wiegley <jo...@newartisans.com> [2010-06-27 21:41]:

> 2010/05/31 * (-) May Bill from Water Inc
> expenses:utllities:water $100 (Bill: Water Inc) [may 2010]

I don't think I've seen this (Bill: Water Inc) [may 2010] syntax
before. Can you explain what it does?
--
Martin Michlmayr
http://www.cyrius.com/

John Wiegley

unread,
Jul 6, 2010, 3:40:30 PM7/6/10
to ledge...@googlegroups.com
On Jul 5, 2010, at 12:06 PM, Martin Michlmayr wrote:

>> 2010/05/31 * (-) May Bill from Water Inc
>> expenses:utllities:water $100 (Bill: Water Inc) [may 2010]
>
> I don't think I've seen this (Bill: Water Inc) [may 2010] syntax
> before. Can you explain what it does?

You can annotate commodities in three ways, which may all be combined:

$100 {10 EUR} # Price paid for those $
$100 [2010/05/01] # Date when they were acquired
$100 (Note) # An arbitrary note to identify the 'lot'

These are all optional, and in fact Ledger auto-generates the first two
whenever it sees a commodity exchange take place. The only one that has
real meaning is the first. When you later exchange a commodity that has
a price annotation, the difference between annotated price and exchange
price will determine the capital gain/loss.

John

Reply all
Reply to author
Forward
0 new messages