Designing expense categories
The shift from old to new
Traditionally, expense categories were created to match GL posting destinations - one category per posting account. This produced long lists like:
- Hotel
- Hotel abroad
- Meals
- Meals abroad
- Meals with guests
- ...
The category list was essentially a simplified chart of accounts dressed up for employees. The predictable result: employees picked the wrong category, or gave up and chose a "Miscellaneous" catch-all with a note in the description field - and left finance to manually recode everything before posting.
TEM breaks the 1-1 relationship between category and posting. A single category can route to different posting groups depending on information already on the expense or employee - whether it is domestic or abroad, which employee profile applies, whether guests are present, whether a project is assigned. A single "Meals" category can silently produce four different GL entries with no extra input from the employee.
Example - one category, four posting outcomes:
The category FOOD (Eat & Drink) has four posting setup lines. The employee picks "Eat & Drink" once. TEM evaluates the expense and routes it correctly:
| Criteria | Posting Group |
|---|---|
| Domestic, no guests (default) | FOOD |
| Domestic, CEO profile, with guests | FOOD W GUEST |
| Not domestic | FOOD ABROAD |
| Has project | PROJECT |
SmartExtract adds a further layer: it reads the receipt when the employee attaches it, and can suggest the right category automatically. This means the employee may not even need to choose - and if the category list is short and clear, the suggestion is more reliable.
Recommendation
Design categories that make sense to the employee submitting the expense. Use posting criteria and SmartExtract to handle GL complexity behind the scenes. Aim for a list short enough that an employee can scan it in a few seconds and know immediately where their receipt belongs.
Why category count matters
If the list is too long, or the descriptions are unclear or overlap each other, employees will do what is easiest: pick "Miscellaneous" and write a note. This feels faster for them but moves all the coding work to finance, who must manually recode every miscellaneous expense before posting.
SmartExtract is also affected by overlap. If the category list contains "Travel", "Business Travel", and "Transport" as separate entries, SmartExtract cannot reliably distinguish between them from a receipt - and neither can an employee scanning the list quickly. Clear, non-overlapping names make both the employee experience and the AI matching more reliable.
How to apply
Start from the employee's perspective, not the chart of accounts
Name categories after the purchase, not the GL account or policy rule. "Meals", "Hotel", "Transport", "Entertainment" - not "6110 Domestic meals" or "Meals (domestic, no guests)". Employees do not know the chart of accounts and should not need to.
Replace domestic/international splits with posting criteria
Before creating "Hotel" and "Hotel abroad" as two separate categories, check whether a single HOTEL category with two posting setup lines - one with Domestic checked, one as the default for everything else - produces the correct GL result. It almost always does, and the employee sees one category instead of two.
Regions extend this further. If expenses incurred in EU countries require a different posting setup than other international expenses, create a Region containing the EU countries and add a third posting setup line for that Region Code. A single HOTEL category then covers three tiers without any extra choices for the employee:
| Posting setup line | Criteria | Posting Group |
|---|---|---|
| 0 | Domestic | HOTEL-DOM |
| 1 | Region: EU | HOTEL-EU |
| 2 | Default | HOTEL-INTL |
Use SmartExtract Classify when posting criteria are not enough
Posting criteria handle a lot - domestic vs. abroad, region, guests, project, employee profile - but they cannot distinguish between cost types within the same category when that distinction only appears on the receipt itself. You cannot tell a taxi from a flight from the metadata alone.
When a category genuinely covers multiple GL destinations that can only be identified from the receipt content, configure SmartExtract Classify. The employee picks one category; SmartExtract reads the receipt and selects the correct posting group automatically. If it cannot match, the default posting setup line is used as a fallback.
See SmartExtract for how to configure Classify.
Write descriptions in plain, natural language
SmartExtract uses category descriptions - and Posting Group descriptions - when matching receipt content. Use language that could appear on a receipt. "Eat & Drink" classifies more reliably than "Meals, Personnel". For Posting Groups within a Classify setup, "Taxi and rideshare" is clearer than "TAXI-6120". The same plain language helps both the employee scanning the list and the AI reading the receipt.
Category names must be mutually exclusive. When in doubt, ask: could an employee reasonably confuse these two? If yes, merge or rename.
Always define a default posting setup line
Every category must have one line marked Use as Default. If SmartExtract cannot match a receipt, or no other posting criteria apply, the default is used. A category without a default will fail to post.
Use Employee Profiles to shorten the visible list per group
Rather than creating separate category sets per employee group, build one shared list and hide categories that do not apply to a group. Contractors do not need "Conference & Training"; field staff do not need "Board Meetings". The goal is that every category a specific employee sees is one they will actually use.
Common mistakes
Recreating the chart of accounts as categories Separate categories for "Meals domestic", "Meals abroad", "Meals with guests domestic", "Meals with guests abroad" is the old pattern. One "Meals" category with posting setup lines achieves the same GL result with a fraction of the employee-facing complexity.
Overlapping category names "Travel", "Transport", and "Business Travel" in the same list produce inconsistent results from both employees and SmartExtract. Each category should describe a clearly distinct type of purchase.
Adding a Miscellaneous category A Misc. category is a trap. It collects everything the setup did not handle and moves the coding problem from the employee to finance. If employees are consistently using a Misc. category, it is a signal that the list is missing a category or a description is not clear enough - fix the root cause rather than leaving Misc. in place.
Leaving out the default posting setup line A category without a default will fail to post when no criteria match. Every category needs a fallback.
Vague Posting Group descriptions If you use SmartExtract Classify, it uses Posting Group descriptions to identify what a receipt shows. Descriptions like "PG-MEALS-6110" or "Catering 2" reduce classification accuracy. Write them as if they could appear on a receipt: "Food and beverage", "Taxi and rideshare", "Hotel accommodation".
When to deviate
Some audit requirements or internal controls demand that employees make an explicit category selection with no AI assistance. In those cases, skip SmartExtract Classify and use explicit categories - the control is worth the extra employee effort. Even then, posting criteria (domestic, region, with guests, project) should still handle GL routing within each category rather than splitting into many separate categories.
Related
- Concept: SmartExtract
- Concept: Posting and GL
- Set it up: Step 05 - Expense categories
- Field detail: Expense categories