Agentic expense auditing

Every receipt audited. Only the arguments reach you.

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.

1credit per receipt, no per-seat licence
4ways in: WhatsApp, email, portal, API
0apps for your staff to install
THE COPPER TABLE
118 W Adams St, Chicago IL · Aug 14, 2026 · 8:42 PM
Table 12 · Party of 4 · Check 4471
Caesar salad ×232.00
Grilled salmon ×268.00
Ribeye 12oz48.00
Iced tea ×212.00
House IPA ×218.00
Malbec, glass ×222.00
Sales tax 8.875%17.75
Gratuity 20%40.00
Check total257.75 Meals & entertainmentcap 300.00
Cleared · no reviewer $257.75

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

Four steps, and only one of them is a model

Reading a crumpled bill is a job for a model. Deciding what your company owes is not.

Step 1

Read

Vendor, date, currency, every line, and how many people it covered. Handwritten and non-English included — or an honest “unknown”.

Step 2

Judge

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.

Step 3

Apply the rules

Deterministic code, not the model, computes the verdict from your policy. The same receipt always produces the same outcome.

Step 4

Settle or queue

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

“What happens when it gets one wrong?”

01

The model never decides what you owe

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.

02

Every verdict cites the rule and the arithmetic

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.

03

A human can overrule, and is named for it

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.

04

When it cannot tell, it says so

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

Four ways in, one pipeline

Staff use whatever they already have open, and nobody is trained on anything. Every route lands on the same audit.

WhatsApp

photograph → send

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.

Email

forward → receipts@expenze.ai

Cab invoices, hotel folios, SaaS bills. Attachments, inline images and PDFs are all read, and the sender gets an acknowledgement.

Portal

drop a file → submit

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.

REST API

POST /intake/api

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

Budgets that warn you, not ones that stop your staff

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.

Budgets

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.

Reports

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.

Roles

Owner/Management writes policy and buys credits. Finance Executives work the queue. Everyone else just sends receipts — no seat, no licence, no login.

Pricing

You pay per receipt, not per person

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

What spends a creditOne receipt, by any channel. A re-send after a query does not, and nor does an API retry carrying the same idempotency key.
What does notSeats, roles, invitations, API keys, storage, budgets, reports, or a Finance Executive working the queue all day.
Running outReceipts keep arriving and queue unprocessed — nothing is lost. Auditing resumes on the ones already waiting the moment you top up.

For the systems you already run

Push a receipt on someone's behalf

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

Audit a real week before you decide anything

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.

Nothing to installStaff send from WhatsApp or email on day one.
Nothing to migrateWrite your policy, add a few people, start sending.
Nothing to cancelCredits, not a subscription.