🔓 Unlock all 10,000+ workflows & prompts free Join Newsletter →
✅ Full access unlocked — explore all 10,000 AI workflow and prompt templates Browse Templates →
Home n8n Workflow
January 22, 2026

Jotform to Google Sheets, expense claims logged clean

Lisa Granqvist Partner Workflow Automation Expert

Expense claims fall apart in the boring parts. Receipts go missing, totals get mistyped, and finance ends up chasing people for “just one more detail” when everyone’s already moved on.

If you run ops or finance, expense claim automation can feel like the difference between clean approvals and a weekly fire drill. HR/Admin teams see it too, because reimbursements turn into awkward back-and-forth. And employees? They just want to submit and be done.

This workflow takes a Jotform submission, saves receipts to Google Drive, extracts key invoice fields with AI, logs each expense to Google Sheets, and emails finance a clear summary you can approve faster.

How This Automation Works

Here’s the complete workflow you’ll be setting up:

n8n Workflow Template: Jotform to Google Sheets, expense claims logged clean

Why This Matters: Expense Claims Get Messy Fast

Manual expense processing rarely fails in a dramatic way. It fails quietly. Someone uploads three PDFs but forgets to label what they were for. A receipt photo is unreadable, so the “total” becomes a guess. Finance copies numbers into a spreadsheet, then later finds two receipts were for the same meal because the vendor names were typed differently. And when reimbursements slow down, people stop submitting on time, which makes the next cycle even worse. Honestly, it’s not the paperwork that hurts most. It’s the constant context switching and chasing.

The friction compounds. Here’s where it breaks down in real life.

  • Finance spends about 5–10 minutes per receipt just to open files, read totals, and retype fields into a tracker.
  • Employees get follow-up emails because dates, vendors, or tax amounts weren’t captured consistently.
  • Receipts end up scattered across inboxes and chats, which makes audits and disputes a headache later.
  • Approvals slow down because there’s no clean summary that ties trip context to the line items.

What You’ll Build: Jotform → Drive + Sheets + Finance Email

This workflow turns one form submission into a complete, finance-ready expense record. It starts when an employee submits your Jotform expense claim with trip details (name, department, dates, purpose) and uploads one or more receipt PDFs. Each file is saved into a specific Google Drive folder so you get clean record-keeping without anyone dragging files around. Then the workflow reads each PDF, runs it through an AI “DocClaim Assistant” (GPT-4o via an OpenAI chat model), and extracts the structured fields finance cares about, like vendor, invoice date, subtotal, tax, and total. Finally, it formats that data into a consistent structure, appends rows into Google Sheets (one row per receipt), and emails finance a neat HTML summary so approvals don’t require detective work.

The workflow begins with a Jotform submission and splits out each uploaded receipt so they can be processed one-by-one. AI extracts and standardizes invoice fields, then two paths run in parallel. Google Sheets becomes the central log, and a formatted email gives finance a quick decision-ready view.

What You’re Building

Expected Results

Say an employee submits a trip claim with 8 receipt PDFs. Manually, finance often spends maybe 7 minutes per receipt (open file, find total, copy fields), plus about 10 minutes to write a summary email, which lands around an hour. With this workflow, the employee submits once (about 5 minutes), receipts save to Drive instantly, and AI extraction runs in the background (often 2–5 minutes total). Finance gets a clean email and a Sheet already populated, so review becomes the main task, not data entry.

Before You Start

  • n8n instance (try n8n Cloud free)
  • Self-hosting option if you prefer (Hostinger works well)
  • Jotform to collect trip details and uploads.
  • Google Drive for storing receipt PDFs in one place.
  • OpenAI API key (get it from your OpenAI dashboard)

Skill level: Intermediate. You’ll connect accounts, set folder/sheet targets, and tweak a prompt or two for your receipt formats.

Want someone to build this for you? Talk to an automation expert (free 15-minute consultation).

Step by Step

A Jotform submission kicks everything off. The trigger fires when the employee submits the expense claim form, including trip details and one or more uploaded PDFs.

Receipts get split and stored. If multiple files were uploaded, the workflow separates them so each PDF can be handled independently, then uploads each one into your chosen Google Drive folder.

AI reads the PDFs and standardizes the fields. n8n extracts the PDF content, sends it to the AI agent backed by the OpenAI chat model, and uses a structured output parser so the result looks like the same JSON every time.

Two outputs happen in parallel. One path maps the receipt fields into a Google Sheets row (vendor, date, totals, and whatever else you choose). The other path builds a polished HTML summary and emails finance via Gmail/SMTP so they can approve quickly.

You can easily modify the extracted fields and email formatting to match your finance policy. See the full implementation guide below for customization options.

Step-by-Step Implementation Guide

Step 1: Configure the Form Submission Trigger

Set up the incoming JotForm submission that kicks off the expense claim flow.

  1. Add and open Form Submission Trigger.
  2. Set Form to [YOUR_ID].
  3. Credential Required: Connect your jotFormApi credentials.
  4. Save the trigger and leave it ready to receive a test submission.

Step 2: Connect Google Drive and Google Sheets

Store uploaded receipts in Drive and log claim metadata into Sheets.

  1. Open Upload Receipt File and set Name to =invoice-{{ $now.toFormat("yyyyLLdd-HHmmss") }}-{{$binary.data.fileName}}.
  2. In Upload Receipt File, select the Folder with [YOUR_ID].
  3. Open Append Sheet Entry and confirm Operation is append.
  4. Set Document to [YOUR_ID] and Sheet to gid=0.
  5. Keep Columns set to auto-map so the incoming fields map to EmployeeName, Department, TripPurpose, FromDate, ToDate, FileName, DownloadURL, Size, and SubmittedAt.

Credential Required: Connect your Google Drive credentials in Upload Receipt File and your Google Sheets credentials in Append Sheet Entry.

Step 3: Set Up Receipt Processing and AI Extraction

Split multiple receipt files, extract PDF text, and parse structured invoice data via the AI agent.

  1. Open Split Receipt Binaries and keep the provided JavaScript Code to split files where the binary key starts with Receipts___Invoices_.
  2. Ensure Split Receipt Binaries outputs to both Upload Receipt File and Parse PDF Content in parallel.
  3. In Parse PDF Content, set Operation to pdf to extract text from each receipt.
  4. Open Invoice Data Extractor and keep Text set to =Extract all relevant information from thisreceipt or invoice below: --- {{ $json.text }} --- I need the output in a structured format suitable for generating a business expense claim report. Include fields like vendor name, invoice or receipt number, date, total amount, tax, payment method, currency, and item descriptions..
  5. Confirm Structured Parse Output is attached to Invoice Data Extractor and contains the JSON schema example.
  6. Credential Required: Connect your openAiApi credentials in OpenAI Chat Model. Structured Parse Output is a sub-node; credentials are added to OpenAI Chat Model, not the parser.

Tip: The parallel branch ensures receipts are uploaded and parsed at the same time, which speeds up processing when multiple files are submitted.

Step 4: Configure Claim Assembly and Email Output

Build the claim payload, render the HTML summary, and email the final report.

  1. In Assemble Claim Data, keep the JavaScript that compiles employee and expenses from the parsed output.
  2. In Build HTML Summary, keep the HTML template generator so it outputs { html } for email.
  3. Open Dispatch Email Notice and set Message to ={{ $json.html }}.
  4. Set Subject to =Expense Claim Request - {{ $('Assemble Claim Data').item.json.employee.name }} – {{ $('Assemble Claim Data').item.json.employee.department }} - {{ $('Assemble Claim Data').item.json.employee.tripPurpose }}.
  5. Credential Required: Connect your gmailOAuth2 credentials in Dispatch Email Notice.

⚠️ Common Pitfall: If Dispatch Email Notice sends empty emails, confirm Build HTML Summary outputs html and that the connection from Assemble Claim Data is intact.

Step 5: Test and Activate Your Workflow

Run a full test to confirm receipt uploads, sheet entries, AI parsing, and email delivery.

  1. Click Execute Workflow and submit a JotForm entry with one or more receipt PDFs.
  2. Verify that Upload Receipt File creates files in Drive and Append Sheet Entry appends a new row.
  3. Check that Invoice Data Extractor outputs structured JSON and that Assemble Claim Data aggregates all expenses.
  4. Confirm Dispatch Email Notice sends a formatted email with the HTML summary.
  5. When everything is correct, toggle the workflow to Active for production use.
🔒

Unlock Full Step-by-Step Guide

Get the complete implementation guide + downloadable template

Troubleshooting Tips

  • Google Drive credentials can expire or need specific permissions. If things break, check the connected Google account scopes and the target folder access first.
  • If you’re using Wait nodes or external rendering, processing times vary. Bump up the wait duration if downstream nodes fail on empty responses.
  • Default prompts in AI nodes are generic. Add your brand voice early or you’ll be editing outputs forever.

Quick Answers

What’s the setup time for this expense claim automation?

About 30–60 minutes if your form, folder, and sheet are ready.

Is coding required for this expense claim automation?

No. You will connect accounts and adjust a few mapping fields in n8n.

Is n8n free to use for this expense claim automation workflow?

Yes. n8n has a free self-hosted option and a free trial on n8n Cloud. Cloud plans start at $20/month for higher volume. You’ll also need to factor in OpenAI API costs, which are usually a few cents per receipt depending on model and document size.

Where can I host n8n to run this automation?

Two options: n8n Cloud (managed, easiest setup) or self-hosting on a VPS. For self-hosting, Hostinger VPS is affordable and handles n8n well. Self-hosting gives you unlimited executions but requires basic server management.

Can I modify this expense claim automation workflow for different use cases?

Yes, and you should. You can adjust the “Map Invoice Row” and “Append Sheet Entry” parts to match your columns, and tweak the AI agent’s extraction prompt to capture extra fields like expense category, cost center, or project code. Common changes include routing high-value claims for manager approval, adding validation rules (like a max nightly hotel rate), and attaching the original PDFs to the finance email.

Why is my Google Drive connection failing in this workflow?

Usually it’s permissions. Confirm the connected Google account can write to the target folder, then re-authenticate the Google Drive credential in n8n if it’s stale. Also check that the folder ID hasn’t changed (shared drives and moved folders can bite you). If the upload works sometimes and fails in bursts, you may be hitting Google API limits during high-volume submissions.

What volume can this expense claim automation workflow process?

A typical setup can handle dozens of receipts per day without drama. On n8n Cloud, your limit is driven by your plan’s monthly executions; self-hosting has no execution cap, but your server resources matter. The slow part is usually AI document extraction, so if you expect large batches (like end-of-month travel dumps), run it on a schedule or increase concurrency carefully.

Is this expense claim automation better than using Zapier or Make?

Often, yes. This workflow benefits from multi-step logic (split multiple receipts, parse each document, normalize outputs, then write to Sheets and email finance), which is where n8n tends to stay simpler and more cost-predictable. You also get a self-hosting option, so high volumes don’t force you into expensive task-based pricing. Zapier or Make can still be fine for basic “form to sheet” logging, especially if you’re not doing AI extraction. But once you add document parsing and structured output requirements, n8n is usually the cleaner fit. If you want help choosing, Talk to an automation expert.

Once this is running, expense claims stop being a weekly cleanup project. The workflow handles the repetitive parts so finance can focus on approvals, not chasing receipts.

Need Help Setting This Up?

Our automation experts can build and customize this workflow for your specific needs. Free 15-minute consultation—no commitment required.

Lisa Granqvist

Workflow Automation Expert

Expert in workflow automation and no-code tools.

×

Use template

Get instant access to this n8n workflow Json file

💬
Get a free quote today!
Get a free quote today!

Tell us what you need and we'll get back to you within one working day.

Get a free quote today!
Get a free quote today!

Tell us what you need and we'll get back to you within one working day.

Launch login modal Launch register modal