I'd like to properly account for purchases (e.g. on Amazon).

In most cases, when I purchase an item the merchant sends me the package and only after a couple of days credits my bank account (i.e. withdraws the money from there).

To account for this, on the day I order the item I create a bill as described here, but the problem is the future crediting of my bank account isn't reflected in the process. There are just 2 accounts involved: Debit e.g. Expense:Amazon and credit of Liabilities:Accounts Payable which - of course - reflects the purchase correctly in terms of net assets and profits.

Since I know in advance from which account the merchant will withdraw the money though, it would be great to track this expense also in the bank account from which the money will get withdrawn eventually (e.g. to see if there's enough money in the account during a time period).


How do I reflect a future crediting of a checking account by a bill? Or put otherwise, how can I account for the future transaction which will:

credit CheckingAccount:MerchantsWithdrawsFromHere ->

debit Liabilities:Accounts Payable

and therefore settle the bill?

  • Why do you need to have two separate transactions? Why not debit Amazon and credit CheckingAccount and that's it?
    – littleadv
    Commented Sep 22, 2023 at 17:11
  • Because there is a time span between ordering (inuring the expense) and settling the expense (i.e. paying the liability / money flowing out of my checking account). Doing it in one transaction would mean gnucash would show an outflow at a date where no money has flown yet (if I'd do the transaction at the date I'm ordering) or would show no transaction at all until the withdrawal from the merchant would settle (which would overstate my assets up till that point as the liability already exists). Commented Sep 22, 2023 at 19:25
  • Generally for individual personal accounting either option is fine. I'd suggest going with the one that's easiest (#2 in your comment, since that would reconcile with your bank statement). Alternatively you'll need to enter two transactions, and GnuCash doesn't really have a template for a single transaction with multiple dates and accounts AFAIK. You'll need to do it manually.
    – littleadv
    Commented Sep 22, 2023 at 20:32
  • Maybe you can use the Scheduled Transactions mechanism? I’ve never used it. It might not link the transaction with the bill. Or just use Pay Invoice like usual with a date in the future (and alter the date in retrospect [might not be possible from the GUI, but only if you manipulate the data file]). Another strategy is splitting your CheckingAccount into sub‑accounts CheckingAccount::BookedTransaction and CheckingAccount::AnticipatedTransactions so the balance of CheckingAccount permits you to plan ahead and it is only a matter of transferring money between the sub‑accounts. Commented Oct 9, 2023 at 15:11

1 Answer 1


This answer amalgamates most of the wisdom already imparted in comments.

You have two main options for handling this situation:

  1. Continue to record an Invoice in GnuCash every time that you make an Amazon purchase. Use the GnuCash Pay Invoice function, and specify which bank account is credited, when Amazon deducts money from your account. This process has the advantage that it correctly shows the date when you take on a liability to pay and the date when money leaves your account. The disadvantage, of course, is that it's a fair amount of work for comparatively little gain, assuming that the money leaves your account only a few days after you placed an order. (This system may be worthwhile, however, if the order and the payment occur in different reporting periods, and this is significant for some reason.)

  2. Adopt a simplified approach in which you record the deduction from your bank account notionally on the date on which you placed an order (and incurred a liability to pay). This means that your GnuCash "bank balance" will temporarily be different to that reported by your bank - but there is an easy way to account for this in GnuCash if you have to perform a bank reconciliation. The advantages of this process are (a) it's easy! and (b) it immediately allows you "to see if there's enough money in the account during a time period". GnuCash will show a bank balance of Uncommitted Funds which is the amount that's actually available to spend after known liabilities are taken into account.

Unless there's a particular reason to go with option 1, option 2 is good enough for personal accounting and actually meets one of your specified criteria.

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .