# Expensify AI automation and integrations

> Expensify can be automated, but its API is unusual. The Integration Server API takes job requests (export, create, get, update) authenticated with a partner user ID and secret, exports reports through Freemarker templates, and allows only a few requests per 10 seconds. Zapier has an Expensify app; n8n uses the HTTP Request node. The best AI work sits around Expensify, such as policy review, report summaries and close reporting.

- Category: Accounting & Payments
- Vendor: https://www.expensify.com/
- How to connect: Expensify Integration Server API; Zapier app; n8n HTTP Request node; Native accounting connections
- Authentication: partnerUserID and partnerUserSecret generated by an admin on the Expensify integrations page; OAuth 2.0 for acting on behalf of individual users is in private beta
- Notes: Every call is a POST with a JSON requestJobDescription, not a resource-style REST endpoint. Exports run through a Freemarker template you supply, and errors can come back with HTTP 200, so check the responseCode in the body.
- Last updated: 2026-10-14

## What you can automate with Expensify

- **Policy review on submitted reports.** Export newly submitted reports, have a model check each line against your written policy, and send flags with reasons to the approver. Guide: https://www.lumeor.studio/guides/automate-expense-report-review/
- **Receipt intake from other channels.** Take receipts sent to a shared inbox or chat, extract merchant, date and amount, and create the expense in the right user's account. Guide: https://www.lumeor.studio/guides/automate-receipt-capture-and-categorization/
- **Close-ready expense export.** Export approved reports in your accounting layout on a schedule, reconcile totals in code, and post a summary for the controller. Guide: https://www.lumeor.studio/guides/automate-month-end-close-reporting/
- **Employee and policy sync.** Add, update and remove employees on the right policy and approver chain when your HR system changes. Guide: https://www.lumeor.studio/guides/automate-employee-onboarding/
- **Offboarding cleanup.** When someone leaves, find their unsubmitted expenses and open reports and route them to their manager before access is removed. Guide: https://www.lumeor.studio/guides/automate-employee-offboarding/
- **Spend by project or client.** Group expenses by tag or report field and write a short per-client or per-project spend note for billing.

## What makes Expensify easy or hard to automate

The easy part: Expensify already does receipt capture, approval routing and accounting sync to QuickBooks Online, Xero, NetSuite and Sage Intacct. Many teams need less custom work than they think.

The hard part is the API style. The Integration Server API accepts a `requestJobDescription` with a type such as `file` (export), `create`, `get` or `update`. Exports return a file generated by a Freemarker template you send with the request, then you download it with a second job. It is powerful, because you choose the exact columns, but it takes a day to get right the first time and it is easy to get a template subtly wrong.

Credentials are a partner user ID and secret generated by an admin. Some actions, such as creating reports, need Expensify to enable the feature for your domain, and the caller usually needs domain or policy admin rights. Check this before promising a timeline.

## The AI layer

Expensify handles the mechanics. The AI work is the judgment around it:

- **Policy interpretation.** A model can read your written policy and a report's lines and explain in one sentence why an item looks out of bounds.
- **Context matching.** Assigning expenses to the right client or project from memos, calendar entries or trip details is tedious for people and reasonable for a model with a review step.
- **Writing summaries.** Approvers and controllers prefer "three reports exceed meal limits, all from the Denver trip" to a raw export.

As with any finance workflow, the model flags and drafts. Amounts, dates and duplicates are checked in code.

## Limits to plan around

- **Rate limits.** Expensify documents roughly 5 requests per 10 seconds and 20 per 60 seconds, with HTTP 429 beyond that. Batch exports by date range.
- **Error handling.** Some failures return HTTP 200 with an error code in the body. Always parse `responseCode`.
- **Classic and New Expensify.** Expensify has been moving customers to New Expensify. Confirm which one your company uses, and test that the Integration Server jobs you need work against your workspace, before designing the integration.
- **Template drift.** If someone adds a report field or tag, your export template may need updating. Version your templates.

## How Lumeor typically connects it

We usually schedule an n8n workflow that runs an export job over the last day of submitted or approved reports, downloads the file, parses it, and passes each report to an LLM step for policy review. Flags go to the approver in Slack or Teams. For simple "new report, notify someone" flows, Zapier's Expensify app is often enough, and our [n8n vs Zapier comparison](/compare/n8n-vs-zapier/) explains the trade-off. The detailed pattern lives in our [expense report review guide](/guides/automate-expense-report-review/). If you are deciding between Expensify and a card-first platform, see our pages on [Ramp](/tools/ramp/) and [Brex](/tools/brex/).

## Frequently asked questions

### Does Expensify have a REST API?

Not in the usual sense. Expensify's Integration Server API is a single endpoint that accepts job descriptions in JSON, such as an export job or a create job. It works, but it feels different from resource-based APIs, and exports need a Freemarker template that shapes the output file.

### Can n8n connect to Expensify?

Yes, through the HTTP Request node. There is no dedicated Expensify node in n8n at the time of writing. Zapier has an Expensify app with a small set of triggers and actions, which covers simple cases.

### Expensify already has SmartScan. Why add AI?

SmartScan reads receipts well. The gap is judgment after the receipt is read, such as whether a meal fits policy, whether an expense belongs to a client project, or why spend jumped this month. That is where a model reading your policy and the report context adds value.

### How fast can we pull data out of Expensify?

Slowly by API standards. The documented limits are about 5 requests per 10 seconds and 20 per minute, so pull reports in date-range exports rather than one call per report, and schedule large backfills overnight.

---

Source: https://www.lumeor.studio/tools/expensify/
Published by Lumeor Studio, Newtown, PA. hello@lumeor.studio. Get a written scope: https://www.lumeor.studio/start/
