StabisoDocs

Purchasing and stock

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/receipts does 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, card or person):

    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 (confidence empty), 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.

Stabiso, the Enterprise System of Record · generated from the code and its guides · release 6f03a5e846b3