Expensify APIConnect Expensify without building on its API
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. If you're reading the docs because you need Expensify to talk to the rest of your stack, Caddi does that without you writing or maintaining integration code: you show it the job once, and it runs it across Expensify and your other tools.
- APIJob-based HTTP POST API
- AuthPartner credentials
- AccessSelf-serve
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.
Building on the Expensify API vs. having Caddi run it
| The job | Build it on the API | With Caddi |
|---|---|---|
| Getting access | Register an app, get Expensify credentials, and manage tokens and refreshes. | Connect your Expensify account once. Caddi holds the connection. |
| Writing the integration | A developer maps fields, handles pagination, retries and rate limits, and writes the sync. | You show Caddi the Expensify task the way you'd train a new hire. It writes verified code for it. |
| Steps the API doesn't cover | Screens with no endpoint stay manual, or need a separate RPA tool. | Caddi uses a secure, audited browser session where there's no API, in the same automation. |
| The other systems in the loop | Each extra tool is another API, another set of credentials, another integration to own. | One automation runs across all the tools the job touches. |
| Keeping it running | Someone owns the code when the API version, fields or your process change. | Every automation is reviewed before it runs in production, and every run is logged. |
Building on the API is the right call when you have engineers and the integration is your product. When the goal is getting Expensify work off someone's desk, the build is the slow part.
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.
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. Where a step has no API, Caddi uses a secure, audited browser session in the same automation.
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.
Connect Expensify without the build.
Drop your work email and pick a time. We'll show you Caddi running your Expensify workflow end to end.