Vendor Invoice Report

Success vs failure per vendor over the last 6 months, so the remaining gatherings can be done manually.

Success = matched in PayHawk (any method) or reconciled. Failure = rejected in PayHawk or likely duplicate. Success rate = success ÷ (success + failure) — in-flight rows (acquired, forwarding, forwarded, download-pending) are excluded from the math and shown as "—" when nothing reached a terminal state yet. Unmatched-vendor emails are counted separately, not in the rate.
Reset
Vendor Total Success Failure Pending Rate Matched (API / manual / assumed) Fail streak Stale
101domain 20 0 0 20 0 / 0 / 0 0
centralnic-reseller 1 0 0 1 0 / 0 / 0 0
cloudflare 38 0 0 38 0 / 0 / 0 0
contabo 3 0 0 3 0 / 0 / 0 0
decodo 2 0 0 2 0 / 0 / 0 0
flokinet 1 0 0 1 0 / 0 / 0 0
gandi 25 0 0 25 0 / 0 / 0 0
github 2 0 0 2 0 / 0 / 0 0
godaddy 52 0 0 52 0 / 0 / 0 0
google-workspace 2 0 0 2 0 / 0 / 0 0
have-i-been-pwned 7 0 0 7 0 / 0 / 0 0
hetzner 2 0 0 2 0 / 0 / 0 0
microlink 2 0 0 2 0 / 0 / 0 0
miss-group 5 0 0 5 0 / 0 / 0 0
namecom 3 0 0 3 0 / 0 / 0 0 1 stale dl
neostrada 7 0 0 7 0 / 0 / 0 0
opencode 3 0 0 3 0 / 0 / 0 0 1 stale dl
openrouter 2 0 0 2 0 / 0 / 0 0
orangewebsite 8 0 0 8 0 / 0 / 0 0
rebel 11 0 0 11 0 / 0 / 0 0
slack 2 0 0 2 0 / 0 / 0 0
statsdrone 6 0 0 6 0 / 0 / 0 0
ultahost 1 0 0 1 0 / 0 / 0 0

Manual-action worklist

Everything needing a human — the "remaining ones to do manually". Each group links to the ledger pre-filtered to it.

2

Stale download-pending
In `download_pending` longer than the stale threshold — a real PDF download path is not (yet) available for this vendor (portal-scraper prereqs missing, or an API lane with no PDF endpoint by design). The ledger link shows all rows in this status (any age); N of them are past the threshold.

15

Unmatched vendor
Inbound invoice email with no registered vendor — map it in the review queue.