Alcohol is not reimbursable under Policy v4 §3.2. Tax and gratuity were charged on the whole check, so the same 20% share comes off each. Paid to J. Okafor, Aug 14, 8:44 PM.
Agentic expense auditing
Expenze reads each receipt line by line, checks it against your policy, and settles what is clean. What is left arrives at Finance with the deduction computed and the rule cited.
Alcohol is not reimbursable under Policy v4 §3.2. Tax and gratuity were charged on the whole check, so the same 20% share comes off each. Paid to J. Okafor, Aug 14, 8:44 PM.
Audited the way the product does it — including the pro rata on tax and gratuity that most expense tools get wrong.
What happens to a receipt
Reading a crumpled bill is a job for a model. Deciding what your company owes is not.
Vendor, date, currency, every line, and how many people it covered. Handwritten and non-English included — or an honest “unknown”.
Each line is categorised. Soft drink or bar tab? Stationery or hardware? That judgment is what a model is worth paying for.
Deterministic code, not the model, computes the verdict from your policy. The same receipt always produces the same outcome.
In policy, it clears and the sender is told. Out of policy, it reaches Finance with the reason already written.
The question finance asks first
It reads the bill and names the categories. The verdict is computed by deterministic code from your written policy — so the same receipt gives the same answer every time, which is not a property any model has.
Not a confidence score. The line it came from, the clause it breached, and the arithmetic — as in the check above. Your employee can read it, and so can your auditor.
Approve, correct a category, or reject with a reason that reaches the employee by email and WhatsApp. Every claim records who decided it — the agent, or the person, by name.
An unreadable total or a missing headcount is queued, not guessed at. Uncertainty goes to a person.
How receipts arrive
Staff use whatever they already have open, and nobody is trained on anything. Every route lands on the same audit.
The verdict comes back in the same chat. Matched by the mobile they send from, and only once that number has been verified by its owner.
Cab invoices, hotel folios, SaaS bills. Attachments, inline images and PDFs are all read, and the sender gets an acknowledgement.
Your travel desk, HRMS or ERP submits on a person's behalf. Keyed, and safe to retry — a repeated idempotency key returns the original result.
A caption or an email body is read too, so “dinner for four” answers the question a receipt rarely prints.
Control without a bottleneck
A budget that blocks submissions does not reduce spending — it moves the receipt into a drawer until you find out later. Expenze never refuses a receipt; it tells the people whose job it is to act.
Weekly or monthly, organisation-wide with individual overrides, per category or as one cap, and per group. Measured against everything submitted rather than only what has settled, so the figure is not flattering.
By month and year, by category, group and person, exceptions separated from the routine. Every claim traces to the original image or PDF, kept and viewable.
A Solution Owner writes policy and buys credits. Finance Executives work the queue. Everyone else just sends receipts — no seat, no licence, no login.
Pricing
Start with 50 free credits. After that one credit per submission, whether it clears on its own or reaches a human. Credits never expire.
| Bundle | Credits | Price | Per receipt | vs. entry rate |
|---|
For the systems you already run
staff_idYour own identifier. Survives someone changing their phone or email.emailMatches the staff record's registered address.mobileE.164. The same number used for WhatsApp.idempotency_keyYour key. A repeat returns the original claim and spends no second credit.AuthorizationA key you issue in the console. Stored hashed, shown once, revocable.# One receipt, one credit. Your base URL is in # the console under Channels & API. curl -X POST $EXPENZE_BASE_URL/intake/api \ -H "Authorization: Bearer $EXPENZE_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "staff_id": "M80-4417", "idempotency_key": "trip-8821-dinner", "image_url": "https://.../receipt.jpg" }' # => { "submission_id": "sub_9f2c...", # "status": "auditing", # "credits_remaining": 4821 }
Start
Fifty credits, no card, no call. Point one week of your actual receipts at it — the messy ones, the handwritten ones, the ones with a bar tab halfway down.