Integrate the Expensify API.Caddi writes and runs the integration for you.
Expensify has a public web API. Self-serve for any Expensify account holder, who generates credentials at expensify.com/tools/integrations; OAuth2 partner auth is private beta by request form.
- 99%of agent runs complete successfully
- ~45 minon average to build your first agent
- 1M+back-office tasks completed
The connection is a project before it does anything.
Before the first record moves: an app registration, credentials, token refresh, and somewhere to host and monitor the code. Up to 5 requests every 10 seconds and 20 requests every 60 seconds (429 on excess).
Register an app, store Expensify credentials, refresh tokens and code around the rate limits.
Connect your Expensify account once. Caddi holds the connection.
The job doesn't stop at Expensify.
An intake, a filing or a client update also runs through email, documents and the other systems your team works in. The Expensify API only reaches Expensify.
Each extra system is another API, another set of credentials, another integration to own.
One automation runs across every tool the job touches, each through its API.
Someone has to own the code.
API versions change, fields get added and your process moves. Report exports can't cover a date range longer than one year, and OPEN reports can't be exported when using employeeEmail.
A developer patches and redeploys the integration each time.
The person who does the work updates it by showing or describing the change. Every automation is reviewed before it runs in production, and every run is logged.
What the Expensify API gives you
- Type
- Job-based HTTP POST API
- Authentication
- Partner credentials (partnerUserID + partnerUserSecret), or OAuth 2.0 authorization code for acting on behalf of users (private beta)
- Who can get access
- Self-serve for any Expensify account holder, who generates credentials at expensify.com/tools/integrations; OAuth2 partner auth is private beta by request form.
- What it covers
- Report/expense export and creation, policies (workspaces), employees, expense rules, report status, and domain card data.
- Limits
- Up to 5 requests every 10 seconds and 20 requests every 60 seconds (429 on excess).
- Worth knowing
- Report exports can't cover a date range longer than one year, and OPEN reports can't be exported when using employeeEmail.
Official docs: integrations.expensify.com. Checked September 2026. Vendors change access terms, so confirm with Expensify before you build.
When to build the Expensify integration in-house
When you have engineers and the integration is your product, or you need one narrow sync between two systems and someone to own it. When the goal is getting Expensify work off someone's desk, the build is the slow part, and Caddi does it for you.
What teams usually want the Expensify API for
Expense report to accounting
Caddi pulls approved Expensify reports, applies the firm's coding rules, and posts them to QuickBooks or Xero with the right matter/client.
Missing-report chase
Caddi identifies team members with outstanding expense reports and sends the firm's standard reminder on a cadence.
Receipt categorization audit
Caddi reviews submitted Expensify line items and flags coding anomalies for finance team review.
Everything Caddi does with Expensify.
Expensify API questions
Does Expensify have an API?
Yes. Expensify has a public web API, authenticated with Partner credentials (partnerUserID + partnerUserSecret), or OAuth 2.0 authorization code for acting on behalf of users (private beta). The official documentation is at https://integrations.expensify.com/Integration-Server/doc/.
How do I get access to the Expensify API?
Self-serve for any Expensify account holder, who generates credentials at expensify.com/tools/integrations; OAuth2 partner auth is private beta by request form.
Does the Expensify API have rate limits?
Up to 5 requests every 10 seconds and 20 requests every 60 seconds (429 on excess).
Can I connect Expensify to my other tools without writing code against its API?
Yes. With Caddi you show the Expensify task once, the way you'd train a new hire, and Caddi builds it as verified code that runs across Expensify and the other tools the job touches. Steps that need a person's judgment are handed to Copilot or Claude, and Caddi monitors those too.
Do I need a developer to automate Expensify with Caddi?
No. There is no integration code for you to write or maintain. Every automation Caddi builds for Expensify is reviewed before it runs in production, and every run is logged.