Expense Category Mapping — Controller Guide
Arcvue owns the expense categories — airfare, lodging, subscriptions, per diem. You own the accounts they code to. This screen is where you state which is which, once, so that every expense line after it codes itself.
Where it is: Accounting → Expense category mapping
(/accounting/expense-category-map). Press ? on the page for the in-product
guide.
Part 1 — The ideas you need first (read once)
One category, three answers — because the cost objective decides the account
This is the single thing to understand before you read a row, and it is why the Charged to chip gets its own column rather than being a footnote.
The same expense category legitimately codes to a different GL account depending on what the person charged it to:
| Somebody charges travel to… | It is | It codes to |
|---|---|---|
| a contract | a direct cost | Direct Travel |
| the indirect project | overhead | OH Travel |
| the internal project | G&A | G&A Travel |
So a category is not mapped once. It is mapped once per cost objective, and the list shows one row per real (category, objective) pair. If you read the list without this in mind, it looks like "subscriptions appears three times." It does not — subscriptions codes differently by objective, and each of those is a separate decision only you can make.
The three objectives carry a consistent color everywhere they appear: Direct is teal, Overhead amber, G&A slate — the order you read a rate build-up in.
Every row is real. There is no empty grid to fill in.
A pair appears here only if it is already mapped, or if your own expense lines actually carry it. Arcvue does not render the full grid of every category against every objective. That would bury the dozen decisions that matter under a hundred combinations nobody will ever charge.
The practical consequence: this list grows as your people spend. A category you have never charged to overhead will not appear until somebody does.
Each category reads by its name as people see it on an expense report — Meals & incidentals, per diem rather than a stored code — and a category this release does not know is shown readably rather than hidden.
A page that says it could not load expense categories is not an empty list. The request failed, which does not mean none have been imported; reload, and if it keeps happening the server is not answering.
The three statuses are three different asks
| Badge | What it means | What you do |
|---|---|---|
| Needs a decision (amber) | No account is set, and nothing in your history was consistent enough to propose one. | Pick the account with Set account. Until you do, every new line in that pair waits to be coded by hand. |
| Proposed (blue) | Arcvue derived an account from how you coded this category before. The Codes to cell shows the evidence underneath — "from your history · …". | Read the evidence, then confirm it so it becomes the rule, or set a different account. |
| Confirmed (green) | A person decided it. New lines code here automatically. | Nothing, unless it is wrong — then Change. |
Hovering any badge tells you what it signifies and what to do about it, not just what state it is in.
A proposal is not a mapping. Until you confirm it, it is Arcvue's reading of your past behavior, and it can be revised. Setting it records your decision so it stops being revisable — which is the point.
Part 2 — How to run it
Step 1 — Read the counts, then work the amber
The line under the title is your whole worklist:
N need a decision · N proposed from your history · N confirmed
Work Needs a decision first, and inside that group work the rows carrying an amber "(N uncoded)" in the Lines column. That number is the consequence: those expense lines are sitting uncoded right now, waiting on this exact decision. A row with a large line count but zero uncoded is less urgent — those lines were already coded one at a time.
Step 2 — Open a row and set the account
Click Set account (or Change on a confirmed row). The dialog shows the category, the Charged to objective, and — on a proposal — the evidence it rests on.
Search the chart of accounts by number or name, pick the account, and click Set account.
- The list holds your active accounts only. If the account you want is not there, it is inactive (or does not exist) — fix that on Chart of Accounts first.
- Clear mapping appears only on a row that already has an account. Clearing sends the pair back to needing a decision; it does not re-code lines that already posted.
- Cancel, the ×, Esc, or clicking outside all close without saving.
Step 3 — Confirm the proposals
A Proposed row is one click from done, and confirming it is worth doing even when you agree with it. A confirmed mapping is a stated decision; a proposal is an inference that can move if your coding history moves.
Read the evidence line before you confirm. If it rests on a handful of lines you now think were coded wrong, set the correct account instead of confirming the inherited mistake — otherwise you promote a coding error into a permanent rule.
The close control is named Close without setting an account, and the
name is the warning. It leaves the category mapped to nothing, so the next
expense on it comes back to this screen. Closing is allowed — it is just not
finishing.
Part 3 — When something looks wrong
| Symptom | What it means → what to do |
|---|---|
| "No categories yet. They appear here once expense reports are imported." | Nothing has been charged yet, or expense reports have not landed. This screen has no work until they do. |
| A category I expect is missing | Nobody has charged it to that objective yet. It appears the first time somebody does — this is deliberate, not a gap. |
| The same category is listed two or three times | That is correct. One row per cost objective — check the Charged to chip on each. They are separate decisions and usually separate accounts. |
| The account I need is not in the search list | The picker shows active accounts only. Activate or create it on Chart of Accounts, then come back. |
| I set a mapping and old lines are still uncoded | A mapping governs new lines. Lines already sitting uncoded are cleared through the expense workflow — see Expenses. |
| A confirmed mapping is coding new expenses to the wrong account | Open it with Change and set the right one. Then check whether the objective is what you expected — a line charged to the wrong project reaches the wrong row, and the mapping is doing exactly what it was told. |
| "Accounting is not available" | Your tenant does not have the Accounting module enabled, or your role does not carry it. That is an administrator question, not a mapping one. |
One-line summary
State which GL account each expense category codes to — once per cost objective, because travel on a contract, on overhead, and on G&A are three different accounts — working the amber Needs a decision rows first (the (N uncoded) count is what is waiting on you) and confirming the blue Proposed rows so Arcvue's reading of your history becomes your stated rule.
Related
- Expense reports, receipts, and the reimbursement workflow → Expenses
- Creating and activating GL accounts → Chart of Accounts (
/accounting/admin/chart-of-accounts) - Direct vs overhead vs G&A, and why the objective decides the account → GovCon Accounting Concepts
- Cost pools and the rate build-up these objectives feed → Cost Pools (
/accounting/indirect-pools)