agentleFS
adoptaiadoptai/cpa-skills/skills/vendor-statement-recon/SKILL.md

vendor-statement-recon

Skill8 starsChanged 4 months agoMITView on GitHub

Reconciles vendor statements to the AP subledger, per vendor — classifying every statement line and every open subledger line as matched, missing from the subledger, disputed, or carried in the subledger but absent from the statement — and ties the reconciled total to the subledger open balance or reports a quantified, named difference. Use this whenever the user mentions vendor statement reconciliation, reconciling AP to vendor statements, unapplied credits, missing invoices on a vendor statement, or AP subledger tie-out by vendor. Also trigger on "reconcile this vendor statement," "does our AP agree to what the vendor says we owe," "find missing invoices," or when vendor statement PDFs/extracts and an AP subledger export are provided together. High-volume, offshore-displacing grunt work at scale — the AP analog of bank-rec-review. Runs fully local — no vendor or AP data leaves the machine.

  • Installs packages

The file

We split this skill into the rules it gives an agent

1 rule. About 0 are common, 0 are distinctive, and 1 is very specific to this project.

  • ≈0

    Common · estimate

    Many files like this have a rule of this kind.

  • ≈0

    Distinctive · estimate

    This author's own choices. Worth a look.

  • 1

    Very specific

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

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

    Every discrepancy carries a proposed next step (request an invoice copy, apply a credit, confirm with the vendor) — explicitly labeled …

    line 57

≈ “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

Vendor Statement Reconciliation

A vendor statement and an AP subledger will almost never agree line-for-line by coincidence — timing differences, unapplied credits, and genuinely missing invoices are normal. The point of this skill is to classify every difference explicitly rather than let a vendor's claimed balance and the subledger's balance sit unreconciled with no record of why.

The gate

The script refuses to produce a clean workbook when:

  1. An amount or date does not parse. A visible, blocking exception on the row it came from — never coerced or dropped.
  2. A (vendor, invoice_no) pair is duplicated in the subledger. Matching against an ambiguous target is unreliable, so the workbook is not written until the subledger is deduplicated or corrected.

A reconciling difference after classification is never a gate failure — it is the normal, expected output of a recon with real discrepancies, reported as a quantified amount on the Per-Vendor Reconciliation tab, never forced to zero or absorbed into a plug.

Inputs

  1. Vendor statement extract, all vendors together — vendor, statement_date, ref, amount, line_type (line_type: invoice, credit, or payment).
  2. AP subledger export — vendor, invoice_no, amount, invoice_date, status (status: open or paid).

Step 1 — Run the reconciliation

python3 scripts/vendor_statement_recon.py --statement vendor_statements.csv \
  --subledger ap_subledger.csv --client "Northwind Systems Inc" \
  --out "Northwind - Vendor Statement Recon.xlsx"

Step 2 — How a statement line is classified

ClassificationMeaning
matchedStatement line's ref found in the subledger for that vendor, amount agrees.
disputedref found, but the statement and subledger amounts disagree.
missing-from-subledgerStatement shows an invoice or credit with no matching ref in our subledger — a possible unrecorded liability (invoice) or an uncaptured credit.
in-subledger-not-on-statementAn open subledger invoice whose number never appears on the statement — could mean the vendor's statement is stale, or our payable is.

The reconciled balance starts from the subledger's open total and applies each classified item's dollar effect; the result is compared to the statement's own implied ending balance. Agreement within a cent is a tie. Anything else is reported as a named difference, never plugged.

Step 3 — Proposed actions are suggestions, not determinations

Every discrepancy carries a proposed next step (request an invoice copy, apply a credit, confirm with the vendor) — explicitly labeled SUGGESTED (not a determination). The skill never concludes a discrepancy is resolved; it stops at classifying and quantifying, and the engagement decides the actual resolution.

Deliver

Workbook tabs:

  1. Per-Vendor Reconciliation — statement balance, subledger open balance, reconciled balance, difference, and tie/no-tie per vendor.
  2. Discrepancy List — every classified item with its suggested (not determined) action.
  3. Unreconciled-Exceptions — vendors whose difference did not tie, plus any gate failures if the workbook was forced.

Then, in chat: which vendors tied and which didn't, the largest unreconciled dollar amounts first, and a count of missing-from-subledger items — those are the ones with the clearest unrecorded-liability exposure.

What to escalate

  • Missing-from-subledger invoices concentrated near period end — unrecorded-liability risk for the close, not just an AP housekeeping item.
  • A vendor with a persistent, unexplained difference across multiple statement periods — a recurring tie failure usually means a systemic posting issue, not a one-off.
  • Unapplied credits sitting on a vendor statement for several periods — cash or discount value not yet realized.
  • A disputed amount where the subledger figure is larger than the statement figure — worth confirming we haven't accrued or posted more than the vendor believes we owe.

Report each as a fact with the vendor and reference. Do not characterize intent or conclude a dispute's resolution — that decision belongs to whoever is working the vendor relationship.

Security posture

Fully local: standard library plus openpyxl. No network calls, no uploads, no telemetry. Vendor and AP data never leave the machine.

Dependencies

pip install openpyxl

Built by Adopt AI — free to use and modify.

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.