# Expensify (slim) > Expensify is an expense management service with receipt scanning, expense reports, approvals, reimbursement and company cards. Its Integration Server API exports report and card data and creates expenses, reports and workspace settings. A hosted MCP server gives read-only search. - Full: https://www.anchorterminal.com/tools/expensify.md (~7,750 tokens) · this version ~1,730 tokens · JSON https://www.anchorterminal.com/tools/expensify.json · canonical https://www.anchorterminal.com/tools/expensify - Index: https://www.anchorterminal.com/llms.txt · API: https://www.anchorterminal.com/api/v1/index.json · Updated: 2026-10-08 **E · 41.1/100 · rank #684 of 722 · #8 in Spend management & procurement · not agent-ready · confidence medium** Assessment: One endpoint exports reports through caller-written templates and creates expenses, reports, rules and workspace settings, with limits of 5 requests per 10 seconds published and a status page that tracks the API separately. There is no OpenAPI spec, changelog, SDK, pagination or idempotency key, and one credential pair carries the whole account's rights. ## Facts - Kind: HTTP API · vendor: Expensify, Inc. · category: Spend management & procurement · legal entity: Expensify, Inc. · provenance 75/100 - Endpoint: `https://integrations.expensify.com/Integration-Server/ExpensifyIntegrations` (HTTP) - Auth: OAuth or key · pricing: Freemium · x402: no · licence: Proprietary service under the Expensify Terms of Service. The Expensify app client and help articles on GitHub (Expensify/App) are MIT - Probe metrics: not measured yet (probes haven't run) - API: Integration Server API, one endpoint at https://integrations.expensify.com/Integration-Server/ExpensifyIntegrations, 16 documented jobs, no version number and no OpenAPI spec - MCP server: https://www.expensify.com/mcp, read-only Expensify Search, OAuth 2.1 with PKCE (S256), scope `mcp:tools`, registration and revocation endpoints. Guides for Claude, ChatGPT and Cursor - Credentials: partnerUserID and partnerUserSecret per account, shown once, replaceable at www.expensify.com/tools/integrations. OAuth2 for the API in private beta, with two-hour access tokens and rotating refresh tokens - Rate limits: 5 requests per 10 seconds and 20 per 60 seconds. Status 429 beyond them. No Retry-After documented - Exports: Freemarker template chosen by the caller. Filters by report ID, workspace, date range, approved-after date, state and exported label, with `limit` on the number of reports. Two calls, generate then download - Writes: Create reports, expenses, workspaces and expense rules. Update categories, tags, report fields, employees, tag approvers and report status (Approved to Reimbursed only) - Errors: `responseCode` and `responseMessage` in the body. 404 sign-in failure or workspace not found, 403 not an admin, 410 validation, 500 generic, 207 partial success - Testing: No sandbox found. `test` on exports skips the on-finish actions, and `dry-run` on the Advanced Employee Updater makes no changes - Pagination and idempotency: Neither is documented - Certifications: Annual SOC 1 Type 2 and SOC 2 Type 2 audits and PCI DSS compliance per Expensify's help site, with reports on request at trust.expensify.com - Status: status.expensify.com, 20 components including Integration APIs - Prices: Collect plan, pay-per-use $5 per seat per month; Control plan, annual subscription $18 per seat per month; Control plan, pay-per-use $36 per seat per month - Scores: Reliability 62, Performance pending, Schema & documentation 28, Agent ergonomics 45, Security & auth 34, Payments & pricing 30, Task success pending, Maintenance & community 23, Transparency & trust 58 · total over the 7 assessed categories - Why: Reliability, Read with the hosted lines and scored on the Integration Server API, the surface an outside agent can write through. · Schema & documentation, No OpenAPI or other machine-readable spec was found. · Agent ergonomics, Exports return only the fields the caller's Freemarker template names, `limit` caps the number of reports, and the policy getter takes a… · Security & auth, A partnerUserID and partnerUserSecret pair is generated per account at www.expensify.com/tools/integrations, shown once and replaceable ther… · Payments & pricing, Read with the hosted rubric. · Maintenance & community, No changelog or release record was found for the Integration Server API. · Transparency & trust, Closed service under the Terms of Service, last updated 10 September 2026. The Expensify app client is MIT on GitHub, and the API server is… - Sources: 18, open questions: 10, both in the full twin - Capabilities: spend.transactions, spend.expenses - JSON: https://www.anchorterminal.com/api/v1/tools/expensify.json - Verify (for the vendor): the badge `https://www.anchorterminal.com/badges/expensify.svg` or a link to https://www.anchorterminal.com/tools/expensify from a page on expensify.com or one of its subdomains, then `POST https://www.anchorterminal.com/api/v1/verify` `{"slug", "url"}` or `verify_listing` at /mcp; re-checked weekly, no effect on the grade. Snippets in the full twin. ## Before you call it 1. POST `requestJobDescription` as a form field to the single endpoint. Keep it out of the URL query string, because it carries the secret 2. Read `responseCode` in the body on every reply. HTTP status can be 200 on failure, and validation errors use 410 3. Stay under 5 requests per 10 seconds and 20 per 60 seconds. No Retry-After header is documented, so space retries yourself 4. Export in two calls. A `file` job returns a filename, then a `download` job fetches it. Amounts are in cents 5. Don't retry a create job blindly. No idempotency key exists, so export and check before resending. Set `dry-run` to true when testing the Advanced Employee Updater ## Connect ```bash curl -X POST 'https://integrations.expensify.com/Integration-Server/ExpensifyIntegrations' \ -d 'requestJobDescription={"type":"get","credentials":{"partnerUserID":"_REPLACE_","partnerUserSecret":"_REPLACE_"},"inputSettings":{"type":"policyList"}}' ``` Full config and headless snippets are in the full page. Through letme (picks today, calling later): https://letme.dev/expensify ## Similar tools | Tool | Grade | Score | Shared capabilities | Slim | | --- | --- | --- | --- | --- | | Airwallex Spend and Issuing | B | 68.3 | spend.transactions, spend.expenses | https://www.anchorterminal.com/tools/airwallex.min.md | | Mercury API | B | 63.8 | spend.transactions, spend.expenses | https://www.anchorterminal.com/tools/mercury.min.md | | Pleo API + MCP | B | 62.9 | spend.transactions, spend.expenses | https://www.anchorterminal.com/tools/pleo.min.md | | Spendesk API + MCP | B | 62.3 | spend.transactions, spend.expenses | https://www.anchorterminal.com/tools/spendesk.min.md | | BILL | C | 60.9 | spend.transactions, spend.expenses | https://www.anchorterminal.com/tools/bill.min.md | ## Panel reviews (0, desk reviews from public material, no calls made)