Expensify automation · runs weekly
Create and submit a weekly Expensify expense report
Every week someone has to remember to open Expensify, build a report from the loose expenses and press Submit, and the reimbursement waits until they do.
Cotlet does it in your own Expensify account with list_expenses, create_report, add_expense_to_report and submit_report, called by your AI agent, an n8n workflow or a script.
Hosted · nothing to install or maintain
Can Expensify do this on its own?
Expensify can submit on a schedule by itself, but only through its own settings (checked 14 Oct 2026). Its help center describes How to Set Up Automatic Report Submissions and an instant submit option for a workspace. The Integration Server can create a report only for domain and policy admins after Expensify enables it, and no job submits one.
How you do it in Expensify today
- Click + Create, then Create report; the draft opens on your default workspace.
- Select Add expense and create a new expense or add an existing one, or use More > Add expense from the report later.
- To use another workspace, open More > Change workspace, choose it and select Save.
- Open the report with at least one expense and select Submit; on a workspace with no approval workflow the button reads Mark as done.
- The step repeats weekly and is easy to forget, and an expense that is on hold needs a fix before it can go.
How to create and submit a weekly Expensify expense report
Every Friday at 16:00, put all my unreported Acme Studio expenses from this week into a new report called "Week of {date}" and submit it for approval. Skip held expenses and tell me what you left out. - 01
Collect the week
The agent lists expenses that are not on a report yet for Acme Studio, dated since Monday. It checks the held ones separately and leaves them out, because Expensify moves held expenses to a new Draft report on submit anyway.
- 02
Check what is submittable
It stops when nothing is left or when every expense is on hold or is a pending Expensify Card transaction, because Expensify hides Submit in both cases.
- 03
Build the report
create_report makes the draft with your title, and add_expense_to_report puts each expense in. Only expenses in your own account can go in a report, so the agent never tries a colleague's.
- 04
Submit once
submit_report sends the report to the approval workflow. It asks for your OK first by default, and it reports a Mark as done result when the workspace has no approver.
- 05
Say what is left over
Held expenses and anything older than the week go back to you in a short list with the reason, so next Friday starts clean.
What you get back
Created "Week of 12 Oct" in Acme Studio
Added 7 expenses, total USD 612.90
Submitted to Dana Reyes for approval
Left out 1: Uber, USD 31.20, on hold ("receipt unreadable") Other ways to ask
- On the last day of each month, submit all my draft reports in Acme Studio at once and list who approves them.
- Create the weekly report but do not submit it; show me the total and wait for my OK.
- Every Monday, submit last week's open report if it has at least one expense and nothing on hold.
What Expensify allows, and what to know first
- A report cannot be submitted if every expense on it is on hold, or if every transaction is a pending Expensify Card transaction; the Submit button does not appear.
- If you submit a mix of held and unheld expenses, the held ones move to a new Draft report.
- Reports on a free Submit workspace must be submitted one at a time, so the batch Submit option is hidden for them.
- Only the person who submitted a report can retract it, with More > Retract, then edit the report and resubmit.
- If your workspace uses instant submit, valid expenses may go to a new report automatically without you submitting manually.
submit_report asks for your OK by default. To run it weekly without you, switch confirmation off for that tool in your dashboard.
Sources: Expensify Help: Create and submit reports · Expensify Help: Understanding report statuses and actions · Expensify Integration Server: API reference
Call submit_report from a script
curl -X POST https://cotlet.dev/api/v1/expensify/reports/R10042/submit \
-H "Authorization: Bearer $COTLET_API_KEY" {
"report_id": "R10042",
"status": "submitted",
"approver": "Dana Reyes",
"total": 612.9,
"currency": "USD",
"submitted_at": "2026-10-16T16:00:00+02:00"
} MCP: add https://cotlet.dev/mcp/v1 with the same key; the call is expensify_write → submit_report. Example data.
Schedule it in n8n, Make, Zapier or cronExpensify tools this automation uses
| Tool | Parameters |
|---|---|
| list_expenses | workspace, since, until, on_report, has_receipt, limit, cursor |
| create_report | workspace, title |
| add_expense_to_report | report_id, expense_id |
| submit_report | report_id |
Frequently asked questions
What if my workspace has no approval workflow?
Expensify shows Mark as done instead of Submit, and the report is finished without an approver. The agent reports that result as it is and does not claim an approval happened.
Is it safe to connect Expensify to Cotlet?
Yes. You sign in to Expensify yourself, in your own Cloud Browser in the EU, and we never save your password. Your agents only get Expensify once you enable it, every background request is listed, and the browser profile is stored encrypted with AES-256-GCM, the cipher 1Password uses for its vaults. The AI model never sees a login, posts and messages wait for your OK, and Disable for agents cuts access in one click. Independent scanners grade cotlet.dev A+ on Qualys SSL Labs, securityheaders.com and Mozilla Observatory; live results are on https://cotlet.dev/security.
Give your agent access to Expensify.
Free 7-day trial with 2,000 credits, no card needed. Cotlet is independent and not affiliated with Expensify.