PlaysbyMoat8
Back to the library
The workflow guideFinance

Complete missing bookkeeping fields on card transactions

Find missing categories, business-purpose memos and receipts on existing card charges, then prepare narrowly scoped updates with an exception ledger.

6 implementation stepsIntermediate

How this works

Start from transactions that already exist in the expense system. For each one, identify missing category, memo or receipt and either prepare a justified correction or explain why it remains unresolved. This differs from creating a new expense claim from a receipt: transaction IDs and current state are the source of truth.

Use AI for classification suggestions and document interpretation. Apply exact policy checks and record-level guards for updates. An export-and-review workflow is valid when connectors are unavailable; report proposed changes separately from confirmed writes and never infer approval to move money.

Before you start

Coding policy

Confirm permitted categories, memo conventions, receipt requirements and who resolves exceptions.

Data access

Use only the authorized card account and specified receipt mailboxes or files.

Write scope

Identify which fields may be updated under the current task; default to a proposal when scope is absent.

Prepare the inputs

transactions
Required

Rows with stable ID, date, merchant, amount, currency and current fields

Record snapshot time; distinguish missing, pending and already complete values.

categories
Required

Current valid accounting options and policy

Do not invent a category or use a retired code.

receipt_sources
Required

Approved mailbox queries, uploaded files or receipt URLs

Limit retrieval to the named account and period; retain evidence references.

matching_rules
Required

Approved date, amount and tip tolerances

No silent tolerance defaults; compare currency before amounts.

Implementation, step by step

  1. Inventory the batch

    • Snapshot every transaction ID and its current memo, category and receipt status.
    • Partition complete and incomplete records, counting every input exactly once.

    Checkpoint: The ledger reconciles to the input count.

  2. Retrieve candidate evidence

    • Search the permitted receipt sources by merchant, date and amount.
    • Keep candidate documents separate until verified; expired links and login pages are failed retrievals, not receipts.

    Checkpoint: Each incomplete charge has candidates or an explicit retrieval exception.

  3. Verify matches

    • Compare merchant identity, currency, date and totals with approved tolerances using deterministic arithmetic.
    • Treat tips, split payments, refunds and duplicate receipts as separate cases. Hold multiple plausible matches.

    Checkpoint: Every proposed attachment has a documented match basis.

  4. Draft field updates

    • Choose from current categories using policy and permitted prior examples.
    • Write a concise business-purpose memo only from evidence; calendar context alone cannot prove who attended or why the purchase occurred.

    Checkpoint: The proposed table distinguishes supported, uncertain and blocked changes.

  5. Apply permitted changes

    • If writes are authorized, reread the transaction before each update and touch only still-empty approved fields.
    • Use record identifiers, capture the response and inspect current state after an ambiguous result before retrying. Otherwise export the proposal.

    Checkpoint: Confirmed updates are separated from proposals and uncertain outcomes.

  6. Reconcile and sample

    • Account for every transaction as previously complete, confirmed complete or flagged.
    • Open a sample of actual attached receipts, include a deliberately similar wrong-amount example in evaluation, and verify a rerun makes no duplicate changes.

    Checkpoint: The owner can audit both changes and omissions.

Decisions along the way

A receipt has a different currency

Hold it unless approved evidence explains the settlement conversion; do not match by a similar number.

Another person completes a field during the run

Keep their value and record a skipped update rather than overwriting it.

A charge has no receipt requirement

Record the policy exception; do not fabricate a document to make the row look complete.

What you will produce

transaction-field-proposals.csv

CSV

A limited update plan with explicit exceptions.

Include: transaction_id · field · current_value · proposed_value · evidence · confidence_basis · status

bookkeeping-run.md

Markdown

A reconciled run report, separate from payment approval.

Include: input_count · previously_complete · confirmed_complete · flagged · unknown_outcomes

Check the result

  • Reconcile input and terminal-state counts without double counting.
  • Verify receipt content rather than filenames alone.
  • Confirm writes touched only authorized missing fields.
  • Run a duplicate/retry check and inspect ambiguous write outcomes.

When something goes wrong

Receipt link is inaccessible

Keep the transaction flagged and ask for an accessible copy.

Current category options differ from the proposal

Refresh the options and return affected rows to review.

An update times out

Read the transaction state before retrying; report unknown when the state cannot be obtained.

A worked example

SYNTHETIC EXAMPLE · NOT A REPORTED BUSINESS RESULT

Request

Synthetic: complete bookkeeping for three existing card charges.

Inputs

One row is complete. A second lacks a receipt and matches an approved 42 USD document. A third has two plausible receipts with different amounts.

Expected result

Keep the first row unchanged; propose or confirm the second attachment within scope; flag the third. The ledger totals three rows and a rerun creates no duplicate attachment.

Run a small pilot

Start small

Use a small historical batch with duplicates, missing receipts, currency mismatches and concurrent changes.

Record the baseline

Record manual completion time, unresolved rows and incorrect attachments.

Agree success criteria

Require zero unauthorized overwrites and an agreed receipt-match error limit before recurring use.

Stop or revise

Stop writes if transaction identity, current state or matching policy cannot be verified.

Keep the scope clear

  • Never approve spend, create charges, issue refunds or release payments through this workflow.
  • Do not search personal correspondence beyond the explicit receipt-retrieval scope.

Check before using

Finance confirms coding policy and uncertain matches; completing fields does not approve spending or release payment.

Business activities

  • Manage finances and accounting

Editorially adapted workflow; not independently tested.

FROM A RECIPE TO YOUR WORKFLOW

Bring the company context together.

This workflow needs reliable inputs before it needs a better prompt. Moat8 Vault brings working information into a readable archive for the AI tools you use.

For this recipe: Card transaction export · Live accounting categories · Authorized receipt sources · Coding policy

Start with one recurring task, agree which sources to use, and review the first result with your team.

Discuss this workflow

What does your team do?

Choose the recurring work you would like to improve.

A field guide, made for work.

Plays is a curated library of anonymized business workflows. Each recipe explains the inputs, steps, tools, and checks you can adapt to your team. These are editorial guides, not independently tested implementations.

When you share a company website, the guide may read a limited number of public pages on that website. Messages and retrieved page text are sent to our AI provider, NVIDIA, to recommend relevant workflows. Share a general description rather than confidential information.

Saved workflows and selected activities stay in this browser. Your chat history and selected company website are kept in this tab and cleared when you reload or start a new chat. The server does not store conversations. Live source monitoring is not enabled.

If you allow analytics, PostHog receives page views and actions such as workflow saves, skill downloads and link clicks. Random browser and session identifiers connect these actions without identifying you by name. Your choice and browser identifier expire after 90 days; sessions restart after 30 minutes of inactivity or 24 hours. We use local storage, not analytics cookies. Messages, company URLs, search text, full referrers and IP addresses are not sent. There are no person profiles or session recordings. You can decline or withdraw in Analytics settings; Do Not Track and Global Privacy Control keep analytics off.

Read the Plays Privacy Notice ↗