This is a question about if a certain feature exists of how other users "do it":

Can I attribute different or multiple cost centers to a transaction?

Example: I went on holidays and paid a flight. I book the flight at the "mobility" expenses because all my flights go there. But in this case I would like to also have it appear on a (separate, maybe independent) list of "holiday" expenses, where other transactions related to my holidays appear, that are themselves booked at their respective expenses accounts (restaurant ("food"), museum ("recreational"),....)

Thanks for any hint!

3 Answers 3


There are multiple methods for grouping transactions, whichever you use is a matter of preference.

  1. By source account: Many people do this implicitly, for example by placing all holiday expenses on a particular credit card. Even if you don't have an actual account against which to bill all expenses, you can create a virtual account out of which all holiday expenses come (i.e. "Liabilities:Holiday", etc). The cash / check / credit transactions which you make towards your holiday would then transfer into the Liabilities account to balance it back to zero.
  2. By label: Each transaction has multiple fields which could be tagged with some identifier. The Memos (on each split) and Notes fields (hidden by default) allow you to type any string you'd like (i.e. "Antarctic Holiday 2016") which you could then search on later. Thus every transaction related to your trip could be brought up by finding all records with memo "Your Identifier Here", and then operations can be preformed on the search results. I'm fairly confident that certain reports allow you to run on search results, or to limit based on the value of the memo field, for example.
  3. By custom report configuration: Because travel is often all-encompassing (i.e. every transaction from May 14th through June 2nd was related to the trip, with exceptions being easily identified), you can create a report which covers only that date range, then save it in the saved reports list as "Holiday Expenses 2016" or similar. You'd need to delve into the report options to exclude certain accounts (i.e. utilities payments made during that time & etc), but once you get it squared away you never have to set it up again. Creating future reports becomes as easy as duplicating the first holiday report and changing the dates.

There's really no right or wrong answer, which solution you implement depends on how you have implemented your account structure and whichever method gives you correct data with the least effort.


I believe this is a highly important and useful feature that has been requested for a long time. As has been pointed out before, there is no official solution. While hints to the correct answers haven been provided here and here before, there is still no step-by-step tutorial on the most flexible solutions for tagging transactions in GnuCash:

The the easiest/best two options seem to be:

  1. Using "dimension" (or analytical) accounts

One easy and clean option is described here and involves adding new "dimension" (or analytical) accounts (holding your projects/events/person etc., eg holiday2022), and then tagging transactions by adding a new $0-split pointing to the specific dimension account (eg holiday2022):

The current work-around I am using is to create my dimensions has a bunch of accounts under a new high-level structure (Dimensions for instance). Then I create a sub-account for each type of dimension Departments, Projects, Events, etc). Finally under each sub-account I create sub-accounts for each actual dimension. These accounts will never have any money in them so they will not interfere with the real GL accounts. Instead, I simply use them to add additional splits pointing to the dimension accounts (with no amount) to any GL transaction I want to tag.

To generate reports: Briefly, use the "Transaction Report": Under the "Accounts" tab, select the accounts of interest except the specific dimension account. On the same tab, right below, select the filter type "Include Transactions to/from Filter accounts" and then select the specific dimension (project/event/person etc -eg holiday2022) you are interested in. Now you will get a report of all transactions tagged with the specific dimension.

  1. Using label tags

Just add a label tag, such as #tag, to the transaction description, memo or description of the split. To generate a report, again use the "Transaction Report": Under the "Accounts" tab, select the accounts of interest. On the "Filter" tab, enter the tag name, eg #tag, in the field "Transaction filter". Now you will get a report of all transactions tagged with the specific label.

Date- and source-based solutions

Other solutions such as custom reports by date or by source account are not useful in case you need a detailed, granular report as opposed to an all-or-nothing approach.


Method 2 seems quicker and fitter in case you are also collecting data on a mobile device. The biggest advantage compared to method 1 is, you can tag specific splits of one transaction (View > Transaction Journal), giving you even more detail and flexibility. Compared to 1, you will, however, not get a list of all your projects/events etc. you are tracking, and spelling mistakes might cause errors in your analysis (eg #tag1 vs #Tag1, there are workarounds for this though, using the RegEx and case-insensitive report options).


No. There is no "official" way of tagging certain transactions with a category to view it in a "category report" later.

See https://bugzilla.gnome.org/show_bug.cgi?id=113772 and https://bugs.gnucash.org/show_bug.cgi?id=113772 for more discussions and links.

You must log in to answer this question.

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