DEV Community

Cover image for Expense Report Automation with n8n: Design the Review Process First
Farzam Saadat
Farzam Saadat

Posted on Originally published at syedfarzamsaadat.com

Expense Report Automation with n8n: Design the Review Process First

Expense report automation moves employee submissions through consistent data collection, checks, record creation, and review notifications. A useful workflow makes missing information and exceptions visible. It does not, by itself, establish whether an expense is legitimate, tax-deductible, approved for reimbursement, or paid.

Before choosing nodes in n8n, decide what your expense process needs to prove. Who submitted the expense? What was purchased? Is the record complete? Who reviews an exception? Where is the decision recorded? These questions determine whether automation improves control or simply moves incomplete information faster.

Separate intake, review, approval, and payment

Treat these as four different stages. Intake captures the request. Review checks the information against the company’s rules. Approval records an authorized decision. Payment settles the approved obligation through the business’s payment process.

Expense review process separating submission validation, exception checks, human approval, and payment

Conceptual flow: validation and exception checks are automated; approval and payment stay with people and the business’s payment process.

A confirmation email should say that the expense was received, not approved. Similarly, a status such as No Exception Flagged should not be interpreted as a payment instruction. This distinction matters when employees and reviewers rely on automated messages to understand what happens next.

A first project can automate intake and review routing while leaving approval and payment in the team’s existing process. State that boundary explicitly in the workflow specification and employee instructions.

Choose fields that support the review

Capture a submission ID, employee identifier, transaction date, merchant, amount, currency, business purpose, and supporting-document reference where required by company policy. Include the project or department if costs need to be allocated. Store a submission timestamp separately from the transaction date.

The amount should be numeric, but a number alone is not enough: 250 USD and 250 EUR are different records. If the workflow supports only one currency, make that visible on the form. If it supports several, define how comparison thresholds work before building a conversion step.

Keep original submitted values alongside corrected values when a reviewer makes a change. A useful record explains what changed, who changed it, and why. Avoid overwriting the original business purpose or amount without an identifiable review history.

Apply explicit validation rules

Separate incomplete or invalid submissions from policy exceptions. A missing employee identifier is a data problem. An amount above a company review threshold can be a valid submission that needs additional attention. Each deserves a different message and status.

Decide how refunds, credit notes, and corrections are handled. A workflow designed only for positive reimbursement requests should route negative values to a separate process rather than silently discarding them. Test dates, blank fields, decimal amounts, and unexpected currency values.

Write the rules in plain language before translating them into conditions. For example: if the amount exceeds the company’s chosen threshold, retain the submission and notify the designated reviewer. The threshold is a business choice, not a universal accounting standard.

Flag possible duplicates without assuming fraud

A duplicate check can compare employee, merchant, transaction date, amount, and currency. A repeat receipt identifier can provide another signal when it is reliably captured. Normalize text carefully so minor differences in capitalization do not hide a match.

These checks produce candidates for review. Two legitimate purchases can have the same amount and merchant on the same day. Conversely, the same expense may be entered with a different merchant spelling. Keep the reason for the match visible and allow a reviewer to resolve it.

Distinguish duplicate expenses from repeated processing of one submission. A stable submission ID can stop the same intake event from creating another record after a retry. At higher volumes, enforce uniqueness in the storage layer; a separate spreadsheet lookup followed by a write can race with another execution.

Create a reviewer queue that people can use

Store the request with a status, exception reason, assigned reviewer, and review timestamp. Suggested statuses include Received, Needs Information, Review Required, Approved, Rejected, and Paid. Use only the statuses your actual process supports, and define who can set them.

The reviewer notification should include the submission reference and a link to the authorized record. It should explain why review is needed without spreading receipt images or unnecessary personal details across multiple inboxes. Restrict access to the people who need it.

For a modest pilot, a spreadsheet can make records easy to inspect. n8n provides integrations for Google Sheets and Google Drive. Storage choices still need to account for permissions, concurrency, retention, and how review decisions are recorded.

A worked example: three submissions, three outcomes

Consider a fictional business that has chosen USD 500 as an additional-review threshold. This is an illustrative internal rule, not a recommended legal or tax limit.

Submission A is a complete USD 86 request with no matching prior entry. Record it as received and place it in the normal review queue. Submission B is a complete USD 620 request. Preserve it and flag the amount rule. Submission C is USD 86 with the same employee, merchant, date, and currency as A. Flag a possible duplicate and show the matching record.

None of those outcomes automatically establishes reimbursement approval. The reviewer still considers the business purpose and supporting information. If C is a legitimate second purchase, the reviewer records the explanation instead of deleting the match history.

Test failure recovery as well as the happy path

Test a valid submission, missing fields, a boundary amount, a possible duplicate, a repeated submission ID, and a failed notification. For the USD 500 example, test 499.99, 500.00, and 500.01 so the meaning of greater than versus greater than or equal to is deliberate.

Also test what happens when the record is saved but the email fails. Recovery should not insert the same expense again. n8n’s error workflow mechanism can support failure alerts [S2], but someone must own investigation and recovery. Define the response before rollout.

Do not mark an item paid because an email was sent or an approval checkbox changed. If payment tracking is later added, use an authorized payment result and a traceable reference as the basis for that status.

Measure the result without overstating savings

Track missing-information rates, time to first review, unresolved exceptions, and manual touches per submission. Compare equivalent periods and record the number of requests in each sample. A faster intake step can coexist with a slow approval queue, so measure the stages separately.

My expense intake and review demonstration illustrates an initial rules-based approach using sample data. This guide describes broader design choices and proposed controls; it does not imply that every feature discussed is included in that demonstration. My accounting and finance background informs the emphasis on records and review boundaries.

Common questions

Can n8n automatically approve expenses?

A workflow can be configured to apply business-defined decisions, but that should follow an approved policy and clear authorization. The intake-and-review approach here keeps reimbursement decisions with a person.

Do I need AI to read receipts?

No AI is needed when employees submit structured fields. Receipt extraction is an optional extension. If added, validate the extracted amount, currency, date, and merchant before relying on them; unclear results should go to review.

Is this a substitute for accounting software?

This design coordinates submissions and review. It does not replace a general ledger, reconcile accounts, or determine tax treatment. Any later accounting integration needs explicit mappings and approval rules.

Start with one expense category

Pilot a narrow category with agreed fields, reviewer ownership, and test cases. To map an appropriate first version, discuss your expense workflow and share how submissions currently reach your finance team.

Top comments (0)