I suggest you ...

Transaction Classifications

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.

432 votes
Sign in
or sign in with
  • facebook
  • google
    Password icon
    I agree to the terms of service
    Signed in as (Sign out)
    You have left! (?) (thinking…)
    ghr shared this idea  ·   ·  Flag idea as inappropriate…  ·  Admin →


    Sign in
    or sign in with
    • facebook
    • google
      Password icon
      I agree to the terms of service
      Signed in as (Sign out)
      • DAVID SHARNOFF commented  ·   ·  Flag as inappropriate

        Rather than add "classifications", add a multi-dimensional tagging system. Allow users to add whatever tag categories they want.

        Then if I want to add both "class" and "client", I could do that and they would be independently chosen.

      • Leonard Will commented  ·   ·  Flag as inappropriate

        Yes, I agree that this is a mojor deficiency in GnuCash. Quicken allows each transaction, or split of a transaction, to be assigned to both a "Category" (which I use for the nature of the expenditure) and to a "Class" (which I use for the purpose of the expenditure, e.g. project or event). The report generator allows you to produce two-dimensional reports, with each row representing a Category and each column representing a Class - as well as providing horizontal and vertical totals. I do hope that some GnuCash developer will be able to provide that type of functionality.

        It's important for me because Intuit stopped selling Quicken in the UK after the 2002 version, and I fear that some update from Microsoft will make that version stop working, so I'd feel safer moving to GnuCash. I reaslise tht development effort is voluntary, and much appreciated, but it seems a pity not to be able to complete this functionality which would made a good program into a really comprehensive and excellent one.

      • LJP commented  ·   ·  Flag as inappropriate

        IMHO, this feature is a must, if GnuCash wants to stay at the forefront!

        In case, I (and others) do not understand how to use GnuCash correctly, could someone (i.e. a GnuCash expert) advise how to solve relatively simple real word issues, please?

        Lets say, I am an ordinary man who is organising event#1 and event#2. I made one purchase(transaction) and have one receipt, but this transaction includes multiple items (e.g. food and decorations) for both events. So the split transactions are set as transfers Assets:DebitCard1 -> Expenses:Food and Assets:DebitCard1 -> Expenses:Decorations. That keeps the books happy.
        (i) I want to keep it a single transaction, then it will be the same amount as in my bank statement (so I can easily reconcile it).

        (ii) I want to maintain tracking of how much money has been spend on food (i.e. Expenses:Food) and decorations (Expenses:Decorations)

        (iii) At the end of the year, I will have made, lets say, 100 events, and I will want to know how much money (in percentage) I have spend on food, petrol etc for each event individually (I do not want to put a tremendous amount of effort into this; otherwise I could well use an excel spreadsheet or write my own code in python, but I don't think it's wise to re-invent a wheel..).

        (iv) Using thousands of accounts (i.e from Expenses:Food:event#1 to Expenses:Food:event#99, and from Expenses:Decorations:event#1 to Expenses:Decorations:event#99) is not really an option, is it?? nor would be an option to use a reversed system (i.e. Event#1:food to Event#99:food etc.), as it would require to consistently create the same eventNames/ProjectNames or the same expense accounts (i.e. Expenses:Food, Expenses:Decorations etc)

        (v) Using Vendors and Customers do not seem to allow to assignt fraction of split transactions (i.e. a fraction of items on a single receipt) to different customers/vendors (e.g. event#1, event#2) while retaining expense type (e.g. Expenses:food, Epxenses:transport)

        (vi) I could have separate receipts for each event, but there are various benefits for purchasing multiple items at once rather than separately, for example, shipping costs.

        (vii) Now, of course, event#1 could actually refer to fixing a car, while event#2 could refer to Holiday2017, and event#3 could be someones birthday etc.

        Lack of this option is frustrating me so much, that I would happily move to another software, but I haven't found a free alternative yet.. Could someone recommend one, please ? (I've tried HomeBanks and KMyMoney - none of them really solves the problem!)

        Personally, I very much support explanations (why such classification is needed) by the following users (and I would like to hear a robust solution/work around that addresses the issues they have raised):
        Craig Lawson (Craig Lawson 2003-05-26 22:16:58 UTC)
        Vincent Dawans (https://bugzilla.gnome.org/show_bug.cgi?id=113772#c6),
        Kael Shipman (commented · March 30, 2016 22:20),
        Jeff Wiegley (https://lists.gnucash.org/pipermail/gnucash-user/2007-July/020873.html)

        Are we (those who strive for the orthogonal dimensions) misunderstanding something, or is this feature really so difficult to implement??

        I mean Craig Lawson raised this in 2003-05, that's 14 years ago! I don't think smartphones existed then, but now we have self driving cars.. :/

      • Anonymous commented  ·   ·  Flag as inappropriate

        what custom accounting program ? Did you write any custom code for GnuCASH or totally different accounting system.

      • Anonymous commented  ·   ·  Flag as inappropriate

        Hajo and Vincent are on the right track. I implemented this in a custom accounting program written for my company a few years ago. We settled on these three orthogonal dimensions:

        Traditional accounting of assets, liabilities, equity, income, expenses, and appropriate sub-accounts of each. This is useful for getting to a tax return, or knowing things like net income.

        In traditional accounting, we usually only do detail categories on expense accounts. This is probably just tradition. But also because it is difficult to do on things like assets and liabilities. But sometimes, it is very useful to know how much fuel, or electricity, labor, or materials went into a capital asset. By having separate categories for these, you can see how an asset breaks down, just as easily as we now determine how our expenses break down.

        These have more to do with accountability, job costing, etc. At the highest level, a project can be a separate business unit. At lower levels, it can be used as an alternative to traditional accounts (like having a separate project number for different bank accounts, all under Current_Assets::Cash). A project can track the assets in a property, or department. It can also contain expenses, all applicable to that property or department. It is really fun when you can build a separate budget for each project, and then track performance against a budget goal.

        Projects can benefit greatly from a hierarchical structure, like accounts. Categories can be hierarchical, but they work fine in a flat format too.

      • Kael Shipman commented  ·   ·  Flag as inappropriate

        I just wanted to add what I think is a very important note to this. In classic accounting, *what* you spend your money on has always been mixed with *why* you spent the money (for example, Expenses:Business:Dining and Expenses:Personal:Dining). Thus, I believe there are a few important steps to take:

        First, we need to shift the terms that we use to refer to aspects of the financial system so that they more closely resemble reality, and in so doing, we'll reveal that there's missing data: *why* we spent the money. What is classically termed the Chart of Accounts is more complicated than just that. It's really a structure that stores information about *what* our transactions are: What is money in a bank account? It's a liquid asset. What's money in a mutual fund? It's a long-term investment. What is an expense? It's a good or service, which may be part of a hierarchy of goods and services. Importantly, an expense is NOT a reason, and that's the whole point.

        This leads to the second to-do: We need to define a new structure, in this post referred to as "classifications", but perhaps more humanistically called "Funds" or "Budgets" that capture *why* we spent the money. Every split in a transaction should have one or more "Funds" or "Budgets" attached to it.

        Thus, when you purchase a meal on a business trip, you register a split in "Expenses:Food:Eating Out" and then mark 80% of that split as coming from your Business fund and 20% (maybe you treated yourself to a glass of beer or two and you don't think your company should pay for that) as coming from your personal fund.

        The last element of this is that reporting needs to be able to show *what* you spent your money on as a subset of *why* you spent the money. That is, you might view an expense report and see the visual equivalent of, "You spend an average of $300 per month on business expenses, of which an average of $32 are on Eating Out, $75 are on transport, $100 are on lodging [etc....]"

        If anyone is interested in this, please check out theoperationsinstitute.org and get in touch with me. I'm looking to build on the extraordinary work that the GnuCash team and others are already doing by creating a suite of tools geared specifically toward nonprofits.


      • AdminGeert Janssens (Admin, GnuCash) commented  ·   ·  Flag as inappropriate

        Thank you for your request. It's a variation of the currently most popular request to add categories or tags allowing to filter on something other than accounts only.

        On the other hand I also think you are using accounts the wrong way. Accounts shouldn't be named after the shop you're buying from but after the type of goods you are buying. You can use the Shop's name in the description or notes field instead.

        So the accounts in your example would be

        Then when you want to report all payments to ABC market, you can search from the account hierarchy on "Description" (or "Notes") "Contains" "ABC Market". And from the search ledger you can open an Account report if you like to print your results.

        Would that suffice for your needs ?

      • Anonymous commented  ·   ·  Flag as inappropriate

        I would love the ability to tag certain transactions and even accounts, and then exclude or highlight tagged items in reports.

        For example, I could record expenses that my parents pay for, and tag them as "Paid by Parents." Then, I could create a report that would show all of my expenses excluding the things my parents paid for.


      • Jesse commented  ·   ·  Flag as inappropriate

        I believe I have found an interim workaround!! You can use "Customers" to achieve classifications.

        Create two dummy customers: Property_Customer_1 and Property_Customer_2
        Give them special Customer Numbers such as "Prpty_1" and "Prpty_2" so that they are clearly separate from any real customers. You could even enter the addresses of each property if you wanted.

        Next you need to start entering your expenses using the business "Bill" function.
        Create three Vendors: Electricity, Water & Rates
        When you enter a bill for Property_1 enter the Customer "Property_Customer_1" as the 'Default Chargeback Project Customer'
        If you want to further subdivide your classifications this is where Customer Jobs come in. Lets say you wanted to separate Utility Bills from Rates and also record Maintenance Expenses. You could create three Jobs for Property_Customer_1, and when entering each Bill assign it to that job.

        The best report I've found to date is the "Customer Summary" report because it shows income, expenditure, the % difference (labelled as markup), and the profit. It also allows you to select which accounts to sum as the income and which as the expense.

        If these are investment properties you could use the invoice feature to attribute income to the dummy customers

        One important note is that there is no way to DELETE a customer once you have created it! You can change every part of the customer, including the customer number, so if you create too many rename those you don't need to BLANK and change their customer number to 000000 or something similar, then the next time you want to create a new customer change one of these BLANK customer's instead.

        Hope this helps. :-)

        In my specific case as a stage performer and producer. I create a customer for each project/show, sometimes they are dummy customers but sometimes, such as when performing in a festival, they are real customers. In both cases I can see how much it has cost me to produce that particular show. If I'm producing multiple shows in a single festival I use a different Job for each one.

        I've also just discovered another workaround here: https://bugzilla.gnome.org/show_bug.cgi?id=113772#c6

      • Anonymous commented  ·   ·  Flag as inappropriate

        For example, I may have the following expense accounts:

        I would like to be able to create reports per project (e. g., what percentage is spent on various sub accounts), but also across all projects account (e. g., how much was spent on all engineering)

        Many thanks

      • Jesse commented  ·   ·  Flag as inappropriate

        The "Jobs" feature would be ideal except that it currently (GnuCash 2.6.1) only allows you to group transactions for a "single vendor" or a "single customer". I want to group all the transactions for a single 'project'. Using Jobs would allow one to group all the Water bills for Property 1 and all Water bills for Property 2. But doesn't allow one to group all Water, Electricity and Rates for Property 1 together.

        My specific case is that I'm a stage performer and producer. I would like to groups all expenses and income, associated with performing at a particular festival.

      • Darrryl commented  ·   ·  Flag as inappropriate

        I think that it should be relatively easy to do by using the "jobs" feature. You can link invoices and bills to different jobs ( Rental unit 1 ; Rental unit 2, Dept 1 ; Dept 2.....) currently but you are only able to pull the one job report and it shows only income, no expenses. If the job report could be modified to allow the selection of expense accounts then a report could be generated with the expenses to compare with the revenue reported for the "job".

      • Gideon Adedokun commented  ·   ·  Flag as inappropriate

        I have a technical business (say AB LLC) which has a number of departments/divisions e.g. AB Building & Construction, AB Electrical Engineering, AB Furniture, AB Technical School, etc. There are single revenue, expense, asset and liability accounts (it is just one business after all) but I will like to be able to report by department for performance management purpose. I hope the dimension/segment reporting feature is implemented ASAP.

      • bthomson commented  ·   ·  Flag as inappropriate

        DB: What do you mean by meta-accounts? This sounds like a solution that might help us sort multiple organizations, projects and expense categories. However I can't find any reference or help on setting up a project (you use 'property') as a meta-account. How do I do this to see if that's a solution for out accounting system?

      • DB commented  ·   ·  Flag as inappropriate

        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.

      • Anonymous commented  ·   ·  Flag as inappropriate

        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?

      • Xavier Vidal Piera commented  ·   ·  Flag as inappropriate

        There are times when you have payments to someone but for diferent reasons.

        For example:

        Buy food: pay 10EUR to "ABC Market".
        Account: Payments::Food::ABC Market

        Buy furniture: pay 65EUR to "ABC Market"
        Account: Payments::House::ABC Market

        As you can see, there's two diferent accounts because the payments category are different, but the payee is the same.

        So, if any day i want a report to now my expenses on one payee, i would like to select "ABC Market" (the first one, i.e.) and view all the payments due to them.

        If "ABC Market" from Food is linked to "ABC Market" from House, the software can do the connection and aggregate the data.

        Or maybe there's a better way to do what i want and you could show some light about it.

        P.D: I'm a user from Microsoft Money and i'm trying to accomodate to GnuCash, specially in reporting.

      • JohnM commented  ·   ·  Flag as inappropriate

        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.

      ← Previous 1

      Feedback and Knowledge Base