Consider this simple scenario, where I am running the accounts for a small business. No need to get into fancy standards (e.g. GAAP).

  1. A vendor sends my company a bill for $100. The work is complete and satisfactory.
  2. I record the bill in GnuCash but delay processing payment (no cash in hand). It is posted to accounts payable.
  3. A month later, as part of some other deal, the vendor cancels the bill (i.e. gives me 100% discount). In effect I no longer need to pay him that bill.

How should I record this transaction?

Option 1

Unpost the bill and pretend the work never happened.

I dislike this because I want to have a record of all the work that was done, and the fact that we got a discount (e.g. IRS might want to see this).

Option 2

Process bill and add 100% discount so in effect no payments are made. However, in the Process Payment window, if I enter the amount of $100, and also a refund of $100, the Transfer Account window grays out, and nothing is recorded. Effectively, GnuCash does not accept 100% discounts.

Option 3

Credit Other Income with $100, and debit Accounts Payable. This works in the sense that my company is receiving a "gift" that reduces AP. But the problem is that I still have the vendor bill outstanding. That is, it shows up if I go to process new bills from said vendor.

Any other ideas?


I am no expert on the situation nor do I pretend to act like one, but, as a business owner, allow me to give you my personal opinion.

Option 3 is closest to what you want.

Why? Well:

  1. You have a $100 AP.
  2. You put in "Other Income" with a note like "Vendor discount from XYZ of 100%.
  3. Then you put in the AP as Played in full.

This way, you have both the record of everything that was done, and also IRS can see exactly what happened.

Another suggestion would be to ask the GnuCash maintainers and community directly. You can have a chat with them on their IRC channel #gnucash, send them an email, maybe find the answer in the documentation or wiki.

Popular software apps usually have both support people and a helpful community, so if the above method is in any way inconvenient for you, you can give this one a try.

Hope this helps!


  • Yes I agree this is the best option but it still leaves my posted bills unpaid, since those can only be paid from an Asset account (i.e. checking, etc)
    – Fred
    Feb 9 '15 at 16:28
  • Hmm... I'm sure that the guys at GnuCash will have a solution and, if they don't, then they can implement the feature from your feedback and notify you when it's working. Then you will be able to update the software and make the necessary changes. Feb 15 '15 at 18:58
  • @verdammelt Thanks. I got an answer from their IRC chat which I reproduced here.
    – Fred
    Mar 5 '15 at 21:13
  • @Fred I think you meant to thank Robert Indries. I did nothing but edit this answer a little.
    – verdammelt
    Mar 5 '15 at 23:41

The answer was provided to me at the Gnucash chat by "warlord".

The procedure is as follows:

  1. Process payment as usual (e.g. pay bill from Checking, say);
  2. Go to accounts payable account, where the bill was posted. It shold read paid from checking.
  3. Change the entry to Other Income or Debt forgiveness or whatever account you have created under Income for this purpose.

After doing this you will have:

  1. paid the posted bills;
  2. left no trace of this in checking account;
  3. recorded it as Other income.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.