---
title: "Turn receipts into a bookkeeping-ready log"
description: "Normalise dates, merchants, currencies and tax notes into a CSV, with an explicit unknown column and a duplicate check instead of guessed data."
canonical: "https://www.diginomads.win/prompts/receipt-log"
source: "content/pages/prompts/receipt-log.md"
updatedAt: "2026-11-10"
---

## Copy-ready prompt

~~~text
You are building a bookkeeping-ready receipt log.

Inputs:
- Receipts (OCR, pasted text or a list of files): [RECEIPTS]
- Period: [PERIOD]
- Base currency: [BASE_CURRENCY]
- Entity or person: [ENTITY]

Produce a CSV with exactly these columns:
date, merchant, description, amount, currency, amount_base, fx_rate, category, payment_method, tax_note, source_file, confidence, unknown

Rules:
1. Normalise dates to YYYY-MM-DD. Do not infer a year from the order in the list.
2. Use the printed total, not a subtotal. If the total is missing or ambiguous, put the row in the unknown list.
3. Keep the original currency in `currency` and show the conversion in `amount_base` and `fx_rate`. If the rate is not on the receipt, write "to confirm" rather than using today's rate.
4. Detect duplicates by date, merchant and amount. Report them separately; do not silently merge.
5. Do not guess a category that changes the tax treatment. Use "uncategorised" and put the question in `unknown`.
6. Redact any card number, account number or personal identifier. Never reproduce a full card number.
7. Do not give tax, filing or deduction advice. List the questions for the accountant.

End with:
- A count of rows, duplicates and unknowns.
- The five rows most likely to be wrong, with the reason.
- The questions the accountant needs to answer before the log is filed.
~~~

**Use when:** You have a month or a quarter of receipts in PDFs, photos or emails and need a clean log for an accountant.

**Output contract:** A CSV with one row per receipt, a duplicate report, an explicit unknown column and a short list of items that need a human decision.

**Inputs you need:**

- Receipt text, OCR output or a folder description
- The period and the base currency
- The entity or person the expense belongs to

| Variable | What to put there |
|---|---|
| [RECEIPTS] | The OCR text or typed receipt details. If you paste images, describe each one and keep the source filename. |
| [PERIOD] | The accounting period, not the travel dates. A receipt dated in the wrong month is a real problem. |
| [BASE_CURRENCY] | The currency the books are kept in. The original currency stays in its own column. |
| [ENTITY] | The company or person the expense belongs to. Mixed personal and business spending needs a separate decision. |

## How to use it

1. Redact card and account numbers before the text reaches any model or third-party tool.
2. Paste receipts in a stable order and keep the source filename for each. The log is only useful if a row can be traced back.
3. Run the duplicate check before you trust the total. Double-counted receipts are the most common error.
4. Send the unknown list to the accountant with the CSV, not after they have already filed.

## Guardrails

- No full card, account or personal identifier appears in the output.
- Missing dates, totals or rates are marked, not guessed.
- Duplicates are reported, not silently removed.
- The output contains no tax or filing advice.

## Variations

### If you use an accounting tool

Ask for a second CSV in the tool's import order and a mapping table. Keep the original log as the audit trail; the import file is a derived copy.

### If the receipts are in several currencies

Add a column for the rate source and date. A single base-currency total without the rate is a number your accountant cannot reproduce.

## Why this works

Receipt logging is mostly a normalisation problem: dates in three formats, totals mixed with subtotals, currencies without rates, duplicates from two email addresses. A model is good at normalisation and bad at admitting a total is missing. The unknown column is what keeps the log honest.

The privacy rule is not optional. Receipts often carry partial card numbers, addresses and client names. Redact before you paste, and treat any tool you upload to as a recipient.

## What good looks like

A clean log has a row count you can reconcile against the source folder, a duplicate report, and a short unknown list. If the model reports zero unknowns on a messy quarter, it guessed.

The confidence column is a useful audit signal: `high` for a printed total and date, `low` for a photographed receipt with a handwritten tip. Your accountant can then sample the low-confidence rows instead of re-reading everything.

## Adapt it to your work

For a company with a chart of accounts, replace the generic categories with your account codes and ask the model to leave anything ambiguous blank. For a solo consultant, add a column for client or project so the expense can be recharged.

## Failure modes

- **The model invents an exchange rate.** Require the rate source and date, or “to confirm”. Today's rate is not the transaction rate.
- **The total includes a tip that was added later.** Ask for the final charged amount and the receipt total separately.
- **A personal expense is logged as business.** Add the entity column and a “personal” category, then review the list yourself.

## Related templates

- [Build a travel admin checklist from a booking](/prompts/booking-admin-checklist)
- [Write a weekly update that prevents scope creep](/prompts/weekly-client-update)
- [The client-room skill pack](/skills/client-room)

## Structured data

```json
{
  "@context": "https://schema.org",
  "@type": "WebPage",
  "name": "Turn receipts into a bookkeeping-ready log",
  "url": "https://www.diginomads.win/prompts/receipt-log",
  "description": "Normalise dates, merchants, currencies and tax notes into a CSV, with an explicit unknown column and a duplicate check instead of guessed data.",
  "isPartOf": {
    "@type": "WebSite",
    "name": "DigiNomads",
    "url": "https://www.diginomads.win/"
  }
}
```
