canonical: https://jentic.com/apis/integrations.expensify.com/expensify-integrations

# Integrations Expensify Expensify Integration Server API

Jentic publishes the only available OpenAPI specification for Expensify Integration Server API, keeping it validated and agent-ready. The Expensify Integration Server exposes a single endpoint that accepts a JSON request describing the operation to perform - exporting reports, reconciling reports, updating employees, or downloading exported files - with credentials and command parameters bundled inside the request body. Although the surface is one POST, the request payload selects from the Export, Reconciliation, Employee Updater, and Download command families documented by Expensify, making it the canonical hook for finance-tool integrations and accounting exports.

## For AI agents

Drive Expensify export, reconciliation, employee update, and download operations through a single integration-server endpoint by varying the request payload.

## Scope

Does not handle real-time receipt capture, card issuance, or live approval workflows - use for batch report export, reconciliation, employee updates, and download only.

## Capabilities

- Export Expensify reports in configured formats by sending an Export command to `/Integration-Server/ExpensifyIntegrations`
- Reconcile reports against accounting systems via the Reconciliation command
- Update employees in bulk via the Employee Updater command
- Download previously exported files via the Download command
- Submit Expensify partner credentials inside the request to authorise each call

## Use cases

### Monthly Report Export to Accounting

Schedule a job that POSTs an Export command to `/Integration-Server/ExpensifyIntegrations` every month, pulling all approved reports for the period in a configured template and forwarding them into the general ledger. This automates the manual export step that finance teams typically run from the Expensify dashboard.

Example prompt: POST `/Integration-Server/ExpensifyIntegrations` with an Export command for last month's approved reports and write the resulting file into the accounting integration.

### Bulk Employee Updater

When HR rolls out a new policy, push an Employee Updater command through the integration server to update Expensify employee records with the new approver, policy, or department in one call. The single-endpoint design keeps the integration small while still handling bulk changes.

Example prompt: POST an Employee Updater command with a list of employees and their new policy or approver assignments.

### Reconciliation Run for Closing the Books

Run a Reconciliation command at month-end that compares Expensify reports against ledger entries and produces a reconciled file. This shortens the close cycle by replacing manual cross-checks with a single automated request.

Example prompt: POST a Reconciliation command for the month's date range and ingest the reconciled file into the close workpapers.

### AI Agent Finance Operator via Jentic

An AI agent given access to the Expensify Integration Server through Jentic can dispatch the four command families by intent without crafting raw JSON envelopes. Jentic stores the partner credentials and binds them to the request body, so the agent only specifies the action and parameters.

Example prompt: Through Jentic, call expensify_export_reports with the desired template and date range to retrieve last month's approved reports.

## Key endpoints

| Method | Path | Description |
| --- | --- | --- |
| POST | `/Integration-Server/ExpensifyIntegrations` | Single integration-server endpoint dispatching Export, Reconciliation, Employee Updater, and Download commands |

## Key resources

- **Export** — Export reports in configured templates.
- **Reconciliation** — Reconcile reports against accounting systems.
- **Employee Updater** — Bulk update employee policy assignments.
- **Download** — Retrieve previously exported files.

## Why Jentic

- **Setup:** Wiring the Expensify Integration Server by hand means hand-building its command envelope in the request body and posting everything to the single `/Integration-Server/ExpensifyIntegrations` endpoint. Through Jentic you install once, import the Expensify Integration Server API from the API Directory, store the partner credentials once, and your agent calls it.
- **Permission scoping:** The Expensify Integration Server takes the command in the request body against one endpoint, so limit the agent to the operations it needs, such as exporting or reconciling reports, rather than to one report. You choose the operations it may call, so employee updates are not included unless you add them.
- **Credential handling:** Your Expensify partner credentials are stored once, encrypted, by your own Jentic One instance and merged into the integration-server request body at execution time. They never enter the agent's prompt, logs, or context.
- **Discovery method:** Agents search Jentic by intent such as 'export Expensify reports' or 'reconcile Expensify reports', and Jentic returns the integration-server operation pre-shaped for the requested command with its input schema so the agent calls it without browsing the reference docs.

## Related APIs

- **Ramp API** — Ramp offers card and expense management with native API endpoints rather than a single command bus.
- **Brex API** — Brex provides corporate cards and expense management with a granular REST API.
- **HubSpot CRM Companies API** — HubSpot CRM holds the company records that often correspond to Expensify policies.

## FAQ

### Why is there no official OpenAPI spec for the Expensify Integration Server API?

Expensify documents the integration server as a JSON-payload contract rather than an OpenAPI spec. Jentic generates and maintains this spec so that AI agents and developers can call Expensify Integration Server API via structured tooling. It is validated against the live API and kept up to date. Get started with Jentic One, the self-hosted execution layer.

### What authentication does the Expensify Integration Server API use?

The spec does not declare a top-level securityScheme on `/Integration-Server/ExpensifyIntegrations` because Expensify expects partner credentials inside the request body alongside the command. Through Jentic, those partner credentials are stored in your encrypted Jentic One instance and merged into the body at execution time.

### Can I export Expensify reports with this API?

Yes. POSTing an Export command to `/Integration-Server/ExpensifyIntegrations` runs an export against approved reports using a chosen template, returning either the file directly or a handle to fetch it via the Download command.

### What are the rate limits for the Expensify Integration Server API?

The OpenAPI specification does not encode explicit rate limits. Exports and reconciliation runs are typically large, infrequent operations, so schedule them rather than polling, and back off on 5xx responses while the integration server processes the job.

### How do I run a monthly export through Jentic?

Install with pip install jentic, then have the agent issue the search-load-execute flow with the query 'export Expensify reports for the month'. Jentic returns the operation backed by `/Integration-Server/ExpensifyIntegrations` with the Export command pre-shaped; the agent supplies the date range and template.

### Can I update employees in bulk?

Yes. The Employee Updater command, sent as a payload to `/Integration-Server/ExpensifyIntegrations`, takes a list of employees plus their policy or approver changes and applies them in one request.

### Can I limit what my agent is allowed to do with the Expensify Integration Server API?

Yes. Because you run Jentic One yourself, your own rules decide which of the integration server's command families the agent may send to `/Integration-Server/ExpensifyIntegrations.` You can allow it to export or reconcile reports while withholding the Employee Updater and Download commands, since the agent only ever calls the operations you grant. Your Expensify partner credentials stay in your self-hosted instance and are merged into the request body at execution time, so the agent never sees them.
