List expenses
Expenses with merchant, amount, category, receipt flag and report, newest first.
GET https://cotlet.dev/api/v1/expensify/expenses
read
Lists expenses in your account, newest first. Filter by date, by whether they are on a report and by whether they have a receipt. Held expenses are marked, so you can leave them out of a report. Returns one currency per expense and never converts.
Parameters
| Name | Type | Description |
|---|---|---|
| workspace string required | string | Workspace name or ID from list_workspaces, e.g. 'Acme Studio'. |
| since date | date | Only expenses dated on or after this day. |
| until date | date | Only expenses dated on or before this day. |
| on_report boolean | boolean | true only expenses already on a report, false only loose ones. Default: both. |
| has_receipt boolean | boolean | Filter by whether a receipt is attached. Default: both. |
| limit integer | integer | 1 to 100. Default: 50. |
| cursor string | string | Next page cursor from the previous call. |
Request
curl "https://cotlet.dev/api/v1/expensify/expenses?workspace=Acme+Studio" \
-H "Authorization: Bearer $COTLET_API_KEY" result = client.call("expensify", "list_expenses", {"workspace":"Acme Studio"}) const result = await cotlet.call('expensify', 'list_expenses', {"workspace":"Acme Studio"}); cotlet call expensify list_expenses --data '{"workspace":"Acme Studio"}' Example response
{
"expenses": [
{
"expense_id": "T7f3a9c",
"merchant": "Blue Bottle Coffee",
"date": "2026-10-12",
"amount": 42.5,
"currency": "USD",
"category": "Meals",
"has_receipt": true,
"on_hold": false,
"report_id": null
},
{
"expense_id": "T7f3a9d",
"merchant": "Uber",
"date": "2026-10-12",
"amount": 31.2,
"currency": "USD",
"category": "Travel",
"has_receipt": true,
"on_hold": true,
"report_id": null
}
],
"next_cursor": null
}