agentleFS
norman-financenorman-finance/norman-mcp-server/skills/find-receipts/SKILL.md

find-receipts

Skill65 starsChanged 12 days agoMITView on GitHub

Find and attach missing receipts for business transactions. Search Gmail, email, or other sources for invoices and receipts, then upload them to Norman. Use when the user asks about missing receipts, Belege, attaching documents, or finding invoices from emails.

The file

We split this skill into the rules it gives an agent

8 rules. About 0 are common, 3 are distinctive, and 5 are very specific to this project.

  • ≈0

    Common · estimate

    Many files like this have a rule of this kind.

  • ≈3

    Distinctive · estimate

    This author's own choices. Worth a look.

  • 5

    Very specific

    Tied to their project's names, files or tools. Probably skip.

  • Common
  • Distinctive
  • Very specific
  1. Very specific:

    Call search_transactions with no_receipt=true to find recent bookings that still need a document

    line 18
  2. Distinctive:

    Check vendor portals (suggest logging into the vendor's website to download invoices)

    line 42
  3. Distinctive:

    Check cloud storage (Google Drive, Dropbox) for scanned receipts

    line 43
  4. Distinctive:

    Check photo library for photos of paper receipts

    line 44
  5. Very specific:

    Use upload_bulk_attachments to upload multiple receipts at once

    line 48
  6. Very specific:

    Use create_attachment for individual receipts with metadata (vendor, date, amount)

    line 49
  7. Very specific:

    Use link_attachment_transaction to connect each receipt to its matching transaction

    line 50
  8. Very specific:

    After attaching, use change_transaction_verification to mark transactions as verified

    line 55

≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.

Keep what fits and drop the rest. Your version, ready for your agents.
Files
SKILL.md

Help the user find and attach receipts to their transactions:

Step 1: Identify transactions missing receipts

  • Call search_transactions with no_receipt=true to find recent bookings that still need a document
  • German and Polish companies: a payment without a document may pay an open booking that holds its document. Call find_booking_payments with the payment's id first; a fitting open booking is the first candidate.
  • A booking marked as needing no document is not missing one. Transfers between own accounts, private withdrawals and deposits, capital contributions and VAT payments to the tax office start that way in German companies. When the user says bookings need no document (payment-provider or bank fees), set document_not_required=true with update_transaction; for every future match, offer an automation rule with the mark_document_not_required action.
  • Present a list of transactions that are missing receipts, sorted by amount (largest first)

Step 2: Search for receipts

Guide the user to find receipts from various sources:

Norman first:

  • list_attachments with has_booking=false and search for the supplier lists the uploaded receipts and invoices no booking holds yet.

Gmail / Email:

  • Suggest searching Gmail with queries like:
    • from:{vendor} subject:receipt or from:{vendor} subject:invoice
    • subject:Rechnung from:{vendor}
    • subject:Bestellbestätigung (order confirmation)
    • has:attachment after:{date} {vendor name}
  • For common vendors, suggest specific search terms:
    • AWS: from:aws subject:"invoice available"
    • Google: from:payments-noreply@google.com
    • Apple: from:apple subject:receipt
    • Amazon: from:auto-confirm@amazon subject:Bestellung

Other sources:

  • Check vendor portals (suggest logging into the vendor's website to download invoices)
  • Check cloud storage (Google Drive, Dropbox) for scanned receipts
  • Check photo library for photos of paper receipts

Step 3: Upload and attach

Once the user has the receipt files:

  • Use upload_bulk_attachments to upload multiple receipts at once
  • Use create_attachment for individual receipts with metadata (vendor, date, amount)
  • Use link_attachment_transaction to connect each receipt to its matching transaction
  • Pay a fitting open booking from find_booking_payments with pay_booking (booking id, payment id): the payment takes the booking over, with its document if it has one. A booking made by hand may have none: read back the row pay_booking returns (its publicId: the payment in German companies, the booking in Polish ones, whose payment then retires) and use that id from then on; keep searching while it has no document. A Norman invoice's booking (its invoice field in get_transaction) is paid with link_transaction (that invoice id, the payment id), never with pay_booking.
  • German companies: a receipt that matches no payment books itself as an open booking (payment type NOT_PAID, source document) on its own date; its bank payment takes the booking over when it arrives. Linking a receipt to a booking made by hand replaces the booking Norman made from it.

Step 4: Verify

  • After attaching, use change_transaction_verification to mark transactions as verified
  • Show a summary: how many receipts were found, attached, and how many are still missing

Tips:

  • In Norman the owner works through the same lists one at a time: Buchhaltung → Prüfen (Accounting → Review) shows the unfinalized bookings, those without a document first, each with its matching bookings, payments and documents; Belege → Belege prüfen (Documents → Review documents) shows the documents no booking holds. Home shows both counts.
  • DE: Receipts must be kept for 10 years (Aufbewahrungspflicht). Digital copies are legally accepted (GoBD-compliant) when stored properly. Prioritize receipts for expenses over 250 EUR (required for Vorsteuerabzug).
  • PL: Receipts must be kept for 5 years. Documents must comply with JPK requirements. Prioritize receipts for expenses over 450 PLN (required for VAT deduction).

Download now (ZIP)

Does it work?

Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.

No reviews yet

People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.

  • It worked
  • Partly
  • It didn't
What did you use it for? e.g. Reviewing pull requests in a Rails app

Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.

Your trail

Files you open will collect here, so you can find them again.

Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.

Now do this for your own.

Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.