Vendor billing verification
Every call on your own vendor key says whether the vendor billed it the way its published rules say it should.
Before you start
When you call with your own vendor key, the vendor bills you directly. GridRouter reads what the vendor reported for each call (from its response headers or body), works out what its published pricing rules say it should have charged, and records a verdict on the call's log row.
Verdicts
| Verdict | When |
|---|---|
ok | The vendor reported exactly the expected charge |
charged_for_miss | It charged more than expected, and the call was a miss or failed |
double_charged_retry | It charged again for a request it had already billed within its repeat window |
price_mismatch | It charged less than expected, or more on a hit or record count |
unverifiable | There is no rule for the endpoint, or the vendor reported nothing |
none | The vendor was not called (for example, a private-cache hit) |
Search billing:mismatch in /logs for all three mismatch verdicts, or name one:
billing:charged_for_miss, -billing:ok.
Rules
Each rule comes from the vendor's own pricing page and is linked from the call's detail sheet. A rule
says when the vendor charges (always, on any 2xx success, only on a hit, per_record, or
whatever the body states per_credit), how many credits, when a charge is waived, and whether
retries and repeats of an already-billed request are billed again.
| Vendor | Coverage |
|---|---|
| Vendors that report usage per call | Rules for every endpoint; each call is checked against the credits the vendor reports |
| Hunter | Rules exist, but Hunter reports no per-call usage, so calls read unverifiable |
| Prospeo | email.find (free on a record already bought, repeats within 90 days free); no public price, so dollar amounts are empty |
| Everyone else | unverifiable until their rules are researched and cited |
For example, Prospeo's email.find costs 1 credit only when it returns an email, and nothing when
the same record is enriched again within 90 days. A miss that consumed a credit reads
charged_for_miss.
Where it shows
- The Billing column and facet in
/logs, and a Billing section in each call's detail sheet: the rule in plain English with its source, the expected and reported credits and dollars, and the balance the vendor reported. - Billing accuracy in the log toolbar: per vendor, calls checked, billed right, each mismatch
type, and credits and dollars overbilled for the current filters. The API is
GET /v1/logs/billing. - Export → Billing disputes (CSV): the mismatches only, with request id, UTC timestamp, vendor, endpoint, verdict, outcome, HTTP status, expected and reported credits and USD, balance after, and the rule. Send it to the vendor as-is.
Calls on GridRouter's managed vendor accounts read managed; their vendor-side cost is never shown.
Integrations
Send alerts to email, your own webhook endpoints, Slack, Discord, Microsoft Teams, PagerDuty and Opsgenie. Where to find each credential, what the message looks like and how to test it.
Plans and pricing
Every workspace is on Free at launch. What Free includes, what is always free, and how metered plans will work.