Read as Meals & entertainment, which your policy caps at $300.00 per transaction. The check is under it, so the whole check is claimed — tax and gratuity included. Cleared for payment to J. Okafor, Aug 14, 8:44 PM.
Agentic expense auditing
Expenze reads each receipt, works out what kind of expense it is, and settles what your policy already allows. What it cannot settle arrives at Finance with the rule cited — and nothing is ever asked of the person who sent it in.
Read as Meals & entertainment, which your policy caps at $300.00 per transaction. The check is under it, so the whole check is claimed — tax and gratuity included. Cleared for payment to J. Okafor, Aug 14, 8:44 PM.
The printed total is what is claimed. A line-by-line reading that comes up short is a reason to doubt the reading, not the bill.
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”.
What kind of expense is this? A team lunch or provisions for the pantry? A cab or a cloud bill? 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 says what kind of expense it is. 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 type it was read as, the cap that applies, and the comparison — as in the check above. Your employee can read it, and so can your auditor.
Approve, correct the expense type, 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.
A total it cannot read, a currency you have set no cap in, an expense your policy does not cover — queued, never guessed at. Uncertainty goes to a person, and nothing is asked of the employee who sent it.
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.
For anyone already signed in, or a receipt that arrived as a file rather than a photograph. Preview before sending, and the claim opens in the same list as the rest.
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, and per group. Measured against everything submitted rather than only what has settled, so the figure is not flattering.
By month and year, by expense type, group and person, exceptions separated from the routine. Every claim traces to the original image or PDF, kept and viewable.
Owner/Management 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.