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.
AdminGeert Janssens (Admin, GnuCash) commented
@Devan to clarify: the hint to unlimited tagging refers to the future ability to define a filter based on the contents of a transaction's description, notes or memo field. So you could enter "tag" strings in either of these three fields and create a report to select only transactions matching one or more of these strings. It's rudimentary but should help you reach your goal.
As for when: the developers are currently in the process of stabilizing the code in preparation of the 3.0 release. It's tentatively targeted for end of March of this year. If there are blocking issues by that time we may delay some more.
Devan Mardyks commented
I really hope this feature gets added soon. I run an event company and I need a way to tag transactions for different events without having to create an endless number of accounts.
I can confirm the upcoming Gnucash 3.0 will allow custom filtering of transactions in the default transaction report. So, you'll soon have unlimited #tagging opportunities!
DAVID SHARNOFF commented
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
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.
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.. :/
what custom accounting program ? Did you write any custom code for GnuCASH or totally different accounting system.
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
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
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 ?
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.
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
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)
Have found two duplicate requests for this same feature:
I'm willing to contribute some $$ to getting this done, does anyone know to do that?
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.
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
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.
For anyone really needing this feature, and not needing all the other advanced features of GnuCash, check out HomeBank, which is also FOSS: http://homebank.free.fr/
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?
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.