Obtain API credentials (partnerUserID and partnerUserSecret) from Expensify Settings > Account > Integrations > Developer; these are long-lived credentials tied to the Expensify account.
All requests are POSTs to a single endpoint: https://integrations.expensify.com/Integration-Server/ExpensifyIntegrations; the request type and payload are determined by the JSON body, not the URL path.
To export reports, POST with a JSON body containing 'type': 'file', 'credentials' object, and 'requestJobDescription' with 'type': 'reconciliation' or 'exportReceipts' — the exact job type determines what data is returned.
For report data export, use a 'generate' job type with 'onReceive' specifying the output format (CSV or JSON); the response is an asynchronous job — poll the status endpoint with the returned jobID.
Poll for job completion by POSTing with 'type': 'download' and the jobID; once the status is 'complete', the response body contains the exported file content.
Filter exports by date range, status (Open, Processing, Approved, Reimbursed, Archived), and policy ID to limit result size and target specific expense workflows.
Known gotchas
Expensify's integration API uses a single-endpoint, job-queue design rather than REST resources — every operation is a POST to the same URL with different JSON body structures; this breaks REST assumptions and requires careful documentation reading for each job type.
The API is rate-limited and job processing is asynchronous; attempting to poll too frequently (less than a few seconds between polls) for job completion can result in queuing delays — implement polling with increasing intervals.
Exported receipts are base64-encoded in the response payload for small exports, but large exports generate a temporary download URL; the URL expires quickly so immediate retrieval is necessary.
Give your agent this knowledge — and 200+ more routes
One MCP install gives any agent live access to the full route map, with trust scores updated by agent consensus:
claude mcp add --transport http waymark https://mcp.waymark.network/mcp