# Receipt scanning

Fill in expense claims from a receipt photo and point reviewers to claims that do not match their receipts.

The **Receipt scanning** add-on reads expense receipts with AI, on the web and in the mobile app. It fills in claims from a receipt for the employee to check, and shows reviewers where a claim and its receipts do not agree. It never approves, rejects or changes a claim.

It is a paid add-on. It needs an AI provider connected under [Settings → AI](https://czappstudio.com/docs/ai/overview), with a model that passed **Fills in forms** and **Reads images** in the connection test.

## Turn it on

1. Turn the add-on on from the **Modules** page.
2. Open **AI → Overview** and switch on **Turn on AI**, then open **AI → Features and access**, switch on **Receipt scanning** and save.

Every role has the **Fill expense claims from a receipt** permission to start with. Remove it on the **Roles** page from roles that should type their claims by hand.

## Fill in a claim from a receipt

1. Open **My Expenses → New Expense** on the web, or **Expenses → New expense** in the mobile app.
2. Under **Receipts**, attach a photo or scan of the receipt. In the mobile app you can use the camera, your photos or your files.
3. Wait a moment while the receipt is read.
4. Check the date, amount, category and description that were filled in, and correct anything that is wrong.
5. Save or submit the claim as usual.

Only empty fields are filled; anything you typed first is left alone. The amount is not filled when the receipt is in a different currency from your organisation's. If a receipt cannot be read, you are told and you enter the details yourself. See [Your expenses](https://czappstudio.com/docs/self-service/expenses).

PDF receipts are read when you use Claude, Gemini or OpenAI. Self-hosted models read only JPG and PNG photos and scans; a PDF is still attached to the claim as usual.

When the phone is offline, the receipt is attached and the claim is queued as usual, and nothing is filled in. The employee is never blocked. Once the claim syncs, the stored receipt is read so reviewers still get their checks.

## Checks for approvers

When a reviewer opens a claim, each item may show **Receipt checks**:

| Notice | What it means |
| --- | --- |
| The receipts add up to one amount, but another is claimed. | The claimed amount differs from the total on the item's receipts. |
| The receipt is dated one day, but the expense date is another. | The claim's date differs from the receipt's. |
| A receipt is in another currency. | The amount could not be compared. Check it by hand. |
| A receipt could not be read. | The photo is unclear or is not a receipt. Check it by hand. |
| The same receipt file is attached to another expense claim. | An identical file is on another claim that is not cancelled or rejected. |
| Another expense claim has a receipt from the same merchant, on the same date, for the same amount. | A possible duplicate from a different photo of the same receipt. |

A notice is a prompt to look, not a decision: a difference can be legitimate, such as a tip that is not on the receipt. The person who made the claim does not see these notices. See [Expense administration](https://czappstudio.com/docs/administration/expenses).

## What is sent

The receipt file, your organisation's currency and the names of your expense categories are sent to your AI provider. Nothing about the person making the claim is sent. What was read from each receipt is kept with the receipt so reviewers can see the checks.
