Duplicate Payment and Vendor Master Audit Skill

The same invoice paid twice, a vendor set up twice, two vendors paid into one bank account, a vendor that shares an employee's account: find them in your own vendor master and payment history before an auditor does.

Duplicate Payment and Vendor Master Audit Skill cover

What it catches

SituationCodeLevel
Same invoice paid twice (normalizes INV-0778 / INV778 / inv 778)duplicate_paymenthigh
Same vendor and amount within 7 days under different invoice numbers, or one invoice paid to two vendor recordspossible_duplicate_paymenthigh
Two vendor records with one tax IDduplicate_tax_idhigh
Vendors paid into the same bank accountshared_bank_accounthigh
Vendor bank account, address or phone matches an employee (needs --employees)vendor_matches_employeehigh
Payment to a vendor marked inactivepaid_inactive_vendorhigh
Payment to a payee not in the vendor masterpaid_unknown_vendorhigh
Near-identical vendor names (Inc./LLC/punctuation ignored)similar_vendor_namenormal
Different vendors at one address / one phone (St vs Street, Ste vs Suite normalized)shared_address / shared_phonenormal
Active vendor with no tax IDmissing_tax_idnormal
Payment within 5% under the approval limit (--threshold)just_below_thresholdnormal
PO box as the only addresspo_box_onlyinfo
Round thousandsround_amountinfo
Paid on a weekendweekend_paymentinfo

Proven on a labeled example

examples/lakeside-dental/ is a fictional dental group: 10 vendors, 2 employees and 13 October payments with 18 planted findings (a vendor set up twice that got the same invoice paid twice, an invoice re-keyed with a leading zero, two vendors sharing a bank account, a vendor paid into an employee's account, payments just under the 5,000 limit, an inactive vendor still being paid and more). expected.json labels what an AP auditor would flag; the tests assert the tool reaches exactly that in any row order, that no full bank account or tax ID appears in any output, and that clean files exit 0.

What you get

Outputs in out/: findings.csv (priority order, high first), report.md, summary.json (including the total of possible duplicate payments). Exit 0 = no high findings; 1 = at least one high finding; 2 = an input problem (the message says which flag fixes it).

Real Duplicate Payment and Vendor Master Audit Skill report and passing tests from the labeled example

Quick start

./run_tests.sh
python3 -m vendoraudit --vendors examples/lakeside-dental/vendors.csv --payments examples/lakeside-dental/payments.csv \
  --employees examples/lakeside-dental/employees.csv --threshold 5000 --name "Lakeside Dental" --out out/

Inputs

  • Vendor master CSV: vendor name plus any of vendor ID, tax ID, bank account, address, phone, status (QuickBooks vendor contact list, Xero contacts, NetSuite/SAP vendor export). Map odd headers with --map-vendors tax="EIN".
  • Optional payments CSV: vendor (or vendor ID), invoice number, payment date, amount, optional invoice date (bill payment list, check register, AP payment history).
  • Optional employees CSV: name plus address, phone or bank account (from payroll). Stays on your machine; outputs show only the vendor and a masked match.

Use it from your agent

  • Claude Code plugin: this folder is a plugin (.claude-plugin/plugin.json). Try it with claude --plugin-dir ./duplicate-payment-vendor-audit-skill, or add the folder to your own plugin marketplace.
  • Skill only: copy skills/vendor-audit/ into ~/.claude/skills/ (or your agent's skills folder) and keep this folder where the agent can run python3 -m vendoraudit.
  • No agent: the CLI works on its own; --help lists every flag.

Honest limits

  • CSV only; no ERP connection. One currency per run.
  • Name similarity is character-based: it catches typos and suffixes, not a vendor that changed its name entirely.
  • Address matching normalizes common abbreviations (St/Street, Ste/Suite, Rd/Road); it doesn't geocode.
  • Every finding is a lead. Shared addresses are often legitimate (one building, one parent company). Check documents before acting.
  • It never merges vendors, blocks payments or recovers money. Not audit, legal or tax advice.

Requirements

Python 3.9+ (tested on 3.10 and 3.13), no dependencies.

Format and license

Zip, 18 KB, v1.0, 15 files. Use and modify it for yourself and for clients you serve; no resale or redistribution of the kit itself. Full terms in LICENSE.txt.

FAQ

QuickBooks duplicate vendors?
Export the vendor contact list and bill payments to CSV; it finds them, merging is still done in QuickBooks.
Is a finding proof of fraud?
No; most are setup mistakes. Each is a lead to check.
Does it need our bank data?
Only if you want shared-account checks; it's masked in outputs.
How do I get the files?
Right after payment, Stripe’s confirmation page shows your download link.
Refunds?
Email hello@youraitools.co within 14 days if it doesn’t work and we can’t fix it.
Can I pay with crypto?
Yes. Pay the same price in USDC or USDT on Base, Ethereum, Arbitrum, Optimism, Polygon or Solana from the "Pay with crypto" button, with no account or KYC. We check the payment on-chain and show your download links as soon as it confirms.

Get Duplicate Payment and Vendor Master Audit Skill

Find duplicate payments and duplicate vendors: same invoice paid twice, shared bank accounts and tax IDs, vendor-employee matches. Offline. $29.

Save with a bundle

Pairs well with

Download$19

Expense Report Audit Skill

Audit expense reports against your policy: duplicate and split charges, over-limit meals and hotels, missing receipts, mileage over the IRS rate. Offline. $19.

View Expense Report Audit Skill
Download$12

QuickBooks Online Journal Entry Import Checker

Check a journal entry CSV before importing it into QuickBooks Online: unbalanced entries, rejected account names, A/R and A/P lines with no name. $12.

View QuickBooks Online Journal Entry Import Checker
Download$29

Rent Roll Analysis Skill

Rent roll analysis in one command: occupancy, loss-to-lease, delinquency, lease expirations and the data errors that break underwriting. $29, offline.

View Rent Roll Analysis Skill

Related