I'm running Gnucash 3.8b+(2019-12-29). If there's a way to change a transaction description throughout an account, I can't find it. The internet isn't yielding up any interesting suggestions, either. Is there a way to do it?

  • What do you mean by "throughout the account"? Do you mean you have a list of identical transactions, and you're trying to change the description of all of them?
    – glibdud
    May 24, 2020 at 16:27
  • @glibdud: Yes. This account has a long history of transactions with a description of "ABC Inc.", and I want to change them all at once to say "DEF Inc.".
    – Tony
    May 24, 2020 at 16:43

1 Answer 1


By default, GnuCash maintains your data in XML format, and stores it as a compressed file with a .gnucash suffix. You can get your data into editable form by just uncompressing it first.

I'd suggest:

  1. Make sure that you have a good backup of your data file : MyDataFile.gnucash.
  2. Copy your data file and give it a .gz suffix : MyDataFile.gz.
  3. Use a suitable compression utility to uncompress your data file : MyDataFile
  4. Use a suitable text editor to edit only those lines of the data file that you absolutely need to. In your case you can use a global find/replace to change ABC Inc to DEF Inc throughout the file.
  5. Save the edited XML file with no filename extension : MyDataFile.
  6. Open GnuCash, and use the File/Open menu to open your modified datafile. GnuCash will quite happily open the uncompressed file.
  7. Use File/Save As to ensure that your edited data file gets stored "normally" (compressed, and with a .gnucash filename extension).

Please note that directly editing the XML file is not officially encouraged - but it should work if you are careful. Keep a backup!

  • For what it's worth - I found sqlite to be the best of both worlds. It gives me the opportunity to access the file with sql queries - four of which I defined as shell scripts, so I can ask some quick questions from the shell prompt. Gnucash operates with sqlite faster than with mySQL backend, which is especially obvious on importing a few months of transactions.
    – r0berts
    Jan 7, 2021 at 9:16
  • You can also bulk move transactions from one account to another by editing the XML. However, each account name has a big long number that you need to search for and reaplace (not the actual name of the account). You can find the number assigned to the name, and then make sure you change all the transaction id numbers (but make sure you do not change the number where it is associated to the name itself).... kind of a tricky process so please BACKUP before you try it.
    – jsherk
    Apr 16 at 14:50

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.