Corresponding Bugzilla item: https://bugzilla.gnome.org/show_bug.cgi?id=113772
While the account hierarchy allows each transaction to be assigned to a different sub-accounts, it would be useful to have classifications which apply to transactions accross sub-accounts. e.g. assume the following accounts exists
Classifications could be achieved by adding new level to each account
This can produce complex accounts structures especially if multiple currencies are involved.
For example, "State sales tax not withheld" for certain internet transactions. This option could be in the box to the right of the "Description" box.
Are you talking about meta-accounts? For instance, you'd set up each property as a meta-account, so that if you enter 'Property1' as a sub-account anywhere in GnuCash, it is automatically classified as part of the 'Property1' meta-account... so Expenses > Electricity > Property1 and Expenses > Water > Property1 would both be part of the 'Property1' meta-account, and you could then tally all the data for the 'Property1' meta-account separately from other meta-accounts. Thus, you could get an individualized look at how each property is doing.
I have a similar idea, but using a spreadsheet to extract the data from GnuCash for each property. Two paths to the same ends. Not sure which would be easier to implement.
My understanding is that this could be accomplished using fields or slots on transactions, and most of the frameworks is already there, just needs some new standard definitions and a lot of new UI, see http://gnucash.1415818.n4.nabble.com/What-the-use-of-slots-table-in-gnucash-with-mysql-td4656874.html. Perhaps this could be done in a plugin, but I don't know much about how plugins work with gnucash. Anyone know if there's been any work done on this?
I'm familiar with a major commercial accounting system which has the concept of "Ledger Dimensions" similar to that mentioned by "Hajo". His proposal seems to me to be a professional and well structured approach to meeting this need.
Vincent Dawans commented
Yes I too would like to see this feature but wish we could call it for what it is to dispel misunderstandings.
What we are looking at here is features for analytical accounting: the ability to classify transactions along orthogonal dimensions that have nothing to do with the GL accounts.
As James points out, I give more detais about this in my post at https://bugzilla.gnome.org/show_bug.cgi?id=113772#c6
Here is another explanation about the difference between General accounting (what gnucash does very well) and analytical accounting (what gnucash does not so well):
- General accounting (or financial accounting) is for identifying the assets and liabilities of the business. It is managed using double-entry accounting which ensures that each transaction is credited to one account and debited from another.
- Analytical accounting (or management accounting, or cost accounting) is an independent accounting system, which reflects the general accounts but is structured along axes that represent the company’s management needs.
Comment 6 on teh bugzilla form did a great job of clarifying this for me.
I have had a similar want when dealing with rental property. My original idea was a top level account that allowed for any type of sub-account (liability, expense, equity, asset, and income). Logically it is the same as how I understand the idea for categories.
My work around now is a separate GnuCash file for each rental property. This was fine when I only had one, but it could get ridiculous (I admit my work around is not as clever as others).
I've been waiting for an equivalent to Quicken's classes for years. This has been my prime reason for using Quicken instead of GC. I've tried various ways to circumvent my need for classes/tags in GC by changing my account structure, but all of them were pretty cumbersome, unnecessarily complex, and led to a lot of work. I was almost wondering if I was the only one with a need for this feature - which is obviously not true.
I suggest a more general solution to this requirement: its called "Dimensions":
A "dimension" is an additional information on a split booking.
One split booking can have multiple dimensions (three normally should be enough).
Every "dimension" is a tree structure with root, branches and leaves.
create table dimension (
dimguid char ( 32 ) primary key, // Global Unique Identifier
dimwhich smallint default 1, // Which dimension [1..3]
dimtype char ( 1 )
check ('R', 'N', 'L'), // Root, Node, Leave
dimname char ( 30 ), // Any name. Should be unique within same dim
dimno long, // Any number. Should be unique within same dim
dimparent char ( 32 ) // Reference to parent entry
A split booking needs three additional columns for dimensions 1, 2 and 3. Column types are
references to the global unique ID of a dimension entry (dimension.dimguid).
The root entry gets the name of that dimension (e.g. "costcenter").
This root names should be used for column headers when displaying or printing a split booking.
"Dimension-Management" similar to Account-Management with three root entries for the
three dimensions. Default names could be "dim 1" to "dim 3".
"Journal" to be extended with three columns for the dimensions. Each one should be usable as
a filter to only display all transactions and/or splits containing references to a specific
dimension or even dimension entry. E.g.: only display/print all transactions which have at least
on split booking with a reference to dimension1. Something like:
"select ... where split.dim1 is not null..."
Also this display/print should be filterable by a time period.
Additional functionality could be to restrict dimensions only to be used on split bookings
which have an account of type income or expense. Anyway this restriction has to be configurable
because it does not make sense for all kinds of uses.
Bob Brush commented
Also on the Customer Summary Report there is an entry for "No Customer" this is the total of all entries that are not tagged. It can be a useful indicator of how valuable the rest of the report is.
Bob Brush commented
GnuCash does have a little known feature that can accomplish some of these scenarios, but it requires the use of the business features, and it is not documented so you are kind of on your own to figure it out. In the example above you would create an Electricity Vendor, and a Property Customer, then when you create a Bill for the Electricity Vendor, on the same box enter Property1 for the customer. Now on the Bill you enter the line whatever the charge is for, select the account Expenses:Electricity and the amount, then post the invoice. At this point we have "tagged" the expense while still in the proper account with the property. You can also enter rental charges and payments by creating an invoice for property1. It gets even better. After entering all the utilities, and the loan payment for the property1, and entering the rent charged you can run a report and determine the profitability of property1. Look in the Reports menu for Business and then Customer Summary. This report totals everything "tagged" by Customer and displays the total income, expenses, and the difference, including the %. You can sort the report by name, profit, expense, or income. You can also select or deselect expense and income accounts, to enable yet another degree of control, in the case of Income:Commercial Rent and Income:Residential Rent or whatever the case may be. There are also the concept of "Jobs" which are yet another subcategory under Customers, although I have not used this feature. In the future we may consider a report for jobs or extend the existing report.
David Valicek commented
Yes, custom classification/tagging/labeling of transactions as well as classification/tagging/labeling of invoices, jobs, etc is a really important feature.
This classification should ideally enable a hirerarchy, as Ben Bucksch in his post to the original feature request wrote. This enables to analyse/report expenses per Program>Project>ProjectTeam or per a hierarchy of cost centres or per a hierarchy of customers or whatever else like this.
Enable putting the transaction into zero, one or more such a custom classes.
Please let me distinguish such a "transaction classification" feature as special case of "user defined fields/attributes" which I describe in a separate request:
I would like to see this for each transaction split, not only one tag per transaction.
Paul Abrahams commented
The existence and popularity of Quicken's classes shows that there's demand for this facility.
Something like a tag system would be very powerfull and simple to implement. One should be able to group a transaction under zero, one or many tags just by adding it at the description field or at any other specific field. With this, all the existing structure remains the same, but we can have new reports filtered by these tags and/or accounts.
Nila Akash commented
As a followup to my previous post--after searching for transactions you can then go to Reports/Account Report to get a report showing only those transactions that were found by the search.
Nila Akash commented
I have wanted this feature for years. Tags, labels, or Quicken-like classes--any of these would do. As others have noted, it could greatly reduce account structure complexity.
I have found a work-around for simple projects: develop your own tag system and put the tag as the first part of the transaction description. Very simple reports can then be generated by using Gnucash's transaction search feature and searching for that tag.
Please see image for similar functionality
Although the Quicken "classes" nomenclature seems to be unpopular, that is the functionality that is really needed. In more robust accounting programs it is sometimes referred to as project cost accounting. I can just as easily pull all income and expenses per project, as get a total for all expenditure x across all projects. So far I see no way to do this in GnuCash. Would be VERY welcome.
Artur Chrusciel commented
Some kind of labels would be useful to easily group transactions. Of course label functionality can be achieved by proper account structure but sometimes it isn't worth the work needed.
BTW, in the example below I would prefer delegation over inheritance ;) and create virtual accounts:
Then I would transfer from Cash to Electricity through Properties. Every property would be balanced to 0 but have all information about transactions related to this property. (This is similar to example from bugzilla link but transactions in Properties has values.)
Mark S commented
This would reduce the need for complex account structures and allow for a different dimension of filtering and reporting.
You could tag certain transactions for tax purposes, reimbursements, or family member names.
The challenge will be of course in the filtering and reporting.
Admincstim (Core Developer, GnuCash) commented
As a pointer to previous discussion: https://bugzilla.gnome.org/show_bug.cgi?id=113772