- About the IPQS APIs
- Proxy & VPN Detection API
- Email Verification API
- Phone Number Validation API
- Malicious URL Scanner API
- Device Fingerprint API
- Mobile Device Fingerprinting SDK
- Gaming Fraud Detection SDK
- Dark Web Leak API
- Malware File Scanner API
- Request List API
- Fraud Reporting API
- Account Management APIs
- Bulk Validation CSV
- Allowlist Blocklist APIs
- Plugins Platforms Integrations
- IP Reputation Database
- IP Address Abuse Feed
- Email Verification Database
-
Custom Integrations
- Getting Started
- Authentication
- Refresh Secret
- IP & Proxy Checks
- Email Verification Checks
- Phone Number Validity Checks
- Device Tracker
- List Device Trackers
- Device Tracker Statistics
- Login Tokens
- Overview Statistics
- Recent Proxy Statistics
- Recent Email Statistics
- Fraud Reporting
- Retrieve Requests by ID
- Country List API Documentation
- Release Notes
User, Payment, & Transaction Fraud Detection
IPQS IP Reputation API, Email Verification API, Phone Number Validation API, and Device Fingerprint Technology support additional parameters to score payments or users, detect e-commerce fraud, and provide real-time online payment fraud detection. This transaction screening service is ideal for preventing chargeback fraud and performing advanced user scoring through our transaction risk API, which can identify even the most sophisticated fraudulent transactions on websites and apps.
IPQS can analyze additional user data for orders, payments, transactions, lead generation, and personal user information to enhance the accuracy of the transaction risk API fraud score. The fields listed below are entirely optional and provide additional data that can be used to detect fraudulent payments and suspicious behavior likely to generate chargeback fraud disputes. Any further data beyond the IP address greatly improves the detection of high-risk activity.
The transaction_details object displays transaction risk analysis. If only one address is available for the user or transaction screening process, enter the address data into the billing or shipping variables, rather than entering the same address in both variables. Passing the email address also contributes to detecting fraudulent users. However, the API will only perform a light abusive check. A full lookup with Email Verification API will provide greater detail and accuracy for email reputation. The transaction variables listed below are optional; you can ignore any irrelevant variables.
Example Request
In this example, the API will check the email address and phone number for recent abuse and validate the phone number. Only email addresses checked with our dedicated Email Verification API will be fully validated.
https://www.ipqualityscore.com/api/json/ip/YOUR_API_KEY_HERE/192.0.2.110?strictness=1&billing_email=example@example.com&billing_phone=5555555555&billing_country=US
Request Parameters
| Key | Expected Values | Description |
|---|---|---|
| billing_first_name | String | The customer's billing first name. |
| billing_last_name | String | The customer's billing last name. |
| billing_company | String | The customer's billing company. |
| billing_country | String | The customer's billing country name or billing country ISO-Alpha2. (EG: United States or US) |
| billing_address_1 | String | The customer's billing street address part 1. |
| billing_address_2 | String | The customer's billing street address part 2. |
| billing_city | String | The customer's billing city. |
| billing_region | String | The customer's shipping region or state. State must be two-letter abbreviation. (EG: CA, FL, NY) |
| billing_postcode | String / Number | The customer's billing postcode or zipcode. |
| billing_email | String | The customer's billing email address. |
| billing_phone | Number | The customer's billing 11 to 14 digit phone number. (If less than 10 digits provided, our system the will infer the country code.) |
| billing_address_distance | Object | |
| shipping_first_name | String | The customer's shipping first name. |
| shipping_last_name | String | The customer's shipping last name. |
| shipping_company | String | The customer's shipping company. |
| shipping_country | String | The customer's shipping country name or shipping country ISO-Alpha2. (EG: United States or US) |
| shipping_address_1 | String | The customer's shipping street address part 1. |
| shipping_address_2 | String | The customer's shipping street address part 2. |
| shipping_city | String | The customer's shipping city. |
| shipping_region | String | The customer's shipping region or state. State must be two-letter abbreviation. (EG: CA, FL, NY) |
| shipping_postcode | String / Number | The customer's shipping postcode or zipcode. |
| shipping_email | String | The customer's shipping email address. |
| shipping_phone | Number | The customer's billing 11 to 14 digit phone number. (If less than 10 digits provided, our system the will infer the country code.) |
| shipping_address_distance | Object | |
| username | String | The customer's username. |
| password_hash | SHA256 / string | For security reasons and following industry best practices, a SHA256 hash of the user's password for better user analysis. |
| credit_card_bin | Number | First six digits of the credit or debit card, referred to as the Bank Identification Number. |
| credit_card_last_four | Number | Last four digits of the credit or debit card, referred to as the "Primary Account Number" or simply "last four". |
| credit_card_hash (deprecated) | SHA256 / string | In general we recommend that customers supply the bin and last four of a credit card number for best results. PCI DSS v4 does not allow raw hashes of credit card numbers, however for backwards compatibility for older transactions, a SHA256 hash of the credit card number is accepted to check against blacklisted cards. If you are planning a new implementation please avoid using this field. |
| credit_card_expiration_month | Number | Two number format of the credit card's expiration month. For example, May would be "05". |
| credit_card_expiration_year | Number | Two number format of the credit card's expiration year. For example, 2022 would be "22". |
| avs_code | String | One letter Address Verification Service (AVS) response code provided by the credit card processor or bank. A full list of acceptable response codes can be viewed here. If your system cannot retrieve the exact response code, values of "pass" or "fail" can be used. Passing anything more than a single character to this field will return an error to prevent collecting the customer's CVV as this is not PCI DSS compliant. |
| cvv_code | String | One letter Card Verification Value (CVV2) response code provided by the credit card processor or bank. A full list of acceptable response codes can be viewed here. If your system cannot retrieve the exact response code, values of "pass" or "fail" can be used. Passing anything more than a single character to this field will return an error to prevent collecting the customer's CVV as this is not PCI DSS compliant. |
| order_amount | Number | Total balance of the entire order without currency symbols. |
| order_quantity | Number | Quantity of items for this order. |
| recurring | Boolean | Is this a recurring order that automatically rebills? |
| recurring_times | Number | If this is a recurring order, then how many times has this recurring order rebilled? For example, if this is the third time the user is being billed, please enter this value as "3". If this is the initial recurring order, please leave the value as blank or enter "1". |
| transaction_type | Enum (string) | The type of transaction occurring; One of the following values: "google", "apple", "stripe", "paypal", "credit_card", "cash_app", "venmo", "alipay", "ACH", "wire", "direct_debit", "check", "square", "shopify", "SEPA", "zelle", "crypto", "bitcoin", "litecoin", "monero", "bitpay", "etherium", "coingate", "other". If you have an additional payment method you would like to add please contact support for addition. |
| account_number | string | Alpha numeric string representing the bank account number, SEPA, crypto wallet address or other payment account number. Please do NOT use this field for credit cards numbers. Credit card numbers will be rejected with an error message. Please use credit_card_bin or credit_card_last_four for processing credit cards. |
| routing_number | string | Alpha numeric string representing the bank or financial institution. |
billing_address_distance fields
| Key | Expected Values | Description |
|---|---|---|
| miles | Number | The distance in miles between the customer's billing address and the location of their IP address. |
| kilometers | Number | The distance in kilometers between the customer's billing address and the location of their IP address. |
shipping_address_distance fields
| Key | Expected Values | Description |
|---|---|---|
| miles | Number | The distance in miles between the customer's shipping address and the location of their IP address. |
| kilometers | Number | The distance in kilometers between the customer's shipping address and the location of their IP address. |
Success Response Example
This is an example success response in JSON format. Responses are also available in XML format.
{
"message":"Success.",
"success":true,
"proxy":false,
"ISP":"Cox Communications",
"organization":"Cox Communications",
"ASN":22773,
"host":"ip70.lv.lv.cox.net",
"country_code":"US",
"city":"Nevada",
"region":"Las Vegas",
"is_crawler":false,
"connection_type":"Residential",
"latitude":36.14,
"longitude":-115.20,
"timezone":"America Los_Angeles",
"vpn":false,
"tor":false,
"active_vpn":false,
"active_tor":false,
"recent_abuse":true,
"abuse_velocity":"medium",
"bot_status":false,
"mobile":false,
"fraud_score":24,
"operating_system":"Mac 10.8",
"browser":"Chrome 81.0",
"device_model":"iPad",
"device_brand":"Apple",
"transaction_details":{
"valid_billing_address":false,
"valid_shipping_address":false,
"valid_billing_email":false,
"valid_shipping_email":false,
"risky_billing_phone":false,
"risky_shipping_phone":false,
"billing_phone_carrier":"AT&T Mobility",
"shipping_phone_carrier ":"Rogers Canada",
"billing_phone_line_type":"Wireless",
"shipping_phone_line_type":"Landline",
"billing_phone_country":"US",
"billing_phone_country_code":"1",
"shipping_phone_country":"US",
"shipping_phone_country_code":"1",
"fraudulent_behavior":false,
"bin_country":"US",
"bin_type":"Credit",
"bin_bank_name":"CITIBANK N.A.",
"risk_score":17,
"risk_factors":["Billing phone number is inactive.", "Billing email is associated with recent chargebacks."],
"is_prepaid_card":false,
"risky_username":false,
"valid_billing_phone":true,
"valid_shipping_phone":false,
"leaked_billing_email":true,
"leaked_shipping_email":false,
"leaked_user_data":true,
"user_activity":"high",
"phone_name_identity_match":"Match",
"phone_email_identity_match":"Mismatch",
"phone_address_identity_match":"No Match",
"email_name_identity_match":"Unknown",
"name_address_identity_match":"Match",
"address_email_identity_match":"Match"
},
"request_id":"0w8WYS"
}
Response Parameters
The Proxy Detection API returns the following variables, which provide risk analysis for users and transactions. You can also treat "billing" or "shipping" variables as a user's primary or secondary information group, even when billing is not involved, such as for lead generation or user scoring purposes.
The risk_score is a vital component in the risk analysis process. It serves as a quick and effective way to identify suspicious user behavior, with scores of 75 or higher indicating such behavior. Scores of 90 or higher point to high-risk payment details or user data.
All response variables are returned within the transaction_details object. These variables are populated when at least 1 transaction data parameter is present in the initial API request. The following transaction variables are "null" when the necessary transaction parameters are not passed with the initial API request. For example, not passing the billing_email will return valid_billing_email as null.
| Key | Description | Expected Values |
|---|---|---|
| risk_score | Confidence that this user or transaction is exhibiting malicious behavior. Scores are 0 - 100, with 75+ as suspicious and 90+ as high risk. This value uses different calculations with less weight on the IP reputation compared to the overall "Fraud Score". | Float |
| risk_factors | Explanation for elevated Risk Scores to better understand why the payment or user was associated with fraudulent behavior and considered a high risk. | String |
| valid_billing_address | Physical address validation and reputation analysis. | Boolean |
| valid_shipping_address | Physical address validation and reputation analysis. | Boolean |
| valid_billing_email | Light abusive check and reputation analysis for the email address. It is recommended to use our dedicated Email Verification API for deeper analysis. | Boolean |
| valid_shipping_email | Light abusive check and reputation analysis for the email address. It is recommended to use our dedicated Email Verification API for deeper analysis. | Boolean |
| leaked_billing_email | Indicates if the email address has recently been exposed or compromised in a database breach. | Boolean |
| user_activity | Frequency at which this user makes legitimate purchases, account registrations, and engages in legitimate customer behavior online. Values can be "high", "medium", "low", or "none". Values of "high" or "medium" are strong signals of healthy usage. New user data without a history of legitimate behavior will have a value as "none". This field is restricted to higher plan tiers. | String |
| leaked_shipping_email | Indicates if the email address has recently been exposed or compromised in a database breach. | Boolean |
| leaked_user_data | Indicates if the user's data (including phone & address) have recently been exposed or compromised in a database breach. | Boolean |
| risky_billing_phone | Reputation analysis for abusive activity associated with the phone number. | Boolean |
| risky_shipping_phone | Reputation analysis for abusive activity associated with the phone number. | Boolean |
| valid_billing_phone | Valid & active phone number with the phone carrier (not disconnected). | Boolean |
| valid_shipping_phone | Valid & active phone number with the phone carrier (not disconnected). | Boolean |
| billing_phone_carrier | Phone number provider company such as "AT&T" or "Bell Canada". | String |
| shipping_phone_carrier | Phone number provider company such as "AT&T" or "Bell Canada". | String |
| billing_phone_line_type | Landline, Wireless, Toll Free, VOIP, Satellite, Premium Rate, Pager, Internet Service Provider or Unknown. | String |
| shipping_phone_line_type | Landline, Wireless, Toll Free, VOIP, Satellite, Premium Rate, Pager, Internet Service Provider or Unknown. | String |
| billing_phone_country | 2-letter country code associated with the phone number. | String |
| billing_phone_country_code | Country dialing code associated with the phone number. | Integer |
| shipping_phone_country | 2-letter country code associated with the phone number. | String |
| shipping_phone_country_code | Country dialing code associated with the phone number. | Integer |
| bin_country | Country associated with the credit card BIN. | String |
| bin_bank_name | The bank or processor name associated with the credit card BIN, such as Citibank, Chase, Capital One, etc. | String |
| bin_type | Type of card associated with the credit card BIN. Values can be "Credit", "Debit", "Prepaid", or "Virtual". Prepaid and Virtual credit cards carry slightly higher risk. | String |
| risky_username | Username frequently associated with fraudulent behavior. | Boolean |
| is_prepaid_card | Status of the credit card as prepaid. | Boolean |
| fraudulent_behavior | Indicates high risk behavior patterns and a high chance of fraud. | Boolean |
| phone_name_identity_match | Enterprise Account Feature — Indicates a reverse identity match between the billing phone number and first/last name. Values: "Unknown" - no checks processed, "Match" - positive identity match, "Mismatch" - data matches another user, "No Match" - could not pair identity data. | String |
| phone_email_identity_match | Enterprise Account Feature — Indicates a reverse identity match between the billing phone number and email address. Values: "Unknown" - no checks processed, "Match" - positive identity match, "Mismatch" - data matches another user, "No Match" - could not pair identity data. | String |
| phone_address_identity_match | Enterprise Account Feature — Indicates a reverse identity match between the billing phone number and physical address. Values: "Unknown" - no checks processed, "Match" - positive identity match, "Mismatch" - data matches another user, "No Match" - could not pair identity data. | String |
| email_name_identity_match | Enterprise Account Feature — Indicates a reverse identity match between the billing email address and first/last name. Values: "Unknown" - no checks processed, "Match" - positive identity match, "Mismatch" - data matches another user, "No Match" - could not pair identity data. | String |
| name_address_identity_match | Enterprise Account Feature — Indicates a reverse identity match between the billing first/last name and physical address. Values: "Unknown" - no checks processed, "Match" - positive identity match, "Mismatch" - data matches another user, "No Match" - could not pair identity data. | String |
| address_email_identity_match | Enterprise Account Feature — Indicates a reverse identity match between the billing physical address and email address. Values: "Unknown" - no checks processed, "Match" - positive identity match, "Mismatch" - data matches another user, "No Match" - could not pair identity data. | String |
| recommended_action | The action we recommend for this Transaction, based on the risk_score or your Transaction Rules. This can be one of 4 values - "approve", "review", "3ds" or "deny". By default a risk score of 75 or less will be approve, between 75 and 85 review, between 85 and 95 3DS and above 95 deny. | String |