The Merchant Integrity Score (MIS) uses a deduction-based model. Merchants start at 100 and lose points for risk signals. Higher scores indicate more trustworthy merchants.
Verifies whether the merchant is a legitimate, registered business. Checks company registration, status, and geographic consistency. These signals carry high penalties as they indicate fundamental trust issues.
| Signal | Penalty | Triggered When |
|---|---|---|
| company_dissolved | -35 pts | Company status is dissolved |
| no_legal_entity | -25 pts | No legal entity found (CVR/VAT) |
| domain_company_mismatch | -25 pts | Domain and legal entity don't match |
| country_mismatch | -20 pts | Entity country differs from site country |
| company_status | -5 pts | Company status is unknown |
Analyzes the technical setup including domain age, SSL certificates, and TLS configuration. Newer domains and weak security configurations incur penalties.
| Signal | Penalty | Triggered When |
|---|---|---|
| domain_age | -15 pts | Domain < 6 months old or age unknown |
| domain_age | -8 pts | Domain 6-24 months old |
| https_tls | -10 pts | HTTPS missing or TLS invalid |
| https_tls | -5 pts | TLS weak configuration |
Evaluates customer sentiment from review platforms, primarily Trustpilot. Low ratings and insufficient review history incur penalties. No Trustpilot profile is treated as a risk signal.
| Signal | Penalty | Triggered When |
|---|---|---|
| reputation | -15 pts | Trustpilot rating < 2.5/5 (very low) |
| reputation | -10 pts | Trustpilot rating < 3.2/5 (low) or no profile |
| reputation | -8 pts | Low review volume (< 20 reviews) |
Analyzes infrastructure patterns to detect connections to known fraudulent operations. Known bad IPs trigger significant penalties. If no cluster data is available, no penalty is applied (fail-soft).
| Signal | Penalty | Triggered When |
|---|---|---|
| cluster | -20 pts | Known bad IP detected |
| cluster | -8 pts | Shared IP with flagged merchants |
Verifies merchant contact information and legal compliance. Checks for proper address, phone, returns policy, and consistency across pages. Missing or inconsistent information incurs penalties.
| Signal | Penalty | Triggered When |
|---|---|---|
| company_name_mismatch | -15 pts | Company name inconsistent across legal pages |
| returns_country_mismatch | -15 pts | Returns country differs from entity country |
| cvr_invalid | -15 pts | CVR number format or checksum invalid |
| delivery_mismatch | -15 pts | Claimed delivery faster than actual terms |
| history_mismatch | -15 pts | Company claims to be older than domain |
| contact | -12 pts | No address and no phone detected |
| pricing_mismatch | -10 pts | Currency mismatch or VAT not disclosed |
| contact | -8 pts | Webmail-only contact email |
Sanctions screening via OpenSanctions API. A sanctions hit is a fatal signal that immediately clamps the score to a maximum of 5, resulting in an automatic FAILED outcome regardless of other signals.
| Signal | Effect | Triggered When |
|---|---|---|
| sanctions_hit | -95 pts (max 5) | Company name matches sanctions/PEP/crime database |