IPQualityScore¶
IPQualityScore (IPQS) provides IP reputation, email validation, and fraud scoring for checkout traffic. On each scored checkout it calls the IPQS Proxy/VPN Detection API and the Email Verification API, takes the higher of the two fraud scores, and returns an allow / review / block decision against configurable thresholds. Use it for pre-payment screening that catches proxies, VPNs, Tor exit nodes, bots, and disposable or abusive email addresses before payment is attempted.
At a glance
| Extension id | ipqs |
| Category | security |
| Version | 1.0.0 |
| Provides | Fraud scoring strategy (fraud_scoring) |
| External account | IPQualityScore account with an API key |
What It Provides¶
- A
FraudScoringStrategyimplementation registered under the provider nameipqs(per-provider registration). The core fraud engine resolves it with channel-enablement awareness and merges its result with the core rule engine's own factors — see Fraud Scoring Extensions. - Checkout scoring (
score_checkout) — runs in the core pre-payment fraud assessment during checkout. Queries two IPQS REST endpoints:- Proxy/VPN Detection (
/api/json/ip/...) — returns an IP fraud score plus signals:vpn,tor,proxy,bot_status,is_crawler,recent_abuse,abuse_velocity, and country code. - Email Verification (
/api/json/email/...) — returns an email fraud score plus signals:valid,disposable,honeypot,spam_trap_score,smtp_score,recent_abuse,leaked, andsuspect.
- Proxy/VPN Detection (
- Login scoring (
score_login) — the same combined IP + email check, implemented on the strategy interface. - Decision mapping — the higher of the IP and email fraud scores (IPQS 0–100 scale) is compared against the thresholds: at or above
block_thresholdthe decision isblock, at or abovereview_thresholdit isreview, otherwiseallow. The score is also normalized to the platform's 0–1 risk scale.
Setup¶
- Enable IPQualityScore for the channel under Settings > Extensions (extension enablement is per-channel).
- Provide the API key from your IPQS dashboard.
api_keyis a secret config field (encrypted at rest and masked in the admin); the strategy factory also falls back to theIPQS_API_KEYenvironment variable — see the credential-resolution note under Operational Notes. - Adjust
strictness,review_threshold, andblock_thresholdto match your risk tolerance.
Configuration Reference¶
| Key | Type | Required | Secret | Description |
|---|---|---|---|---|
api_key |
string | Yes | Yes | Your IPQS API key from the dashboard |
strictness |
integer | No | No | 0 = lenient, 1 = moderate (recommended), 2 = strict. Default: 1 |
review_threshold |
integer | No | No | IPQS score (0-100) at which orders are held for review. Default: 75 |
block_threshold |
integer | No | No | IPQS score (0-100) at which checkout is blocked. Default: 90 |
Permissions¶
This extension declares no permissions in its manifest.
Operational Notes¶
Credential resolution
The strategy proxy registered at boot builds the scorer per call without a channel-config payload, so credentials and thresholds resolve from the IPQS_API_KEY environment variable and the code defaults above at scoring time. Make sure IPQS_API_KEY is set on the API service.
- Fail-open — with no API key configured the strategy returns
allowwith score 0. A failed IP or email lookup is logged as a warning and that sub-score is treated as 0; checkout is never aborted by a provider outage. HTTP calls use a 10-second timeout. - Pre-payment only — IPQS implements checkout and login scoring; the post-payment hook returns the interface default (
allow). For post-authorization guarantee decisions, see Signifyd or Riskified. - Merged scoring — the extension score is combined with the core rule engine (blocklist, velocity, address checks); the merged result records its provider as
core+ipqs. A pre-paymentblockdecision aborts checkout with "Order blocked by fraud detection". - One provider per channel — if more than one fraud extension is enabled on a channel, checkout logs a warning and uses the alphabetically-first provider name.
- IP check parameters — requests send your configured
strictnesswithallow_public_access_points=trueandlighter_penalties=false, and include the shopper's user agent when available.