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.

381 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…)
    ghrghr shared this idea  ·   ·  Flag idea as inappropriate…  ·  Admin →
    Anonymous shared a merged idea: Tags for transactions and accounts  ·   · 
    Anonymous shared a merged idea: More detailed reports where sub accounts from different parent accounts can be combined:  ·   · 
    Xavier Vidal PieraXavier Vidal Piera shared a merged idea: Create a link between accounts, so we can show total data  ·   · 
    wlwernerwlwerner shared a merged idea: Provide an option to create transaction tags to record categories that one wishes to track.  ·   · 


    Sign in
    or sign in with
    • facebook
    • google
      Password icon
      I agree to the terms of service
      Signed in as (Sign out)
      • Kael ShipmanKael 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.


      • Geert JanssensAdminGeert 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.


      • JesseJesse 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

      • JesseJesse 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.

      • DarrrylDarrryl 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 AdedokunGideon 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.

      • bthomsonbthomson 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?

      • DBDB 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 PieraXavier 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.

      • JohnMJohnM 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.

      • Vincent DawansVincent Dawans commented  ·   ·  Flag as inappropriate

        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.

        Found here: http://doc.openerp.com/v6.0/book/3/3_7/index.html

      • JamesJames commented  ·   ·  Flag as inappropriate

        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).

      • Rise-TRise-T commented  ·   ·  Flag as inappropriate

        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.

      • HajoHajo commented  ·   ·  Flag as inappropriate

        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
        references dimension.dimguid

        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.

        Questions? mailto:hlemcke@web.de

      • Bob BrushBob Brush commented  ·   ·  Flag as inappropriate

        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.

      ← Previous 1

      Feedback and Knowledge Base