Obtain Expensify API credentials — partnerUserID and partnerUserSecret — from the Integration Server; note that the Expensify API is not currently accepting new general applications and is primarily available to enterprise customers
Authenticate API requests by including the partnerUserID and partnerUserSecret in a credentials JSON object in the request body rather than in an Authorization header
Use the create action on the report endpoint to programmatically create expense reports with pre-populated expense line items sourced from booking confirmation data
Attach receipt images to expense entries using the receipt upload endpoint, providing the image as a base64-encoded payload or accessible URL
Use the export action to retrieve approved expense data in a structured format for downstream reconciliation with your accounting or ERP system
For corporate card programs, configure a direct card feed integration via Expensify's bank and card partnerships rather than attempting to push individual transactions via the API, which is the more reliable path for high transaction volumes
Known gotchas
Expensify's Integration Server API is not accepting new general-access applications as of current documentation; enterprise integrators must go through an Expensify account team engagement before API credentials are issued
Authentication uses a non-standard pattern — credentials are passed in the POST body as a JSON parameter rather than in the Authorization header; OAuth or Bearer-based HTTP clients will not work without modification
Creating duplicate expense reports via API for transactions that Expensify has already imported via a direct card feed will result in duplicate entries without automatic deduplication — implement a lookup before create pattern
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