Expensify API and MCP server

Expensify has no API to attach receipts, submit reports or approve them. Sign in to Expensify once in your own Cloud Browser, and your AI agent does the work there for you. The same tools work over MCP for agents and as a REST API for scripts.

Not affiliated with Expensify.

Expensify has no API for this. So we run one for you.

Expensify's own API, a GitHub MCP server and Cotlet compared
What you need Expensify's APIGitHub MCP serverCotlet
Receipts, report submission, approvals No Partly Yes, 14 tools
Acts as you, signed in 24/7 No No Yes, Cloud Browser
Fixed for you when Expensify changes N/A No Yes, tested every 6h
Runs with your laptop off N/A No Yes, hosted

Checked Oct 14, 2026. Sources: Expensify blog: the Expensify MCP server (24 Jun 2026) · Expensify Integration Server: getting started · Expensify Integration Server: API reference · Expensify on Zapier: triggers and actions

Your own Cloud Browser, on 24/7. Sign in once. We keep it connected.

  1. 01Sign in to Expensify in your own Cloud Browser

  2. 02Connect it for your agents

  3. 03Cotlet keeps it signed in and working

How do I connect Expensify to Claude, ChatGPT or my code?

AI agents connect over MCP, scripts call the REST API. Both reach the same 14 tools with one API key.

For AI agents: MCP

Add Cotlet to your agent once. Expensify and every other app you connect show up as its tools.

  • Claude
  • ChatGPT
  • OpenClaw
  • Hermes
  • GrokBot
  • Cursor
  • n8n
  • Any MCP client
  1. 1

    Add Cotlet to your agent

    Claude Code
    claude mcp add --transport http cotlet \
      https://cotlet.dev/mcp/v1 \
      --header "Authorization: Bearer $COTLET_API_KEY"
    Cursor
    {
      "mcpServers": {
        "cotlet": {
          "url": "https://cotlet.dev/mcp/v1",
          "headers": {
            "Authorization": "Bearer ${COTLET_API_KEY}"
          }
        }
      }
    }
    Codex
    # ~/.codex/config.toml
    [mcp_servers.cotlet]
    url = "https://cotlet.dev/mcp/v1"
    bearer_token_env_var = "COTLET_API_KEY"

    Paste the snippet for your client. The same server and key serve every app you connect, so you do this once.

For scripts: REST API

Every tool is an endpoint under /api/v1/expensify with its own method and path, such as POST /api/v1/expensify/expenses, with the same API key. Our open-source repo has ready scripts to start from.

REST API docs

What can the Expensify API and MCP server do?

14 tools on your own Expensify account. Agents call them as operations of the MCP tools expensify_read and expensify_write; scripts call each one at its own REST endpoint, with the same inputs and answers.

Expensify tools in Cotlet's MCP server and REST API
Tool What it does Access
list_workspaces Workspaces your Expensify account belongs to, with your role in each. read
get_workspace Categories, tags and approval setup of one workspace. read
list_reports Reports with status, total, submitter and approver, newest first. read
get_report One report with its expenses, receipts, holds and comments. read
list_expenses Expenses with merchant, amount, category, receipt flag and report, newest first. read
get_expense One expense with all fields, the receipt link and its report. read
export_report A report as CSV or PDF, with an expense-level or report-level template. read
create_expense Creates an expense in a workspace with merchant, date, amount, currency and category. writeasks first
attach_receipt Adds a receipt image or file to an expense, or replaces the one on it. write
create_report Creates an empty draft report in a workspace. write
add_expense_to_report Puts an existing expense of yours on a draft report. write
submit_report Submits a draft report to the workspace approval workflow. writeasks first
approve_report Approves a submitted report you are the approver for. writeasks first
reject_report Sends a submitted report back to its submitter with a comment. writeasks first

Scroll the table for all 14 tools.

Ask in plain words. Your agent does the rest.

Is it safe to connect Expensify?

You sign in yourself in your own Cloud Browser, we never save your password, and anything that reaches your readers waits for your OK. The browser profile is encrypted in the EU. Independent scanners grade cotlet.dev A+.

How much do the Expensify API and MCP server cost?

One price for both: a tool call costs the same over MCP or REST. Free 7-day trial with 2,000 credits, no card needed. Then one-time credit packs, no subscription, valid 12 months. Each call uses 10 credits, and your Cloud Browser uses 50 credits a day while Expensify is enabled for agents, so 20 calls a day come to 250 credits.

Cotlet credit packs: price, credits and calls at 10 credits each
Credits Price, one time Calls at 10 credits Per 1,000 credits
5,000 $29 500 $5.80
15,000 $79 1,500 $5.27
32,000 $149 3,200 $4.66
60,000 $249 6,000 $4.15

Only successful calls use credits; failed calls and timeouts cost nothing. At a balance of 0 calls pause, never a surprise charge. Authenticate with the Authorization: Bearer header.

Questions

Does Expensify have an API?

Yes, but it is narrow (checked 14 Oct 2026). Expensify's Integration Server API creates expenses, creates reports (domain and policy admins, after enablement) and exports reports, with credentials you generate yourself. It has no job that submits or approves a report, and Expensify's own MCP server at expensify.com/mcp is read-only: it exposes a Search tool only.

How do I get access?

Sign up free, open Expensify under Integrations in the console and press Request access. Your free trial starts with your account, no card needed.

Is the MCP server different from the API?

No, only the way in. Cotlet builds each integration as a REST API and puts an MCP server on top, so both have the same 14 tools, the same inputs and answers, one API key and one price. AI agents such as Claude, ChatGPT or Cursor use MCP; scripts, cron jobs and HTTP steps in n8n, Make or Zapier use the REST API.

What is the Cloud Browser?

Your own Chrome that Cotlet runs for you in the EU, around the clock. You open it from the console, sign in to Expensify yourself and press Enable for agents. Your agent's calls go through it, from its IP with its cookies, so Expensify sees the browser you signed in with. Password saving is off and the profile is stored encrypted with AES-256-GCM.

Can my agent act without asking me?

Not on anything that reaches other people: create_expense, submit_report, approve_report, reject_report wait for your OK by default. You can switch that off per tool for scheduled runs.

Do I need to be a workspace admin?

No for creating expenses and submitting your own reports: any member can. Approving needs you to be the assigned approver, or a Workspace Admin who bypasses the workflow, and Expensify blocks an admin from approving their own report when Prevent Self-Approval is on.

Should I use a Expensify MCP server from GitHub instead?

Pick one if you want the code on your own computer and do not mind the upkeep: you install it, sign it in and fix it when Expensify changes. Pick Cotlet if you want it hosted and kept working for you.

Can I use it in n8n, Make or Zapier?

Yes. Add https://cotlet.dev/mcp/v1 in n8n's MCP Client node, or call the REST endpoints from an HTTP step in Make or Zapier.

Who runs Cotlet?

Cotlet is run by Take Group, a Polish software company working since 2019. Take Group runs about 3,200 websites on its own systems and has its own DevOps team for infrastructure security. We built and used integrations like this inside the company for years before opening them as Cotlet.

Is Cotlet affiliated with Expensify?

No. Cotlet is independent and not affiliated with Expensify.

Give your agent access to Expensify.

Free 7-day trial with 2,000 credits, no card needed.