Expenses: from a receipt's photo to the money back
People pay for the company: a train ticket, a hotel, a dinner with a customer, a taxi on the company card. Expenses turns each receipt into a booked bill with as little typing as possible, checks it against the company's expense policy, and pays the person back in the next payment run (ADR-0107). A manager sees only the expenses the AI reviewer flags.
Claim an expense
-
Photograph the receipt (Purchasing → Expenses → Photograph a receipt). On a phone the camera opens; on a computer choose the file (a photo in JPEG, PNG or WebP, or a PDF, at most 20 MB).
POST /v1/expenses/receiptsdoes the same for an app or an automation. -
The receipt is read the way bill capture reads a vendor's bill: who was paid, when, the total, the VAT per rate, the merchant's country and the card's last four digits when the receipt prints them. The file is kept with the expense.
-
Then the rest fills in by itself, and the expense says where each value came from (
filled:read,history,default,cardorperson):Field Filled from Category (the expense account) what the receipt suggests among the company's expense accounts, else the account the person used most, else the company's default expense account Project a project the receipt names, else the person's last project of the past weeks Paid with the company card whose last four digits the receipt prints, or the person's only card when one of its payments has the same amount; else the person's own money Company the one named, else the organization's only company, else the person's last -
The person checks the draft, changes what is wrong (each change is marked as theirs) and submits it. A draft is the person's own: nobody else changes or submits it, and it can be withdrawn. The same receipt is refused a second time (
receipt_already_claimed); an e-invoice goes to bill capture instead (receipt_is_einvoice). -
When the AI does not answer in time (its provider is slow for a few minutes), the receipt is kept all the same: it becomes the person's draft with nothing read from it (
confidenceempty), the category and project as their last ones, never submitted at once. The draft says so, and the person fills in what the receipt says. -
Without a receipt (a ticket that is lost): name what was paid, or, for a company card payment, pick the payment and its day, amount and merchant are taken from the card. A person always checks an expense without a receipt.
The expense policy and the AI reviewer
Each company has a policy (Settings → Expense policy and cards,
PUT /v1/entities/{entity}/expense-policy, an administrator's): a limit per receipt (default
500 in the company's currency), lower limits for some categories (a meal, a gift), the oldest
receipt taken (default 90 days), and the amount above which an expense names its project.
When an expense is submitted, the AI reviewer checks it:
| Check | Warns when |
|---|---|
receipt |
there is no receipt |
readable |
the receipt was hard to read and its amounts were not given by the person |
duplicate |
another expense has the same day, total and merchant, or the same file |
age |
the receipt is older than the policy takes, or dated after today |
limit |
the amount is over the category's limit or the limit per receipt |
project |
it is over the amount that needs a project and names none |
vat |
the VAT lines add up to more than the total |
card |
the card was charged another amount than the receipt says |
Every check passes and the expense is approved and booked at once. One warns and it waits in
Approvals, with what was checked, for a person who may approve and who neither paid nor entered
it; they approve it (it is booked) or reject it (it is not paid back). In the four_eyes
controls mode every expense waits for such a person, with the same checks beside it.
Booking and paying back
- An approved expense is booked as a vendor bill, through the same posting, VAT and controls
as any bill, dated the receipt's day (or today when that period is closed), and numbered with
its expense's number (
EX-2026-000001) as the vendor's invoice number. - Each VAT rate on the receipt is a line with the VAT as printed; what carries no VAT (a tip) is a line without. A receipt from abroad, or in another currency, is booked without VAT at what it cost the company in its currency: the foreign VAT is part of the cost, never this company's input VAT.
- Own money: the vendor is the person, one vendor per person and company (made the first time, numbered as every vendor, activated through the controls). The person gives their IBAN once (Where you are paid back); a later change is a change of bank details and waits for a second person, as any vendor's. The bill is due at once, so the next payment run pays it back with everything else that is due.
- Company card: the vendor is the card's account with its issuer, and the bill is kept out of
payment runs (
bill_settled_elsewhere): the issuer collects the card's statement, and the bank line of that collection settles the card's bills as any payment does. - An approved expense that cannot be booked yet (its vendor waits for activation, or a receipt in
another currency on a card in the company's waits for its card payment, to know what it cost)
says why (
problem) and is booked by itself once it can.
Company cards
- An administrator adds each card with its holder and its last four digits
(
POST /v1/expense-cards); a card no longer used is switched off, never deleted. - The issuer's payments come in as card lines: a statement file (CSV or Excel with a date, an
amount and a merchant per row: Read statement,
POST /v1/expense-cards/{card_id}/statement) or a feed (POST /v1/expense-card-lines). A line read before is skipped. - Each line is matched by itself to its holder's receipt: the same amount within five days, closest day first; for a receipt in another currency, the same merchant. Payments still without a receipt are listed for the holder, who photographs the receipt or claims it as lost.
What a person must do
- Employees: photograph receipts, check the draft, submit, and give the IBAN they are paid back to once.
- An administrator: set the policy and add the company cards; read each card's statement.
- Whoever approves: decide what waits in Approvals. Nothing else waits for anyone.
Assistants
An assistant (over MCP) lists expenses (list_expenses), reads the policy
(expense_policy), claims an expense without a receipt (claim_expense_without_receipt),
corrects a draft (update_expense), submits it (submit_expense) and lists card payments still
without a receipt (list_expense_card_lines), for the person it works for. It never approves an
expense.
Not yet
Receipts forwarded by e-mail are read once a company's mailbox is linked for them; until then a receipt comes in as a photo or a file.