Skip to content

Claude Code for Business · practical unit

Reconcile two exports. Show what matches and what still needs a decision.

Produce a reconciliation report, an exception ledger and a reusable acceptance checklist. Start with six invoices, then solve a different month containing errors that equal totals can hide.

You should be able to open a CSV and edit a small JSON document. Use the lesson's guided brief if you want an agent to help. The browser checker needs no account, API key or paid tool. Optional agent use follows your provider's costs and permissions; only use these supplied synthetic files.

Reading estimate: 8 minutes. Setup and practice time: not yet measured. On a phone, inspect the inputs and predict the exceptions; use the same unit from your desk when ready to create the files.

Already comfortable with reconciliation?

Explain why matching totals can hide two wrong invoices, why currency belongs in the comparison, and why similar charges are not automatically duplicates. If you can demonstrate those distinctions, start with the transfer case below.

The output contract

Keep invoice IDs as text. Include every physical row from both sources exactly once under its invoice ID. Use an empty array when that source has no row. For repeated IDs, keep all row numbers and flag the duplicate; do not choose a winner.

  • version: the number 1.
  • rows: one object per invoice ID, with invoice_id, crm_rows, accounting_rows and issues.
  • issues: an array containing applicable missing_in_crm, missing_in_accounting or duplicate_id. Compare fields only for a one-to-one pair: amount_mismatch, currency_mismatch or details_mismatch for customer, region or date. An empty array means those fields match.
  • totals: crm and accounting objects, each mapping currencies to decimal strings such as "10585.50". Include every row, including repeated IDs.
  • unresolved: one object per group of different IDs sharing customer, region, amount, currency and date within either source. Set invoice_ids to that group and resolution to "source_document_required".

Array order is immaterial; row numbers, spelling, types and complete coverage matter. Do not convert currencies or infer whether a suspected duplicate is legitimate. The supplied exports cannot settle that question.

Run it locally, without installing packages

Download the two CSVs, the report template, checker-v1.mjs and check-v1.mjs into a disposable folder. Use Node.js 24 or later; confirm with node --version. Write your report as report.json.

node check-v1.mjs guided-crm.csv guided-accounting.csv report.json

Expected result: "passed": true and an empty errors array, exit 0. A rejected report exits 1. Replace guided with transfer for the second case. The checker reads those three files and writes nothing. Keep inputs unchanged, and delete the disposable folder when you no longer need your exercise files.

Check your reconciliation

Fictional U.S. customers use USD. A deliberate EUR (euro) row tests currency mismatches; keep each currency separate.

Build your own report, then compare it with the worked result.

Your draft stays in this browser. Only the case ID and pass/fail result are sent to your signed-in account. Clearing browser data removes this draft.

Hints and troubleshooting
  • Use physical CSV line numbers: the header is line 1. An absent side has an empty row array.
  • If rows fails, compare the union of invoice IDs, then check every row within each ID. Never choose one occurrence of a repeated ID.
  • If totals fails, add decimal amounts separately by source and currency. Two opposite amount errors can cancel.
  • If unresolved fails, compare different IDs with the same customer, region, amount, currency and date within either source. Request the original invoices; do not mark the ambiguity resolved.
  • If JSON fails, check quoting and trailing commas. If inputs fail to load, use the local command in the guide.
Worked answer — open after your own attempt

INV-1002 has an amount conflict; INV-1003 is missing from accounting; INV-1005 has a currency conflict. INV-1003 and INV-1006 require source documents before deciding whether they duplicate a charge. CRM totals: USD 10,585.50 and EUR 1,120.00. Accounting: USD 10,850.50.

Download the worked JSON
Save a desktop handoff: open this unit from your desk

Demonstrate transfer

Solve the second case before reading the checker's implementation. Keep the first report, any failure output, the revised report and a note of assistance used. For each unresolved item, name the source document you would request and who should decide. A client handover should explain the matching rule, the checks run and what remains unresolved.

A passing check establishes this small contract. It does not establish fraud, accounting correctness, performance on large exports or independent competence. For a learning review, ask someone to attempt the new case without the worked answer and record where they needed help. No learner study result is claimed.

Return to Claude Code for Business