Fraud API

SEON's proprietary API combines our email, phone number, IP, BIN, and AML APIs with device fingerprinting so that you can request and receive our enriched data, rules, and scoring in a single API call.

Good to know

  • The API is fully modular, meaning you can choose to enable or disable each sub-APIs (Email, Phone, IP, or AML) or the device fingerprinting tool. Use the config object to enable or disable modules.
  • You can use the custom_fields object to send almost any custom data point to SEON. Your team can also use custom fields in rules to create a completely custom ruleset.
  • All SEON API requests are case-sensitive. Please follow the formatting below to avoid errors.
  • It's recommended to populate all user name related fields as much as possible (user_fullname, user_firstname, user_middlename, user_lastname

For more context on how to begin your API integration check the Introduction section or our Integration Guide.

Ā 

Request

Ā 

Request Attributes

Ā TypeRequired
config
Ā objectno
action_type
Ā stringno
ip
Ā stringno
transaction_id
Ā stringno
affiliate_id
Ā stringno
affiliate_name
Ā stringno
order_memo
Ā stringno
email
Ā stringno
email_domain
Ā stringno
payment_id
Ā stringno
password_hash
Ā stringno
user_fullname
Ā stringno
user_name
Ā stringno
user_firstname
Ā stringno
user_middlename
Ā stringno
user_lastname
Ā stringno
user_pob
Ā stringno
id_value
Ā Ā 
user_photoid_number
Ā stringno
user_id
Ā stringno
user_created
Ā integerno
user_category
Ā stringno
user_account_status
Ā stringno
user_bank_account
Ā stringno
user_bank_name
Ā stringno
user_bank_swift
Ā stringno
user_bank_country
Ā stringno
user_balance
Ā floatno
user_verification_level
Ā stringno
user_dob
Ā dateno
user_country
Ā stringno
user_city
Ā stringno
user_region
Ā stringno
user_zip
Ā stringno
user_street
Ā stringno
user_street2
Ā stringno
session_id
Ā stringno
session
Ā stringno
device_id
Ā stringno
payment_mode
Ā stringno
payment_provider
Ā stringno
card_fullname
Ā stringno
card_bin
Ā stringno
card_hash
Ā stringno
card_expire
Ā dateno
card_last
Ā stringno
avs_result
Ā stringno
cvv_result
Ā booleanno
status_3d
Ā stringno
sca_method
Ā stringno
phone_number
Ā stringno
transaction_type
Ā stringno
transaction_amount
Ā floatno
transaction_currency
Ā stringno
transaction_long_textĀ 
Ā stringno
items
Ā array ofĀ objectsno
shipping_country
Ā stringno
shipping_city
Ā stringno
shipping_region
Ā stringno
shipping_zip
Ā stringno
shipping_street
Ā stringno
shipping_street2
Ā stringno
shipping_phone
Ā stringno
shipping_fullname
Ā stringno
shipping_method
Ā stringno
billing_country
Ā stringno
billing_city
Ā stringno
billing_region
Ā stringno
billing_zip
Ā stringno
billing_street
Ā stringno
billing_street2
Ā stringno
billing_phone
Ā stringno
pos_lat
Ā floatno
pos_long
Ā floatno
custom_lat
Ā floatno
custom_long
Ā floatno
discount_code
Ā stringno
gift
Ā booleanno
gift_message
Ā booleanno
merchant_category
Ā stringno
merchant_id
Ā stringno
merchant_name
Ā stringno
merchant_created_at
Ā integerno
merchant_country
Ā stringno
receiver_fullname
Ā stringno
receiver_firstname
Ā stringno
receiver_middlename
Ā stringno
receiver_lastname
Ā stringno
receiver_dob
Ā stringno
receiver_pob
Ā stringno
receiver_id
Ā stringno
receiver_country
Ā stringno
receiver_photoid_number
Ā stringno
receiver_bank_account
Ā stringno
receiver_bank_swift
Ā stringno
receiver_bank_name
Ā stringno
receiver_bank_country
Ā stringno
details_url
Ā stringno
regulation
Ā stringno
bonus_campaign_id
Ā stringno
brand_id
Ā stringno
custom_fields
Ā objectno

HTTP Endpoint

POST

https://api.seon.io/SeonRestService/fraud-api/v2/
PHP
Ecommerce
Withdrawal

Response

The endpoint returns JSON structured response.

JSON Attributes

Ā Type
id
Ā string
state
Ā string
fraud_score
Ā number
blackbox_score
Ā number
ip_details
Ā object
email_details
Ā object
bin_detailsĀ 
Ā object
phone_details
Ā object
aml_details
Ā object
version
Ā string
applied_rules
Ā array ofĀ objects
device_details
Ā object
missing_device_details_reason
Ā string
geolocation_details
Ā object
calculation_time
Ā integer
seon_id
Ā integer
rule_category_details
Ā array of objects
string_analyses
Ā array of objects
ekyc_result
Ā string
ekyc_data
Ā Object
Response
{
    "success": true,
    "error": {},
    "data": {
        "id": "67c2810c2de1",
        "state": "DECLINE",
        "fraud_score": 95.75,
        "blackbox_score": 93.25,
        "bin_details": {
            "card_bin": "414141",
            "bin_bank": "VERMONT NATIONAL BANK",
            "bin_card": "VISA",
            "bin_type": "CREDIT",
            "bin_level": "CLASSIC",
            "bin_country": "UNITED STATES",
            "bin_country_code": "US",
            "bin_website": "www.vermontnationalbank.com",
            "bin_phone": "+1 802 476 0030",
            "bin_valid": true,
            "card_issuer": "VISA"
        },
        "version": "v2",
        "applied_rules": [
            {
                "id": "1000702",
                "name": "Phone possible is equal to true",
                "operation": "+",
                "score": 1.11
            },
            {
                "id": "1000682",
                "name": "has_pep_match is not listed on watchlist2",
                "operation": "+",
                "score": 0.0
            },
            {
                "id": "P106",
                "name": "Customer is using a datacenter ISP",
                "operation": "+",
                "score": 10.0
            },
            {
                "id": "1000715",
                "name": "Temp ARC 2 category specific rule",
                "operation": null,
                "score": 0.0
            },
            {
                "id": "P110",
                "name": "IP address was found on 4 spam blacklists",
                "operation": "+",
                "score": 4.0
            },
            {
                "id": "1000671",
                "name": "has_sanction_match is equal to true",
                "operation": "+",
                "score": 0.0
            },
            {
                "id": "1000687",
                "name": "has_sanction_match is not listed on watchlist2",
                "operation": "+",
                "score": 0.0
            },
            {
                "id": "1000707",
                "name": "Rule C (User category is equal to VIP)",
                "operation": "+",
                "score": 0.0
            },
            {
                "id": "1000718",
                "name": "Domain creation date is greater than 1 month ago",
                "operation": "+",
                "score": 0.0
            },
            {
                "id": "1000670",
                "name": "has_watchlist_match is equal to false",
                "operation": "+",
                "score": 0.0
            },
            {
                "id": "1000696",
                "name": "Phone number valid is equal to true",
                "operation": "+",
                "score": 1.11
            },
            {
                "id": "P112",
                "name": "Customer is using public proxy",
                "operation": "+",
                "score": 10.0
            },
            {
                "id": "1000716",
                "name": "Temp ARC 2",
                "operation": "+",
                "score": 30.0
            },
            {
                "id": "1000713",
                "name": "Temp ARC category specific rule",
                "operation": null,
                "score": 0.0
            },
            {
                "id": "1000699",
                "name": "Phone country is equal to HU",
                "operation": "+",
                "score": 1.11
            },
            {
                "id": "E123",
                "name": "Email is not similar to user full name",
                "operation": "+",
                "score": 1.0
            },
            {
                "id": "1000674",
                "name": "Free email is equal to true",
                "operation": "+",
                "score": 1.11
            },
            {
                "id": "1000680",
                "name": "has_crimelist_match is not listed on watchlist2",
                "operation": "+",
                "score": 0.0
            },
            {
                "id": "PH100",
                "name": "At least 2 online profiles were found",
                "operation": "+",
                "score": 5.2
            },
            {
                "id": "1000666",
                "name": "has_crimelist_match is equal to false",
                "operation": "+",
                "score": 0.0
            },
            {
                "id": "1000706",
                "name": "Rule B (Affiliate full name is equal to Affiliate Two)",
                "operation": "+",
                "score": 0.0
            },
            {
                "id": "1000692",
                "name": "Sanction list match is equal to true",
                "operation": "+",
                "score": 0.0
            },
            {
                "id": "1000705",
                "name": "Rule A (Affiliate ID is equal to a002)",
                "operation": "+",
                "score": 0.0
            },
            {
                "id": "1000685",
                "name": "has_watchlist_match is not listed on watchlist2",
                "operation": "+",
                "score": 0.0
            },
            {
                "id": "1000698",
                "name": "Phone type is equal to Mobile",
                "operation": "+",
                "score": 1.11
            },
            {
                "id": "1000668",
                "name": "has_pep_match is equal to false",
                "operation": "+",
                "score": 0.0
            },
            {
                "id": "1000708",
                "name": "Rule D (User account status is equal to verified)",
                "operation": "+",
                "score": 0.0
            },
            {
                "id": "1000714",
                "name": "ARC User full name is equal to User full name",
                "operation": "+",
                "score": 30.0
            },
            {
                "id": "1000647",
                "name": "Count if Previous Email address similarity is equal to SIMILAR Email for the same Email domain is greater than 0",
                "operation": "+",
                "score": 0.0
            }
        ],
        "device_details": {
            "os": "MacOS",
            "type": "web",
            "dns_ip": null,
            "source": "js-5.8.0",
            "adblock": true,
            "browser": "FIREFOX10",
            "private": true,
            "platform": "MacIntel",
            "font_hash": "09894f345df34ce7ca5b86118ca1bec4",
            "font_list": [],
            "audio_hash": "35.73833039775491",
            "dns_ip_isp": null,
            "font_count": 13,
            "session_id": "90a87abb-91bc-5dc2-96f2-996acb894dd9",
            "user_agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:102.0) Gecko/20100101 Firefox/102.0",
            "webgl_hash": null,
            "webrtc_ips": [ '70.111.37.513', '0.0.0.0'
            ],
            "canvas_hash": "b1f0e02120278dbf75e77cb92980648d",
            "cookie_hash": "b29b21a6ba46b2770bb1737fd6c06c7d",
            "device_hash": "73604e79a0321f57249e82e27273a7a0",
            "device_type": "desktop",
            "plugin_hash": "29b51cf1619fb6943f256c2c6da59432",
            "plugin_list": [
                "PDF Viewer",
                "Chrome PDF Viewer",
                "Chromium PDF Viewer",
                "Microsoft Edge PDF Viewer",
                "WebKit built-in PDF"
            ],
            "window_size": "1600x800",
            "browser_hash": "4c58b2c53ea7489232cddeb897efaf7a",
            "do_not_track": null,
            "java_enabled": false,
            "plugin_count": 5,
            "webgl_vendor": null,
            "webrtc_count": 2,
            "battery_level": 44,
            "device_ip_isp": null,
            "device_memory": null,
            "flash_enabled": false,
            "social_logins": [],
            "touch_support": false,
            "cookie_enabled": true,
            "dns_ip_country": "HU",
            "accept_language": [],
            "browser_version": "102.0",
            "device_location": {
                "zip": "1051",
                "city": "Budapest",
                "region": "HU-BU",
                "status": "SUCCESS",
                "accuracy": 5,
                "latitude": 47.4810949,
                "longitude": 18.9651553,
                "country_code": "HU"
            },
            "region_language": "en-US",
            "region_timezone": "+00:00",
            "battery_charging": null,
            "webrtc_activated": true,
            "device_ip_address": "15.130.507.00",
            "device_ip_country": "HU",
            "screen_resolution": "1600x800",
            "screen_color_depth": 24,
            "screen_pixel_ratio": 1,
            "hardware_concurrency": 2,
            "screen_available_resolution": "1600x800"
        },
        "calculation_time": 2327,
        "seon_id": 12602,
        "ip_details": {
            "ip": "1.1.1.1",
            "country": "AU",
            "state_prov": "Queensland",
            "city": "Brisbane",
            "timezone_offset": "+10:00",
            "isp_name": "APNIC and CloudFlare DNS Resolver Project",
            "latitude": -27.48159,
            "longitude": 153.0175,
            "type": "CDN",
            "open_ports": [
                8080,
                80
            ],
            "tor": false,
            "harmful": true,
            "vpn": false,
            "provider_name": null,
            "data_center_proxy": true,
            "residential_proxy": false,
            "consumer_privacy_network": false,
            "enterprise_private_network": false,
            "search_engine_spider": false,
            "web_proxy": false,
            "public_proxy": false,
            "spam_urls": [
                "zen.spamhaus.org"
            ],
            "score": 3.0,
            "applied_rules": [
                {
                    "id": "P107",
                    "name": "IP address was found on 1 spam blacklist",
                    "operation": "+",
                    "score": 0.0
                },
                {
                    "id": "P102",
                    "name": "Port 80 is open on the IP address",
                    "operation": "+",
                    "score": 1.0
                },
                {
                    "id": "P114",
                    "name": "Customer is using a harmful IP address",
                    "operation": "+",
                    "score": 2.0
                }
            ],
            "spam_number": 1
        },
        "email_details": {
            "id": "67b0f0e5-42df-40d3-b744-5fb510d83cf2",
            "email": "johndoe@seon.io",
            "risk_scores": {
                "global_network_score": 11.26
            },
            "email_details": {
                "deliverable": true,
                "full_inbox": false,
                "valid_format": true,
                "minimum_age_months": 200,
                "earliest_profile_date": "2008-07-01 00:00:00",
                "email_randomness_score": 2.48
            },
            "email_domain_details": {
                "accept_all": false,
                "created": "2015-03-20 12:42:37",
                "custom": true,
                "disposable": false,
                "dmarc_enforced": true,
                "domain": "seon.io",
                "expires": "2025-03-20 12:42:37",
                "free": false,
                "registered": true,
                "registered_to": "Seon Ltd.",
                "registrar_name": "NameCheap, Inc.",
                "spf_strict": true,
                "suspicious_tld": false,
                "tld": "io",
                "updated": "2024-02-24 08:11:02",
                "valid_mx": true,
                "website_exists": true
            },
            "account_aggregates": {
                "total_registration": 39,
                "business": {
                    "total_registration": 14,
                    "technology": {
                        "registered": 11,
                        "checked": 34
                    },
                    "science_and_education": {
                        "registered": 2,
                        "checked": 7
                    },
                    "jobs_and_employment": {
                        "registered": 1,
                        "checked": 4
                    },
                    "money_transfer_remittance": {
                        "registered": 0,
                        "checked": 2
                    }
                },
                "personal": {
                    "total_registration": 25,
                    "email_service": {
                        "registered": 2,
                        "checked": 6
                    },
                    "betting_and_gaming": {
                        "registered": 2,
                        "checked": 6
                    },
                    "dating": {
                        "registered": 2,
                        "checked": 6
                    },
                    "real_estate": {
                        "registered": 2,
                        "checked": 6
                    },
                    "technology": {
                        "registered": 2,
                        "checked": 7
                    },
                    "adult_sites": {
                        "registered": 0,
                        "checked": 2
                    },
                    "delivery": {
                        "registered": 0,
                        "checked": 2
                    },
                    "ecommerce": {
                        "registered": 3,
                        "checked": 16
                    },
                    "entertainment": {
                        "registered": 7,
                        "checked": 28
                    },
                    "ai_platforms": {
                        "registered": 7,
                        "checked": 9
                     },
                     "messenger": {
                        "registered": 1,
                        "checked": 1
                    },
                    "health_and_fitness": {
                        "registered": 2,
                        "checked": 4
                    },
                    "social_media": {
                        "registered": 8,
                        "checked": 21
                    },
                    "travel": {
                        "registered": 1,
                        "checked": 7
                    }
                }
            },
            "seon_fraud_history": {
                "fraudulent_decline_first_seen": 1625384237,
                "fraudulent_decline_last_seen": 1713949826,
                "fraudulent_decline_customer_hits": 2,
                "fraudulent_decline_hits": 2,
                "first_seen": 1584887689,
                "last_seen": 1713949826,
                "customer_hits": 4,
                "hits": 9,
                "flags": []
            },
            "breach_details": {
                "breaches": [
                    {
                        "date": "2018-07-23",
                        "domain": "apollo.io",
                        "name": "Apollo"
                    },
                    {
                        "date": "2019-05-24",
                        "domain": "canva.com",
                        "name": "Canva"
                    },
                    {
                        "date": "2020-09-28",
                        "domain": "gonitro.com",
                        "name": "Nitro"
                    },
                    {
                        "date": "2021-08-01",
                        "domain": "opensubtitles.org",
                        "name": "Open Subtitles"
                    },
                    {
                        "date": "2018-12-13",
                        "domain": "wanelo.com",
                        "name": "Wanelo"
                    }
                ],
                "first_breach": "2018-07-23",
                "last_breach": "2021-08-01", 
                "haveibeenpwned_listed": true,
                "number_of_breaches": 5
            },
            "associated_domain_registrations": {
                "exists": true,
                "number_of_domains": 1,
                "domains": [
                    {
                        "domain_name": "thisisasampledomain.com",
                        "create_date": "2015-08-07 00:00:00",
                        "update_date": "2015-08-07 00:00:00",
                        "expiry_date": "2016-08-07 00:00:00",
                        "registrar_name": "GoDaddy.com, LLC",
                        "full_name": "John Doe",
                        "company_name": "JD Enterprises Ltd",
                        "mailing_address": "472, Doejohn Street",
                        "city_name": "JD City",
                        "state_name": "N/A",
                        "zip_code": "JD1234",
                        "country_code": "JD",
                        "phone_number": "1234556789"
                    }
                ],
                "first_registration_date": "2015-08-07 00:00:00"
            }
        },
        "phone_details": {
            "id": "9c02924f-9fa0-432c-9f0b-9a12873870b7",
            "phone": 36301234567,
            "risk_scores": {
                "global_network_score": 67.62
            },
            "account_aggregates": {
                "total_registration": 12,
                "business": {
                    "total_registration": 5,
                    "technology": {
                        "registered": 2,
                        "checked": 1
                    },
                    "science_and_education": {
                        "registered": 0,
                        "checked": 1
                    },
                    "jobs_and_employment": {
                        "registered": 1,
                        "checked": 0
                    },
                    "money_transfer_remittance": {
                        "registered": 2,
                        "checked": 4
                    }
                },
                "personal": {
                    "total_registration": 7,
                    "email_service": {
                        "registered": 1,
                        "checked": 1
                    },
                    "betting_and_gaming": {
                        "registered": 2,
                        "checked": 6
                    },
                    "dating": {
                        "registered": 2,
                        "checked": 6
                    },
                    "real_estate": {
                        "registered": 2,
                        "checked": 6
                    },
                    "messenger": {
                        "registered": 1,
                        "checked": 3
                    },
                    "technology": {
                        "registered": 0,
                        "checked": 3
                    },
                    "delivery": {
                        "registered": 1,
                        "checked": 1
                    },
                    "ecommerce": {
                        "registered": 2,
                        "checked": 6
                    },
                    "entertainment": {
                        "registered": 0,
                        "checked": 3
                    },
                    "social_media": {
                        "registered": 1,
                        "checked": 9
                    },
                    "travel": {
                        "registered": 1,
                        "checked": 1
                    }
                }
            },
            "seon_fraud_history": {
                "fraudulent_decline_first_seen": 1625384237,
                "fraudulent_decline_last_seen": 1713949826,
                "fraudulent_decline_customer_hits": 2,
                "fraudulent_decline_hits": 2,
                "first_seen": 1584887689,
                "last_seen": 1713949826,
                "customer_hits": 4,
                "hits": 9,
                "flags": []
            },
            "provider_carrier_details": {
                "carrier": "Verizon Ltd",
                "country": "US",
                "disposable": false,
                "phone_is_valid": true,
                "type": "MOBILE"
            },
            "hlr_details": {
                "imsi": "316000000000000",
                "original_carrier": {
                    "carrier": "Verizon Wireless",
                    "carrier_prefix": "212333"
                },
                "ported_carrier": {
                    "carrier": "USA - Landline and Other Carriers",
                    "carrier_prefix": "252271"
                },
                "roaming_carrier": {
                    "carrier": null,
                    "carrier_prefix": null,
                    "carrier_country": null
                },
                "serving_msc": null,
                "status": "delivered"
            },
            "cnam_details": {
                "name": "John Doe"
            }
        },
        "geolocation_details": {
            "user_billing_distance": 15265.747,
            "user_shipping_distance": 15162.088,
            "billing_shipping_distance": 7677.429,
            "ip_user_distance": 10210.516,
            "ip_billing_distance": 12056.986,
            "ip_shipping_distance": 5019.496
        },
        "aml_details": null
    }
}

JavaScript Agent v6

You can integrate our Ā device fingerprinting module directly into a web app, by using our JavaScript agent. Please, use our CDN hosted script to ensure you always load the latest available version.

Visit the SEON Web SDK GitHub page to see the latest version and its changelog.

  1. Include the JavaScript Agent for example inside the <head> tags of your website or web app. You can also lazy-load it or execute it upon specific actions (e.g. clicking on Login, Payment, and Registration buttons, before calling the API). In this case, you must ensure that the module has been loaded successfully before invoking its methods.
  2. Call the seon.init() function on page load to get more data points for bot detection, behavioral analysis and more accurate intelligence signals.
  3. Call the seon.getSession(config) function to generate the encrypted deviceĀ  intelligence session.
  4. Send the returned session payload string to your backend and add to the session property in your Fraud API request. The Fraud API call should be still executed if the session is missing, due to a non-executed JS snippet. Tip: Add timeout to JS and utilize Fraud API call after.

All the device fingerprinting data will be available in the response of the Fraud API, and accessible on the Admin Panel of the Transactions Details page.

Ā 

Configuration parameters

To configure the JavaScript module, you need to create a config object and call the seon.getSession(config) function

JSON Attributes

Required
geolocation
no
behavioralDataCollection
no
networkTimeoutMs
no
dnsResolverDomain
no
silentMode
no
referrer
no
windowLocation
no
region
no
fieldTimeoutMs
no
throwOn
no

Ā 

Ā 

Integration

Device Intelligence signals can be triggered by the seon.Session() function. After collecting all the available information, the function returns an encrypted base64 encoded payload. If you would like to use your custom configuration, please include the config object in the function.

Without using the seon.init() on page load you will still receive valid device intelligence signals with most of the functions but it will not contain the behavioral signals. Additionally, the bot detection and browser hash may be less precise.

If your website uses Content Security Policy (CSP) headers, ensure that the following sources are allowed for full functionality, depending on your host configuration:

Ā 

Behavioral features

Calling the seon.init() method will enable behavioral analysis. The user behavior collection is started on the seon.init() call and ends when seon.getSession() is called (behavioral data will be automatically included in the generated session string). Thus the recommended integration pattern is calling init on the form load, and calling getSession on form submit to analyze user behavior during a form fillout. Suspicious behavior is flagged in the suspicious_flags response field, which can contain the following values:

  • suspicious_keypress_characteristics
  • suspicious_mouse_movement
  • suspicious_form_fillout
  • paste_used
  • autofill_used
  • potential_remote_interaction
  • potential_remote_control

By default, user interaction is analyzed on the whole page. If you want to target specific input fields or forms for behavior analysis, you can customize it using the behavioralDataCollection init configuration option:

The targeted elements MUST exist at the time of the init call. Elements that match the selector, but added to the DOM after the init call will NOT be part of the evaluation.

To disable behavioral data collection by the SDK altogether, you must specify an empty string for the targets option:

Ā 

Payload

SEON JavaScript library collects device information and prepares an encrypted payload to use in Fraud API. The information on client side is not readable, we’ll reveal in the Fraud API response and on the Admin Panel. Some fields can be null, if the actual browser does not support or return data for that specific data point. In every other case, data types are preserved. Find a sample payload on the right side.

Ā 

Common issues

  • The session is provided in the Fraud API request, but the device_details is null in the response and there is no device information on the Transaction details page. This means the encrypted payload is corrupted. Please look into your integration and check again.
  • If you use CSP (Content Security Policy) headers on your site, you must allowĀ the following domains inĀ connect-srcĀ directive for full functionality based on your host configuration.

    Default: *.seondnsresolve.com
    deviceinf.com: *.deviceinfresolver.com
    seonintelligence.com: *.seonintelligenceresolver.com

    Alternatively you integrate the SDK through NPM. With this method you will have to keep the package updated yourself to include our latest features and bugfixes.

NPM integration

npm install @seontechnologies/seon-javascript-sdk
# or
yarn add @seontechnologies/seon-javascript-sdk

Ā 

Response

JSON Attributes

Type
os
string
vpn
boolean
type
string
proxy
boolean
webgl
object
dns_ip
string
locale
string
source
string
adblock
boolean
battery
object
browser
string
plugins
object
private
boolean
platform
string
referrer
string
timezone
string
device_ip
string
font_hash
string
font_list
array
has_focus
boolean
languages
array
math_hash
string
audio_hash
string
dns_ip_isp
string
extensions
array
font_count
integer
font_noise
boolean
session_id
string
user_agent
string
webrtc_ips
array
canvas_hash
string
cookie_hash
string
device_hash
string
device_type
string
mouse_moved
boolean
permissions
object
price_range
string
screen_data
object
browser_hash
string
do_not_track
boolean
java_enabled
boolean
webrtc_count
integer
device_ip_isp
string
device_memory
integer
dns_ip_region
string
flash_enabled
boolean
media_devices
object
spoofing_hash
string
touch_support
boolean
cookie_enabled
boolean
dns_ip_country
string
mobile_details
array
browser_version
string
device_location
object
drm_key_systems
array
mime_types_hash
string
timezone_offset
string
user_agent_data
object
window_location
string
device_ip_region
string
max_touch_points
integer
suspicious_flags
array
timezone_country
string
webrtc_activated
boolean
device_ip_country
string
system_colors_hash
string
browser_version_age
integer
hardware_concurrency
integer
keyboard_layout_hash
string
keyboard_layout_name
string
unpopular_user_agent
boolean
unpopular_device_resolution
boolean
true_device_id
string

Ā 

<html>
  <head>
    ...
    <script src="[source_url]"></script>
  </head>
  <body>
    ...
  </body>
</html>

Ā 

You can use the following script source URLs ([source_url]):

Ā 

Ā 

Ā 

Ā 

Ā 

Ā 

Ā 

Ā 

Ā 

Ā 

Ā 

Ā 

Ā 

// On page load:
seon.init();

const config = {
  geolocation: {
   canPrompt: false,
  },
  networkTimeoutMs: 2000,
  fieldTimeoutMs: 2000,
  region: 'eu',
  silentMode: true,
};

Ā 

Ā 

Ā 

Ā 

Ā 

Ā 

Ā 

Ā 

Ā 

const session = await seon.getSession(config);
// 'session' variable holds the encrypted device fingerprint that should be sent to SEON

Check out our integration examples:

  • https://stackblitz.com/@dfseon/collections/seon-web-sdk-v6-demos

Ā 

Ā 

// On load
seon.init({
  behavioralDataCollection: {
 Ā Ā  targets: 'input[type="text"], .behavior', // querySelector string
 Ā Ā  formFilloutDurationTargetId: "myForm", // select form with id 'myForm'
  }
});
// On form submit
await seon.getSession();

Ā 

// Disabling behavioral analysis
seon.init({
  behavioralDataCollection: {
 Ā Ā  targets: '', // pass an emtpy string for targets
  }
});

Ā 

Response
"device_details": {
  "device_location": {
      "accuracy": 20,
      "latitude": 47.4379457,
      "longitude": 19.1125038,
      "status": "SUCCESS",
      "zip": "1204",
      "city": "Budapest",
      "region": "HU-BU",
      "country_code": "HU"
  },
  "adblock": false,
  "audio_hash": "124.04346607114712",
  "battery": {
      "battery_charging": true,
      "battery_level": 100
  },
  "browser_hash": "9fc8c3bdc369cdb1bd5c29542eedc092",
  "browser_version_age": 0,
  "browser_version": "134.0.0.0",
  "browser": "CHROME",
  "canvas_hash": "cf06210f828cb8744cb449a843b83305",
  "cookie_enabled": true,
  "cookie_hash": "9831c012f5d3056e2399968b55296f91",
  "device_hash": "c92d19d5c29dbd2834e2281d28b35fd5",
  "device_ip": "188.0.0.0",
  "device_ip_country": "HU",
  "device_ip_isp": "Magyar Telekom",
  "device_ip_region": null,
  "device_memory": 8,
  "device_type": "desktop",
  "do_not_track": null,
  "dns_ip": "141.101.104.187",
  "dns_ip_country": "AT",
  "dns_ip_isp": "CloudFlare Inc",
  "dns_ip_region": null,
  "drm_key_systems": [
      "org.w3.clearkey"
  ],
  "extensions": [],
  "flash_enabled": false,
  "font_count": 17,
  "font_hash": "4160d90df34f64c3683c5b1e54bd7d57",
  "font_list": [
      "monospace",
      "sans-serif",
      "serif",
      "Apple Chancery",
      "Apple Color Emoji",
      "Arial Hebrew",
      "Arial Rounded MT Bold",
      "Arial Unicode MS",
      "Baskerville",
      "Geneva",
      "Gill Sans",
      "Helvetica Neue",
      "Menlo",
      "Monaco",
      "Noto Sans Yi",
      "Palatino",
      "Tahoma"
  ],
  "font_noise": false,
  "hardware_concurrency": 8,
  "has_focus": true,
  "java_enabled": false,
  "keyboard_layout_hash": "eac72b515383ac8b4bbbb232ff6841f1",
  "keyboard_layout_name": "Hungarian",
  "languages": [
      "en-GB",
      "en-US",
      "en"
  ],
  "locale": "en-GB",
  "math_hash": "a931b6543effb809b4abb1ecb36431db",
  "max_touch_points": 0,
  "media_devices": {
      "audio_input_count": 1,
      "audio_output_count": 1,
      "video_input_count": 1
  },
  "mime_types_hash": "12ce62938a9f2e8b926a65dfc687824d",
  "mobile_details": {
      "announced": null,
      "models": [],
      "resolution": null,
      "avg_price_in_eur": null,
      "battery_size_in_mah": null,
      "device_name": null
  },
  "mouse_moved": false,
  "os": "macOS 10.15 Catalina",
  "permissions": {
      "denied": [],
      "granted": [
        "accelerometer",
        "background-fetch",
        "background-sync",
        "geolocation",
        "gyroscope",
        "magnetometer",
        "screen-wake-lock"
      ],
      "prompt": [
        "camera",
        "display-capture",
        "microphone",
        "midi",
        "notifications",
        "persistent-storage"
      ]
  },
  "platform": "MacIntel",
  "plugins": {
      "plugin_count": 5,
      "plugin_hash": "a61464d4341e30d7773ad797e19ea630",
      "plugin_list": [
        "PDF Viewer",
        "Chrome PDF Viewer",
        "Chromium PDF Viewer",
        "Microsoft Edge PDF Viewer",
        "WebKit built-in PDF"
      ]
  },
  "price_range": "medium",
  "proxy": false,
  "referrer": "",
  "screen_data": {
      "device_pixel_ratio": 2.0,
      "document_height": 78,
      "document_width": 1496,
      "is_extended": false,
      "orientation_angle": 0,
      "orientation_type": "landscape-primary",
      "screen_available_height": 869,
      "screen_available_width": 1512,
      "screen_color_depth": 30,
      "screen_height": 982,
      "screen_pixel_depth": 30,
      "screen_width": 1512,
      "window_inner_height": 782,
      "window_inner_width": 1512,
      "window_outer_height": 869,
      "window_outer_width": 1512,
      "window_screen_x": 0,
      "window_screen_y": 38,
      "window_scroll_x": 0,
      "window_scroll_y": 0
  },
  "session_id": "14e671a5f503b0d0d8d978a67de0866b",
  "source": "js-6.5.1",
  "spoofing_hash": "fbdcfe51a27dadafac9ccf8a2e34b9bd",
  "suspicious_flags": [],
  "system_colors_hash": "2a20eb8a0076d38e67fafce18f2c5377",
  "timezone_country": "HU",
  "timezone_offset": "+01:00",
  "timezone": "Europe/Budapest",
  "touch_support": false,
  "type": "web",
  "unpopular_device_resolution": false,
  "unpopular_user_agent": false,
  "user_agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/134.0.0.0 Safari/537.36",
  "user_agent_data": {
      "architecture": "arm",
      "bitness": "64",
      "mobile": false,
      "model": "",
      "platform_version": "15.3.1",
      "platform": "macOS",
      "ua_full_version": "134.0.6998.89"
  },
  "vpn": false,
  "webgl": {
      "webgl2_image_hash": "9e0924fc01f9d18c4f8ea400b2de8bec",
      "webgl2_parameters_hash": "fab638debfcefc10764ac68cd00e18e4",
      "webgl2_parameters_noise": false,
      "webgl_hash": "41f3cabaf3febc32cc1bb223db03867d",
      "webgl_image_hash": "9e0924fc01f9d18c4f8ea400b2de8bec",
      "webgl_parameters_hash": "97ec8905c1226b744a9edbffbc5f4a34",
      "webgl_parameters_noise": false,
      "webgl_renderer": "ANGLE (Apple, ANGLE Metal Renderer: Apple M1 Pro, Unspecified Version)",
      "webgl_vendor": "Google Inc. (Apple)"
  },
  "webrtc_activated": true,
  "webrtc_count": 1,
  "webrtc_ips": [
      "188.0.0.0"
  ],
  "window_location": "https://randomsite.random",
  "true_device_id": "0195943f-b231-7c7c-9586-b3b0cccb039a",
  "private": false
}

iOS SDK

You can integrate our device fingerprinting module directly into iOS mobile apps, by using our SDK found on GitHub. It will collect information based on the user’s software and hardware configuration.

  • The SDK returns an encrypted, base64 encoded string to add in the session property in the Fraud API request. It isn’t permitted to access or modify the payload on the clients.
  • JSON structured device details will be returned in the Fraud API response.
  • Check out the latest version and changelog on the SEON iOS SDK GitHub page.

Ā 

Behaviour Monitoring (Optional)

behaviour Monitoring allows the SEON SDK to be able to detect potentially suspicious user behaviour on the device. The SDK collects data during the session, which is then analyzed to identify potentially fraudulent environments and actions. This feature enhances the SDK’s ability to prevent fraud by detecting various forms of automated or suspicious activity, such as bot usage or device farms.

The monitoring should be started with calling startBehaviourMonitoring wherever you would like to detect suspicious activity in your application and should be stopped with stopBehaviourMonitoring whenever it's reasonable. The returned session string should be then used in a Fraud API request as usual.

Possible suspicious_flags values:

  • "possible_automation": Suggests that automation tools or scripts may be controlling the device.
  • "possible_device_farm": Suggests that the device might be part of a device farm used for fraudulent activities.
  • "possible_vishing": Flags possible vishing (voice phishing) activity, where the user might be coerced into providing sensitive information.

To be continuously improved and extended with new signals

Ā 

Response

JSON Attributes

Type
type
string
source
string
session_id
string
accessories_count
integer
audio_mute_status
boolean
audio_volume_current
integer
battery_charging
boolean
battery_level
integer
can_send_mail
boolean
can_send_text
boolean
cpu_count
integer
cpu_type
string
device_adid
string
device_hash
string
device_name
string
device_orientation
string
device_udid
string
icloud_ubiquity_token
string
ios_device_name
string
ios_version
string
is_biometrics_enabled
boolean
is_emulator
boolean
is_ios_app_on_mac
boolean
is_jailbroken
boolean
is_on_call
boolean
is_passcode_enabled
boolean
is_screen_captured
boolean
kernel_arch
string
kernel_name
string
kernel_version
string
network_config
string
pasteboard_hash
string
physical_memory
unsigned long
region_country
string
region_language
string
region_timezone
string
screen_brightness
integer
screen_height
integer
screen_width
integer
system_uptime
integer
timezone_identifier
string
wifi_mac_address
string
wifi_ssid
string
proxy_address
string
proxy_state
string
vpn_state
string
system_integrity
string
dns_ip
string
dns_ip_country
string
dns_ip_isp
string
device_ip_address
string
device_ip_country
string
device_ip_isp
string
device_location
object
suspicious_flags
array
true_device_id
string

Ā 

Response
"device_details": {
  "accessories_count": 0,
  "audio_mute_status": false,
  "audio_volume_current": 100,
  "battery_charging": false,
  "battery_level": 100,
  "can_send_mail": false,
  "can_send_text": true,
  "cpu_count": 6,
  "cpu_type": "ARM_64E",
  "device_adid": "00000000-0000-0000-0000-000000000000",
  "device_hash": "093c1d6097b2cecef5f97dbb8cdbb1d4a51be619acec724762db475ca0e329bf",
  "device_ip_address": "204.14.77.139",
  "device_ip_country": "DE",
  "device_ip_isp": "Areti Internet LLC",
  "device_ip_region": null,
  "device_name": "iPhone 13",
  "device_orientation": "Portrait",
  "device_udid": "EA832CEA-EFEF-46C9-83DD-30A7A92BCF20",
  "dns_ip": null,
  "dns_ip_country": null,
  "dns_ip_isp": null,
  "icloud_ubiquity_token": null,
  "ios_device_name": "iPhone",
  "ios_version": "16.3",
  "is_biometrics_enabled": false,
  "is_emulator": false,
  "is_ios_app_on_mac": false,
  "is_jailbroken": false,
  "is_on_call": false,
  "is_passcode_enabled": false,
  "is_screen_captured": true,
  "kernel_arch": "arm64",
  "kernel_name": "Darwin",
  "kernel_version": "20D47",
  "network_config": "WIFI",
  "pasteboard_hash": "f46df9a8f5e1c4c1f0e17649a4214e19503569f77991533f1db1747b28523fe5",
  "physical_memory": 3824435200,
  "region_country": "DE",
  "region_language": "en",
  "region_timezone": "",
  "screen_brightness": 5,
  "screen_height": 2532,
  "screen_width": 1170,
  "session_id": "basic_session_id",
  "source": "ios-5.5.2",
  "system_uptime": 23305,
  "timezone_identifier": "GMT",
  "type": "ios",
  "wifi_mac_address": null,
  "wifi_ssid": null,
  "proxy_address": "204.14.77.139:45691",
  "proxy_state": "CONNECTED",
  "vpn_state": "UNKNOWN",
  "suspicious_flags": [],
  "true_device_id": "0194cc25-d791-760e-8ad3-7b3bf9162fde"
}

Android SDK

You can integrate our device fingerprinting module directly into Android mobile apps, by using our SDK found on GitHub. In the repo you will also find more details about the integration like requirements and samples. It will collect information based on the user’s software and hardware configuration.

  • The SDK returns an encrypted, base64 encoded string to add in the session property in the Fraud API request. It isn’t permitted to access or modify the payload on the clients.
  • JSON structured device details will be revealed in the Fraud API response.
  • Check out the latest version and changelog on the SEON Android SDK GitHub page.

Behaviour Monitoring (Optional)

Behaviour Monitoring allows the SEON SDK to be able to detect potentially suspicious user behaviour on the device. The SDK collects data during the session, which is then analyzed to identify potentially fraudulent environments and actions. This feature enhances the SDK’s ability to prevent fraud by detecting various forms of automated or suspicious activity, such as bot usage or device farms.

The monitoring must be started with calling startBehaviourMonitoring wherever you would like to detect suspicious activity in your application and should be stopped with stopBehaviourMonitoring whenever it's reasonable. The returned session string should be then used in a Fraud API request as usual. Note: If you call stopBehaviourMonitoring without startBehaviourMonitoring called previously, the method will exit with BehaviouralMonitoringException thrown.

Possible suspicious_flags values:

  • "possible_automation": Suggests that automation tools or scripts may be controlling the device.
  • "possible_device_farm": Suggests that the device might be part of a device farm used for fraudulent activities.
  • "possible_vishing": Flags possible vishing (voice phishing) activity, where the user might be coerced into providing sensitive information.
  • "possible_ongoing_call": Flags possible ongoing phone call, which could be useful information in case the READ_PHONE_STATE permission wasn't granted for is_on_call field to work. This behaviour based flag does not need any permissions to work, but it's only a best-effort metric.
  • To be continously improved and extended with new signals

Ā 

Response

JSON Attributes

Type
type
string
source
string
session_id
string
android_id
string
android_version
string
app_guid
string
audio_mute_status
boolean
audio_volume_current
integer
battery_charging
boolean
battery_health
string
battery_level
integer
battery_temperature
float
battery_voltage
integer
biometric_status
string
bootloader_state
string
build_device
string
build_id
string
build_manufacturer
string
build_model
string
build_number
string
build_time
integer
carrier_country
string
carrier_name
string
cpu_count
integer
cpu_hash
string
cpu_speed
double
cpu_type
string
developer_options_state
string
device_hash
string
device_cellular_id
string
device_name
string
device_orientation
string
esim_capabilities
object
free_storage
integer
gsf_id
string
has_proximity_sensor
boolean
interfering_apps
array of string
is_click_automator_installed
boolean
is_emulator
boolean
is_keyguard_secure
boolean
is_nfc_available
boolean
is_nfc_enabled
boolean
is_on_call
boolean
is_remote_control_connected
boolean
is_rooted
boolean
is_screen_being_mirrored
boolean
kernel_arch
string
kernel_name
string
kernel_version
string
last_boot_time
integer
network_config
string
pasteboard_hash
string
physical_memory
integer
region_country
string
region_language
string
region_timezone
string
remote_control_provider
string
screen_brightness
integer
screen_height
integer
screen_scale
integer
screen_width
integer
sensor_hash
string
system_uptime
integer
timezone_identifier
string
total_storage
integer
usb_cable_state
string
usb_debugging_state
string
wifi_mac_address
string
wifi_ssid
string
dns_ip
string
dns_ip_country
string
dns_ip_isp
string
device_ip_address
string
device_ip_country
string
device_ip_isp
string
device_location
object
vpn_state
string
proxy_state
string
proxy_address
string
first_api_level
int
power_source
string
suspicious_flags
array
is_app_cloned
boolean
system_integrity
string
true_device_id
string
Response
"device_details": {
  "android_id": "474de2ab2b98b43d",
  "android_version": "33 (13)",
  "app_guid": "07e9f6d2-962d-428e-87c4-38598f885428",
  "audio_mute_status": false,
  "audio_volume_current": 33,
  "battery_charging": true,
  "battery_health": "UNKNOWN",
  "battery_level": 100,
  "battery_temperature": 0.0,
  "battery_voltage": 0,
  "biometric_status": "NOT_ENROLLED",
  "bootloader_state": "BOOTLOADER_STATE_LOCKED",
  "build_device": "motion_phone_arm64",
  "build_id": "TQ2B.230505.005.A1",
  "build_manufacturer": "Genymobile",
  "build_model": "Nexus 10",
  "build_number": "TQ2B.230505.005.A1",
  "build_time": 1728636993,
  "carrier_country": "US",
  "carrier_name": "Android",
  "cpu_count": 4,
  "cpu_hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
  "cpu_speed": -1.0,
  "cpu_type": "arm64-v8a",
  "developer_options_state": "DEV_OPTIONS_DISABLED",
  "device_cellular_id": null,
  "device_hash": "177ac0fb53587176bf19f91c6afbc8671410abf98380a3bf8e4f98060b28e36c",
  "device_ip_address": "80.99.168.164",
  "device_ip_country": "HU",
  "device_ip_isp": "One Hungary Ltd.",
  "device_ip_region": null,
  "device_name": "Genymobile motion_phone_arm64",
  "device_orientation": "Landscape Left",
  "dns_ip_country": null,
  "dns_ip_isp": null,
  "dns_ip": null,
  "free_storage": 13033058304,
  "gsf_id": null,
  "has_proximity_sensor": true,
  "interfering_apps": [],
  "is_click_automator_installed": false,
  "is_emulator": true,
  "is_keyguard_secure": false,
  "is_nfc_available": false,
  "is_nfc_enabled": false,
  "is_on_call": false,
  "is_remote_control_connected": false,
  "is_rooted": false,
  "is_screen_being_mirrored": false,
  "kernel_arch": "aarch64",
  "kernel_name": "Linux",
  "kernel_version": "5.15.94-genymotion-android13-8-00028-gac4940659881-ab110",
  "last_boot_time": 1741610026,
  "network_config": "WIFI",
  "pasteboard_hash": "b98e85f214057e5c1414f4adaf4f8d188c7dfdccc74f7c9fc26852133d7ba14b",
  "physical_memory": 2020548000,
  "region_country": "US",
  "region_language": "en",
  "region_timezone": "+00:00",
  "remote_control_provider": null,
  "screen_brightness": 82,
  "screen_height": 1600,
  "screen_scale": 2,
  "screen_width": 2560,
  "sensor_hash": "22edcbcd35528b5c6706149d37fcd345c207de1383a21781fc1ae13593f78766",
  "session_id": "1ffdce39-8189-4d56-801f-2dfe99aecf24",
  "source": "android-6.6.1",
  "system_uptime": 63,
  "timezone_identifier": "GMT",
  "total_storage": 13228740608,
  "type": "android",
  "usb_cable_state": "UNKNOWN",
  "usb_debugging_state": "USB_DEBUGGING_ENABLED",
  "wifi_mac_address": null,
  "wifi_ssid": "AndroidWifi",
  "first_api_level": 16,
  "power_source": "AC",
  "proxy_address": null,
  "proxy_state": "NOT_CONNECTED",
  "vpn_state": "NOT_CONNECTED",
  "suspicious_flags": [],
  "true_device_id": "019594aa-e9b3-7960-9ef3-cce3cde72589",
  "system_integrity": "COMPROMISED",
  "is_app_cloned": false,
  "device_location": {
      "accuracy": 0,
      "is_simulated": false,
      "latitude": 65.8411099471,
      "longitude": -18.6871085937,
      "status": "SUCCESS",
      "zip": null,
      "city": null,
      "region": "IS-6",
      "country_code": "IS"
  }
}

eKYC endpoints payload examples

eKYC checks return one of the following standardized status values.

Status ValueDefinition
SUCCESSThe source returned a result (for ID-only endpoints), or all provided parameters were matched.
PARTIAL_SUCCESSThe source returned a result, but not all provided parameters matched.
REVIEWThe source returned an inconclusive verdict, indicating that the data falls into a gray area, requires manual intervention, or triggered non-critical warnings.
NO_MATCHThe source successfully executed the search, but no record was found for the core identity data (e.g., only general fields like date of birth or gender matched).
FAILEDThe source explicitly returned a negative verdict, indicating that the identity data actively contradicted their records, or severe negative signals (e.g., fraud) were detected.
FAILED_PROCESSINGThe source could not complete the verification due to a technical error, outage, or invalid input data that prevented the check from running.

Ā 

JSON Attributes

Type
success
boolean
error
object
data
object
data.person
object
data.matches
object
data.additionalData
object
data.additionalMatches
object

AU flag Australia (AU) 3 checks

Citizen Registry AU_SVC First Name Ā· Last Name

Verifies an individual in Australia by matching the submitted name, gender, address, phone and email, returning SEON-normalized person data with per-field match results.

Required inputs

First NameLast Name

One of (required)

Date of BirthorStreet+Zip Code

Optional inputs

Middle NameGenderCityRegionPhone NumberEmail

Request

{
  "config": {
    "ekyc": {
      "type": "AU_SVC"
    },
    "ekyc_api": true,
    "response_fields": "ekyc_data,ekyc_result"
  },
  "user_id": "usr_1234567890",
  "user_country": "AU",
  "user_firstname": "Aloysius",
  "user_lastname": "Pasco",
  "user_dob": "1946-11-01",
  "user_street": "30 Plane Tree Green",
  "user_zip": "6058",
  "user_middlename": "Jefferson",
  "user_gender": "FEMALE",
  "user_city": "Forrestfield",
  "user_region": "WA",
  "phone_number": "0487787402",
  "email": "apasco@datatest.com.com"
}

Response

{
  "ekyc_result": "SUCCESS",
  "ekyc_data": {
    "person": {
      "firstName": null,
      "middleName": null,
      "lastName": null,
      "fullName": null,
      "dateOfBirth": null,
      "gender": null,
      "nationalIds": [],
      "phones": [],
      "emails": [],
      "addresses": []
    },
    "matches": {
      "firstName": true,
      "lastName": true,
      "middleName": true,
      "fullName": null,
      "dateOfBirth": true,
      "gender": true,
      "nationalId": null,
      "address": null,
      "street": true,
      "street2": null,
      "city": true,
      "zip": true,
      "region": true,
      "phone": true,
      "email": true
    },
    "additionalData": {
      "dpId": "A1234567"
    },
    "additionalMatches": {
      "landlinePhone": true
    }
  }
}
Credit Bureau AU_CB First Name Ā· Last Name Ā· Date of Birth Ā· Street Ā· City +2

Verifies an individual in Australia by matching the submitted name, date of birth and address, returning SEON-normalized person data with per-field match results.

Required inputs

First NameLast NameDate of BirthStreetCityRegionZip Code

Optional inputs

Middle Name

Request

{
  "config": {
    "ekyc": {
      "type": "AU_CB"
    },
    "ekyc_api": true,
    "response_fields": "ekyc_data,ekyc_result"
  },
  "user_id": "usr_1234567890",
  "user_country": "AU",
  "user_firstname": "Consumer",
  "user_lastname": "AllDetails",
  "user_dob": "1980-01-01",
  "user_street": "479 St Kilda Road",
  "user_city": "Melbourne",
  "user_region": "VIC",
  "user_zip": "3004",
  "user_middlename": "With"
}

Response

{
  "ekyc_result": "SUCCESS",
  "ekyc_data": {
    "person": {
      "firstName": null,
      "middleName": null,
      "lastName": null,
      "fullName": null,
      "dateOfBirth": null,
      "gender": null,
      "nationalIds": [],
      "phones": [],
      "emails": [],
      "addresses": []
    },
    "matches": {
      "firstName": true,
      "lastName": true,
      "middleName": true,
      "fullName": null,
      "dateOfBirth": true,
      "gender": null,
      "nationalId": null,
      "address": null,
      "street": true,
      "street2": null,
      "city": true,
      "zip": true,
      "region": true,
      "phone": null,
      "email": null
    },
    "additionalData": {},
    "additionalMatches": {}
  }
}
Residential AU_RC First Name Ā· Last Name

Verifies an individual in Australia by matching the submitted name, gender, address, phone and email, returning SEON-normalized person data with per-field match results.

Required inputs

First NameLast Name

One of (required)

Date of BirthorStreet+Zip Code

Optional inputs

Middle NameGenderCityRegionPhone NumberEmail

Request

{
  "config": {
    "ekyc": {
      "type": "AU_RC"
    },
    "ekyc_api": true,
    "response_fields": "ekyc_data,ekyc_result"
  },
  "user_id": "usr_1234567890",
  "user_country": "AU",
  "user_firstname": "aloysius",
  "user_lastname": "pasco",
  "user_dob": "1946-11-01",
  "user_street": "30 plane tree green",
  "user_zip": "6058",
  "user_middlename": "jefferson",
  "user_gender": "FEMALE",
  "user_city": "forrestfield",
  "user_region": "wa",
  "phone_number": "0487787402",
  "email": "apasco@datatest.com"
}

Response

{
  "ekyc_result": "SUCCESS",
  "ekyc_data": {
    "person": {
      "firstName": null,
      "middleName": null,
      "lastName": null,
      "fullName": null,
      "dateOfBirth": null,
      "gender": null,
      "nationalIds": [],
      "phones": [],
      "emails": [],
      "addresses": []
    },
    "matches": {
      "firstName": true,
      "lastName": true,
      "middleName": true,
      "fullName": null,
      "dateOfBirth": true,
      "gender": true,
      "nationalId": null,
      "address": null,
      "street": true,
      "street2": null,
      "city": true,
      "zip": true,
      "region": true,
      "phone": true,
      "email": true
    },
    "additionalData": {
      "dpId": "A1234567"
    },
    "additionalMatches": {
      "landlinePhone": true
    }
  }
}

BR flag Brazil (BR) 2 checks

National ID (CPF) BR_ID_CPF ID Value

Fetches identity details using a Brazilian CPF.

Required inputs

ID Value

Input guidance

ID Value
AcceptedCPF
Format11 digits, no punctuation
Submit the Cadastro de Pessoas FĆ­sicas (CPF) as id_value.

Request

{
  "config": {
    "ekyc": {
      "type": "BR_ID_CPF"
    },
    "ekyc_api": true,
    "response_fields": "ekyc_data,ekyc_result"
  },
  "user_id": "usr_hunt_BR_ID_CPF_generated",
  "id_value": "43335747810"
}

Response

{
  "ekyc_result": "SUCCESS",
  "ekyc_data": {
    "person": {
      "first_name": null,
      "middle_name": null,
      "last_name": null,
      "full_name": "GUSTAVO TOMAZ EVANGELISTA GELEZOGLO",
      "date_of_birth": "1995-08-03",
      "gender": null,
      "national_ids": [
        {
          "type": "CPF",
          "value": "433.357.478-10",
          "country": "BR"
        }
      ],
      "phones": [],
      "emails": [],
      "addresses": []
    },
    "matches": {
      "first_name": null,
      "last_name": null,
      "middle_name": null,
      "full_name": null,
      "date_of_birth": null,
      "gender": null,
      "national_id": null,
      "address": null,
      "phone": null,
      "email": null,
      "street": null,
      "street2": null,
      "city": null,
      "zip": null,
      "region": null
    },
    "additional_matches": null,
    "additional_data": {
      "registration_status": "REGULAR",
      "is_deceased": false
    }
  }
}
National ID (CPF) Extended BR_ID_CPF_EXT ID Value

Fetches extended identity details, including relatives, using a Brazilian CPF.

Required inputs

ID Value

Input guidance

ID Value
AcceptedCPF
Format11 digits, no punctuation
Submit the Cadastro de Pessoas FĆ­sicas (CPF) as id_value.

Request

{
  "config": {
    "ekyc": {
      "type": "BR_ID_CPF_EXT"
    },
    "ekyc_api": true,
    "response_fields": "ekyc_data,ekyc_result"
  },
  "user_id": "usr_hunt_BR_ID_CPF_EXT_generated",
  "id_value": "43335747810"
}

Response

{
  "ekyc_result": "SUCCESS",
  "ekyc_data": {
    "person": {
      "first_name": null,
      "middle_name": null,
      "last_name": null,
      "full_name": "GUSTAVO TOMAZ EVANGELISTA GELEZOGLO",
      "date_of_birth": "1995-08-03",
      "gender": "MALE",
      "national_ids": [],
      "phones": [
        {
          "value": "+551122110615",
          "type": "mobile"
        },
        {
          "value": "+5511953594423",
          "type": "landline"
        },
        {
          "value": "+5511918444423",
          "type": "landline"
        }
      ],
      "emails": [
        {
          "value": null,
          "type": null
        }
      ],
      "addresses": [
        {
          "full_address": "R, ALMIR ALVES DE SOUZA, 44",
          "line1": null,
          "city": "SAO PAULO",
          "state": "SP",
          "postal_code": "3912090",
          "country": "BR"
        }
      ]
    },
    "matches": {
      "first_name": null,
      "last_name": null,
      "middle_name": null,
      "full_name": null,
      "date_of_birth": null,
      "gender": null,
      "national_id": null,
      "address": null,
      "phone": null,
      "email": null,
      "street": null,
      "street2": null,
      "city": null,
      "zip": null,
      "region": null
    },
    "additional_matches": null,
    "additional_data": {
      "external_id": "3efhwfxycpe2qq",
      "main_cpf": "",
      "alternate_cpfs": "",
      "social_name": "",
      "homonyms": "0",
      "birth_date_time": "1995-08-03T00:00:00.0000000",
      "age": "31",
      "zodiac_sign": "LION",
      "mother_name": "EVA CONCEICAO EVANGELISTA GELEZOGLO",
      "mother_cpf": "8988017889",
      "father_name": "",
      "father_cpf": "",
      "death_year": "",
      "death_date": "",
      "nis": "",
      "nis_list": "",
      "cns": "",
      "rg_number": "",
      "rg_state": "",
      "rg_issue_date": "",
      "rg_issuing_authority_code": "",
      "voter_id_number": "",
      "voter_zone": "",
      "voter_section": "",
      "birth_city": "",
      "estimated_monthly_income": "700",
      "registration_date_in_revenue_service": "2010-09-16T00:00:00.0000000",
      "last_revenue_check_date": "2026-08-03T03:44:09.6277360",
      "registration_status_in_revenue_service": "REGULAR",
      "pep_role": "",
      "pep_term_end": "",
      "estimated_income_confidence_index": "0.2",
      "relatives": [
        {
          "cpf": "",
          "name": "EVA C******** E********** G********",
          "birth_date_time": "",
          "deceased": "",
          "death_year": "",
          "death_date": "",
          "estimated_monthly_income": "",
          "pep_role": "",
          "pep_term_end": "",
          "relationship_type": "MOTHER",
          "registration_status_in_revenue_service": "",
          "last_revenue_check_date": ""
        },
        {
          "cpf": "8988017889",
          "name": "EVA C******** E**********",
          "birth_date_time": "1965-12-08T00:00:00.0000000",
          "deceased": "false",
          "death_year": "",
          "death_date": "",
          "estimated_monthly_income": "",
          "pep_role": "",
          "pep_term_end": "",
          "relationship_type": "MOTHER",
          "registration_status_in_revenue_service": "REGULAR",
          "last_revenue_check_date": "2026-04-14T17:14:07.0000000"
        },
        {
          "cpf": "38718372880",
          "name": "LOURDES A******* P******",
          "birth_date_time": "1932-01-05T00:00:00.0000000",
          "deceased": "true",
          "death_year": "2006",
          "death_date": "",
          "estimated_monthly_income": "",
          "pep_role": "",
          "pep_term_end": "",
          "relationship_type": "GRANDMOTHER",
          "registration_status_in_revenue_service": "DECEASED HOLDER",
          "last_revenue_check_date": "2025-02-27T11:54:16.1024960"
        },
        {
          "cpf": "3104732841",
          "name": "ADAO A******* E**********",
          "birth_date_time": "1963-06-14T00:00:00.0000000",
          "deceased": "false",
          "death_year": "",
          "death_date": "",
          "estimated_monthly_income": "",
          "pep_role": "",
          "pep_term_end": "",
          "relationship_type": "UNCLE(S)",
          "registration_status_in_revenue_service": "REGULAR",
          "last_revenue_check_date": "2021-12-01T04:58:54.0000000"
        },
        {
          "cpf": "25467498894",
          "name": "JOELMA E********** de G****",
          "birth_date_time": "1974-09-07T00:00:00.0000000",
          "deceased": "false",
          "death_year": "",
          "death_date": "",
          "estimated_monthly_income": "",
          "pep_role": "",
          "pep_term_end": "",
          "relationship_type": "UNCLE(S)",
          "registration_status_in_revenue_service": "REGULAR",
          "last_revenue_check_date": "2023-06-28T02:33:49.0000000"
        }
      ],
      "people_at_same_address": [
        {
          "cpf": "38718372880",
          "name": "LOURDES ALMASSAN PACHECO",
          "birth_date_time": "1932-01-05T00:00:00.0000000",
          "deceased": "true",
          "death_year": "2006",
          "death_date": "",
          "estimated_monthly_income": "",
          "pep_role": "",
          "pep_term_end": "",
          "relationship_type": "",
          "registration_status_in_revenue_service": "DECEASED HOLDER",
          "last_revenue_check_date": "2025-02-27T11:54:16.1024960"
        }
      ],
      "companies_at_same_address": [
        {
          "cnpj": "31924015000170",
          "company_name": "AMILTON PEREIRA DA SILVA 01108376819",
          "opening_date": "2018-11-01T00:00:00.0000000"
        }
      ],
      "partnerships": [
        {
          "company": {
            "cnpj": "51040790000170",
            "company_name": "GUSTAVO TOMAZ EVANGELISTA GELEZOGLO LTDA",
            "opening_date": "2023-06-14T00:00:00.0000000"
          }
        }
      ],
      "employers": [
        {
          "related_company": {
            "cnpj": "29213298000108",
            "company_name": "LOFT BRASIL TECNOLOGIA S.A"
          }
        }
      ],
      "partners": []
    }
  }
}

CA flag Canada (CA) 3 checks

Credit Bureau CA_CB_FT 2 response variants First Name Ā· Last Name Ā· Date of Birth Ā· Street Ā· City +2

Verifies identity against Canadian credit-header data to support FINTRAC compliance.

Required inputs

First NameLast NameDate of BirthStreetCityRegionZip Code

Optional inputs

Middle Name

Notes

  • Credit File method (single source): Satisfied when the credit file has been in existence for at least three years, contains information from more than one tradeline, and the name, address, and date of birth all match.
  • Dual-Process method (two sources): Satisfied when two independent tradelines from the credit bureau each confirm a different combination of the person's name, address, date of birth, or account existence. For full FINTRAC guidance, refer to FINTRAC Guide 11 on identity verification (fintrac-canafe.canada.ca).

Request

{
  "config": {
    "ekyc": {
      "type": "CA_CB_FT"
    },
    "ekyc_api": true,
    "response_fields": "ekyc_data,ekyc_result"
  },
  "user_id": "usr_1234567890",
  "user_country": "CA",
  "user_firstname": "Diane",
  "user_lastname": "Tremblay",
  "user_dob": "1985-09-22",
  "user_street": "419 rue Saint-Denis",
  "user_city": "Montreal",
  "user_region": "Quebec",
  "user_zip": "H2X 3K7",
  "user_middlename": "Louise"
}

Response variants

? Credit File — Single Source (2+2, FINTRAC Safe Harbour)

Response

{
  "ekyc_result": "SUCCESS",
  "ekyc_data": {
    "person": {
      "firstName": null,
      "middleName": null,
      "lastName": null,
      "fullName": null,
      "dateOfBirth": null,
      "gender": null,
      "nationalIds": [],
      "phones": [],
      "emails": [],
      "addresses": []
    },
    "matches": {
      "firstName": true,
      "lastName": true,
      "middleName": true,
      "fullName": null,
      "dateOfBirth": true,
      "gender": null,
      "nationalId": null,
      "address": null,
      "street": true,
      "street2": null,
      "city": true,
      "zip": true,
      "region": true,
      "phone": null,
      "email": null
    },
    "additionalData": {
      "category": "credit – single source",
      "nameAsReported": "TESTPOTKIDIS,DOMEMIC,,",
      "creditFile3Years": true,
      "addressAsReported": "97,STANLEY,OTTAWA,ON,K1M1N8",
      "dateOfBirthAsReported": "1970-12-12",
      "moreThanOneDistinctSource": true
    },
    "additionalMatches": {}
  }
}
? Tradelines — Dual Source (1+1, FINTRAC Fallback)

Response

{
  "ekyc_result": "SUCCESS",
  "ekyc_data": {
    "person": {
      "firstName": null,
      "middleName": null,
      "lastName": null,
      "fullName": null,
      "dateOfBirth": null,
      "gender": null,
      "nationalIds": [],
      "phones": [],
      "emails": [],
      "addresses": []
    },
    "matches": {
      "firstName": true,
      "lastName": true,
      "middleName": true,
      "fullName": null,
      "dateOfBirth": true,
      "gender": null,
      "nationalId": null,
      "address": null,
      "street": true,
      "street2": null,
      "city": true,
      "zip": true,
      "region": true,
      "phone": null,
      "email": null
    },
    "additionalData": {
      "category": "credit – dual source",
      "trades": {
        "tradeNumber1": {
          "dateOpened": "2023-09-01",
          "accountNumber": "789022239",
          "nameAsReported": "JACKSON,FELIX,,",
          "institutionName": "CIBC",
          "addressAsReported": "18894 ADVENT RD,PITT MEADOWS,BC,V3Y1S1",
          "dateOfBirthAsReported": "1985-03-05"
        },
        "tradeNumber2": {
          "dateOpened": "2022-08-30",
          "accountNumber": "789011139",
          "nameAsReported": "JACKSON,FELIX,,",
          "institutionName": "TDCT TR0522",
          "addressAsReported": "18894 ADVENT RD,PITT MEADOWS,BC,V3Y1S1",
          "dateOfBirthAsReported": "1985-03-05"
        }
      },
      "ageOfTwoTrades_6Months": true,
      "ageOfCreditFile_6Months": true
    },
    "additionalMatches": {}
  }
}
Credit Bureau 2 CA_CB_2 First Name Ā· Last Name Ā· Date of Birth Ā· Street Ā· City +2

Verifies identity against Canadian credit-header data (non-FINTRAC).

Required inputs

First NameLast NameDate of BirthStreetCityRegionZip Code

Optional inputs

Middle NameStreet Line 2

Request

{
  "config": {
    "ekyc": {
      "type": "CA_CB_2"
    },
    "ekyc_api": true,
    "response_fields": "ekyc_data,ekyc_result"
  },
  "user_id": "usr_1234567890",
  "user_country": "CA",
  "user_firstname": "ARIEL",
  "user_lastname": "TESTADD",
  "user_dob": "1977-09-09",
  "user_street": "561 MAIN ST",
  "user_city": "SUSSEX",
  "user_region": "NB",
  "user_zip": "E4E7H4",
  "user_middlename": "A"
}

Response

{
  "ekyc_result": "SUCCESS",
  "ekyc_data": {
    "person": {
      "firstName": null,
      "middleName": null,
      "lastName": null,
      "fullName": null,
      "dateOfBirth": null,
      "gender": null,
      "nationalIds": [],
      "phones": [],
      "emails": [],
      "addresses": []
    },
    "matches": {
      "firstName": true,
      "lastName": true,
      "middleName": true,
      "fullName": null,
      "dateOfBirth": true,
      "gender": null,
      "nationalId": null,
      "address": null,
      "street": true,
      "street2": true,
      "city": true,
      "zip": true,
      "region": true,
      "phone": null,
      "email": null
    },
    "additionalData": {
      "deceasedRecord": false,
      "fraudVictimAlert": false,
      "fraudulentActivityAddress": false,
      "newCreditFile": false,
      "overallFraudRisk": "Low",
      "thinFile": false
    },
    "additionalMatches": {}
  }
}
Residential CA_RC First Name Ā· Last Name Ā· Street Ā· City Ā· Region +2

Verifies identity against Canadian telco and residential sources.

Required inputs

First NameLast NameStreetCityRegionZip CodePhone Number

Optional inputs

Middle NameDate of Birth

Request

{
  "config": {
    "ekyc": {
      "type": "CA_RC"
    },
    "ekyc_api": true,
    "response_fields": "ekyc_data,ekyc_result"
  },
  "user_id": "usr_1234567890",
  "user_country": "ca",
  "user_firstname": "latanya",
  "user_lastname": "mamudoski",
  "user_street": "2799 fort campbell blvd",
  "user_city": "portage la prairie",
  "user_region": "mb",
  "user_zip": "r1n3t4",
  "phone_number": "+12040000252",
  "user_middlename": "A",
  "user_dob": "1971 09 09"
}

Response

{
  "ekyc_result": "SUCCESS",
  "ekyc_data": {
    "person": {
      "firstName": null,
      "middleName": null,
      "lastName": null,
      "fullName": null,
      "dateOfBirth": null,
      "gender": null,
      "nationalIds": [],
      "phones": [],
      "emails": [],
      "addresses": []
    },
    "matches": {
      "firstName": true,
      "lastName": true,
      "middleName": true,
      "fullName": null,
      "dateOfBirth": true,
      "gender": null,
      "nationalId": null,
      "address": null,
      "street": true,
      "street2": null,
      "city": true,
      "zip": true,
      "region": true,
      "phone": true,
      "email": null
    },
    "additionalData": {
      "PhoneAccountClass": "PERSONAL",
      "PhoneAccountType": "POSTPAID",
      "PhoneActivationDate": "2019-03-14",
      "PhoneBrandName": "Fido",
      "PhoneCarrierName": "Rogers",
      "PhoneStatus": "ACTIVE",
      "PhoneSubscriberId": "d0ec3b250f47ed5d6fea9e347de56b3a35ced563"
    },
    "additionalMatches": {}
  }
}

CO flag Colombia (CO) 2 checks

Foreigner ID (CE) CO_ID_CE ID Value

Verifies an individual in Colombia by matching the submitted national ID, returning SEON-normalized person data with per-field match results.

Required inputs

ID Value

Request

{
  "config": {
    "ekyc": {
      "type": "CO_ID_CE"
    },
    "ekyc_api": true,
    "response_fields": "ekyc_data,ekyc_result"
  },
  "user_id": "usr_1234567890",
  "id_value": "987654321",
  "doc_issue_date": "2020-06-15",
  "user_country": "CO"
}

Response

{
  "ekyc_result": "SUCCESS",
  "ekyc_data": {
    "person": {
      "firstName": "Kleyson",
      "middleName": null,
      "lastName": "Pinheiro",
      "fullName": "Kleyson Pinheiro",
      "dateOfBirth": null,
      "gender": null,
      "nationalIds": [
        {
          "type": "NATIONAL_ID",
          "value": "987654321",
          "country": "CO"
        }
      ],
      "phones": [],
      "emails": [],
      "addresses": []
    },
    "matches": {
      "firstName": null,
      "lastName": null,
      "middleName": null,
      "fullName": null,
      "dateOfBirth": null,
      "gender": null,
      "nationalId": null,
      "address": null,
      "street": null,
      "street2": null,
      "city": null,
      "zip": null,
      "region": null,
      "phone": null,
      "email": null
    },
    "additionalData": {
      "documentType": "987654321",
      "documentIssueDate": "987654321"
    },
    "additionalMatches": {}
  }
}
National ID CO_ID_PPT CO_ID_CC 2 request variants ID Value

Fetches identity details for Colombian citizens from national registries.

Required inputs

ID Value

Input guidance

ID Value
AcceptedCCPPT
FormatDigits only for CC (6-10 chars), alphanumeric for PPT
Submit the Cédula de Ciudadanía (CC) or Permiso por Protección Temporal (PPT) as id_value. NIT is not supported.

Request variants

CO_ID_PPT

Required inputs

ID Value

Request

{
  "config": {
    "ekyc": {
      "type": "CO_ID_PPT"
    },
    "ekyc_api": true,
    "response_fields": "ekyc_data,ekyc_result"
  },
  "user_id": "usr_1234567890",
  "id_value": "123456789",
  "user_country": "CO"
}

Response

{
  "ekyc_result": "SUCCESS",
  "ekyc_data": {
    "person": {
      "firstName": "Kleyson",
      "middleName": null,
      "lastName": "Pinheiro",
      "fullName": "Kleyson Pinheiro",
      "dateOfBirth": null,
      "gender": null,
      "nationalIds": {
        "type": "PASSPORT"
      },
      "phones": [],
      "emails": [],
      "addresses": []
    },
    "matches": {
      "firstName": null,
      "lastName": null,
      "middleName": null,
      "fullName": null,
      "dateOfBirth": null,
      "gender": null,
      "nationalId": null,
      "address": null,
      "street": null,
      "street2": null,
      "city": null,
      "zip": null,
      "region": null,
      "phone": null,
      "email": null
    },
    "additionalData": {},
    "additionalMatches": {}
  }
}
CO_ID_CC

Required inputs

ID Value

Request

{
  "config": {
    "ekyc": {
      "type": "CO_ID_CC"
    },
    "ekyc_api": true,
    "response_fields": "ekyc_data,ekyc_result"
  },
  "user_id": "usr_1234567890",
  "id_value": "123456789",
  "user_country": "CO"
}

Response

{
  "ekyc_result": "SUCCESS",
  "ekyc_data": {
    "person": {
      "firstName": "Kleyson",
      "middleName": null,
      "lastName": "Pinheiro",
      "fullName": "Kleyson Pinheiro",
      "dateOfBirth": null,
      "gender": null,
      "nationalIds": {
        "type": "PASSPORT"
      },
      "phones": [],
      "emails": [],
      "addresses": []
    },
    "matches": {
      "firstName": null,
      "lastName": null,
      "middleName": null,
      "fullName": null,
      "dateOfBirth": null,
      "gender": null,
      "nationalId": null,
      "address": null,
      "street": null,
      "street2": null,
      "city": null,
      "zip": null,
      "region": null,
      "phone": null,
      "email": null
    },
    "additionalData": {},
    "additionalMatches": {}
  }
}

FR flag France (FR) 1 check

Residential FR_RC First Name Ā· Last Name Ā· Date of Birth Ā· Street Ā· City +1

Verifies an individual in France by matching the submitted name, date of birth, address and phone, returning SEON-normalized person data with per-field match results.

Required inputs

First NameLast NameDate of BirthStreetCityZip Code

Optional inputs

Phone Number

Request

{
  "config": {
    "ekyc": {
      "type": "FR_RC"
    },
    "ekyc_api": true,
    "response_fields": "ekyc_data,ekyc_result"
  },
  "user_id": "usr_1234567890",
  "user_country": "FR",
  "user_firstname": "pierrick",
  "user_lastname": "martin",
  "user_dob": "1994-05-31",
  "user_street": "82 avenue simon bolivar",
  "user_city": "paris",
  "user_zip": "75019",
  "phone_number": "0602664242"
}

Response

{
  "ekyc_result": "SUCCESS",
  "ekyc_data": {
    "person": {
      "firstName": null,
      "middleName": null,
      "lastName": null,
      "fullName": null,
      "dateOfBirth": null,
      "gender": null,
      "nationalIds": [],
      "phones": [],
      "emails": [],
      "addresses": []
    },
    "matches": {
      "firstName": true,
      "lastName": true,
      "middleName": null,
      "fullName": null,
      "dateOfBirth": true,
      "gender": null,
      "nationalId": null,
      "address": null,
      "street": true,
      "street2": null,
      "city": true,
      "zip": true,
      "region": null,
      "phone": true,
      "email": null
    },
    "additionalData": {},
    "additionalMatches": {}
  }
}

DE flag Germany (DE) 1 check

Credit Bureau DE_CB First Name Ā· Last Name Ā· Date of Birth Ā· Street Ā· City +1

Verifies an individual in Germany by matching the submitted name, date of birth and address, returning SEON-normalized person data with per-field match results.

Required inputs

First NameLast NameDate of BirthStreetCityZip Code

Optional inputs

Middle Name

Request

{
  "config": {
    "ekyc": {
      "type": "DE_CB"
    },
    "ekyc_api": true,
    "response_fields": "ekyc_data,ekyc_result"
  },
  "user_id": "usr_1234567890",
  "user_country": "DE",
  "user_firstname": "Tobias",
  "user_lastname": "Gottlieb",
  "user_dob": "1932-01-14",
  "user_street": "Sonnentalweg 18",
  "user_city": "Wasserbad",
  "user_zip": "73888",
  "user_middlename": "A"
}

Response

{
  "ekyc_result": "SUCCESS",
  "ekyc_data": {
    "person": {
      "firstName": null,
      "middleName": null,
      "lastName": null,
      "fullName": null,
      "dateOfBirth": null,
      "gender": null,
      "nationalIds": [],
      "phones": [],
      "emails": [],
      "addresses": []
    },
    "matches": {
      "firstName": true,
      "lastName": true,
      "middleName": null,
      "fullName": null,
      "dateOfBirth": true,
      "gender": null,
      "nationalId": null,
      "address": null,
      "street": true,
      "street2": null,
      "city": true,
      "zip": true,
      "region": null,
      "phone": null,
      "email": null
    },
    "additionalData": {},
    "additionalMatches": {}
  }
}

 flag Global () 1 check

Bank Account Name Check EU_BAV Bank Account Ā· Full Name

Checks that a bank account IBAN belongs to the person named. Returns the name comparison result.

Required inputs

Bank AccountFull Name

Input guidance

Bank Account
AcceptedIBAN
FormatIBAN, spaces removed, letters uppercased
An IBAN from an unsupported country, including GB, or one with an invalid checksum, returns FAILED_PROCESSING.
Full Name
FormatUp to 140 characters
Required. The person named on the account. A missing name, or a name over 140 characters, returns FAILED_PROCESSING.

Notes

  • What to send: Send the IBAN as user_bank_account and the account holder name as user_fullname. Both are required. This check compares a person name only and does not accept a company name.
  • Supported countries: The IBAN prefix decides where the check runs. Supported: Austria, Belgium, Croatia, Cyprus, Estonia, Finland, France, Germany, Greece, Ireland, Italy, Latvia, Lithuania, Luxembourg, Malta, Netherlands, Portugal, Slovakia, Slovenia, and Spain. An IBAN from any other country, including GB, or an IBAN with an invalid checksum, returns FAILED_PROCESSING without running the check.
  • SUCCESS: The name matches the account holder. matches.fullName is true.
  • PARTIAL_SUCCESS: The name is close but not exact, for example a spelling difference. matches.fullName is false.
  • NO_MATCH: The name was checked and does not match the account holder. matches.fullName is false. This result never changes.
  • REVIEW: The name matched or was a close match, but the account is inactive, has switched to a new account, or a payment to it would be rejected by the account network. matches.fullName reflects the name result.
  • FAILED_PROCESSING: The check did not run or the name could not be compared. matches.fullName is null. This check never returns FAILED.
  • Additional response data: When available, the response includes supplementary account signals in additionalData: account status, whether the account has switched and the new account number, account age, payment pre-validation result, the matching method used, and the network that answered. These are informational only and do not change the status except in the REVIEW cases above.

Request

{
  "config": {
    "ekyc": {
      "type": "EU_BAV"
    },
    "ekyc_api": true,
    "response_fields": "ekyc_data,ekyc_result"
  },
  "user_id": "usr_1234567890",
  "user_bank_account": "FR0218359000430598890U02759",
  "user_fullname": "Henri Dupond"
}

Response

{
  "ekyc_result": "SUCCESS",
  "ekyc_data": {
    "person": {
      "firstName": null,
      "middleName": null,
      "lastName": null,
      "fullName": null,
      "dateOfBirth": null,
      "gender": null,
      "nationalIds": [],
      "phones": [],
      "emails": [],
      "addresses": [],
      "addresses[]": "36 Holt Road, Sylvania NSW 2224"
    },
    "matches": {
      "firstName": null,
      "lastName": null,
      "middleName": null,
      "fullName": null,
      "dateOfBirth": null,
      "gender": null,
      "nationalId": null,
      "address": null,
      "street": null,
      "street2": null,
      "city": null,
      "zip": null,
      "region": null,
      "phone": null,
      "email": null
    },
    "additionalData": {
      "nameMatch": "Rodney Raymond Richards",
      "suggestedName": null,
      "dataUsedForMatching": "Verified identity record",
      "scheme": "Verified identity record",
      "accountNumberValidation": "A1234567",
      "accountStatus": "Successful",
      "optedOut": "Verified identity record",
      "paymentPreValidation": null,
      "accountAge": null,
      "jointAccount": null,
      "numberOfAccountHolders": null,
      "switchingServiceForAccount": null,
      "switchedToIban": null
    },
    "additionalMatches": {}
  }
}

GR flag Greece (GR) 1 check

Credit Bureau GR_CB First Name Ā· Last Name Ā· Date of Birth Ā· City

Verifies an individual in Greece by matching the submitted name, date of birth, address, national ID and phone, returning SEON-normalized person data with per-field match results.

Required inputs

First NameLast NameDate of BirthCityID Value

Optional inputs

Middle NameStreetRegionZip CodePhone Number

Request

{
  "config": {
    "ekyc": {
      "type": "GR_CB"
    },
    "ekyc_api": true,
    "response_fields": "ekyc_data,ekyc_result"
  },
  "user_id": "usr_1234567890",
  "user_country": "GR",
  "user_firstname": "CLFNAME",
  "user_lastname": "CLLNAME",
  "user_dob": "1995-08-01",
  "user_city": "CLCITY",
  "user_middlename": "CLMNAME",
  "user_street": "CLADDRESS 1",
  "user_region": "CLSTATE",
  "user_zip": "99999",
  "id_value": "888888888",
  "phone_number": "8888888888"
}

Response

{
  "ekyc_result": "SUCCESS",
  "ekyc_data": {
    "person": {
      "firstName": null,
      "middleName": null,
      "lastName": null,
      "fullName": null,
      "dateOfBirth": null,
      "gender": null,
      "nationalIds": [],
      "phones": [],
      "emails": [],
      "addresses": []
    },
    "matches": {
      "firstName": true,
      "lastName": true,
      "middleName": true,
      "fullName": null,
      "dateOfBirth": true,
      "gender": true,
      "nationalId": true,
      "address": null,
      "street": true,
      "street2": null,
      "city": true,
      "zip": true,
      "region": null,
      "phone": true,
      "email": null
    },
    "additionalData": {},
    "additionalMatches": {}
  }
}

ID flag Indonesia (ID) 2 checks

National ID (NIK) ID_ID_NIK Full Name Ā· Date of Birth Ā· ID Value

Verifies an individual in Indonesia by matching the submitted name, date of birth and national ID, returning SEON-normalized person data with per-field match results.

Required inputs

Full NameDate of BirthID Value

Request

{
  "config": {
    "ekyc": {
      "type": "ID_ID_NIK"
    },
    "ekyc_api": true,
    "response_fields": "ekyc_data,ekyc_result"
  },
  "user_id": "usr_1234567890",
  "user_fullname": "FURY INDAH PUSPITASARI",
  "user_dob": "1989-09-07",
  "id_value": "3276052203830087",
  "user_country": "ID"
}

Response

{
  "ekyc_result": "SUCCESS",
  "ekyc_data": {
    "person": {
      "firstName": null,
      "middleName": null,
      "lastName": null,
      "fullName": null,
      "dateOfBirth": null,
      "gender": null,
      "nationalIds": [],
      "phones": [],
      "emails": [],
      "addresses": []
    },
    "matches": {
      "firstName": null,
      "lastName": null,
      "middleName": null,
      "fullName": true,
      "dateOfBirth": true,
      "gender": null,
      "nationalId": true,
      "address": null,
      "street": null,
      "street2": null,
      "city": null,
      "zip": null,
      "region": null,
      "phone": null,
      "email": null
    },
    "additionalData": {},
    "additionalMatches": {}
  }
}
Resident Identity Card (NIK) ID_SVC Full Name Ā· Date of Birth Ā· ID Value

Verifies an individual in Indonesia by matching the submitted name, date of birth, national ID, gender and address, returning SEON-normalized person data with per-field match results.

Required inputs

Full NameDate of BirthID Value

Optional inputs

GenderFull Address (combined)StreetStreet Line 2Zip Code

Request

{
  "config": {
    "ekyc": {
      "type": "ID_SVC"
    },
    "ekyc_api": true,
    "response_fields": "ekyc_data,ekyc_result"
  },
  "user_id": "usr_1234567890",
  "user_country": "ID",
  "user_fullname": "fury indah puspitasari",
  "user_dob": "1989-09-07",
  "id_value": "3276052203830087",
  "user_gender": "Female",
  "user_full_address": "GG Rawa Elok 2 No 42,  Kramatjati, JAKARTA TIMUR",
  "user_street": "GG Rawa Elok 2 No 42",
  "user_street2": "Kramatjati",
  "user_zip": "JAKARTA TIMUR"
}

Response

{
  "ekyc_result": "SUCCESS",
  "ekyc_data": {
    "person": {
      "firstName": null,
      "middleName": null,
      "lastName": null,
      "fullName": "fury indah puspitasari",
      "dateOfBirth": null,
      "gender": null,
      "nationalIds": [
        {
          "type": "NATIONAL_ID",
          "value": "3276052203830087",
          "country": "ID"
        }
      ],
      "phones": [],
      "emails": [],
      "addresses": [
        {
          "line1": "123 Main St",
          "city": "Springfield",
          "state": "ST",
          "postalCode": "00000",
          "country": "XX"
        }
      ]
    },
    "matches": {
      "firstName": null,
      "lastName": null,
      "middleName": null,
      "fullName": true,
      "dateOfBirth": true,
      "gender": true,
      "nationalId": true,
      "address": true,
      "street": true,
      "street2": true,
      "city": null,
      "zip": null,
      "region": true,
      "phone": null,
      "email": null
    },
    "additionalData": {},
    "additionalMatches": {}
  }
}

IE flag Ireland (IE) 1 check

Credit Bureau IE_CB First Name Ā· Last Name

Verifies an individual in Ireland by matching the submitted name, gender, date of birth and address, returning SEON-normalized person data with per-field match results.

Required inputs

First NameLast Name

Optional inputs

GenderDate of BirthStreetCityZip Code

Request

{
  "config": {
    "ekyc": {
      "type": "IE_CB"
    },
    "ekyc_api": true,
    "response_fields": "ekyc_data,ekyc_result"
  },
  "user_id": "usr_1234567890",
  "user_country": "IE",
  "user_firstname": "Emanuel",
  "user_lastname": "Engh",
  "user_gender": "FEMALE",
  "user_dob": "1949-03-01",
  "user_street": "1 Ashfield,Knockaun Court, Silversprings Clonmel",
  "user_city": "Co Tipperary",
  "user_zip": "E32AK24"
}

Response

{
  "ekyc_result": "SUCCESS",
  "ekyc_data": {
    "person": {
      "firstName": null,
      "middleName": null,
      "lastName": null,
      "fullName": null,
      "dateOfBirth": null,
      "gender": null,
      "nationalIds": [],
      "phones": [],
      "emails": [],
      "addresses": []
    },
    "matches": {
      "firstName": true,
      "lastName": true,
      "middleName": true,
      "fullName": null,
      "dateOfBirth": true,
      "gender": true,
      "nationalId": null,
      "address": null,
      "street": true,
      "street2": null,
      "city": true,
      "zip": true,
      "region": null,
      "phone": null,
      "email": null
    },
    "additionalData": {},
    "additionalMatches": {}
  }
}

MX flag Mexico (MX) 1 check

National ID (CURP) MX_ID_CURP ID Value

Fetches identity details using a Mexican CURP.

Required inputs

ID Value

Input guidance

ID Value
AcceptedCURP
Format18-character alphanumeric
Submit the Clave Única de Registro de Población (CURP) as id_value.

Request

{
  "config": {
    "ekyc": {
      "type": "MX_ID_CURP"
    },
    "ekyc_api": true,
    "response_fields": "ekyc_data,ekyc_result"
  },
  "user_id": "usr_hunt_MX_ID_CURP_generated",
  "id_value": "GAFA630717HDFRNL07"
}

Response

{
  "ekyc_result": "SUCCESS",
  "ekyc_data": {
    "person": {
      "first_name": "JOSE ALEJANDRO",
      "middle_name": null,
      "last_name": "GARIBAY",
      "full_name": null,
      "date_of_birth": "1963-07-17",
      "gender": null,
      "national_ids": [
        {
          "type": "CURP",
          "value": "GAFA630717HDFRNL07",
          "country": "MX"
        }
      ],
      "phones": [],
      "emails": [],
      "addresses": []
    },
    "matches": {
      "first_name": null,
      "last_name": null,
      "middle_name": null,
      "full_name": null,
      "date_of_birth": null,
      "gender": null,
      "national_id": null,
      "address": null,
      "phone": null,
      "email": null,
      "street": null,
      "street2": null,
      "city": null,
      "zip": null,
      "region": null
    },
    "additional_matches": null,
    "additional_data": {
      "father_last_name": "GARIBAY",
      "mother_last_name": "FUENTES",
      "country_of_birth": "MEXICO",
      "state_of_birth": "DISTRITO FEDERAL",
      "curp_status": "AN",
      "registration_year": "1963",
      "registration_state": "DISTRITO FEDERAL",
      "act_number": "00016"
    }
  }
}

NZ flag New Zealand (NZ) 2 checks

Credit Bureau NZ_CB First Name Ā· Last Name Ā· Street Ā· City Ā· Region +1

Verifies an individual in New Zealand by matching the submitted name, address and date of birth, returning SEON-normalized person data with per-field match results.

Required inputs

First NameLast NameStreetCityRegionZip Code

Optional inputs

Date of BirthStreet Line 2

Request

{
  "config": {
    "ekyc": {
      "type": "NZ_CB"
    },
    "ekyc_api": true,
    "response_fields": "ekyc_data,ekyc_result"
  },
  "user_id": "usr_1234567890",
  "user_country": "NZ",
  "user_firstname": "Montgomery",
  "user_lastname": "Mercury",
  "user_street": "1 Mercury Street",
  "user_city": "Milson",
  "user_region": "Manawatu",
  "user_zip": "4414",
  "user_dob": "1980-01-01"
}

Response

{
  "ekyc_result": "SUCCESS",
  "ekyc_data": {
    "person": {
      "firstName": null,
      "middleName": null,
      "lastName": null,
      "fullName": null,
      "dateOfBirth": null,
      "gender": null,
      "nationalIds": [],
      "phones": [],
      "emails": [],
      "addresses": []
    },
    "matches": {
      "firstName": true,
      "lastName": true,
      "middleName": null,
      "fullName": null,
      "dateOfBirth": true,
      "gender": null,
      "nationalId": null,
      "address": null,
      "street": true,
      "street2": true,
      "city": true,
      "zip": true,
      "region": true,
      "phone": null,
      "email": null
    },
    "additionalData": {},
    "additionalMatches": {}
  }
}
Residential NZ_RC First Name Ā· Last Name Ā· Street Ā· City Ā· Region +1

Verifies an individual in New Zealand by matching the submitted name, address, date of birth and phone, returning SEON-normalized person data with per-field match results.

Required inputs

First NameLast NameStreetCityRegionZip Code

Optional inputs

Middle NameDate of BirthPhone Number

Request

{
  "config": {
    "ekyc": {
      "type": "NZ_RC"
    },
    "ekyc_api": true,
    "response_fields": "ekyc_data,ekyc_result"
  },
  "user_id": "usr_1234567890",
  "user_country": "NZ",
  "user_firstname": "Elliot",
  "user_lastname": "Bish",
  "user_street": "24 Asquith Avenue",
  "user_city": "Mount Albert",
  "user_region": "Auckland",
  "user_zip": "1025",
  "user_middlename": "A",
  "user_dob": "2001-01-01",
  "phone_number": "0211544103"
}

Response

{
  "ekyc_result": "SUCCESS",
  "ekyc_data": {
    "person": {
      "firstName": null,
      "middleName": null,
      "lastName": null,
      "fullName": null,
      "dateOfBirth": null,
      "gender": null,
      "nationalIds": [],
      "phones": [],
      "emails": [],
      "addresses": []
    },
    "matches": {
      "firstName": true,
      "lastName": true,
      "middleName": true,
      "fullName": null,
      "dateOfBirth": true,
      "gender": null,
      "nationalId": null,
      "address": null,
      "street": true,
      "street2": null,
      "city": true,
      "zip": true,
      "region": true,
      "phone": true,
      "email": null
    },
    "additionalData": {
      "dpId": "A1234567"
    },
    "additionalMatches": {
      "landlinePhone": true
    }
  }
}

NG flag Nigeria (NG) 2 checks

National ID (BVN) NG_ID_BVN First Name Ā· Last Name Ā· Middle Name Ā· Date of Birth Ā· Gender +2

Verifies Nigerian Bank Verification Number (BVN) and returns per-field match results.

Required inputs

First NameLast NameMiddle NameDate of BirthGenderPhone NumberID Value

Input guidance

ID Value
AcceptedBVN
Submit the 11-digit Bank Verification Number (BVN) as id_value.

Request

{
  "config": {
    "ekyc": {
      "type": "NG_ID_BVN"
    },
    "ekyc_api": true,
    "response_fields": "ekyc_data,ekyc_result"
  },
  "user_id": "usr_1234567890",
  "user_firstname": "abu",
  "user_lastname": "salim",
  "user_middlename": "damu",
  "user_dob": "1968-10-18",
  "user_gender": "male",
  "phone_number": "8079374852",
  "id_value": "123456789",
  "user_country": "NG"
}

Response

{
  "ekyc_result": "SUCCESS",
  "ekyc_data": {
    "person": {
      "firstName": null,
      "middleName": null,
      "lastName": null,
      "fullName": null,
      "dateOfBirth": null,
      "gender": null,
      "nationalIds": [],
      "phones": [],
      "emails": [],
      "addresses": []
    },
    "matches": {
      "firstName": true,
      "lastName": true,
      "middleName": true,
      "fullName": null,
      "dateOfBirth": true,
      "gender": true,
      "nationalId": true,
      "address": null,
      "street": null,
      "street2": null,
      "city": null,
      "zip": null,
      "region": null,
      "phone": true,
      "email": null
    },
    "additionalData": {},
    "additionalMatches": {}
  }
}
National ID (NIN) NG_ID_NIN First Name Ā· Last Name Ā· Date of Birth Ā· Gender Ā· Phone Number +1

Verifies Nigerian National Identification Number (NIN) and returns per-field match results.

Required inputs

First NameLast NameDate of BirthGenderPhone NumberID Value

Optional inputs

Middle Name

Input guidance

ID Value
AcceptedNIN
Submit the 11-digit National Identification Number (NIN) as id_value.

Request

{
  "config": {
    "ekyc": {
      "type": "NG_ID_NIN"
    },
    "ekyc_api": true,
    "response_fields": "ekyc_data,ekyc_result"
  },
  "user_id": "usr_1234567890",
  "user_firstname": "Abu",
  "user_lastname": "Salim",
  "user_dob": "1968-10-18",
  "user_gender": "Male",
  "phone_number": "8079374852",
  "id_value": "123456789",
  "user_middlename": "Damu",
  "user_country": "NG"
}

Response

{
  "ekyc_result": "SUCCESS",
  "ekyc_data": {
    "person": {
      "firstName": null,
      "middleName": null,
      "lastName": null,
      "fullName": null,
      "dateOfBirth": null,
      "gender": null,
      "nationalIds": [],
      "phones": [],
      "emails": [],
      "addresses": []
    },
    "matches": {
      "firstName": true,
      "lastName": true,
      "middleName": true,
      "fullName": null,
      "dateOfBirth": true,
      "gender": true,
      "nationalId": true,
      "address": null,
      "street": null,
      "street2": null,
      "city": null,
      "zip": null,
      "region": null,
      "phone": true,
      "email": null
    },
    "additionalData": {},
    "additionalMatches": {}
  }
}

PE flag Peru (PE) 1 check

National ID PE_ID_DNI ID Value

Fetches identity details for Peruvian citizens from national registries.

Required inputs

ID Value

Input guidance

ID Value
AcceptedDNI
Submit the Documento Nacional de Identidad (DNI) as id_value.

Request

{
  "config": {
    "ekyc": {
      "type": "PE_ID_DNI"
    },
    "ekyc_api": true,
    "response_fields": "ekyc_data,ekyc_result"
  },
  "user_id": "usr_hunt_PE_ID_DNI_generated",
  "id_value": "1234567"
}

Response

{
  "ekyc_result": "SUCCESS",
  "ekyc_data": {
    "person": {
      "first_name": "JUSTINA",
      "middle_name": null,
      "last_name": "QUISPE DE SOTO",
      "full_name": "JUSTINA QUISPE DE SOTO",
      "date_of_birth": "1947-12-09",
      "gender": "FEMALE",
      "national_ids": [
        {
          "type": "DNI",
          "value": "01234567",
          "country": "PE"
        }
      ],
      "phones": [],
      "emails": [],
      "addresses": [
        {
          "full_address": "PUNO-HUANCANE-COJATA",
          "line1": null,
          "city": null,
          "state": null,
          "postal_code": null,
          "country": "PE"
        }
      ]
    },
    "matches": {
      "first_name": null,
      "last_name": null,
      "middle_name": null,
      "full_name": null,
      "date_of_birth": null,
      "gender": null,
      "national_id": null,
      "address": null,
      "phone": null,
      "email": null,
      "street": null,
      "street2": null,
      "city": null,
      "zip": null,
      "region": null
    },
    "additional_matches": null,
    "additional_data": {
      "marital_status": "Married",
      "data_document_type": "DNI",
      "ubigeo_reniec": "not_available",
      "check_digit": "not_available"
    }
  }
}

PH flag Philippines (PH) 2 checks

Credit Bureau PH_CB_SSS PH_CB_TIN PH_CB 3 request variants Full Name Ā· First Name Ā· Last Name Ā· Date of Birth Ā· ID Value

Verifies an individual in Philippines by matching the submitted name, date of birth, national ID and address, returning SEON-normalized person data with per-field match results.

Required inputs

Full NameFirst NameLast NameDate of BirthID Value

Optional inputs

Middle NameStreetStreet Line 2CityRegionZip Code

Request variants

National ID: SSS PH_CB_SSS

Required inputs

Full NameFirst NameLast NameDate of BirthID Value

Optional inputs

Middle NameStreetStreet Line 2CityRegionZip Code

Request

{
  "config": {
    "ekyc": {
      "type": "PH_CB_SSS"
    },
    "ekyc_api": true,
    "response_fields": "ekyc_data,ekyc_result"
  },
  "user_id": "usr_1234567890",
  "user_country": "PH",
  "user_fullname": "Jane Doe",
  "user_firstname": "Lanie",
  "user_lastname": "Avida",
  "user_dob": "1960-09-25",
  "id_value": "1023456789",
  "user_middlename": "G",
  "user_street": "PROPER",
  "user_street2": "Buhisan",
  "user_city": "Cebu City",
  "user_region": "EX",
  "user_zip": "6000"
}

Response

{
  "ekyc_result": "SUCCESS",
  "ekyc_data": {
    "person": {
      "firstName": null,
      "middleName": null,
      "lastName": null,
      "fullName": null,
      "dateOfBirth": null,
      "gender": null,
      "nationalIds": [
        {
          "type": "NATIONAL_ID",
          "value": "1023456789",
          "country": "PH"
        }
      ],
      "phones": [],
      "emails": [],
      "addresses": [
        {
          "line1": "123 Main St",
          "city": "Springfield",
          "state": "ST",
          "postalCode": "00000",
          "country": "XX"
        }
      ]
    },
    "matches": {
      "firstName": true,
      "lastName": true,
      "middleName": true,
      "fullName": true,
      "dateOfBirth": true,
      "gender": null,
      "nationalId": true,
      "address": true,
      "street": true,
      "street2": true,
      "city": true,
      "zip": true,
      "region": true,
      "phone": null,
      "email": null
    },
    "additionalData": {},
    "additionalMatches": {}
  }
}
National ID: TIN PH_CB_TIN

Required inputs

Full NameFirst NameLast NameDate of BirthID Value

Optional inputs

Middle NameStreetStreet Line 2CityRegionZip Code

Request

{
  "config": {
    "ekyc": {
      "type": "PH_CB_TIN"
    },
    "ekyc_api": true,
    "response_fields": "ekyc_data,ekyc_result"
  },
  "user_id": "usr_1234567890",
  "user_country": "PH",
  "user_fullname": "Jane Doe",
  "user_firstname": "Lanie",
  "user_lastname": "Avida",
  "user_dob": "1960-09-25",
  "id_value": "1023456789",
  "user_middlename": "G",
  "user_street": "PROPER",
  "user_street2": "Buhisan",
  "user_city": "Cebu City",
  "user_region": "EX",
  "user_zip": "6000"
}

Response

{
  "ekyc_result": "SUCCESS",
  "ekyc_data": {
    "person": {
      "firstName": null,
      "middleName": null,
      "lastName": null,
      "fullName": null,
      "dateOfBirth": null,
      "gender": null,
      "nationalIds": [
        {
          "type": "NATIONAL_ID",
          "value": "1023456789",
          "country": "PH"
        }
      ],
      "phones": [],
      "emails": [],
      "addresses": [
        {
          "line1": "123 Main St",
          "city": "Springfield",
          "state": "ST",
          "postalCode": "00000",
          "country": "XX"
        }
      ]
    },
    "matches": {
      "firstName": true,
      "lastName": true,
      "middleName": true,
      "fullName": true,
      "dateOfBirth": true,
      "gender": null,
      "nationalId": true,
      "address": true,
      "street": true,
      "street2": true,
      "city": true,
      "zip": true,
      "region": true,
      "phone": null,
      "email": null
    },
    "additionalData": {},
    "additionalMatches": {}
  }
}
No National ID PH_CB

Required inputs

Full NameFirst NameLast NameDate of Birth

Optional inputs

Middle NameStreetStreet Line 2CityRegionZip Code

Request

{
  "config": {
    "ekyc": {
      "type": "PH_CB"
    },
    "ekyc_api": true,
    "response_fields": "ekyc_data,ekyc_result"
  },
  "user_id": "usr_1234567890",
  "user_country": "PH",
  "user_fullname": "Jane Doe",
  "user_firstname": "Lanie",
  "user_lastname": "Avida",
  "user_dob": "1960-09-25",
  "user_middlename": "G",
  "user_street": "PROPER",
  "user_street2": "Buhisan",
  "user_city": "Cebu City",
  "user_region": "EX",
  "user_zip": "6000"
}

Response

{
  "ekyc_result": "SUCCESS",
  "ekyc_data": {
    "person": {
      "firstName": null,
      "middleName": null,
      "lastName": null,
      "fullName": null,
      "dateOfBirth": null,
      "gender": null,
      "nationalIds": [],
      "phones": [],
      "emails": [],
      "addresses": [
        {
          "line1": "123 Main St",
          "city": "Springfield",
          "state": "ST",
          "postalCode": "00000",
          "country": "XX"
        }
      ]
    },
    "matches": {
      "firstName": true,
      "lastName": true,
      "middleName": true,
      "fullName": true,
      "dateOfBirth": true,
      "gender": null,
      "nationalId": null,
      "address": true,
      "street": true,
      "street2": true,
      "city": true,
      "zip": true,
      "region": true,
      "phone": null,
      "email": null
    },
    "additionalData": {},
    "additionalMatches": {}
  }
}
Residential PH_RC Full Name Ā· First Name Ā· Middle Name Ā· Last Name Ā· Date of Birth

Verifies an individual in Philippines by matching the submitted name, date of birth and address, returning SEON-normalized person data with per-field match results.

Required inputs

Full NameFirst NameMiddle NameLast NameDate of Birth

Optional inputs

Full Address (combined)StreetStreet Line 2CityRegionZip Code

Request

{
  "config": {
    "ekyc": {
      "type": "PH_RC"
    },
    "ekyc_api": true,
    "response_fields": "ekyc_data,ekyc_result"
  },
  "user_id": "usr_1234567890",
  "user_country": "PH",
  "user_fullname": "Jane Doe",
  "user_firstname": "Caroline",
  "user_middlename": "Villanueva",
  "user_lastname": "Vega",
  "user_dob": "1977-11-04",
  "user_full_address": "example",
  "user_street": "Barangka Drive",
  "user_street2": "Alicante",
  "user_city": "Enrique B Magalona",
  "user_region": "Negros Occidental",
  "user_zip": "6118"
}

Response

{
  "ekyc_result": "SUCCESS",
  "ekyc_data": {
    "person": {
      "firstName": null,
      "middleName": null,
      "lastName": null,
      "fullName": "Jane Doe",
      "dateOfBirth": null,
      "gender": null,
      "nationalIds": [],
      "phones": [],
      "emails": [],
      "addresses": [
        {
          "line1": "123 Main St",
          "city": "Springfield",
          "state": "ST",
          "postalCode": "00000",
          "country": "XX"
        }
      ]
    },
    "matches": {
      "firstName": true,
      "lastName": true,
      "middleName": true,
      "fullName": true,
      "dateOfBirth": true,
      "gender": null,
      "nationalId": null,
      "address": true,
      "street": true,
      "street2": true,
      "city": true,
      "zip": true,
      "region": true,
      "phone": null,
      "email": null
    },
    "additionalData": {},
    "additionalMatches": {}
  }
}

TH flag Thailand (TH) 1 check

National ID TH_ID Full Name Ā· First Name Ā· Last Name Ā· Date of Birth Ā· ID Value

Verifies an individual in Thailand by matching the submitted name, date of birth, national ID and address, returning SEON-normalized person data with per-field match results.

Required inputs

Full NameFirst NameLast NameDate of BirthID Value

Optional inputs

Middle NameFull Address (combined)StreetStreet Line 2CityRegion

Request

{
  "config": {
    "ekyc": {
      "type": "TH_ID"
    },
    "ekyc_api": true,
    "response_fields": "ekyc_data,ekyc_result"
  },
  "user_id": "usr_1234567890",
  "user_country": "TH",
  "user_fullname": "Jane Doe",
  "user_firstname": "??????????",
  "user_lastname": "????????",
  "user_dob": "1994-06-14",
  "id_value": "1100501105490",
  "user_middlename": "A",
  "user_full_address": "???????? 442/8 ??????? ?????????",
  "user_street": "????????",
  "user_street2": "442/8",
  "user_city": "???????",
  "user_region": "?????????"
}

Response

{
  "ekyc_result": "SUCCESS",
  "ekyc_data": {
    "person": {
      "firstName": null,
      "middleName": null,
      "lastName": null,
      "fullName": "Jane Doe",
      "dateOfBirth": null,
      "gender": null,
      "nationalIds": [
        {
          "type": "NATIONAL_ID",
          "value": "1100501105490",
          "country": "TH"
        }
      ],
      "phones": [],
      "emails": [],
      "addresses": [
        {
          "line1": "123 Main St",
          "city": "Springfield",
          "state": "ST",
          "postalCode": "00000",
          "country": "XX"
        }
      ]
    },
    "matches": {
      "firstName": true,
      "lastName": true,
      "middleName": true,
      "fullName": true,
      "dateOfBirth": true,
      "gender": null,
      "nationalId": true,
      "address": true,
      "street": true,
      "street2": true,
      "city": true,
      "zip": null,
      "region": true,
      "phone": null,
      "email": null
    },
    "additionalData": {},
    "additionalMatches": {}
  }
}

GB flag United Kingdom (GB) 3 checks

Citizen Registry UK_SVC First Name Ā· Last Name Ā· Date of Birth Ā· Zip Code

Verifies identity against UK commercial and public sources.

Required inputs

First NameLast NameDate of BirthZip Code

Optional inputs

StreetCityEmail

Request

{
  "config": {
    "ekyc": {
      "type": "UK_SVC"
    },
    "ekyc_api": true,
    "response_fields": "ekyc_data,ekyc_result"
  },
  "user_id": "usr_1234567890",
  "user_country": "GB",
  "user_firstname": "John",
  "user_lastname": "CompletelyFound",
  "user_dob": "1967-06-15",
  "user_zip": "AA1 XX0",
  "user_street": "7 Cromhall Close",
  "user_city": "Fareham",
  "email": "dz3@email.com"
}

Response

{
  "ekyc_result": "SUCCESS",
  "ekyc_data": {
    "person": {
      "firstName": null,
      "middleName": null,
      "lastName": null,
      "fullName": null,
      "dateOfBirth": null,
      "gender": null,
      "nationalIds": [],
      "phones": [],
      "emails": [],
      "addresses": []
    },
    "matches": {
      "firstName": true,
      "lastName": true,
      "middleName": null,
      "fullName": null,
      "dateOfBirth": true,
      "gender": null,
      "nationalId": null,
      "address": null,
      "street": null,
      "street2": null,
      "city": null,
      "zip": null,
      "region": null,
      "phone": null,
      "email": null
    },
    "additionalData": {},
    "additionalMatches": {}
  }
}
Credit Bureau UK_CB First Name Ā· Last Name Ā· Date of Birth Ā· Street Ā· Zip Code

Verifies identity against UK credit-header data.

Required inputs

First NameLast NameDate of BirthStreetZip Code

Optional inputs

Middle NameCityRegion

Request

{
  "config": {
    "ekyc": {
      "type": "UK_CB"
    },
    "ekyc_api": true,
    "response_fields": "ekyc_data,ekyc_result"
  },
  "user_id": "usr_hunt_UK_CB_fraudapi-uk-rc-success",
  "user_country": "GB",
  "user_firstname": "Martin",
  "user_lastname": "Skidmore",
  "user_dob": "1962-04-24",
  "user_street": "29 Riverford Crescent",
  "user_zip": "IV7 8HL"
}

Response

{
  "ekyc_result": "SUCCESS",
  "ekyc_data": {
    "person": {
      "first_name": null,
      "middle_name": null,
      "last_name": null,
      "full_name": null,
      "date_of_birth": null,
      "gender": null,
      "national_ids": [],
      "phones": [],
      "emails": [],
      "addresses": []
    },
    "matches": {
      "first_name": true,
      "last_name": true,
      "middle_name": null,
      "full_name": true,
      "date_of_birth": true,
      "gender": null,
      "national_id": null,
      "address": true,
      "phone": null,
      "email": null,
      "street": true,
      "street2": null,
      "city": null,
      "zip": true,
      "region": null
    },
    "additional_matches": null,
    "additional_data": null
  }
}
Residential UK_RC First Name Ā· Last Name Ā· Date of Birth Ā· Street Ā· Street Line 2 +5

Verifies identity against UK residential sources.

Required inputs

First NameLast NameDate of BirthStreetStreet Line 2CityRegionZip CodePhone NumberEmail

Request

{
  "config": {
    "ekyc": {
      "type": "UK_RC"
    },
    "ekyc_api": true,
    "response_fields": "ekyc_data,ekyc_result"
  },
  "user_id": "usr_hunt_UK_RC_generated",
  "user_country": "GB",
  "user_firstname": "Martin",
  "user_lastname": "Skidmore",
  "user_dob": "1962-04-24",
  "user_street": "29 Riverford Crescent",
  "user_street2": "Conon Bridge",
  "user_city": "Dingwall",
  "user_region": "Ross-shire",
  "user_zip": "IV7 8HL",
  "phone_number": "07753640917",
  "email": "martin.skidmore@btconnect.com"
}

Response

{
  "ekyc_result": "SUCCESS",
  "ekyc_data": {
    "person": {
      "first_name": null,
      "middle_name": null,
      "last_name": null,
      "full_name": null,
      "date_of_birth": null,
      "gender": null,
      "national_ids": [],
      "phones": [],
      "emails": [],
      "addresses": []
    },
    "matches": {
      "first_name": true,
      "last_name": true,
      "middle_name": null,
      "full_name": true,
      "date_of_birth": true,
      "gender": null,
      "national_id": null,
      "address": true,
      "phone": true,
      "email": false,
      "street": true,
      "street2": true,
      "city": true,
      "zip": true,
      "region": true
    },
    "additional_matches": null,
    "additional_data": null
  }
}

US flag United States (US) 3 checks

Credit Bureau US_CB First Name Ā· Last Name

Verifies identity against US credit-header data.

Required inputs

First NameLast Name

Additional inputs (choose ?2)

Date of BirthStreetCityRegionZip CodeID ValuePhone NumberEmail

Optional inputs

Middle Name

Input guidance

First Name
Required on every request.
Last Name
Required on every request.
ID Value
AcceptedSSNITIN
Submit the customer's Social Security Number (SSN) or Individual Taxpayer Identification Number (ITIN) as id_value.

Notes

  • Mandatory name: Every request must include user_firstname and user_lastname.
  • Additional inputs: Also include at least two fields from the Additional inputs group. ID Value (SSN or ITIN) is one option in that group — it is not required on every request.

Request

{
  "config": {
    "ekyc": {
      "type": "US_CB"
    },
    "ekyc_api": true,
    "response_fields": "ekyc_data,ekyc_result"
  },
  "user_id": "usr_full_us_cb",
  "user_country": "US",
  "user_firstname": "Michael",
  "user_lastname": "Scudero",
  "user_dob": "1989-06-21",
  "user_street": "66 Bethany Road",
  "user_city": "Holmdel",
  "user_region": "NJ",
  "user_zip": "07733",
  "email": "hoymike794@gmail.com",
  "phone_number": "7327680712"
}

Response

{
  "ekyc_result": "SUCCESS",
  "ekyc_data": {
    "person": {
      "first_name": null,
      "middle_name": null,
      "last_name": null,
      "full_name": null,
      "date_of_birth": null,
      "gender": null,
      "national_ids": [],
      "phones": [],
      "emails": [],
      "addresses": []
    },
    "matches": {
      "first_name": true,
      "last_name": true,
      "middle_name": null,
      "full_name": true,
      "date_of_birth": true,
      "gender": null,
      "national_id": null,
      "address": true,
      "phone": true,
      "email": true,
      "street": true,
      "street2": null,
      "city": true,
      "zip": true,
      "region": true
    },
    "additional_matches": null,
    "additional_data": null
  }
}
Driver Licence US_ID_DL First Name Ā· Last Name Ā· Document Issue Region Ā· Document Number

Verifies an individual in United States by matching the submitted name, date of birth, gender, address and national ID, returning SEON-normalized person data with per-field match results.

Required inputs

First NameLast NameDocument Issue RegionDocument Number

Optional inputs

Middle NameDate of BirthGenderStreetStreet Line 2CityZip CodeID ValueDocument Issue DateDocument Expiry Date

Request

{
  "config": {
    "ekyc": {
      "type": "US_ID_DL"
    },
    "ekyc_api": true,
    "response_fields": "ekyc_data,ekyc_result"
  },
  "user_id": "usr_1234567890",
  "user_firstname": "Jane",
  "user_lastname": "Doe",
  "doc_issue_region": "example",
  "doc_number": "example",
  "user_middlename": "A",
  "user_dob": "1990-01-15",
  "user_gender": "FEMALE",
  "user_street": "1 Example Street",
  "user_city": "Example City",
  "user_zip": "00000",
  "id_value": "123456789",
  "doc_issue_date": "1990-01-15",
  "doc_exp_date": "1990-01-15",
  "user_country": "US"
}

Response

{
  "ekyc_result": "SUCCESS",
  "ekyc_data": {
    "person": {
      "firstName": null,
      "middleName": null,
      "lastName": null,
      "fullName": null,
      "dateOfBirth": null,
      "gender": null,
      "nationalIds": [],
      "phones": [],
      "emails": [],
      "addresses": []
    },
    "matches": {
      "firstName": true,
      "lastName": true,
      "middleName": true,
      "fullName": null,
      "dateOfBirth": true,
      "gender": null,
      "nationalId": null,
      "address": null,
      "street": true,
      "street2": true,
      "city": true,
      "zip": true,
      "region": true,
      "phone": null,
      "email": null
    },
    "additionalData": {
      "confidenceThreshold": "A1234567",
      "confidenceScore": "1.000"
    },
    "additionalMatches": {
      "documentCategoryMatch": true,
      "personLastNameFuzzyPrimaryMatch": true,
      "personLastNameFuzzyAlternateMatch": true,
      "personFirstNameFuzzyPrimaryMatch": true,
      "personFirstNameFuzzyAlternateMatch": true,
      "personMiddleNameFuzzyPrimaryMatch": true,
      "personMiddleNameFuzzyAlternateMatch": true,
      "personMiddleInitialMatch": true,
      "driverLicenseIssueDateMatch": true,
      "driverLicenseExpirationDateMatch": true,
      "driverLicenseNumberMatch": true,
      "addressZip4Match": true,
      "personSexCodeMatch": true,
      "addressLine1FuzzyMatch": true
    }
  }
}
Identity Prefill US_ID_F2

Retrieves verified US identity attributes from minimal input to pre-fill onboarding forms.

One of (required)

Phone Number+Date of BirthorPhone Number+ID ValueorFirst Name+ID ValueorFirst Name+Last Name+ID ValueorFirst Name+Last Name+Phone NumberorFirst Name+Last Name+Date of Birth

Optional inputs

StreetStreet Line 2CityRegionZip CodeMiddle NameDocument NumberEmail

Input guidance

Phone Number
Format10 digits
Required for any phone-based minimum combination.
Date of Birth
FormatYYYY-MM-DD
Required for any date-of-birth-based minimum combination.
ID Value
AcceptedSSN
Format9 digits, no punctuation
Submit the Social Security Number as id_value for SSN-based combinations.
First Name
Required for any name-based minimum combination.
Last Name
Required together with first name for the three-field minimum combinations.

Notes

  • Minimum input: Provide one or more of the following: (phone number and date of birth), (phone number and SSN), (first name and SSN), (first name, last name, and SSN), (first name, last name, and phone number), or (first name, last name, and date of birth). All other fields are optional.

Request

{
  "config": {
    "ekyc": {
      "type": "US_ID_F2"
    },
    "ekyc_api": true,
    "response_fields": "ekyc_data,ekyc_result"
  },
  "user_id": "usr_1234567890",
  "id_value": "123456789",
  "user_dob": "1990-01-01",
  "user_street": "1 Example Street",
  "user_city": "SampleCity",
  "user_region": "CA",
  "user_zip": "90001",
  "user_firstname": "Jane",
  "user_middlename": "M",
  "user_lastname": "Doe",
  "doc_number": "example",
  "email": "jane.doe@example.com",
  "phone_number": "+15555550100",
  "user_country": "US"
}

Response

{
  "ekyc_result": "SUCCESS",
  "ekyc_data": {
    "person": {
      "firstName": "Jane",
      "middleName": null,
      "lastName": "Doe",
      "fullName": "Jane M Doe",
      "dateOfBirth": null,
      "gender": null,
      "nationalIds": [
        {
          "type": "NATIONAL_ID",
          "value": "123456789",
          "country": "US"
        }
      ],
      "phones": [
        {
          "value": "+15555550123",
          "type": "mobile"
        }
      ],
      "emails": [
        {
          "value": "jane.doe@example.com",
          "type": "personal"
        }
      ],
      "addresses": [
        {
          "line1": "123 Main St",
          "city": "Springfield",
          "state": "ST",
          "postalCode": "00000",
          "country": "XX"
        }
      ]
    },
    "matches": {
      "firstName": null,
      "lastName": null,
      "middleName": null,
      "fullName": null,
      "dateOfBirth": null,
      "gender": null,
      "nationalId": null,
      "address": null,
      "street": null,
      "street2": null,
      "city": null,
      "zip": null,
      "region": null,
      "phone": null,
      "email": null
    },
    "additionalData": {
      "recordFound": "Verified identity record",
      "addressHash": "36 Holt Road, Sylvania NSW 2224",
      "socialSecurityNumbers": "A1234567",
      "dobMonth": "1953-11-08",
      "dobDay": "1953-11-08",
      "dobYear": "1953-11-08",
      "age": "40",
      "driverLicense": "Verified identity record",
      "addressHistory": "36 Holt Road, Sylvania NSW 2224",
      "phoneHistory": "+61291501234",
      "emailHistory": "rodney.richards@identitymail.test",
      "akas": "Verified identity record",
      "datesOfBirth": "1953-11-08",
      "datesOfDeath": "2026-01-16",
      "deathRecords": "Verified identity record",
      "indicators": "Verified identity record",
      "isCurrentPropertyOwner": true,
      "driverLicenseDetails": "Verified identity record",
      "isPublic": true,
      "isOptedOut": true,
      "optOutDate": "2026-01-16",
      "addressHighRiskFlag": "36 Holt Road, Sylvania NSW 2224"
    },
    "additionalMatches": {
      "isResidential": true,
      "addressHighRiskFlag": true
    }
  }
}

AML payload examples

This section demonstrates different AML screening use cases, including customer screening and payment screening. The examples show recommended configurations and best practices for using search profiles, monitoring, and entity classification.

1. AML Customer Screening (Discouraged for New Implementations)

You can screen a user against sanctions lists, PEPs, crime watchlists and adverse media by configuring data sources and fuzzy-matching settings directly in the API request.

The example request below uses default source and fuzzy settings. All detailed configuration options can be defined via the API.

Recommendation

Although configuration via API is supported, we strongly recommend setting up source, monitoring and fuzzy-matching settings in the Admin UI and referencing them by name in the API request. This approach simplifies maintenance and reduces the risk of misconfiguration.

Example:

{
  "config": {
    "aml": {
      "type": "PERSON",
      "version": "v1",
      "monitoring_required": false,
      "monitoring_schedule": null,
      "sources": {
        "sanction_enabled": true,
        "pep_enabled": true,
        "watchlist_enabled": true,
        "crimelist_enabled": true,
        "adversemedia_enabled": false,
        "local_aml_sources": {
          "brazil_spa": false,
          "bolsa_familia": false,
          "cpf_based_pep": false,
          "cpf_based_ppe": false,
          "cpf_based_ppn": false,
          "seguro_defeso": false,
          "garantia_safra": false,
          "auxilio_emergencial": false,
          "brazil_bpc": false
        }
      },
      "fuzzy_enabled": true,
      "fuzzy_config": {
        "phonetic_search_enabled": false,
        "edit_distance_enabled": true,
        "scoring": {
          "allow_designator_translation": true,
          "edit_distance_1_threshold": 7,
          "edit_distance_2_threshold": 13,
          "enable_lastname_detection": false,
          "filter_mismatching_country": false,
          "filter_mismatching_country_designator": false,
          "filter_mismatching_dob": true,
          "filter_missing_country": false,
          "filter_missing_dob": false,
          "glued_words_splitting": "off",
          "allow_ocr_spellcheck": false,
          "min_nr_token_match": 67,
          "result_limit": 30,
          "score_threshold": 0.585,
          "adverse_media_scores": {
            "fuzziness": 0.5,
            "exact_match": false,
            "force_dob_filter": true,
            "force_country_filter": true
          }
        }
      }
    },
    "ip_api": false,
    "email_api": false,
    "phone_api": false,
    "aml_api": true,
    "response_fields": "aml_details",
    "device_fingerprinting": false
  },
  "user_fullname": "John Doe",
  "user_firstname": "",
  "user_middlename": "",
  "user_lastname": "",
  "user_dob": "",
  "user_pob": "",
  "user_photoid_number": "match",
  "user_id": "aml-deprecated",
  "user_country": ""
}

2. AML Customer Screening (Recommended)

In this approach, source selection, monitoring, and fuzzy-matching settings are configured in the Admin UI and referenced by name Ā "search_profile_id": "name of the search profile" in the API request.

This allows you to:

  • Update monitoring rules without resending screening requests
  • Maintain consistent screening behavior across integrations

Best Practices

  • Always specify the subject type (person or entity) to reduce false positives.
  • If the type is set to unknown, the system will automatically determine whether the subject is a person or an entity using AI-based classification.

Example

{
  "config": {
    "aml": {
      "type": "PERSON", #or ENTITY or UNKNOWN
      "version": "v1",
      "monitoring_required": false,
      "monitoring_schedule": null,
      "search_profile_id": "sysdefault"
    },
    "ip_api": false,
    "email_api": false,
    "phone_api": false,
    "aml_api": true,
    "response_fields": "aml_details",
    "device_fingerprinting": false
  },
  "user_fullname": "ACME Limited",
  "user_firstname": "",
  "user_middlename": "",
  "user_lastname": "",
  "user_dob": "",
  "user_pob": "",
  "user_photoid_number": "match",
  "user_id": "aml-entity",
  "user_country": ""
}

3. Payment Screening

By including a receiver object, you can screen both parties in a transaction (sender and receiver) in a single API call.

Payment screening allows you to:

  • Screen the sender and the counterparty simultaneously
  • Use separate search profiles for each party if needed

Note

  • Payment screening does not include ongoing monitoring.
  • If monitoring is required, use AML Customer Screening instead.

Example

{
  "config": {
    "aml": {
      "version": "v1",
      "payment_screening": {
        "sender_config": {
          "type": "UNKNOWN",
          "search_profile_id": "sysdefault"
        },
        "receiver_config": {
          "type": "UNKNOWN",
          "search_profile_id": "sysdefault"
        }
      }
    },
    "aml_api": true,
    "aml_bank_screening_api": false,
    "response_fields": "aml_details"
  },
  "user_fullname": "John Doe",
  "user_firstname": "",
  "user_middlename": "",
  "user_lastname": "",
  "user_dob": "",
  "user_pob": "",
  "user_photoid_number": "match",
  "user_id": "",
  "user_country": "",
  "receiver_fullname": "Jane Doe",
  "receiver_firstname": "",
  "receiver_middlename": "",
  "receiver_lastname": "",
  "receiver_dob": "",
  "receiver_pob": "",
  "receiver_photoid_number": "match",
  "receiver_id": "",
  "receiver_country": ""
}

Payment Screening with Bank Details

You can extend payment screening to include bank-level sanctions checks by enabling bank detail screening flags in the API request.

This ensures that transactions are not initiated toward sanctioned banks or financial institutions.

Supported Bank Checks

  • Bank name screening
  • Bank account screening /crypto wallet
  • SWIFT/BIC screening

Example

{
  "config": {
    "aml_bank_screening": {
      "bank_name_check": true,
      "bank_account_check": true,
      "bank_swift_check": true,
      "match_mode": "OR",
      "partial_match_threshold": 0.8,
      "result_limit": 10,
      "filter_mismatching_country": false,
      "filter_missing_country": false
    },
    "aml": {
      "version": "v1",
      "payment_screening": {
        "sender_config": {
          "type": "UNKNOWN",
          "search_profile_id": "sysdefault"
        },
        "receiver_config": {
          "type": "UNKNOWN",
          "search_profile_id": "sysdefault"
        }
      }
    },
    "aml_api": true,
    "aml_bank_screening_api": true,
    "response_fields": "aml_details,aml_bank_screening_details"
  },
  "user_bank_name": "User Bank",
  "user_bank_account": "User Bank Account",
  "user_bank_swift": "User Bank SWIFT",
  "user_bank_country": "country code",
  "user_fullname": "John Doe",
  "user_firstname": "",
  "user_middlename": "",
  "user_lastname": "",
  "user_dob": "",
  "user_pob": "",
  "user_photoid_number": "match",
  "user_id": "",
  "user_country": "",
  "receiver_bank_name": "Receiver Bank",
  "receiver_bank_account": "Receiver Bank Account",
  "receiver_bank_swift": "Receiver Bank SWIFT",
  "receiver_bank_country": "country code",
  "receiver_fullname": "Jane Doe",
  "receiver_firstname": "",
  "receiver_middlename": "",
  "receiver_lastname": "",
  "receiver_dob": "",
  "receiver_pob": "",
  "receiver_photoid_number": "match",
  "receiver_id": "",
  "receiver_country": ""
}

Address Intelligence

The Address Intelligence API turns raw user, billing, and shipping addresses into verified, standardized, fraud-relevant signals inside a single Fraud API v2 call. Each verified address is parsed against postal-authority data, standardized to deliverable form, and converted into a pair of canonical identifiers; US addresses receive additional USPS-level fraud signals. Results are returned inline in address_details and flow into the Scoring Engine, Network Detection, and the Addresses widget.

Good to know

  • No new integration surface. Address Intelligence is part of the Fraud API — there is no separate endpoint, license key, base URL, or rate limit. An existing integration keeps working; you can enable it in the config object.
  • Not enabled by default. Address Intelligence must be switched on for your organization before the config flags take effect. Contact your SEON account manager or support@seon.io to request access.
  • address_api is the master switch. It must be true for any address verification to run. When absent or false, nothing is verified and nothing is billed.
  • Enable per address type. verify_user_address, verify_billing_address, and verify_shipping_address each default to false. Only the types set to true are verified.
  • country and street are mandatory for an address to be verified. An address with no country is not sent to the verification engine — no result is returned for that type and no charge is incurred.
  • Maximum length is 100 characters per address field. Exceeding it rejects the request with a 400 error.
  • address_details must be listed in response_fields to receive results in the response. If it is omitted, verification still runs and results appear in the Addresses widget in SEON Admin, but the address_details object is not returned in the API response.
    • response_fields is an allow-list. When set, only the listed objects are returned — list every object you want alongside address_details (e.g. fraud_score, applied_rules, ip_details, email_details, phone_details).
  • Billing is per verified address, split into US and International counters on the API Stats page. You are not billed when: address_api is false or all verify_*_address flags are false; an address is missing a mandatory input; or verification returns no result (service unavailable / full timeout).
  • PARTIAL and NOT_FOUND addresses do not return canonical IDs. Use the exist / not_exist operators in rules and null-check in code.
  • Non-US addresses return status, precision, canonical IDs, and address_components only — region_specific_details and geocoding are null.
  • Results use the country’s native spelling and script. address_components, canonical_full_id and canonical_base_id are written the way the country’s postal service writes them, including non-Latin scripts such as Japanese or Arabic, so Elisabethstrasse 13 and Elisabethstraße 13 return the same IDs. Store and compare these values as UTF-8 without converting them to ASCII.

Request

Existing Fraud API integrations do not change the request body. The same six fields per address type are the input; the only addition is a small block in the config object that opts each address type into verification.

Example:

{
    "config": {
        "address_api": true,
        "address": {
            "verify_user_address": true,
            "verify_billing_address": true,
            "verify_shipping_address": true
        },
        "response_fields": "address_details"
    },
    "user_country": "US",
    "user_city": "Austin",
    "user_region": "TX",
    "user_zip": "78702",
    "user_street": "310 Comal Street, 2nd Floor",
    "user_street2": "",
    "shipping_country": "US",
    "shipping_city": "Austin",
    "shipping_region": "TX",
    "shipping_zip": "78702",
    "shipping_street": "310 COMAL ST FL 2",
    "shipping_street2": "",
    "billing_country": "HU",
    "billing_city": "Budapest",
    "billing_region": "",
    "billing_zip": "1072",
    "billing_street": "RÔkóczi út 42",
    "billing_street2": "7. emelet",
    "billing_phone": ""
}

Response

When address verification is enabled, the response gains an address_details object inside data. Each address-type slot (user_address, billing_address, shipping_address) contains either a full result object or null when that type's verify_*_address flag was not set.

Response Attributes

Ā Type
status
Ā string
precision
Ā string
canonical_full_id
Ā string
canonical_base_id
Ā string
address_components
Ā object
geocoding
Ā object
region_specific_details
Ā object
Response
{
 "success": true,
 "error": {},
 "data": {
  "address_details": {
   "user_address": {
    "canonical_full_id": "310_comal_st_fl_2_austin_tx_78702_4597_us",
    "canonical_base_id": "310_comal_st_austin_tx_78702_us",
    "status": "VERIFIED",
    "precision": "DELIVERY_POINT",
    "address_components": {
     "line_1": "310 Comal St Fl 2",
     "line_2": "Austin TX 78702-4597",
     "country_iso_2": "US",
     "country_iso_3": "USA"
    },
    "geocoding": {
     "latitude": 30.26046,
     "longitude": -97.72786,
     "precision": "ZIP9"
    },
    "region_specific_details": {
     "us": {
      "enhanced_match": [
       "POSTAL_MATCH",
       "UNKNOWN_SECONDARY",
       "IGNORED_INPUT"
      ],
      "delivery_point_barcode": "787024597993",
      "freight_forwarder_match": "NO_MATCH",
      "metadata": {
       "rdi": "COMMERCIAL",
       "record_type": "H",
       "zip_type": "Standard",
       "county_fips": "48453",
       "carrier_route": "C025",
       "congressional_district": "35",
       "elot_sequence": "0215",
       "elot_sort": "A"
      },
      "usps_analysis": {
       "dpv_match_code": "S",
       "dpv_cmra": false,
       "dpv_vacant": false,
       "dpv_no_stat": true,
       "dpv_footnotes": [
        "AA",
        "C1"
       ]
      }
     }
    }
   },
   "billing_address": {
    "canonical_full_id": "42_rÔkóczi_út_7_budapest_budapest_1072_hu",
    "canonical_base_id": "42_rÔkóczi_út_budapest_budapest_1072_hu",
    "status": "VERIFIED",
    "precision": "DELIVERY_POINT",
    "address_components": {
     "line_1": "Budapest, RÔkóczi Út 42 7, Emelet",
     "line_2": "1072",
     "country_iso_2": "HU",
     "country_iso_3": "HUN"
    },
    "geocoding": null,
    "region_specific_details": null
   },
   "shipping_address": {
    "canonical_full_id": "310_comal_st_fl_2_austin_tx_78702_4597_us",
    "canonical_base_id": "310_comal_st_austin_tx_78702_us",
    "status": "VERIFIED",
    "precision": "DELIVERY_POINT",
    "address_components": {
     "line_1": "310 Comal St Fl 2",
     "line_2": "Austin TX 78702-4597",
     "country_iso_2": "US",
     "country_iso_3": "USA"
    },
    "geocoding": {
     "latitude": 30.26046,
     "longitude": -97.72786,
     "precision": "ZIP9"
    },
    "region_specific_details": {
     "us": {
      "enhanced_match": [
       "POSTAL_MATCH",
       "UNKNOWN_SECONDARY"
      ],
      "delivery_point_barcode": "787024597993",
      "freight_forwarder_match": "NO_MATCH",
      "metadata": {
       "rdi": "COMMERCIAL",
       "record_type": "H",
       "zip_type": "Standard",
       "county_fips": "48453",
       "carrier_route": "C025",
       "congressional_district": "35",
       "elot_sequence": "0215",
       "elot_sort": "A"
      },
      "usps_analysis": {
       "dpv_match_code": "S",
       "dpv_cmra": false,
       "dpv_vacant": false,
       "dpv_no_stat": true,
       "dpv_footnotes": [
        "AA",
        "C1"
       ]
      }
     }
    }
   },
   "other_addresses": []
  }
 }
}

User Session Monitoring

SEON Session Monitoring connects a user’s full digital journey to fraud decisions. It uses a lightweight client-side SDK to collect session behavior and generates a stream_id. The customer backend sends this stream_id in the Fraud API request, so SEON can link the session to a login, registration, checkout, money movement, account recovery, or other sensitive action.
Ā 

What problem it solves

Most fraud decisions use point-in-time data such as IP, email, phone, device fingerprint, transaction amount, and account history. These signals are important, but they do not show how the user behaved during the session.

  • Session-level behavior can reveal risks that static checks may miss, including:
  • Information was entered by copying and pasting it into form fields.
  • An active phone call occurred during account recovery or payment.
  • Remote access or screen-sharing software was used during the session.
  • Forms were completed unusually quickly or in a bot-like manner.
  • The IP address, VPN, proxy, locale, browser, or device context changed mid-session.
  • Repeated off-screen activity occurred while personal or payment information was being entered.
  • Signs of automation appeared progressively throughout the flow.
  • Behavior appeared unnatural or inconsistent with normal session activity.
  • Signs of automation, remote access, or real-time voice coaching were present.
  • Specific screens and forms were interacted with before the transaction was completed.

Traditional analytics or replay tools may show what happened, but they are often separate from fraud decisioning. Session Monitoring is fraud-native: it connects session behavior directly to Fraud API decisions, Scoring Engine rules, and analyst review.
Ā 

Integration Overview

The integration has two parts.

1. Client-side SDK

The SEON Stream SDK starts session data collection, generates a unique stream_id, and streams behavioral events to SEON in the background.

The SDK can be started on page load, app open, login, registration, checkout, account recovery, or another sensitive entry point.

2. Server-side Fraud API linkage

The customer backend sends the stream_id in the Fraud API request. SEON then links the behavioral session to the transaction.

When linked, SEON can return session-based risk flags in the Fraud API response, make those flags available in the Scoring Engine, and show the full session journey in SEON Admin.

Architecture and data flow

  1. The client application initializes the SEON Stream SDK.
  2. The application starts a session at the chosen entry point.
  3. The SDK generates a unique stream_id.
  4. The SDK streams session events to SEON.
  5. The customer backend receives or retrieves the stream_id from the client.
  6. The backend sends the stream_id in the Fraud API request.
  7. SEON links the session to the transaction.
  8. Fraud API returns session context and risk flags when available.
  9. SEON Admin displays the session summary, timeline, form interactions, and linked transactions.

Important: Initial processing may take a few seconds after a session starts. If the Fraud API request is sent immediately after startStream(), early session signals may be incomplete.

Ā 

SDK integration guide

Web SDK

Supports single-page and multi-page applications with Vanilla JS and React framework.https://github.com/seontechnologies/seon-web-stream-sdk-public

Android SDK

The Android Stream SDK collects events from native Android applications. https://github.com/seontechnologies/seon-android-stream-sdk-public

iOS SDK

The iOS Stream SDK collects events from native iOS applications.Ā 
https://github.com/seontechnologies/seon-ios-stream-sdk-public

Ā 

Authentication

The SDK authenticates with a short lived, server issued token that you need to get separately:

  1. Your backend requests auth data from SEON's auth endpoint (server to server with your own SEON API key).
  2. Your app passes that blob to the SDK via the authData config property before starting a stream.
  3. The SDK decodes it into a JWT and the ingest domains.

Since the token is short lived, fetch a fresh one before every stream start using the endpoint for your account's region:

  • EU (Ireland) https://api.seon.io/session-monitoring-api/v1/auth
  • US (N. Virginia) https://api.us-east-1-main.seon.io/session-monitoring-api/v1/auth

Example flow:

# 1. Your backend serves /auth for the client to call SEON's auth API.
curl -X POST https://api.seon.io/session-monitoring-api/v1/auth \
  -H "X-API-KEY: YOUR_SEON_API_KEY"
// 2. Your client fetches auth data from your backend.
const authData = await fetch("/auth", { method: "POST" }).then((res) =>
  res.text(),
);

// 3. Pass it to the SDK via the constructor…
const seonStream = new SeonStream({ authData });
// …or apply it to an existing instance.
seonStream.setConfig({ authData });

Ā 

Request configuration

Existing Fraud API integrations continue to send the usual transaction, user, device, and risk fields. The required addition for Session Monitoring linkage is the stream_id generated by the SDK.

{
  "config": {
    "session_monitoring_api":true,
    "response_fields": "session_monitoring_details"
  },
  "stream_id": "01HX7M2K9F8Q4YB6T2N4ZP3A1C"
}

When stream_id is present, SEON attempts to match the Fraud API transaction to the streamed session.

When stream_id is missing:

  • No session context is attached.
  • No session risk flags are returned.
  • The transaction appears as a standalone event.
  • The Session Monitoring widget is not populated for that transaction.

Response

JSON Attributes

Type
sdk_platform
string
sdk_version
string
metadata
object
session_risk
object

Ā 

Risk levels

LevelMeaningRecommended handling
HighStrong fraud-relevant signal.Mark for review review, use in high scored decline rules depending on business risk appetite.
MediumMeaningful signal, best combined with other risk indicators.Use for score increase or multi-signal rules.
LowWeak or contextual signal.Use for analyst context, soft scoring, or combined rules.

Ā 

Session risk flags

Automation risk

FlagMeaning
ui_automationStrong signs of scripted or programmatic UI interaction.
device_farmSession may come from device-farm or coordinated automation infrastructure.
suspicious_form_filloutAbnormal form completion speed or unrealistic interaction patterns.
non_human_typingTyping metrics appears unlikely for a human.

Location risk

FlagMeaning
ip_changeIP address changed during the session.
vpnSession used a detected VPN provider.
proxyIP is associated with detected proxy services.
locale_changeDevice language or locale changed during the session.

Contextual risk

FlagMeaning
off_screenApp or browser became inactive during the session.
window_resizeBrowser window size changed.
unusual_device_orientationIrregular device rotation during the session.
extended_inactivityIdle periods were longer than expected.

Remote access risk

FlagMeaning
remote_accessSigns of remote control or screen-sharing activity.
active_callActive phone call during the session.
potential_vishingBehavior is consistent with real-time voice coaching or social engineering.

Ā 

Privacy

Session Monitoring is designed to collect metadata, not sensitive values.

The SDK does not captureThe SDK can capture:
  • Password values.
  • Credit card numbers.
  • Raw text entered into input fields.
  • Clipboard contents.
  • That an input was focused.
  • Characters added or deleted.
  • Typing duration.
  • Paste or copy action type.
  • Backspace count.
  • Time spent editing.
  • Whether the user went off-screen while editing.

This helps fraud teams detect suspicious behavior without capturing or storing sensitive data.

Ā 

SDK and platform support

PlatformRequirements
iOSiOS 13.0 or higher, Xcode 15 or higher, Swift 5.9 or higher.
AndroidAndroid 7.0 or higher, API level 24 or higher.
WebES2023 and native BigInt support. Chrome 67+, Firefox 68+, Safari 14+, Edge 79+. Vanilla JS and React are currently supported.
Response
{
 "success": true,
 "error": {},
 "data": {
  "session_monitoring_details": {
   "sdk_platform": "web",
   "sdk_version": "2.3.1",
   "metadata": {
    "start_time": "1772531452804",
    "end_time": "1772531496591",
    "session_duration": 1532000,
    "page_count": 7,
    "active_time": 982000,
    "idle_time": 310000,
    "off_screen_time": 240000
   },
   "session_risk": {
    "automation_risk": {
     "level": "medium",
     "flags": [
      "non_human_typing"
     ]
    },
    "contextual_risk": {
     "level": "medium",
     "flags": [
      "off_screen"
     ]
    },
    "remote_access_risk": {
     "level": null,
     "flags": []
    },
    "location_risk": {
     "level": "medium",
     "flags": [
      "vpn"
     ]
    }
   }
  }
 }
}

Velocity Aggregate Signals

Ā 

The Fraud API can return velocity aggregates for each transaction in the velocity_signals array. A velocity aggregate is a pre-computed value that describes how a user, card, device, or other entity behaved before the transaction. For example, user.user_id_card_hash_count_distinct__86400__ is the number of distinct cards a user has used in the last 24 hours.

Use the aggregates in your own analytics, data pipelines, or model training. AI Insights Score uses the same aggregates.

For how analysts use them in the Admin Panel, see the Velocity Aggregate Signals User Guide.

Velocity response scope

These conditions apply to velocity_signals:

  • The aggregates are returned in the existing Fraud API response.
  • Admin Panel settings do not affect the response. It contains every aggregate the transaction has data for, including aggregates turned off in the Admin Panel and API-only aggregates.

Velocity request configuration

To receive the aggregates, add velocity_signals to the response_fields parameter in config.

{
    "config": {
        "bin_api": true,
        "ip_api": true,
        "phone_api": true,
        "response_fields": "id,state,fraud_score,calculation_time,seon_id,velocity_signals"
    },
    "user_id": "velocity_test_01",
    "transaction_amount": 300,
    "phone_number": 36301234567,
    "card_bin": 12345678,
    "ip": "1.2.3.4"
}

If you do not add velocity_signals, your response does not change.

Velocity response
The velocity_signals array contains one object for every aggregate the transaction has data for. Each object holds the aggregate's signal_name, display_name, and value.

{
    "velocity_signals": [
        {
            "signal_name": "card_bin.card_bin_user_id_count_distinct__2592000__",
            "display_name": "Card BIN Distinct Users (30d)",
            "value": 1
        },
        {
            "signal_name": "user.user_id_true_device_id_count_distinct__2592000__",
            "display_name": "User ID Distinct True Device IDs (30d)",
            "value": 1
        },
        {
            "signal_name": "card_bin.card_bin_tx_count__all__",
            "display_name": "Card BIN Transaction Count (lifetime)",
            "value": 6
        },
…
    ]
}

If the transaction contains the key entity of an aggregate, but nothing was seen in the time range, the aggregate is returned with a value of 0. For example, a bank account that no other user has used before returns 0 for user_bank_account.user_bank_account_user_id_count_distinct__604800__.

If the transaction does not contain the key entity, the aggregate is left out of velocity_signals. This happens, for example, when a transaction has no user_bank_account, and for every device aggregate when SEON device intelligence is not integrated. A missing aggregate means the data was not sent, while 0 means the data was sent but nothing was seen.

If the key entity is present, all of its aggregates are returned, even when the counted field is missing from this transaction. For example, user.user_id_card_hash_count_distinct__86400__ on a transaction without a card still returns the number of distinct cards the user had used in the 24 hours before it.


Velocity value calculation

Aggregate values follow these rules:

  • Every time range is a rolling window that ends at the transaction. A time range of 1 day means the last 24 hours, not the calendar day.
  • The current transaction is not included in its own values. A user.user_id_card_hash_count_distinct__86400__ value of 3 means the user had used 3 distinct cards in the 24 hours before this transaction.
  • Lifetime values cover all the data SEON holds for your account, back to your earliest data or to the limit of your data retention period.
  • Values are calculated only from the data that is available for the given transaction. Without SEON device intelligence, device aggregates have no value, and a transaction without card details has no card aggregate values.
  • Values are calculated when the transaction is processed, stored with it, and do not change afterward. Transactions processed before Velocity Aggregate Signals was enabled for your account have no stored values, but their data still counts toward the aggregates of later transactions.

Velocity field names

Every field name follows the pattern entity.entity_countedfield_calculation__timerange__. For example, true_device.true_device_id_card_hash_count_distinct__3600__ is the number of distinct card hashes seen for a device in the last hour.

The calculation part takes one of these forms:

  • count_distinct counts distinct values of the counted field.
  • tx_count counts transactions.
  • deposit_amount_avg averages the transaction amount.

The time range is given in seconds: 60 (1 minute), 300 (5 minutes), 600 (10 minutes), 3600 (1 hour), 86400 (1 day), 604800 (7 days), or 2592000 (30 days). Lifetime aggregates use all instead. Values are integers, except the average amounts, which are numbers with decimals.

Names use these abbreviations: bank identification number (BIN), domain name system (DNS), and internet service provider (ISP).

Velocity fields: Addresses

Type
Users per address (30d)
integer
Users per address (lifetime)
integer
Users per billing address (30d)
integer
Users per billing address (lifetime)
integer
Users per delivery address (7d)
integer
Users per shipping address (1d)
integer
Users per shipping address (30d)
integer

Velocity fields: Credit card, per card

Type
Addresses per card (30d)
integer
BINs per card (5m)
integer
Birth dates per card (30d)
integer
Devices per card (5m)
integer
Devices per card (1h)
integer
Devices per card (1d)
integer
Devices per card (30d)
integer
Expiry dates per card (5m)
integer
Surnames per card (30d)
integer
User countries per card (30d)
integer
Users per card (1h)
integer
Users per card (1d)
integer
Users per card (7d)
integer
Users per card (30d)
integer
Users per card (lifetime)
integer
Users per expiry date (1h)
integer

Velocity fields: Credit card, per BIN

Type
Cards per BIN (1h)
integer
Cards per BIN (1d)
integer
Cards per BIN (30d)
integer
Cards per BIN (lifetime)
integer
Transactions per BIN (lifetime)
integer
Users per BIN (1h)
integer
Users per BIN (1d)
integer
Users per BIN (30d)
integer
Users per BIN (lifetime)
integer
Transactions per BIN (30d)
integer

Velocity fields: Credit card, per bank account

Type
Users per bank account (1d)
integer
Users per bank account (7d)
integer
Users per bank account (30d)
integer
Users per bank account (lifetime)
integer

Velocity fields: Devices & OS, users and transactions

Type
Transactions per device (1m)
integer
Transactions per device (10m)
integer
Transactions per device (1d)
integer
Users per device (1m)
integer
Users per device (5m)
integer
Users per device (1h)
integer
Users per device (30d)
integer
Users per device (lifetime)
integer

Velocity fields: Devices & OS, cards, accounts, and personal data

Type
Addresses per device (30d)
integer
Bank accounts per device (5m)
integer
Bank accounts per device (1h)
integer
Bank accounts per device (1d)
integer
Bank accounts per device (30d)
integer
Birth dates per device (30d)
integer
Cards per device (5m)
integer
Cards per device (1h)
integer
Cards per device (1d)
integer
Cards per device (30d)
integer
Cards per device (lifetime)
integer
Surnames per device (30d)
integer

Velocity fields: Email

Type
Users per email (30d)
integer

Velocity fields: Identity, cards and BINs

Type
BINs per user (1d)
integer
BINs per user (7d)
integer
BINs per user (lifetime)
integer
Card BINs per user (1h)
integer
Card countries per user (1d)
integer
Card countries per user (30d)
integer
Cards per user (5m)
integer
Cards per user (1h)
integer
Cards per user (1d)
integer
Cards per user (7d)
integer
Cards per user (30d)
integer
Cards per user (lifetime)
integer
Expiry dates per user (1h)
integer

Velocity fields: Identity, transactions, amounts, and accounts

Type
Average amount per user (10m)
number
Average amount per user (lifetime)
number
Bank accounts per user (5m)
integer
Bank accounts per user (1d)
integer
Bank accounts per user (30d)
integer
Campaigns per user (30d)
integer
Campaigns per user (lifetime)
integer
Merchants per user (1d)
integer
Merchants per user (30d)
integer
Payees per user (5m)
integer
Payees per user (1d)
integer
Transactions per user (5m)
integer
Transactions per user (10m)
integer
Transactions per user (lifetime)
integer

Velocity fields: Identity, devices and IPs

Type
Carriers per user (30d)
integer
Device IPs per user (1d)
integer
Device IPs per user (30d)
integer
Devices per user (5m)
integer
Devices per user (30d)
integer
IPs per user (30d)
integer
Phone carriers per user (30d)
integer
Devices per user (lifetime)
integer
Platforms per user (30d)
integer

Velocity fields: Identity, locations and ISPs

Type
Cities per user (1d)
integer
Countries per user (1d)
integer
DNS IP countries per user (1d)
integer
DNS IP countries per user (30d)
integer
DNS ISPs per user (30d)
integer
Device IP ISPs per user (30d)
integer
Device IP countries per user (1d)
integer
Device IP countries per user (30d)
integer
Device IP countries per user (lifetime)
integer
IP countries per user (30d)
integer
ISPs per user (1d)
integer
ISPs per user (30d)
integer

Velocity fields: Identity, contact details and addresses

Type
Addresses per user (30d)
integer
Addresses per user (lifetime)
integer
Billing addresses per user (30d)
integer
Emails per user (30d)
integer
Emails per user (lifetime)
integer
Phone numbers per user (30d)
integer
Phone numbers per user (lifetime)
integer
Shipping addresses per user (1d)
integer
Shipping addresses per user (30d)
integer

Velocity fields: IP

Type
Devices per IP (30d)
integer
Transactions per IP (10m)
integer
Transactions per IP (1h)
integer
Users per IP (1h)
integer
Users per IP (1d)
integer
Users per IP (7d)
integer
Users per IP (30d)
integer

Velocity fields: Phone

Type
Users per phone (1d)
integer
Users per phone (30d)
integer
Users per phone (lifetime)
integer

Velocity fields: Other

Type
Transactions per brand (lifetime)
integer
Transactions per merchant (lifetime)
integer
Users per full name (30d)
integer
Users per affiliate (30d)
integer
Users per discount code (30d)
integer

Ā 

Response
{
 "id": "a57f1b2d1vel",
 "state": "APPROVE",
 "fraud_score": 0,
 "calculation_time": 5854,
 "seon_id": 4092151,
 "velocity_signals": [
  {
   "signal_name": "card_bin.card_bin_user_id_count_distinct__2592000__",
   "display_name": "Card BIN Distinct Users (30d)",
   "value": 28
  },
  {
   "signal_name": "card.card_hash_user_id_count_distinct__3600__",
   "display_name": "Card Hash Distinct Users (1h)",
   "value": 1
  },
  {
   "signal_name": "user.user_id_true_device_id_count_distinct__2592000__",
   "display_name": "User ID Distinct True Device IDs (30d)",
   "value": 1
  },
  {
   "signal_name": "card.card_hash_expiry_count_distinct__300__",
   "display_name": "Card Hash Distinct Card Expiry Dates (5m)",
   "value": 1
  },
  {
   "signal_name": "brand.brand_tx_count__all__",
   "display_name": "Brand Transaction Count (lifetime)",
   "value": 6781
  },
  {
   "signal_name": "card_bin.card_bin_tx_count__2592000__",
   "display_name": "Card BIN Transaction Count (30d)",
   "value": 31
  },
  {
   "signal_name": "card_bin.card_bin_card_hash_count_distinct__3600__",
   "display_name": "Card BIN Distinct Card Hashes (1h)",
   "value": 1
  },
  {
   "signal_name": "user.user_id_card_hash_count_distinct__86400__",
   "display_name": "User ID Distinct Card Hashes (1d)",
   "value": 1
  },
  {
   "signal_name": "user.user_id_card_hash_count_distinct__300__",
   "display_name": "User ID Distinct Card Hashes (5m)",
   "value": 1
  },
  {
   "signal_name": "user.user_id_phone_number_count_distinct__2592000__",
   "display_name": "User ID Distinct Phone Numbers (30d)",
   "value": 1
  },
  {
   "signal_name": "user.user_id_card_expire_count_distinct__3600__",
   "display_name": "User ID Distinct Card Expiry Dates (1h)",
   "value": 1
  },
  {
   "signal_name": "true_device.true_device_id_user_id_count_distinct__2592000__",
   "display_name": "True Device ID Distinct Users (30d)",
   "value": 1
  },
  {
   "signal_name": "user.user_id_bin_country_code_count_distinct__86400__",
   "display_name": "User ID Distinct BIN Country Codes (1d)",
   "value": 1
  },
  {
   "signal_name": "user.user_id_carrier_name_count_distinct__2592000__",
   "display_name": "User ID Distinct Carrier Names (30d)",
   "value": 0
  },
  {
   "signal_name": "user.user_id_true_device_id_count_distinct__300__",
   "display_name": "User ID Distinct True Device IDs (5m)",
   "value": 1
  },
  {
   "signal_name": "user.user_id_card_bin_count_distinct__3600__",
   "display_name": "User ID Distinct Card BINs (1h)",
   "value": 1
  },
  {
   "signal_name": "phone.phone_number_user_id_count_distinct__86400__",
   "display_name": "Phone Number Distinct Users (1d)",
   "value": 1
  },
  {
   "signal_name": "user.user_id_phone_carrier_count_distinct__2592000__",
   "display_name": "User ID Distinct Phone Carriers (30d)",
   "value": 0
  },
  {
   "signal_name": "user.user_id_card_hash_count_distinct__604800__",
   "display_name": "User ID Distinct Card Hashes (7d)",
   "value": 1
  },
  {
   "signal_name": "user.user_id_device_ip_isp_count_distinct__2592000__",
   "display_name": "User ID Distinct Device IP ISPs (30d)",
   "value": 1
  },
  {
   "signal_name": "user.user_id_tx_count__300__",
   "display_name": "User ID Transaction Count (5m)",
   "value": 1
  },
  {
   "signal_name": "card.card_hash_true_device_id_count_distinct__86400__",
   "display_name": "Card Hash Distinct True Device IDs (1d)",
   "value": 4
  },
  {
   "signal_name": "user.user_id_platform_count_distinct__2592000__",
   "display_name": "User ID Distinct Platforms (30d)",
   "value": 1
  },
  {
   "signal_name": "card.card_hash_true_device_id_count_distinct__300__",
   "display_name": "Card Hash Distinct True Device IDs (5m)",
   "value": 1
  },
  {
   "signal_name": "true_device.true_device_id_user_id_count_distinct__3600__",
   "display_name": "True Device ID Distinct Users (1h)",
   "value": 1
  },
  {
   "signal_name": "user.user_id_user_bank_account_count_distinct__86400__",
   "display_name": "User ID Distinct User Bank Accounts (1d)",
   "value": 0
  },
  {
   "signal_name": "user.user_id_billing_address_hash_count_distinct__2592000__",
   "display_name": "User ID Distinct Billing Address Hashes (30d)",
   "value": 1
  },
  {
   "signal_name": "true_device.true_device_id_card_hash_count_distinct__3600__",
   "display_name": "True Device ID Distinct Card Hashes (1h)",
   "value": 1
  },
  {
   "signal_name": "user.user_id_ip_country_count_distinct__86400__",
   "display_name": "User ID Distinct IP Countries (1d)",
   "value": 1
  },
  {
   "signal_name": "billing_address_hash.billing_address_hash_user_id_count_distinct__2592000__",
   "display_name": "Billing Address Hash Distinct Users (30d)",
   "value": 13
  },
  {
   "signal_name": "user.user_id_user_address_hash_count_distinct__2592000__",
   "display_name": "User ID Distinct User Address Hashes (30d)",
   "value": 1
  },
  {
   "signal_name": "user.user_id_user_bank_account_count_distinct__300__",
   "display_name": "User ID Distinct User Bank Accounts (5m)",
   "value": 0
  },
  {
   "signal_name": "card.card_hash_user_id_count_distinct__604800__",
   "display_name": "Card Hash Distinct Users (7d)",
   "value": 8
  },
  {
   "signal_name": "card.card_hash_user_lastname_count_distinct__2592000__",
   "display_name": "Card Hash Distinct User Last Names (30d)",
   "value": 0
  },
  {
   "signal_name": "phone.phone_number_user_id_count_distinct__2592000__",
   "display_name": "Phone Number Distinct Users (30d)",
   "value": 1
  },
  {
   "signal_name": "true_device.true_device_id_user_bank_account_count_distinct__86400__",
   "display_name": "True Device ID Distinct User Bank Accounts (1d)",
   "value": 0
  },
  {
   "signal_name": "user.user_id_card_bin_count_distinct__86400__",
   "display_name": "User ID Distinct Card BINs (1d)",
   "value": 1
  },
  {
   "signal_name": "card_bin.card_bin_user_id_count_distinct__86400__",
   "display_name": "Card BIN Distinct Users (1d)",
   "value": 4
  },
  {
   "signal_name": "user.user_id_merchant_id_count_distinct__2592000__",
   "display_name": "User ID Distinct Merchant IDs (30d)",
   "value": 1
  },
  {
   "signal_name": "user.user_id_bonus_campaign_id_count_distinct__all__",
   "display_name": "User ID Distinct Bonus Campaign IDs (lifetime)",
   "value": 1
  },
  {
   "signal_name": "phone.phone_number_user_id_count_distinct__all__",
   "display_name": "Phone Number Distinct Users (lifetime)",
   "value": 1
  },
  {
   "signal_name": "user.user_id_card_bin_count_distinct__all__",
   "display_name": "User ID Distinct Card BINs (lifetime)",
   "value": 1
  },
  {
   "signal_name": "user.user_id_tx_count__600__",
   "display_name": "User ID Transaction Count (10m)",
   "value": 1
  },
  {
   "signal_name": "true_device.true_device_id_user_id_count_distinct__60__",
   "display_name": "True Device ID Distinct Users (1m)",
   "value": 0
  },
  {
   "signal_name": "user.user_id_ip_country_count_distinct__2592000__",
   "display_name": "User ID Distinct IP Countries (30d)",
   "value": 1
  },
  {
   "signal_name": "user_address_hash.user_address_hash_user_id_count_distinct__all__",
   "display_name": "User Address Hash Distinct Users (lifetime)",
   "value": 88
  },
  {
   "signal_name": "user.user_id_email_count_distinct__2592000__",
   "display_name": "User ID Distinct Emails (30d)",
   "value": 1
  },
  {
   "signal_name": "user.user_id_shipping_address_hash_count_distinct__86400__",
   "display_name": "User ID Distinct Shipping Address Hashes (1d)",
   "value": 1
  },
  {
   "signal_name": "true_device.true_device_id_card_hash_count_distinct__all__",
   "display_name": "True Device ID Distinct Card Hashes (lifetime)",
   "value": 1
  },
  {
   "signal_name": "billing_address_hash.billing_address_hash_user_id_count_distinct__all__",
   "display_name": "Billing Address Hash Distinct Users (lifetime)",
   "value": 13
  },
  {
   "signal_name": "user.user_id_ip_count_distinct__2592000__",
   "display_name": "User ID Distinct IPs (30d)",
   "value": 1
  },
  {
   "signal_name": "card_bin.card_bin_user_id_count_distinct__3600__",
   "display_name": "Card BIN Distinct Users (1h)",
   "value": 1
  },
  {
   "signal_name": "user.user_id_card_hash_count_distinct__3600__",
   "display_name": "User ID Distinct Card Hashes (1h)",
   "value": 1
  },
  {
   "signal_name": "discount_code.discount_code_user_id_count_distinct__2592000__",
   "display_name": "Discount Code Distinct Users (30d)",
   "value": 17
  },
  {
   "signal_name": "true_device.true_device_id_user_id_count_distinct__300__",
   "display_name": "True Device ID Distinct Users (5m)",
   "value": 1
  },
  {
   "signal_name": "user.user_id_dns_ip_isp_count_distinct__2592000__",
   "display_name": "User ID Distinct DNS IP ISPs (30d)",
   "value": 0
  },
  {
   "signal_name": "card_bin.card_bin_tx_count__all__",
   "display_name": "Card BIN Transaction Count (lifetime)",
   "value": 74
  },
  {
   "signal_name": "shipping_address_hash.shipping_address_hash_user_id_count_distinct__86400__",
   "display_name": "Shipping Address Hash Distinct Users (1d)",
   "value": 1
  },
  {
   "signal_name": "true_device.true_device_id_card_hash_count_distinct__86400__",
   "display_name": "True Device ID Distinct Card Hashes (1d)",
   "value": 1
  },
  {
   "signal_name": "card_bin.card_bin_card_hash_count_distinct__86400__",
   "display_name": "Card BIN Distinct Card Hashes (1d)",
   "value": 1
  },
  {
   "signal_name": "true_device.true_device_id_user_bank_account_count_distinct__300__",
   "display_name": "True Device ID Distinct User Bank Accounts (5m)",
   "value": 0
  },
  {
   "signal_name": "user.user_id_device_ip_country_count_distinct__all__",
   "display_name": "User ID Distinct Device IP Countries (lifetime)",
   "value": 1
  },
  {
   "signal_name": "user.user_id_ip_city_count_distinct__86400__",
   "display_name": "User ID Distinct IP Cities (1d)",
   "value": 1
  },
  {
   "signal_name": "user.user_id_device_ip_address_count_distinct__2592000__",
   "display_name": "User ID Distinct Device IP Addresses (30d)",
   "value": 1
  },
  {
   "signal_name": "true_device.true_device_id_card_hash_count_distinct__300__",
   "display_name": "True Device ID Distinct Card Hashes (5m)",
   "value": 1
  },
  {
   "signal_name": "ip_address.ip_tx_count__600__",
   "display_name": "IP Transaction Count (10m)",
   "value": 1
  },
  {
   "signal_name": "user.user_id_merchant_id_count_distinct__86400__",
   "display_name": "User ID Distinct Merchant IDs (1d)",
   "value": 1
  },
  {
   "signal_name": "user.user_id_deposit_amount_avg__600__",
   "display_name": "User ID Transaction Amount Avg (10m)",
   "value": 257.23
  },
  {
   "signal_name": "ip_address.ip_user_id_count_distinct__2592000__",
   "display_name": "IP Distinct Users (30d)",
   "value": 1
  },
  {
   "signal_name": "card.card_hash_user_id_count_distinct__all__",
   "display_name": "Card Hash Distinct Users (lifetime)",
   "value": 71
  },
  {
   "signal_name": "ip_address.ip_user_id_count_distinct__86400__",
   "display_name": "IP Distinct Users (1d)",
   "value": 1
  },
  {
   "signal_name": "true_device.true_device_id_transaction_id_count_distinct__60__",
   "display_name": "True Device ID Distinct Transactions (1m)",
   "value": 0
  },
  {
   "signal_name": "user.user_id_bin_country_code_count_distinct__2592000__",
   "display_name": "User ID Distinct BIN Country Codes (30d)",
   "value": 1
  },
  {
   "signal_name": "ip_address.ip_user_id_count_distinct__3600__",
   "display_name": "IP Distinct Users (1h)",
   "value": 1
  },
  {
   "signal_name": "card_bin.card_bin_card_hash_count_distinct__2592000__",
   "display_name": "Card BIN Distinct Card Hashes (30d)",
   "value": 1
  },
  {
   "signal_name": "true_device.true_device_id_user_bank_account_count_distinct__2592000__",
   "display_name": "True Device ID Distinct User Bank Accounts (30d)",
   "value": 0
  },
  {
   "signal_name": "user.user_id_device_ip_address_count_distinct__86400__",
   "display_name": "User ID Distinct Device IP Addresses (1d)",
   "value": 1
  },
  {
   "signal_name": "ip_address.ip_user_id_count_distinct__604800__",
   "display_name": "IP Distinct Users (7d)",
   "value": 1
  },
  {
   "signal_name": "card.card_hash_user_id_count_distinct__2592000__",
   "display_name": "Card Hash Distinct Users (30d)",
   "value": 30
  },
  {
   "signal_name": "user.user_id_device_ip_country_count_distinct__2592000__",
   "display_name": "User ID Distinct Device IP Countries (30d)",
   "value": 1
  },
  {
   "signal_name": "true_device.true_device_id_user_id_count_distinct__all__",
   "display_name": "True Device ID Distinct Users (lifetime)",
   "value": 1
  },
  {
   "signal_name": "true_device.true_device_id_transaction_id_count_distinct__86400__",
   "display_name": "True Device ID Distinct Transactions (1d)",
   "value": 2
  },
  {
   "signal_name": "shipping_address_hash.shipping_address_hash_user_id_count_distinct__604800__",
   "display_name": "Shipping Address Hash Distinct Users (7d)",
   "value": 1
  },
  {
   "signal_name": "card_bin.card_bin_card_hash_count_distinct__all__",
   "display_name": "Card BIN Distinct Card Hashes (lifetime)",
   "value": 1
  },
  {
   "signal_name": "user.user_id_device_ip_country_count_distinct__86400__",
   "display_name": "User ID Distinct Device IP Countries (1d)",
   "value": 1
  },
  {
   "signal_name": "true_device.true_device_id_user_lastname_count_distinct__2592000__",
   "display_name": "True Device ID Distinct User Last Names (30d)",
   "value": 0
  },
  {
   "signal_name": "card_bin.card_bin_user_id_count_distinct__all__",
   "display_name": "Card BIN Distinct Users (lifetime)",
   "value": 65
  },
  {
   "signal_name": "affiliate.affiliate_id_user_id_count_distinct__2592000__",
   "display_name": "Affiliate ID Distinct Users (30d)",
   "value": 131
  },
  {
   "signal_name": "true_device.true_device_id_user_bank_account_count_distinct__3600__",
   "display_name": "True Device ID Distinct User Bank Accounts (1h)",
   "value": 0
  },
  {
   "signal_name": "user.user_id_card_hash_count_distinct__2592000__",
   "display_name": "User ID Distinct Card Hashes (30d)",
   "value": 1
  },
  {
   "signal_name": "merchant.merchant_tx_count__all__",
   "display_name": "Merchant Transaction Count (lifetime)",
   "value": 6793
  },
  {
   "signal_name": "ip_address.ip_true_device_id_count_distinct__2592000__",
   "display_name": "IP Distinct True Device IDs (30d)",
   "value": 1
  },
  {
   "signal_name": "card.card_hash_user_dob_count_distinct__2592000__",
   "display_name": "Card Hash Distinct User Birth Dates (30d)",
   "value": 2
  },
  {
   "signal_name": "user.user_id_email_count_distinct__all__",
   "display_name": "User ID Distinct Emails (lifetime)",
   "value": 1
  },
  {
   "signal_name": "card.card_hash_user_address_hash_count_distinct__2592000__",
   "display_name": "Card Hash Distinct User Address Hashes (30d)",
   "value": 1
  },
  {
   "signal_name": "shipping_address_hash.shipping_address_hash_user_id_count_distinct__2592000__",
   "display_name": "Shipping Address Hash Distinct Users (30d)",
   "value": 1
  },
  {
   "signal_name": "user.user_id_isp_name_count_distinct__2592000__",
   "display_name": "User ID Distinct ISP Names (30d)",
   "value": 1
  },
  {
   "signal_name": "email.email_user_id_count_distinct__2592000__",
   "display_name": "Email Distinct Users (30d)",
   "value": 7
  },
  {
   "signal_name": "card_expire.card_expire_user_id_count_distinct__3600__",
   "display_name": "Card Expiry Date Distinct Users (1h)",
   "value": 1
  },
  {
   "signal_name": "user.user_id_tx_count__all__",
   "display_name": "User ID Transaction Count (lifetime)",
   "value": 2
  },
  {
   "signal_name": "user.user_id_bonus_campaign_id_count_distinct__2592000__",
   "display_name": "User ID Distinct Bonus Campaign IDs (30d)",
   "value": 1
  },
  {
   "signal_name": "user.user_id_phone_number_count_distinct__all__",
   "display_name": "User ID Distinct Phone Numbers (lifetime)",
   "value": 1
  },
  {
   "signal_name": "user.user_id_dns_ip_country_count_distinct__2592000__",
   "display_name": "User ID Distinct DNS IP Countries (30d)",
   "value": 0
  },
  {
   "signal_name": "card.card_hash_card_bin_count_distinct__300__",
   "display_name": "Card Hash Distinct Card BINs (5m)",
   "value": 1
  },
  {
   "signal_name": "true_device.true_device_id_transaction_id_count_distinct__600__",
   "display_name": "True Device ID Distinct Transactions (10m)",
   "value": 1
  },
  {
   "signal_name": "user.user_id_isp_name_count_distinct__86400__",
   "display_name": "User ID Distinct ISP Names (1d)",
   "value": 1
  },
  {
   "signal_name": "user.user_id_card_hash_count_distinct__all__",
   "display_name": "User ID Distinct Card Hashes (lifetime)",
   "value": 1
  },
  {
   "signal_name": "user.user_id_user_bank_account_count_distinct__2592000__",
   "display_name": "User ID Distinct User Bank Accounts (30d)",
   "value": 0
  },
  {
   "signal_name": "card.card_hash_user_country_count_distinct__2592000__",
   "display_name": "Card Hash Distinct User Countries (30d)",
   "value": 1
  },
  {
   "signal_name": "user.user_id_receiver_bank_account_count_distinct__300__",
   "display_name": "User ID Distinct Receiver Bank Accounts (5m)",
   "value": 0
  },
  {
   "signal_name": "card.card_hash_user_id_count_distinct__86400__",
   "display_name": "Card Hash Distinct Users (1d)",
   "value": 4
  },
  {
   "signal_name": "user.user_id_deposit_amount_avg__all__",
   "display_name": "User ID Transaction Amount Avg (lifetime)",
   "value": 257.23
  },
  {
   "signal_name": "ip_address.ip_tx_count__3600__",
   "display_name": "IP Transaction Count (1h)",
   "value": 1
  },
  {
   "signal_name": "user.user_id_user_address_hash_count_distinct__all__",
   "display_name": "User ID Distinct User Address Hashes (lifetime)",
   "value": 1
  },
  {
   "signal_name": "true_device.true_device_id_user_dob_count_distinct__2592000__",
   "display_name": "True Device ID Distinct User Birth Dates (30d)",
   "value": 1
  },
  {
   "signal_name": "true_device.true_device_id_user_address_hash_count_distinct__2592000__",
   "display_name": "True Device ID Distinct User Address Hashes (30d)",
   "value": 1
  },
  {
   "signal_name": "user.user_id_receiver_bank_account_count_distinct__86400__",
   "display_name": "User ID Distinct Receiver Bank Accounts (1d)",
   "value": 0
  },
  {
   "signal_name": "user_fullname.user_fullname_user_id_count_distinct__2592000__",
   "display_name": "User Full Name Distinct Users (30d)",
   "value": 42
  },
  {
   "signal_name": "true_device.true_device_id_card_hash_count_distinct__2592000__",
   "display_name": "True Device ID Distinct Card Hashes (30d)",
   "value": 1
  },
  {
   "signal_name": "user.user_id_true_device_id_count_distinct__all__",
   "display_name": "User ID Distinct True Device IDs (lifetime)",
   "value": 1
  },
  {
   "signal_name": "user.user_id_shipping_address_hash_count_distinct__2592000__",
   "display_name": "User ID Distinct Shipping Address Hashes (30d)",
   "value": 1
  },
  {
   "signal_name": "user.user_id_card_bin_count_distinct__604800__",
   "display_name": "User ID Distinct Card BINs (7d)",
   "value": 1
  },
  {
   "signal_name": "card.card_hash_true_device_id_count_distinct__3600__",
   "display_name": "Card Hash Distinct True Device IDs (1h)",
   "value": 1
  },
  {
   "signal_name": "card.card_hash_true_device_id_count_distinct__2592000__",
   "display_name": "Card Hash Distinct True Device IDs (30d)",
   "value": 29
  },
  {
   "signal_name": "user.user_id_dns_ip_country_count_distinct__86400__",
   "display_name": "User ID Distinct DNS IP Countries (1d)",
   "value": 0
  },
  {
   "signal_name": "user_address_hash.user_address_hash_user_id_count_distinct__2592000__",
   "display_name": "User Address Hash Distinct Users (30d)",
   "value": 42
  }
 ]
}