Expense report template for small teams

Updated 2026-10-30

Expenses arrive as photos in chat, forwarded emails and lines in a spreadsheet nobody owns. By month end, finance is chasing dates and amounts. I want the same facts every time, so a claim is easy to approve. This expense report template asks for them.

How it works

  1. The employee gives their name and work email.
  2. They add the date, the category and what the spend was for.
  3. They enter the amount and currency, and say how they paid: their own money, a company card or a cash advance.
  4. They add a project and paste a link to the receipt in your shared folder.
  5. They tick if the cost is billable to a client.

A short chat

"What was the date of the expense?" Then "Which category fits: travel, meals, software or something else?" Then "What was the amount?" The employee's AI shows the answers and asks "Send it?" before anything goes out. See agent-fillable forms.

Good to know

The form takes no receipt files and no bank details. It records claims, and you approve and pay elsewhere. It also works as an expense claim form for a one-person business. Approve a trip first with a travel request form, and clear open claims for a leaver with an offboarding checklist. Browse forms for HR and recruiting and forms for IT and operations.

Questions

Can staff attach receipts?

Not as files, because the form takes no uploads. Staff paste a link to the receipt in a shared folder, and you check it when you approve the claim.

Does the form pay out the expense?

No. It records claims only. You approve and pay in your own finance process, and bank details stay out of this form on purpose.

How do I total claims per person or project?

Download the CSV and use a pivot table on employee_name or project_code, summing the amount column. Check the currency column first if you mix currencies.

Try the form

Live demo ยท nothing is saved

Submit an expense claim

One claim per response. Add the receipt link so the claim can be checked quickly.

Category (required)

Number only. Pick the currency in the next question.

Currency (required)
How did you pay?
Bill this cost to a client

Or paste the JSON

Give this to your AI. It needs the AI Form API MCP server or an API key. It makes the form and sends you the link.

text
Create this form with the AI Form API create_form tool (or POST https://aiformapi.com/v1/forms with my API key). Then reply with the public_url.

{
  "title": "Submit an expense claim",
  "description": "One claim per response. Add the receipt link so the claim can be checked quickly.",
  "fields": [
    {
      "id": "employee_name",
      "label": "Your name",
      "type": "short_text",
      "required": true,
      "max_length": 150
    },
    {
      "id": "work_email",
      "label": "Work email",
      "type": "email",
      "required": true
    },
    {
      "id": "expense_date",
      "label": "Date of the expense",
      "type": "date",
      "required": true
    },
    {
      "id": "expense_category",
      "label": "Category",
      "type": "single_choice",
      "required": true,
      "options": [
        "Travel",
        "Meals",
        "Accommodation",
        "Software",
        "Office supplies",
        "Client entertainment",
        "Other"
      ]
    },
    {
      "id": "spend_purpose",
      "label": "What was it for?",
      "type": "short_text",
      "required": true,
      "max_length": 300
    },
    {
      "id": "amount",
      "label": "Amount",
      "type": "number",
      "required": true,
      "help": "Number only. Pick the currency in the next question.",
      "min": 0
    },
    {
      "id": "currency",
      "label": "Currency",
      "type": "single_choice",
      "required": true,
      "options": [
        "USD",
        "EUR",
        "GBP",
        "CAD",
        "AUD",
        "Other"
      ]
    },
    {
      "id": "paid_with",
      "label": "How did you pay?",
      "type": "single_choice",
      "options": [
        "My own money",
        "Company card",
        "Cash advance"
      ]
    },
    {
      "id": "project_code",
      "label": "Project or budget",
      "type": "short_text",
      "max_length": 100
    },
    {
      "id": "receipt_link",
      "label": "Link to the receipt",
      "type": "url",
      "help": "Put the receipt in your shared folder and paste the link here."
    },
    {
      "id": "bill_to_client",
      "label": "Bill this cost to a client",
      "type": "checkbox"
    },
    {
      "id": "claim_notes",
      "label": "Anything the approver should know?",
      "type": "long_text",
      "max_length": 800
    }
  ]
}

Or call the API

bash
curl -X POST https://aiformapi.com/v1/forms \
  -H "Authorization: Bearer $AIFORMAPI_KEY" \
  -H "Content-Type: application/json" \
  -d '{"title":"Submit an expense claim","description":"One claim per response. Add the receipt link so the claim can be checked quickly.","fields":[{"id":"employee_name","label":"Your name","type":"short_text","required":true,"max_length":150},{"id":"work_email","label":"Work email","type":"email","required":true},{"id":"expense_date","label":"Date of the expense","type":"date","required":true},{"id":"expense_category","label":"Category","type":"single_choice","required":true,"options":["Travel","Meals","Accommodation","Software","Office supplies","Client entertainment","Other"]},{"id":"spend_purpose","label":"What was it for?","type":"short_text","required":true,"max_length":300},{"id":"amount","label":"Amount","type":"number","required":true,"help":"Number only. Pick the currency in the next question.","min":0},{"id":"currency","label":"Currency","type":"single_choice","required":true,"options":["USD","EUR","GBP","CAD","AUD","Other"]},{"id":"paid_with","label":"How did you pay?","type":"single_choice","options":["My own money","Company card","Cash advance"]},{"id":"project_code","label":"Project or budget","type":"short_text","max_length":100},{"id":"receipt_link","label":"Link to the receipt","type":"url","help":"Put the receipt in your shared folder and paste the link here."},{"id":"bill_to_client","label":"Bill this cost to a client","type":"checkbox"},{"id":"claim_notes","label":"Anything the approver should know?","type":"long_text","max_length":800}]}'

JSON definition

json
{
  "title": "Submit an expense claim",
  "description": "One claim per response. Add the receipt link so the claim can be checked quickly.",
  "fields": [
    {
      "id": "employee_name",
      "label": "Your name",
      "type": "short_text",
      "required": true,
      "max_length": 150
    },
    {
      "id": "work_email",
      "label": "Work email",
      "type": "email",
      "required": true
    },
    {
      "id": "expense_date",
      "label": "Date of the expense",
      "type": "date",
      "required": true
    },
    {
      "id": "expense_category",
      "label": "Category",
      "type": "single_choice",
      "required": true,
      "options": [
        "Travel",
        "Meals",
        "Accommodation",
        "Software",
        "Office supplies",
        "Client entertainment",
        "Other"
      ]
    },
    {
      "id": "spend_purpose",
      "label": "What was it for?",
      "type": "short_text",
      "required": true,
      "max_length": 300
    },
    {
      "id": "amount",
      "label": "Amount",
      "type": "number",
      "required": true,
      "help": "Number only. Pick the currency in the next question.",
      "min": 0
    },
    {
      "id": "currency",
      "label": "Currency",
      "type": "single_choice",
      "required": true,
      "options": [
        "USD",
        "EUR",
        "GBP",
        "CAD",
        "AUD",
        "Other"
      ]
    },
    {
      "id": "paid_with",
      "label": "How did you pay?",
      "type": "single_choice",
      "options": [
        "My own money",
        "Company card",
        "Cash advance"
      ]
    },
    {
      "id": "project_code",
      "label": "Project or budget",
      "type": "short_text",
      "max_length": 100
    },
    {
      "id": "receipt_link",
      "label": "Link to the receipt",
      "type": "url",
      "help": "Put the receipt in your shared folder and paste the link here."
    },
    {
      "id": "bill_to_client",
      "label": "Bill this cost to a client",
      "type": "checkbox"
    },
    {
      "id": "claim_notes",
      "label": "Anything the approver should know?",
      "type": "long_text",
      "max_length": 800
    }
  ]
}