Skip to main content

How to build an employee expense reimbursement workflow in Formaloo

Learn how to build an employee expense reimbursement workflow in Formaloo: one form with admin-only manager and finance sections, automated approval routing, three PDF templates, and a role-based portal.

What you'll build

By the end of this guide, you'll have a single form that handles an entire expense claim from submission to payout. Employees submit a claim, their manager approves or rejects it from admin-only fields on the same record, and finance processes payment without ever touching a second form. Status changes drive automatic routing, branded email notifications, and three PDF documents (a manager decision record, a finance processing record, and an employee expense report). A role-based portal gives employees, managers, and finance each their own filtered view of the pipeline.

When to use this

  • Expense approvals live in email threads and spreadsheets, and claims regularly get lost between "sent to my manager" and "reimbursed"

  • You want one audit trail per expense instead of separate forms for submission, approval, and payment

  • Finance has no visibility into which approved claims are still waiting to be paid

  • Employees keep asking "where's my reimbursement?" because they have no way to check status themselves

  • You need a PDF record of every decision and payment for compliance or audit purposes

Part 1 β€” Build the expense claim form

This is the only form in the entire workflow. Employees fill out the public section when they submit a claim. The manager and finance sections are admin-only. They live on the same record, so a manager or finance reviewer just opens the submission and fills in their part instead of juggling a separate form. Magic Create can generate the whole structure, admin-only sections included, from one prompt.

1. Create a new project: From your Formaloo homepage, start a new project with Form. It comes with one form already attached, which is the fastest starting point for this workflow.

2. Open Magic Create: From your Formaloo homepage, click Magic Create. Describe your form in text (or paste the prompt below), then click Create.

Build an expense reimbursement form. Public section: full name, email address, department (single choice), expense category (single choice: Travel, Meals, Equipment, Software, Other), what the expense is for (short text), amount (number), date incurred (date), receipt upload (file), and an optional project or cost center (short text). Add an admin-only manager section: assigned manager (assignee field), decision (single choice: Approved, Rejected), approval notes (long text). Add an admin-only finance section: finance reviewer (assignee field), payment method (single choice: Bank transfer, Company card, Check), payment reference number (short text), payment date (date), finance notes (long text). Add an admin-only status section: expense status (dropdown: Manager review, Finance processing, Processed, Rejected, On hold) and internal notes (long text).

3. Verify your fields: Your form should now look like the table below. Magic Create will have generated most of this structure automatically. Open each field's settings and check that the field ID matches exactly, since logic, emails, and PDFs all reference these IDs.

Field (question form)

Field ID

Type

Section

What is your full name?

employee_name

Short text

Public

What is your email address?

employee_email

Email

Public

What department are you in?

department

Single choice

Public

What is the expense category?

expense_category

Single choice

Public

What is this expense for?

expense_description

Short text

Public

How much are you claiming?

amount

Number

Public

What date was this expense incurred?

expense_date

Date

Public

Please upload your receipt.

receipt

File upload

Public

Which project or cost center does this relate to?

project_code

Short text

Public, optional

Assigned manager

manager

Assignee

Admin only

Decision

manager_decision

Single choice: Approved / Rejected

Admin only

Approval notes

approval_notes

Long text

Admin only

Finance reviewer

finance_reviewer

Assignee

Admin only

Payment method

payment_method

Single choice

Admin only

Payment reference number

payment_reference

Short text

Admin only

Payment date

payment_date

Date

Admin only

Finance notes

finance_notes

Long text

Admin only

Expense status

expense_status

Dropdown: Manager review / Finance processing / Processed / Rejected / On hold

Admin only

Internal notes

internal_notes

Long text

Admin only

πŸ“– See what admin-only fields are and how they help for how these fields behave differently from public ones.

4. Publish the form: Click Publish in the island bar at the top of the editor.

Part 2 β€” Create your email templates

Four templates fire automatically as the claim moves through the workflow: a manager notification when a claim comes in, a finance notification when it's approved, a rejection notice to the employee, and a reimbursement confirmation once it's paid. Build all four now so they're ready to attach to logic in Part 4.

1. Open the email template editor: Click your profile icon β†’ Apps & integrations β†’ Custom email templates β†’ Add new template.

2. Build each of the four templates: Give each a name, subject line, and design, using answer piping (@field_id) to personalize the content. Save each one.

  • New expense submitted (to manager): subject "New expense claim from @employee_name: @expense_category, @amount." Summarizes the claim and tells the manager to open the record, review the receipt, and fill in their decision.

  • Approved for processing (to finance): subject "Approved for processing: @employee_name, @amount (@expense_category)." Summarizes the claim and the approving manager, and tells finance to fill in payment details and mark it Processed.

  • Expense not approved (to employee): subject "Your expense claim has not been approved: @expense_category, @amount." Pipes in @approval_notes as the reason and invites the employee to resubmit or follow up with their manager.

  • Reimbursement confirmed (to employee): subject "Your reimbursement is on its way: @amount (@expense_category)." Confirms @payment_method, @payment_reference, and @payment_date, and notes that the PDF expense report is attached.

πŸ“– See how to create and send custom email templates for the full template editor walkthrough, including how AI can generate the HTML design from a prompt.

Part 3 β€” Create your PDF templates

Three PDF templates turn the record into a document at each key moment: a manager decision record, a finance processing record, and an employee-facing expense report. Logic generates all three automatically later. You're just building them here.

1. Open the PDF template editor: Click your profile icon β†’ Apps & integrations β†’ Custom PDF templates β†’ Add new template.

2. Build each of the three templates: Use the AI block to generate a design from a prompt, or switch to HTML view and paste your own code. Use answer piping to pull in field values.

  • Manager decision record: expense details plus a decision banner (approved or rejected) and approval notes. Kept for manager and HR records.

  • Finance processing record: an amount summary, payment details table, and a three-step approval chain (employee, manager, then finance). Kept for finance's audit trail.

  • Employee expense report: a reimbursement confirmation with a payment summary and approval timeline. Attached to the confirmation email the employee receives.

πŸ“– See how to create PDF templates to turn responses into documents for the full editor walkthrough.

Part 4 β€” Automate approvals and routing with advanced logic

This is where the workflow comes together. One set of logic rules routes the record from manager to finance to payout, fires the right email at each step, and generates the right PDF. Magic Logic can generate all of it from a single prompt describing every condition.

1. Open Magic Logic: In the form editor, open Advanced logic from the form settings panel on the right side, then go to the Logic tab. Click Magic Logic in the top right corner.

2. Describe the full workflow in one prompt: Paste the prompt below and click Generate rules.

When the form is submitted: set expense status to "Manager review," assign the record to the manager field, and send the "New expense submitted" email to the manager. Hide payment method, payment reference number, payment date, and finance notes by default. When decision is changed to "Approved": show payment method, payment reference number, payment date, and finance notes; set expense status to "Finance processing"; assign the record to the finance reviewer field; and send the "Approved for processing" email to the finance reviewer. When decision is changed to "Rejected": set expense status to "Rejected" and send the "Expense not approved" email to the employee's email field, piping in the approval notes as the reason. When expense status is changed to "Processed": generate the employee expense report PDF and send the "Reimbursement confirmed" email to the employee's email field with that PDF attached.

3. Review and approve each rule: The AI previews every rule it built. Approve, redo, or cancel each one individually, then make any manual adjustments, for example confirming the correct email template is selected for each "Send email" action, and the correct PDF template for the "Generate PDF" action.

4. Save your logic: Click Save in the top right corner.

πŸ“– See what is logic in Formaloo and how to add advanced logic to your form for more on how On submit and On update rules work. For the full list of supported variables, see how to dynamically pull form data into custom emails, PDFs, and AI prompts.

Part 5 β€” Set up the portal for employees, managers, and finance

Turn the project into a portal so each role only sees what's relevant to them: employees see their own claims, managers see their team's queue, and finance works from a Kanban pipeline.

1. Activate the portal: Open your project, click the gear icon in the top-right corner, and select Activate client portal. Click Manage users, then Setup wizard, and connect a user directory.

2. Add user roles: In your user directory, add three roles: Employee, Manager, and Finance. This lets you control page access and data filters by role.

πŸ“– See how to create and assign user roles in your portal for the full walkthrough.

3. Build the employee pages: Add a Submit an expense page with the form block. Add My claims, a table filtered to the logged-in user's email address, showing category, amount, date, and status. Add Rejected claims, the same filter plus status = Rejected, showing the manager's approval notes so employees can see why and resubmit.

πŸ’‘ Pro tip: Each employee sees only their own submissions on these pages. No one else's records appear. See how to let users view and edit their own data in your portal.

4. Build the manager pages: Add Pending my approval, a table filtered to manager = logged-in user and status = Manager review, sorted oldest first. Add All my team's claims, filtered to manager = logged-in user across all statuses. Add Approved by me, filtered to manager = logged-in user and decision = Approved, to track which approved claims are still moving through finance.

πŸ’‘ Pro tip: Each manager sees only claims assigned to them, not any other manager's queue. See how to let users view and edit their own data in your portal.

5. Build the finance pages: Add All expenses, a Kanban board grouped by expense status with five columns (Manager review, Finance processing, Processed, Rejected, On hold). Dragging a card between columns updates the status and triggers the matching logic automatically. Add Ready to process, a table filtered to status = Finance processing, sorted oldest first. Add Processed, filtered to status = Processed, showing payment method, reference, and date as an audit log. Add Expense overview, a chart of claimed amounts grouped by category and department.

πŸ“– See how to create a Kanban board and how to sort and filter your submissions data for the underlying data views used on these pages.

What you now have

Employees submit a claim once and can always check its status without asking anyone. Managers approve or reject from the same record they were notified about. No second form, no copy-pasting into email. Finance works from a single Kanban queue instead of a shared inbox, and every decision and payment produces a PDF for the audit trail. What used to be a scattered email-and-spreadsheet process is now one form, one pipeline, and three roles that each see exactly what they need.

Ready-to-use templates

Don't build this from scratch β€” we've already put it together for you.

  • Employee request workflow β€” routes internal requests by type and tracks approvals from one view. Swap in the expense-specific fields and decision logic from this guide to turn it into a dedicated reimbursement workflow.

  • Scholarship & grant application with scoring and approval β€” a multi-stage review workflow with automated approval and rejection emails. The same approve/reject branching pattern used here for managers applies directly.

  • Patient intake & consent workflow for healthcare β€” conditional admin-only sections, a PDF export, and an admin Kanban pipeline, structured the same way as the manager and finance sections in this guide.

What's next

Learn more how-tos

Did this answer your question?