The score is the sum of named rules. The rules and the points are in data/risk-rules.json, version 2026-10-12. Points add up and the total is capped at 100. Bands are 0 to 19 low, 20 to 49 review, and 50 or above high.
The score is an input to a person, not a decision. Do not refuse service on this score alone. That limit is the POPIA section 71 rule against a decision with legal effect based solely on automated processing. Nothing is stored. There is no live HLR lookup.
A points sum of named rules over a South African phone number, an email address, an ID number and an IP address. The rules and the points are published. The score is an input to a person, not a decision, and service must not be refused on this score alone.
API key. The free tier issues a key at /signup: send it as Authorization: Bearer <key> and calls come off a monthly allowance, no crypto anywhere in that path. Every key comes with a sandbox twin (vz_test_) that never counts against quota and accepts only the documented test inputs, so you can wire up an integration before spending a single call.
Pay per call. Send no key at all and a paid endpoint replies HTTP 402 with the exact payment requirements; an x402 client pays USDC on Base (about two seconds to settle) and retries automatically. No account, no signup, which is what makes it work for autonomous agents.
Either way, invalid input is rejected with a free 400 before any payment is challenged, so you never pay (or spend quota) to learn you made a typo.
South African ID number validation API South African VAT number validation API NCA credit agreement lawfulness API South African KYB and onboarding API South African contact validation API CIPC registration number check Domain age and registry status API IP address screening API Business pre-screen API Guides: how the interest rate caps work zaref: NCA maximum interest rates