Expensify
From unlimited receipt scanning and mileage tracking to next-day reimbursement, automate your preaccounting system with an easy to use expense tracking app.
Start freeCategory
Works with
AI Compatible
Tools
Create Expense
Creates a new expense. See docs here
Create Report
Creates a new report with transactions in a user's account. See docs here
Export Report Return only the translated text without explanations.
Export Expensify reports to a file (csv, xls, xlsx, txt, pdf, json, xml). See the documentation Return only the translated text without explanations.
Export Report To PDF
Export a report to PDF. See docs here
Get Report
Retrieve a single Expensify report by ID, returning a structured object with the report metadata plus its complete expense line-item list (per-expense amount, currency, merchant, date, category, receiptURL, etc.). NOT a file. Implemented via the Report Exporter with reportIDList set to the given ID and an embedded Freemarker JSON template read in memory. Use **List Reports** to discover report IDs. This action also covers per-expense reads: the returned transactionList contains full expense details, so a separate expense-by-ID lookup is unnecessary. See the documentation
List Expenses
List individual expenses (transactions) for an employee within a date range, returning a structured JSON array (each with amount, currency, merchant, created date, category, receiptURL, reportID). NOT a file. Implemented via the Report Exporter with an embedded Freemarker JSON template that flattens transactionList, read in memory. Use **List Policies** to discover valid IDs for the optional policyId filter. To read all expenses on one specific report, use **Get Report** instead. See the documentation
List Policies
Retrieves a list of policies. See the documentation
List Reports
Search Expensify reports by state and/or date range and return a structured JSON array of report summaries (reportID, reportName, total, status, submitterEmail, etc.), NOT a file. Use this to find reports before acting on them. Under the hood this calls the Report Exporter with an embedded Freemarker JSON template and reads the result in memory (no /tmp file written). You must provide either a reportState or a startDate/endDate range. Note: OPEN reports cannot be returned when an employeeEmail filter is set (API restriction). Use **List Policies** to discover valid policy IDs for the optional policyId filter. Use **Get Report** to retrieve a single report's full expense line items. See the documentation
Reimburse Report
Mark an APPROVED Expensify report as REIMBURSED via the Integration Server reportStatus updater. This is the only report-status transition the API supports — Approve and Reject are not available (attempting APPROVED returns responseCode 410). Use **List Reports** with reportState=APPROVED to find reports eligible for reimbursement. See the documentation