Skip to content
OrderAgentOrderAgent

How receipts are verified

The six deterministic checks applied to every receipt, in order, and what each rejection reason means.

When a customer sends a photo or PDF of a transfer, it is treated as a receipt. This page describes exactly what happens to it — because "AI checks the receipt" is not a useful description of something that decides where money goes.

What happens first

The file is downloaded from WhatsApp, hashed, and stored in a private bucket. Private matters: receipts carry account numbers and names, and they are never reachable by URL. The dashboard signs a short-lived link per view, and refuses to sign anything outside your own shop's folder.

Processing happens after the message is acknowledged, so a slow read never causes WhatsApp to retry the delivery.

Which order it attaches to

In order:

  1. An FB-… reference in the receipt's own caption.
  2. An FB-… reference in the customer's last few messages.
  3. The most recent order of theirs that is awaiting payment or in review.

A receipt that matches none of those — paid against an order that already expired, or a forwarded image that was never a receipt for you — raises an alert instead of silently attaching to the wrong order.

The six checks

Every check is deterministic. None of them is a judgement call, and none of them is made by a language model. They run in this order and the first failure wins, so the reason you see is the first thing that was actually wrong.

1

Duplicate image

The file's hash has been seen before. The same screenshot sent twice, for two different orders, is the oldest trick there is.

2

Duplicate reference

The transaction reference on the receipt already appears on another payment. One transfer cannot settle two orders.

3

Currency

The currency on the receipt is not the order's currency. Sensible aliases are accepted — Rs, Rs., INR and all read as one currency — and a receipt showing no currency at all is not treated as a mismatch.

4

Date

The transfer is dated before the order existed. A receipt cannot predate the thing it pays for.

5

Amount

The amount does not cover what is due.

6

Recipient account

The destination account is not yours.

Pass all six and the payment is marked auto-matched. Fail any and it is marked needs review, carrying the specific reason.

What is read from the image

Amount, currency, reference, transfer date and time, recipient, sender, and a confidence score. Reading is a vision model; judging is the six checks above, which operate on what was read.

If reading fails or comes back below the confidence floor, checks 3 to 6 are skipped and the payment goes to you for review. Checks 1 and 2 — the duplicate checks — run regardless, on every plan, because they need no reading at all.

The extraction prompt is built per shop, carrying your country and time zone. This is not cosmetic: assuming one country's clock skewed an Indian receipt's timestamp by two and a half hours, straight into check 4.

When it is not a receipt at all

A sticker, a photo of a dog, a forwarded meme. If the reader concludes it is not a receipt, the payment record is removed entirely — no alert, no card, no noise. You are not asked to adjudicate a picture of a dog.

Plan differences

StarterProBusiness
Duplicate image and reference checksYesYesYes
Reading amount, reference, date from the imageYesYes
Checks 3 to 6YesYes
Your approval is finalYesYesYes

On Starter, receipts arrive for your decision with the duplicate checks already done. The reading and the four content checks are the paid part.