Meet Caddi in personADVISE AIOct 20–22AI for Mid-Sized LawNov 5Legal InnovatorsNov 17–18
Expensify API

Connect 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
The Expensify API

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.

Build or have it run

Building on the Expensify API vs. having Caddi run it

The jobBuild it on the APIWith Caddi
Getting accessRegister an app, get Expensify credentials, and manage tokens and refreshes.Connect your Expensify account once. Caddi holds the connection.
Writing the integrationA 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 coverScreens 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 loopEach 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 runningSomeone 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 connect

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. 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.