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?

3 Answers 3


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
    Commented Feb 9, 2015 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. Commented Feb 15, 2015 at 18:58
  • @verdammelt Thanks. I got an answer from their IRC chat which I reproduced here.
    – Fred
    Commented Mar 5, 2015 at 21:13
  • @Fred I think you meant to thank Robert Indries. I did nothing but edit this answer a little.
    – verdammelt
    Commented Mar 5, 2015 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.

The accepted answer works, I suppose, in that it changes the "unpaid bill" into a "paid bill" without making any deduction from the bank account. But it still feels like a workaround, not a fully satisfactory procedure.

As an alternative, I would suggest the following (which I suspect is more in line with proper accounting procedure, although I am certainly not an accountant):

GnuCash allows you to create a Credit Note using exactly the same procedure that you would use to record a vendor Bill - except that you click the radio button for Type Credit Note instead of the default Type Bill. Within the Credit Note you can record the circumstances (eg. Vendor voluntarily waived payment for the work described in the earlier Bill).

After you record this Credit Note you will have a Bill and a Credit Note as separate entries in the Accounts Payable account which effectively cancel each other out. You could leave it there, but GnuCash's Bills Due Reminder will continually remind you that there's an unprocessed Bill and an unprocessed Credit Note. The solution to this is to Process Payment for that vendor, selecting both the Bill and the Credit Note. Since they cancel each other out, there's no actual payment required, but extra lines will be entered into the Accounts Payable register to show that those items are finalised, and you won't get those reminders anymore.

You must log in to answer this question.

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