Mileage reimbursement form for work driving

Updated 2026-10-30

A mileage claim written weeks later is a guess. The date is fuzzy, the route is vague and the purpose is gone. I would rather log each drive when it happens. This mileage reimbursement form turns every trip into one real row.

Who it is for

Employees who drive their own car for work, such as sales reps and home visit workers, and the small business owner who pays them back. It also suits anyone keeping a mileage tracker log.

What each question is for

  • Date, start and stop: the day and the route, so each trip stands alone.
  • Distance, unit and the way back: miles or kilometres, and whether the number counts both directions.
  • Purpose and client or project: why the trip happened, and who it is charged to.
  • Vehicle and odometer: the type of vehicle, plus optional readings for checking.

What a driver's AI would ask

"Where did you start and where did you stop?" Then "How far was it?" Then "What was the purpose of the trip?" It shows the answers and sends only after a yes. Read about agent-fillable forms.

Before you use it

Ask for one response per trip. Total the distance per person and month, then apply your own rate. Get long trips approved first with a travel request form. When someone leaves, clear their open claims with an offboarding checklist. See forms for HR and recruiting and forms for IT and operations.

Questions

Does the form work out the reimbursement?

No. It records trips. Total the distance column in the CSV, then multiply by the rate your company or tax authority uses. Check that rate yourself.

Can it work as a mileage log sheet for the year?

Yes. Each trip is one row. Download the CSV at month end or year end and filter by driver_name. Keep every row with its date and purpose.

What about the odometer readings?

They are optional. If a driver fills in both, check that the difference matches the distance entered. A mismatch is the first thing to ask about.

Try the form

Live demo ยท nothing is saved

Log a work drive

One response for each trip. Log it the day you drive, while the details are fresh.

Miles or kilometres? (required)
This distance covers the way back too
Vehicle

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": "Log a work drive",
  "description": "One response for each trip. Log it the day you drive, while the details are fresh.",
  "fields": [
    {
      "id": "driver_name",
      "label": "Your name",
      "type": "short_text",
      "required": true,
      "max_length": 150
    },
    {
      "id": "trip_date",
      "label": "Date of the trip",
      "type": "date",
      "required": true
    },
    {
      "id": "start_point",
      "label": "Where did you start?",
      "type": "short_text",
      "required": true,
      "max_length": 200
    },
    {
      "id": "end_point",
      "label": "Where did you stop?",
      "type": "short_text",
      "required": true,
      "max_length": 200
    },
    {
      "id": "distance_driven",
      "label": "Distance driven",
      "type": "number",
      "required": true,
      "min": 0
    },
    {
      "id": "distance_unit",
      "label": "Miles or kilometres?",
      "type": "single_choice",
      "required": true,
      "options": [
        "Miles",
        "Kilometres"
      ]
    },
    {
      "id": "round_trip",
      "label": "This distance covers the way back too",
      "type": "checkbox"
    },
    {
      "id": "trip_purpose",
      "label": "Purpose of the trip",
      "type": "short_text",
      "required": true,
      "max_length": 300
    },
    {
      "id": "client_or_project",
      "label": "Client or project it is charged to",
      "type": "short_text",
      "max_length": 150
    },
    {
      "id": "vehicle_used",
      "label": "Vehicle",
      "type": "single_choice",
      "options": [
        "My own car",
        "My own motorbike",
        "My own bicycle",
        "A rental car"
      ]
    },
    {
      "id": "odometer_start",
      "label": "Odometer at the start",
      "type": "number",
      "min": 0
    },
    {
      "id": "odometer_end",
      "label": "Odometer at the end",
      "type": "number",
      "min": 0
    },
    {
      "id": "trip_notes",
      "label": "Anything else?",
      "type": "long_text",
      "max_length": 600
    }
  ]
}

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":"Log a work drive","description":"One response for each trip. Log it the day you drive, while the details are fresh.","fields":[{"id":"driver_name","label":"Your name","type":"short_text","required":true,"max_length":150},{"id":"trip_date","label":"Date of the trip","type":"date","required":true},{"id":"start_point","label":"Where did you start?","type":"short_text","required":true,"max_length":200},{"id":"end_point","label":"Where did you stop?","type":"short_text","required":true,"max_length":200},{"id":"distance_driven","label":"Distance driven","type":"number","required":true,"min":0},{"id":"distance_unit","label":"Miles or kilometres?","type":"single_choice","required":true,"options":["Miles","Kilometres"]},{"id":"round_trip","label":"This distance covers the way back too","type":"checkbox"},{"id":"trip_purpose","label":"Purpose of the trip","type":"short_text","required":true,"max_length":300},{"id":"client_or_project","label":"Client or project it is charged to","type":"short_text","max_length":150},{"id":"vehicle_used","label":"Vehicle","type":"single_choice","options":["My own car","My own motorbike","My own bicycle","A rental car"]},{"id":"odometer_start","label":"Odometer at the start","type":"number","min":0},{"id":"odometer_end","label":"Odometer at the end","type":"number","min":0},{"id":"trip_notes","label":"Anything else?","type":"long_text","max_length":600}]}'

JSON definition

json
{
  "title": "Log a work drive",
  "description": "One response for each trip. Log it the day you drive, while the details are fresh.",
  "fields": [
    {
      "id": "driver_name",
      "label": "Your name",
      "type": "short_text",
      "required": true,
      "max_length": 150
    },
    {
      "id": "trip_date",
      "label": "Date of the trip",
      "type": "date",
      "required": true
    },
    {
      "id": "start_point",
      "label": "Where did you start?",
      "type": "short_text",
      "required": true,
      "max_length": 200
    },
    {
      "id": "end_point",
      "label": "Where did you stop?",
      "type": "short_text",
      "required": true,
      "max_length": 200
    },
    {
      "id": "distance_driven",
      "label": "Distance driven",
      "type": "number",
      "required": true,
      "min": 0
    },
    {
      "id": "distance_unit",
      "label": "Miles or kilometres?",
      "type": "single_choice",
      "required": true,
      "options": [
        "Miles",
        "Kilometres"
      ]
    },
    {
      "id": "round_trip",
      "label": "This distance covers the way back too",
      "type": "checkbox"
    },
    {
      "id": "trip_purpose",
      "label": "Purpose of the trip",
      "type": "short_text",
      "required": true,
      "max_length": 300
    },
    {
      "id": "client_or_project",
      "label": "Client or project it is charged to",
      "type": "short_text",
      "max_length": 150
    },
    {
      "id": "vehicle_used",
      "label": "Vehicle",
      "type": "single_choice",
      "options": [
        "My own car",
        "My own motorbike",
        "My own bicycle",
        "A rental car"
      ]
    },
    {
      "id": "odometer_start",
      "label": "Odometer at the start",
      "type": "number",
      "min": 0
    },
    {
      "id": "odometer_end",
      "label": "Odometer at the end",
      "type": "number",
      "min": 0
    },
    {
      "id": "trip_notes",
      "label": "Anything else?",
      "type": "long_text",
      "max_length": 600
    }
  ]
}