More FeaturesExpenses

More Features

Expenses

Record what your business spends, keep the receipt with it, and bill costs back to clients with an optional markup on their next invoice.

Coming April 2027

This feature ships in April 2027. This page describes how it will work; details can change before release.

Expenses let you keep a record of what your business spends, with the receipt attached, so you know your real costs. When an expense was for a client, for example materials, travel or a software licence bought for their project, mark it billable, add a markup if you charge one, and it goes onto that client's next invoice. With AI, a photo or PDF of a receipt can fill in the details for you.

What an expense records

FieldMeaning
DateWhen you spent the money.
VendorWho you paid.
CategoryThe kind of cost, from a list that fits your business's country.
Amount and currencyWhat you paid, in the currency you paid it in.
TaxThe tax included, if any, with its tax rate.
ReceiptA photo or PDF of the receipt, stored privately.
BillableWhether to bill it to a client. A billable expense needs a client.
MarkupAn optional percentage added when the expense is billed.
NotesAnything you want to remember.

Categories

Categories come from a list that adapts to your business's country, so the names make sense locally. The starting list covers advertising, bank fees, equipment, meals, office supplies, professional fees, rent, software, travel, utilities and other. Each business uses the category set for its country by default.

Receipts

A receipt can be a photo or a PDF. It is stored privately: only members who can see the expense can open it, through a short-lived link. Uploads have size and type limits, and images are re-encoded when they are stored.

Billable expenses and markup

A billable expense waits for the client's next invoice. When you invoice unbilled time or create the client's next invoice, it can be added as a line, with the markup applied. Once billed, the expense is linked to that invoice, so it is never billed twice. The markup default can be set per business or per client; it starts at 0.

Record an expense in the web app

1

Open Expenses

Expenses is in the app sidebar, under Work.

2

Add the expense

Enter the date, vendor, category, amount, currency and tax. Attach the receipt photo or PDF.

3

Bill it to a client (optional)

Turn on billable, choose the client and add a markup if you charge one.

4

Save

The expense is saved. If it is billable, it appears with the client's unbilled work until it goes on an invoice.

Read a receipt with AI

Instead of typing, upload the receipt and ask AI to read it. The date, vendor, amounts and other fields are filled in for you to check before you save; nothing is saved without you.

  • Reading a receipt costs 2 AI credits on our AI. With your own AI key, it uses your key and no credits.
  • Team includes 1,000 credits a month. On Free, use your welcome credits, a credit pack or your own key. Without credits or a key, the feature is shown locked.

See Read receipts and Credits and costs.

Through the API and MCP

ActionEndpointMCP tool
Record an expenseRecord an expenserecord_expense
List and readList expenses, Get an expense
Change or deleteUpdate an expense, Delete an expense
Read a receipt with AIRead a receipt
Bill to the clientInvoice unbilled timeinvoice_unbilled

Upload the receipt file first, then pass its id as the receipt. Money is a string of integer minor units, so "4599" with "currency": "EUR" is 45.99 EUR.

cURL
curl -X POST "https://api.freeinvoiceautomation.com/v1/expenses" \
  -H "Authorization: Bearer $FIA_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: expense-2027-04-08-fonts" \
  -d '{
    "business_id": "0193f2a1-7c4e-7b9a-9f10-3c2d1e0a4b51",
    "expense_date": "2027-04-08",
    "vendor": "Type foundry",
    "category_key": "software",
    "amount_minor": "4599",
    "currency": "EUR",
    "tax_minor": "766",
    "receipt_attachment_id": "0193f2d0-3a4b-7c5d-8e6f-7a8b9c0d1e2f",
    "billable": true,
    "client_id": "0193f2a1-0c11-7d2e-9a40-1b2c3d4e5f60",
    "markup_percent": "10"
  }'

Over MCP, your assistant can record an expense from what you tell it ("I spent 45.99 EUR on fonts for Acme today, bill it with 10% markup"). Webhooks send expense.created when an expense is saved.

Where expenses go next

  • Invoices: billable expenses become lines on the client's invoice.
  • QuickBooks Online and Xero: billable expenses are pushed with your invoices once accounting sync is connected.
  • Accounting ledger: expenses post journal entries automatically in the ledger.

Rules and edge cases

  • Billable needs a client. A billable expense without a client is refused.
  • Billed expenses are linked. Once an expense is on an invoice, it stays linked to that invoice and is not offered again.
  • No mileage or payroll. Expenses record money spent; mileage tracking and payroll are not part of the product.
  • AI reads, you confirm. AI only fills in the form; a person always checks and saves.
  • Deleted, not destroyed. Deleting an expense removes it from your lists, but it is kept in the background like other business records.

Errors

CodeWhen
validation_failedA required field is missing, the amount is not a whole number of minor units, or a billable expense has no client.
ai_credits_exhaustedNo AI credits left to read a receipt. Buy a credit pack, upgrade to Team or add your own key.
feature_lockedAI receipt reading is not available on your account without credits or an own key.
plan_limit_reachedYour storage fair-use limit is reached.
permission_deniedYour role lacks expenses.manage or ai.use.

Permissions

ActionPermission keyDefault roles
View expenses and receiptsexpenses.viewOwner, Admin, Editor, Viewer, Accountant
Record, change, delete expenses and upload receiptsexpenses.manageOwner, Admin, Editor
Read a receipt with AIai.useOwner, Admin, Editor
Bill expenses on an invoicedocuments.createOwner, Admin, Editor

See Roles and permissions.