New report2026 State of AI at Enterprise RIAs2026 State of AI at RIAsRead it freeOn demandOther eventsNext: AI for Mid-Sized Law, Nov 5
Expensify APIIntegration guide

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
01Getting access

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

On your own

Register an app, store Expensify credentials, refresh tokens and code around the rate limits.

With Caddi

Connect your Expensify account once. Caddi holds the connection.

02The whole job

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.

On your own

Each extra system is another API, another set of credentials, another integration to own.

With Caddi

One automation runs across every tool the job touches, each through its API.

03After launch

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.

On your own

A developer patches and redeploys the integration each time.

With Caddi

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.