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