Three-Way Match Skill
Three-way match vendor invoices to POs and receipts: approve/hold queue, price and qty variances, duplicate invoices, GRNI accruals. Offline. $29.
View Three-Way Match Skill
PayPal's activity download is one long list of sales, fees, holds, disputes and transfers. This turns it into withdrawals matched to your bank, holds and disputes separated, and a period entry your books can take.

| Situation | Code | Level |
|---|---|---|
| PayPal payout landed in the bank (exact amount, within the date window) | matched | |
| Payout with no bank deposit | missing_deposit | high |
| Deposit a few cents or dollars off the payout | deposit_amount_mismatch | high |
| A line where net is not gross minus fee (a broken or edited export) | net_identity_error | high |
| Chargeback / dispute withdrawn from a payout | dispute | high |
| Same order charged twice the same day, no refund | possible_duplicate_charge | high |
| Paid order with no charge in the file (needs --orders) | order_without_charge | high |
| Charged amount differs from the order total | order_amount_mismatch | high |
| Bank deposit from PayPal with no payout in the file | unexplained_processor_deposit | high |
| Funds held in reserve | reserve_hold | normal |
| Payout dated at the end of the bank file | deposit_in_transit | info |
| Refund of a sale from an earlier period | refund_without_charge_in_file | info |
examples/northwind-october/ is a fictional coffee roaster's October in PayPal's own export format: 6 payouts, 18 lines, a bank statement and an orders export, with 12 planted situations (a missing deposit, a short deposit, a chargeback, a reserve hold, a double charge, an under-charged order, a paid order never charged, an unexplained deposit, a payout still in transit and a refund from September). expected.json labels the outcome a careful bookkeeper would reach; the tests assert the tool reaches exactly that in any row order, that every proposed entry balances, and that a fixed month exits 0.
Outputs in out/: payouts.csv (each payout, its status and bank line), exceptions.csv (review queue, highest priority first), journal.csv (proposed entries, balanced), report.md, summary.json. Exit 0 = every payout is accounted for; 1 = something blocks the reconciliation; 2 = an input problem (the message says which flag fixes it).

./run_tests.sh
python3 -m paypalrec --payouts examples/northwind-october/paypal_activity.csv --bank examples/northwind-october/bank.csv \
--orders examples/northwind-october/orders.csv --name "Northwind Coffee" --out out/Python 3.9+ (tested on 3.10 and 3.13), no dependencies. Not affiliated with PayPal.
Zip, 22 KB, v1.0, 17 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.
Reconcile PayPal payouts to your bank: missing deposits, disputes, double charges and fees, plus proposed entries. Offline CLI + agent skill. $19.
Three-way match vendor invoices to POs and receipts: approve/hold queue, price and qty variances, duplicate invoices, GRNI accruals. Offline. $29.
View Three-Way Match SkillFind duplicate payments and duplicate vendors: same invoice paid twice, shared bank accounts and tax IDs, vendor-employee matches. Offline. $29.
View Duplicate Payment and Vendor Master Audit SkillAudit 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