curl --request POST \
--url https://int-api.mx.com/users/{user_identifier}/members/{member_identifier}/identity_match \
--header 'Accept-Version: <accept-version>' \
--header 'Authorization: Basic <encoded-value>' \
--header 'Content-Type: application/json' \
--data '
{
"name": {
"first": "John",
"middle": "Q",
"last": "Doe"
},
"address": {
"line_1": "123 Main St",
"line_2": "Apt 4B",
"line_3": "Building C",
"city": "Anytown",
"region": "CA",
"postal_code": "12345",
"country": "US"
},
"email": "john.doe@example.com",
"phone_number": "(555) 555-5555"
}
'import requests
url = "https://int-api.mx.com/users/{user_identifier}/members/{member_identifier}/identity_match"
payload = {
"name": {
"first": "John",
"middle": "Q",
"last": "Doe"
},
"address": {
"line_1": "123 Main St",
"line_2": "Apt 4B",
"line_3": "Building C",
"city": "Anytown",
"region": "CA",
"postal_code": "12345",
"country": "US"
},
"email": "john.doe@example.com",
"phone_number": "(555) 555-5555"
}
headers = {
"Accept-Version": "<accept-version>",
"Authorization": "Basic <encoded-value>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {
'Accept-Version': '<accept-version>',
Authorization: 'Basic <encoded-value>',
'Content-Type': 'application/json'
},
body: JSON.stringify({
name: {first: 'John', middle: 'Q', last: 'Doe'},
address: {
line_1: '123 Main St',
line_2: 'Apt 4B',
line_3: 'Building C',
city: 'Anytown',
region: 'CA',
postal_code: '12345',
country: 'US'
},
email: 'john.doe@example.com',
phone_number: '(555) 555-5555'
})
};
fetch('https://int-api.mx.com/users/{user_identifier}/members/{member_identifier}/identity_match', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://int-api.mx.com/users/{user_identifier}/members/{member_identifier}/identity_match",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'name' => [
'first' => 'John',
'middle' => 'Q',
'last' => 'Doe'
],
'address' => [
'line_1' => '123 Main St',
'line_2' => 'Apt 4B',
'line_3' => 'Building C',
'city' => 'Anytown',
'region' => 'CA',
'postal_code' => '12345',
'country' => 'US'
],
'email' => 'john.doe@example.com',
'phone_number' => '(555) 555-5555'
]),
CURLOPT_HTTPHEADER => [
"Accept-Version: <accept-version>",
"Authorization: Basic <encoded-value>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://int-api.mx.com/users/{user_identifier}/members/{member_identifier}/identity_match"
payload := strings.NewReader("{\n \"name\": {\n \"first\": \"John\",\n \"middle\": \"Q\",\n \"last\": \"Doe\"\n },\n \"address\": {\n \"line_1\": \"123 Main St\",\n \"line_2\": \"Apt 4B\",\n \"line_3\": \"Building C\",\n \"city\": \"Anytown\",\n \"region\": \"CA\",\n \"postal_code\": \"12345\",\n \"country\": \"US\"\n },\n \"email\": \"john.doe@example.com\",\n \"phone_number\": \"(555) 555-5555\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Accept-Version", "<accept-version>")
req.Header.Add("Authorization", "Basic <encoded-value>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://int-api.mx.com/users/{user_identifier}/members/{member_identifier}/identity_match")
.header("Accept-Version", "<accept-version>")
.header("Authorization", "Basic <encoded-value>")
.header("Content-Type", "application/json")
.body("{\n \"name\": {\n \"first\": \"John\",\n \"middle\": \"Q\",\n \"last\": \"Doe\"\n },\n \"address\": {\n \"line_1\": \"123 Main St\",\n \"line_2\": \"Apt 4B\",\n \"line_3\": \"Building C\",\n \"city\": \"Anytown\",\n \"region\": \"CA\",\n \"postal_code\": \"12345\",\n \"country\": \"US\"\n },\n \"email\": \"john.doe@example.com\",\n \"phone_number\": \"(555) 555-5555\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://int-api.mx.com/users/{user_identifier}/members/{member_identifier}/identity_match")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Accept-Version"] = '<accept-version>'
request["Authorization"] = 'Basic <encoded-value>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"name\": {\n \"first\": \"John\",\n \"middle\": \"Q\",\n \"last\": \"Doe\"\n },\n \"address\": {\n \"line_1\": \"123 Main St\",\n \"line_2\": \"Apt 4B\",\n \"line_3\": \"Building C\",\n \"city\": \"Anytown\",\n \"region\": \"CA\",\n \"postal_code\": \"12345\",\n \"country\": \"US\"\n },\n \"email\": \"john.doe@example.com\",\n \"phone_number\": \"(555) 555-5555\"\n}"
response = http.request(request)
puts response.read_body{
"identity_match": {
"composite_confidence_score": 0.92,
"individual_scores": {
"name_score": 0.95,
"address_score": 0.9,
"phone_score": 0.85,
"email_score": 0.98
},
"member": {
"guid": "MBR-7c6f361b-e582-15b6-60c0-358f12466b4b",
"id": "unique_id",
"metadata": "some metadata",
"name": "MX Bank",
"self": "/users/USR-11141024-90b3-1bce-cac9-c06ced52ab4c/members/MBR-7c6f361b-e582-15b6-60c0-358f12466b4b"
},
"user": {
"guid": "USR-11141024-90b3-1bce-cac9-c06ced52ab4c",
"id": "unique_id",
"metadata": "some metadata",
"self": "/users/USR-11141024-90b3-1bce-cac9-c06ced52ab4c"
}
}
}Identity match
Verify user identity by comparing submitted personal information with account owner data.
Accepts name, address, phone number, and email, then returns match scores for each field plus an overall confidence score. Scores range from 0 to 1.
Name can be either personal (first, middle, last) or company, but not both.
When a member has multiple account owners, such as on joint accounts, the endpoint compares the submitted information against each owner and returns the scores for the best match.
curl --request POST \
--url https://int-api.mx.com/users/{user_identifier}/members/{member_identifier}/identity_match \
--header 'Accept-Version: <accept-version>' \
--header 'Authorization: Basic <encoded-value>' \
--header 'Content-Type: application/json' \
--data '
{
"name": {
"first": "John",
"middle": "Q",
"last": "Doe"
},
"address": {
"line_1": "123 Main St",
"line_2": "Apt 4B",
"line_3": "Building C",
"city": "Anytown",
"region": "CA",
"postal_code": "12345",
"country": "US"
},
"email": "john.doe@example.com",
"phone_number": "(555) 555-5555"
}
'import requests
url = "https://int-api.mx.com/users/{user_identifier}/members/{member_identifier}/identity_match"
payload = {
"name": {
"first": "John",
"middle": "Q",
"last": "Doe"
},
"address": {
"line_1": "123 Main St",
"line_2": "Apt 4B",
"line_3": "Building C",
"city": "Anytown",
"region": "CA",
"postal_code": "12345",
"country": "US"
},
"email": "john.doe@example.com",
"phone_number": "(555) 555-5555"
}
headers = {
"Accept-Version": "<accept-version>",
"Authorization": "Basic <encoded-value>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {
'Accept-Version': '<accept-version>',
Authorization: 'Basic <encoded-value>',
'Content-Type': 'application/json'
},
body: JSON.stringify({
name: {first: 'John', middle: 'Q', last: 'Doe'},
address: {
line_1: '123 Main St',
line_2: 'Apt 4B',
line_3: 'Building C',
city: 'Anytown',
region: 'CA',
postal_code: '12345',
country: 'US'
},
email: 'john.doe@example.com',
phone_number: '(555) 555-5555'
})
};
fetch('https://int-api.mx.com/users/{user_identifier}/members/{member_identifier}/identity_match', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://int-api.mx.com/users/{user_identifier}/members/{member_identifier}/identity_match",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'name' => [
'first' => 'John',
'middle' => 'Q',
'last' => 'Doe'
],
'address' => [
'line_1' => '123 Main St',
'line_2' => 'Apt 4B',
'line_3' => 'Building C',
'city' => 'Anytown',
'region' => 'CA',
'postal_code' => '12345',
'country' => 'US'
],
'email' => 'john.doe@example.com',
'phone_number' => '(555) 555-5555'
]),
CURLOPT_HTTPHEADER => [
"Accept-Version: <accept-version>",
"Authorization: Basic <encoded-value>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://int-api.mx.com/users/{user_identifier}/members/{member_identifier}/identity_match"
payload := strings.NewReader("{\n \"name\": {\n \"first\": \"John\",\n \"middle\": \"Q\",\n \"last\": \"Doe\"\n },\n \"address\": {\n \"line_1\": \"123 Main St\",\n \"line_2\": \"Apt 4B\",\n \"line_3\": \"Building C\",\n \"city\": \"Anytown\",\n \"region\": \"CA\",\n \"postal_code\": \"12345\",\n \"country\": \"US\"\n },\n \"email\": \"john.doe@example.com\",\n \"phone_number\": \"(555) 555-5555\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Accept-Version", "<accept-version>")
req.Header.Add("Authorization", "Basic <encoded-value>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://int-api.mx.com/users/{user_identifier}/members/{member_identifier}/identity_match")
.header("Accept-Version", "<accept-version>")
.header("Authorization", "Basic <encoded-value>")
.header("Content-Type", "application/json")
.body("{\n \"name\": {\n \"first\": \"John\",\n \"middle\": \"Q\",\n \"last\": \"Doe\"\n },\n \"address\": {\n \"line_1\": \"123 Main St\",\n \"line_2\": \"Apt 4B\",\n \"line_3\": \"Building C\",\n \"city\": \"Anytown\",\n \"region\": \"CA\",\n \"postal_code\": \"12345\",\n \"country\": \"US\"\n },\n \"email\": \"john.doe@example.com\",\n \"phone_number\": \"(555) 555-5555\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://int-api.mx.com/users/{user_identifier}/members/{member_identifier}/identity_match")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Accept-Version"] = '<accept-version>'
request["Authorization"] = 'Basic <encoded-value>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"name\": {\n \"first\": \"John\",\n \"middle\": \"Q\",\n \"last\": \"Doe\"\n },\n \"address\": {\n \"line_1\": \"123 Main St\",\n \"line_2\": \"Apt 4B\",\n \"line_3\": \"Building C\",\n \"city\": \"Anytown\",\n \"region\": \"CA\",\n \"postal_code\": \"12345\",\n \"country\": \"US\"\n },\n \"email\": \"john.doe@example.com\",\n \"phone_number\": \"(555) 555-5555\"\n}"
response = http.request(request)
puts response.read_body{
"identity_match": {
"composite_confidence_score": 0.92,
"individual_scores": {
"name_score": 0.95,
"address_score": 0.9,
"phone_score": 0.85,
"email_score": 0.98
},
"member": {
"guid": "MBR-7c6f361b-e582-15b6-60c0-358f12466b4b",
"id": "unique_id",
"metadata": "some metadata",
"name": "MX Bank",
"self": "/users/USR-11141024-90b3-1bce-cac9-c06ced52ab4c/members/MBR-7c6f361b-e582-15b6-60c0-358f12466b4b"
},
"user": {
"guid": "USR-11141024-90b3-1bce-cac9-c06ced52ab4c",
"id": "unique_id",
"metadata": "some metadata",
"self": "/users/USR-11141024-90b3-1bce-cac9-c06ced52ab4c"
}
}
}Authorizations
To authenticate with the Platform API, include your Base64-encoded client_id and api_key in the Authorization header of every request:
-H 'Authorization: Basic BASE_64_ENCODING_OF{client_id:api_key}'
Headers
MX Platform API version.
"v20260929"
Path Parameters
Use either the user id you defined or the MX-defined user guid. See Assigning Resource IDs.
Use either the member id you defined or the MX-defined member guid. See Assigning Resource IDs.
Body
User's name. Can be personal (first, middle, last) or company, but not both.
Hide child attributes
Hide child attributes
User's address.
Hide child attributes
Hide child attributes
First line of street address.
"123 Main St"
City.
"Anytown"
State, province, or region.
"CA"
Postal code.
"12345"
Country.
"US"
Second line of street address.
"Apt 4B"
Third line of street address.
"Building C"
User's email address.
"john.doe@example.com"
Phone number. Must contain at least 10 digits. Can include dashes, parentheses, and spaces.
"(555) 555-5555"
Response
Identity match successfully processed.
The confidence scores for an identity match. Identity match results aren't stored, so the response has no mx_record companion.
Hide child attributes
Hide child attributes
Overall confidence score from 0 to 1, rounded to four decimal places.
0 <= x <= 10.92
Individual match scores.
Hide child attributes
Hide child attributes
Name match confidence from 0 to 1, rounded to four decimal places. Returns 0 when there's no match.
0 <= x <= 10.95
Address match confidence from 0 to 1, rounded to four decimal places. Returns 0 when there's no match.
0 <= x <= 10.9
Phone match confidence from 0 to 1, rounded to four decimal places. Returns 0 when there's no match.
0 <= x <= 10.85
Email match confidence from 0 to 1, rounded to four decimal places. Returns 0 when there's no match.
0 <= x <= 10.98
The base fields for a member, which is a user's connection to an institution. Returned as the member companion on related resources such as accounts and transactions, and as the foundation of full member responses.
Hide child attributes
Hide child attributes
The unique identifier for the member. Defined by MX.
"MBR-7c6f361b-e582-15b6-60c0-358f12466b4b"
The unique partner-defined identifier for the member.
"unique_id"
Additional information you can store about the member.
"some metadata"
The name of the member.
"MX Bank"
The API URI path for the member.
"/users/USR-11141024-90b3-1bce-cac9-c06ced52ab4c/members/MBR-7c6f361b-e582-15b6-60c0-358f12466b4b"
The base fields for a user. Returned as the user companion on related resources such as members, accounts, and transactions, and as the foundation of full user responses.
Hide child attributes
Hide child attributes
The unique identifier for the user. Defined by MX.
"USR-11141024-90b3-1bce-cac9-c06ced52ab4c"
The unique partner-defined identifier for the user.
"unique_id"
Additional information you can store about the user.
"some metadata"
The API URI path for the user.
"/users/USR-11141024-90b3-1bce-cac9-c06ced52ab4c"

