The scoring model most sellers never see
Picture a buyer receiving 10,000 phone leads from an affiliate network. They run every number through a validation API before the lead even touches their CRM. Say 2,200 come back VoIP, 800 show an IP-to-state mismatch, and 140 flag as known TCPA litigators (illustrative numbers, not a benchmark). Those 3,140 records either get priced down to near zero or hard-rejected before anyone pays out. The seller, meanwhile, has no idea why their fill rate dropped.
That is how performance lead buying works in insurance, home services, and financial products. Buyers have been doing real-time phone validation for years. Sellers are often still operating like it’s 2018, submitting whatever the form accepted.
Here’s how the scoring actually works, and what to do about it if you’re on the supply side.
What buyers are checking at the moment of ping
Most serious buyers hit a validation API synchronously, during the ping-post handshake or immediately after a lead is accepted (where to call the API in a ping-post flow covers both sides). The fields they care about cluster into a few categories.
Line type. The nanpType field tells you whether a number is mobile, landline, or something else, based on the numbering plan. Because numbers get ported, dipCarrierType from the live carrier dip is the more reliable read. Mobile is the only tier that qualifies for full price in most SMS-driven verticals. A landline gets discounted or filtered outright depending on the use case. “Not-mobile” is essentially a reject in any flow that plans to send a text.
Carrier and connection type. dipCarrierType and dipCarrierSubType are where VoIP gets caught. A number can look like a mobile number from the NANP prefix but resolve as VoIP on a live carrier DIP. dipCarrierSubType will surface IPES (IP-Enabled Service, the VoIP code) where the top-level type field might soften it. Buyers building quality tiers treat confirmed VoIP as either a steep discount or a reject. It’s not arbitrary: VoIP numbers are easy to obtain in bulk, which is why buyers associate them with fraud and arbitrage traffic.
dipCarrier (the actual carrier name, like T-Mobile or Verizon) matters too. Premium buyers in regulated verticals sometimes filter by carrier, not just type, because they treat some MVNOs and resellers (sub-type WRSL) as higher risk.
dipPorted flags whether a number has been ported from its original carrier. A ported number isn’t bad by itself, but when you combine it with a VoIP dipCarrierSubType and an IP mismatch, the picture gets ugly fast.
IP and geo consistency. Pass the IP address captured with the lead in the ip field and the geo fields (geoState, geoCity, timezone) come back from the IP, with geoSource set to "ip". Compare that against the state on the form and the number’s area code. If someone claims to be in Texas but their IP resolves to Romania and the number is a Montana landline, that lead is worthless. Buyers score IP match as one of the cleaner fraud signals because it’s hard to fake all three consistently.
Litigator status. This is the hard stop. If a buyer calls or texts a known TCPA litigator, the downside is a demand letter or a suit, with statutory damages of $500 per violation and up to $1,500 if willful (47 U.S.C. § 227(b)(3)). Running litigatorFilter: true on a CheckThatPhone lookup returns litigator, litigator_type, and litigator_name. A positive here is a zero-payout reject in virtually every compliant buying program. There’s no tier for it. It’s a discard. See TCPA litigator scrub for how buyers integrate this into real-time flows, and the affiliate marketer’s TCPA exposure for the seller’s side of that risk.
Deliverability flags. blackList, deliverable, and reason round out the picture. A number on our internal blacklist (a litigator match sets it too), or one that was recently deactivated (check deactivationDate), is stale inventory. Paying for a deactivated number is paying for nothing.
The three tiers in practice
Premium tier: dipCarrierType is "mobile", dipCarrierSubType is not IPES, the IP location matches the form, litigator is "false", blackList is "false", deliverable is "true". In a $40-CPL insurance vertical, this lead might command full price or close to it.
Discount tier: VoIP subtype, or an IP mismatch, or a ported number with a suspicious carrier chain. Buyers who accept these at all pay a fraction of full price. Many don’t accept them at all once they’ve burned enough budget on bad contact rates.
Hard reject: any litigator flag, deactivated number, or a combination of mismatch signals that crosses the buyer’s fraud threshold. No payout. Sometimes a chargeback.
The gap between premium and reject can be 100% of revenue on a given lead. That’s not a rounding error.
What sellers can do about it
The core problem for most lead sellers is that they’ve optimized their forms for conversion rate without thinking about what’s on the other side of the post. High form conversion often means low friction, which often means accepting whatever phone number a user types. That’s a recipe for VoIP pollution and fat-finger errors.
A few things that actually move the needle:
Validate at form submission, not after. Calling POST https://api.checkthatphone.com/v1/lookup (with Authorization: Bearer <key>) in real time during the form flow lets you reject or re-prompt before the lead is even submitted. If dipCarrierType comes back as anything but "mobile" or dipCarrierSubType comes back as IPES (VoIP), you can prompt the user to enter a valid cell number. You capture fewer submissions, but the ones you capture actually pay out.
Scrub your existing list before you pitch it to a new buyer. If you’re sitting on 50,000 unsold leads, don’t batch-post them and wait for rejection reports. Use bulk CSV verification from the CheckThatPhone dashboard (Dashboard, then Bulk CSV) to run the whole file, get carrier type, line type, litigator status, and deliverability back for every row, and pull the junk before the buyer ever sees it. The upload and the result file are deleted within 24 hours, which matters for data handling. For ongoing real-time checks on individual submissions, the /v1/lookup endpoint handles that row by row as leads come in.
Know which traffic sources produce which tier. Paid search on branded terms tends to produce real mobile numbers from real people. Incentivized traffic (sweepstakes, reward offers) produces VoIP and burner numbers at a much higher rate. Co-registration from broad display tends to sit in the middle. If you’re running a source that produces 30% VoIP on validation, that source is probably costing you more in chargebacks and rejects than it makes on payouts. Cut it or clean it.
Portability isn’t automatically a problem, but it’s a signal worth tracking. If dipPorted is "true" and the carrier chain looks unusual, flag that cohort separately and watch its contact rate. Sometimes it’s fine. Sometimes it’s a pattern.
For sellers in KYC-adjacent verticals (identity verification, financial onboarding), the phone number is also a fraud indicator independent of lead quality. Phone verification for KYC is a different but related read.
The practical next step
If you don’t know your current VoIP rate, litigator rate, or IP match rate across your active lead sources, that’s the first thing to fix. Pull a sample of 500 to 1,000 recent leads, run them through CheckThatPhone’s Bulk CSV tool, and look at the breakdown by source. If one or two sources account for most of your discount-tier and reject-tier volume, killing or fixing those is likely the fastest way to improve net revenue. Pricing is here if you want to check the cost before running the numbers, and the affiliate and lead-gen validation page shows how this fits a full lead-gen setup.
Buyers already have this data. The sellers who understand it too are the ones who hold their fill rates when everyone else’s are dropping.