FinAccounting Get started

Expense Reimbursements Module

Handling Expense Reimbursements

An employee reimbursement workflow — submit, approve, then pay someone back for money they spent out of pocket. Not a simple bank entry: it’s a real record of its own, tracked through a status all the way to a real bank payment.

Employee picker from HR Posts to Accounting Pays out via Banking Can bill through to Sales

Start here

1Before you start

A claim’s Employee field is a real link to an HR employee record, not free text — the dropdown is built from HR‘s own employee list, and choosing “+ Create New Employee…” creates a real HR record on the spot.

Practical dependency

If HR has no employees yet, the Employee dropdown has nothing to offer besides “+ Create New Employee…”. Add at least one person in HR first, or use that quick-create link the first time you log a claim.

Once an employee is selected, their name and email are snapshotted from the real HR record at save time — editing the claim later doesn’t let you override those with different text.

2Log a claim

Click + New Expense Claim (or the equivalent action on the Expense Reimbursements page). Fill in the claim header:

FieldNotes
EmployeeRequired — a real HR record, see above.
ReferenceOptional — auto-generated as EXP-00001, EXP-00002, etc. if left blank.
StatusDraft or Submitted at this stage (Reimbursed is greyed out — it can only be set by the Record Reimbursement action, see step 4).
CurrencyDefaults to your company’s currency.
Claim DateDefaults to today.
Reporting PeriodAuto-derived from Claim Date (e.g. “July 2026”) if left blank.
DepartmentPulled from real HR departments, plus a few generic defaults.
Payment MethodEmployee Reimbursement, Corporate Card, Petty Cash, or any custom value you’ve used before.
Tax Rate %One flat rate applied to the whole claim’s subtotal — not itemized per line.
Approved TotalLeave at 0 for now — it’s set properly once you approve the claim (see step 3).
NotesOptional.

Then add at least one Claim Line — description, category, merchant, the real Chart-of-Accounts Account Code this line should post against, a receipt reference, and the amount. A line can optionally link to a Project (for cost rollup) or mark itself Bill to Client (see Passing a cost through to a client). Click Add Line for more than one.

Click Create Claim. Subtotal, tax, and grand total are computed automatically from the lines and Tax Rate.

3Approve a claim

Open the claim, change Status to Approved, and set Approved Total — leave it at 0 to approve the full grand total, or enter a lower figure for a partial approval (it’s automatically capped at the grand total either way). Click Update Claim.

If your company uses double-entry accounting, this is also the moment a real GL journal posts — automatically, the first time a claim reaches Approved, guarded so it never posts twice even if you edit the claim again later:

Example — a $200 claim ($120 Travel, $80 Meals), approved in full

6110 Travel ExpenseDr $120.00
6120 Meals & EntertainmentDr $80.00
2030 Employee Reimbursements PayableCr $200.00
Balanced$200.00 = $200.00

Each line debits the real expense account picked on it, not one lump “expenses” bucket. If you approve less than the full claimed amount, every line’s debit is scaled down proportionally so the journal still balances to the real Approved Total. Nothing has left your bank account yet — this only records that you owe the employee.

Simple-mode companies

If your company isn’t using double-entry accounting, this step just updates the claim’s status — there’s no ledger to post to.

4Reimburse a claim

This is the step that actually moves money — a real bank transaction, not just a status change.

On an Approved claim, click Record Reimbursement. You’ll set:

  • Paid From Bank Account — required.
  • Date — defaults to today.
  • Method — e.g. “Bank Transfer” (optional, overrides the claim’s Payment Method for display).
  • Note — optional.

Click Record Reimbursement. This pays out the claim’s Approved Total as a real outflow bank transaction and posts its own GL entry:

Example — reimbursing the $200 claim above

2030 Employee Reimbursements PayableDr $200.00
1010 Cash — Operating AccountCr $200.00
Balanced$200.00 = $200.00

The claim’s status moves to Reimbursed — the only way it can get there. Trying to set Reimbursed directly from the Status dropdown on an ordinary edit doesn’t work; the claim is quietly kept at Approved instead until you actually run this action.

Common tasks

Rejecting a claim

Not going to pay a claim out?

Open it and set Status to Rejected, then save. Rejected claims are excluded from the “Total Claimed” KPI and never get a GL journal (unless one was already posted from a prior Approved state — rejecting after approval doesn’t reverse that journal automatically).

Approving only part of a claim

Someone claimed $200 but only $150 of it is legitimate?

Set Status to Approved and Approved Total to $150 instead of leaving it blank. The GL journal (see step 3) recognizes exactly $150 as the liability, with each line’s debit scaled down proportionally — and reimbursing the claim later pays out that same $150, not the original $200 claimed.

Passing a cost through to a client

An employee bought something on a specific client’s behalf — hosting for their project, a part for their job — and you want to bill it back to that client rather than absorb it?

On the claim line, set Bill to Client to the real customer it should be passed through to (this is what actually makes a line “billable” — there’s no separate toggle). From then on, that line is available to be pulled onto a real Sales invoice via that customer’s “+ Add Billable Costs” picker. Once it’s been pulled onto an invoice, the line is marked invoiced and its Bill to Client field locks — it can’t be double-billed or reassigned to a different customer afterward.

Reference

Claim statuses

Draft
Being put together, not yet submitted
Submitted
Awaiting review — the default on save
Approved
Liability recognized, awaiting payment
Reimbursed
Paid — set only via Record Reimbursement

Rejected is a separate, terminal status reachable from Draft, Submitted, or Approved at any point via the Status dropdown — it doesn’t sit on this line since a claim doesn’t pass through it on the way to being paid.

What this module doesn’t do

Receipts are a text field, not a file

The “Receipt” field on a claim line is a plain reference number/text — there’s no receipt image or document upload attached to a claim.

Delete carefully once a claim is approved

Once a claim has reached Approved or Reimbursed, use Reject rather than Delete if it needs to be undone — Reject keeps the full record and its history in place for anyone reviewing your books, and doesn’t remove anything money has already moved against.

One flat tax rate per claim

Tax Rate % applies once to the whole claim’s subtotal — there’s no per-line tax rate, and no bracket/jurisdiction logic like Payroll’s Tax Setup.

FinAccounting — Expense Reimbursements Reference Guide Back to top ↑