curl --request POST \
--url https://int-api.mx.com/users/{user_guid}/micro_deposits \
--header 'Accept-Version: <accept-version>' \
--header 'Authorization: Basic <encoded-value>' \
--header 'Content-Type: application/json' \
--data '{}'import requests
url = "https://int-api.mx.com/users/{user_guid}/micro_deposits"
payload = {}
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({})
};
fetch('https://int-api.mx.com/users/{user_guid}/micro_deposits', 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_guid}/micro_deposits",
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([
]),
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_guid}/micro_deposits"
payload := strings.NewReader("{}")
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_guid}/micro_deposits")
.header("Accept-Version", "<accept-version>")
.header("Authorization", "Basic <encoded-value>")
.header("Content-Type", "application/json")
.body("{}")
.asString();require 'uri'
require 'net/http'
url = URI("https://int-api.mx.com/users/{user_guid}/micro_deposits")
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 = "{}"
response = http.request(request)
puts response.read_body{
"micro_deposit": [
{
"account_number": "3331261",
"account_type": "CHECKING",
"routing_number": "091000019",
"account_name": "My test account",
"email": "example@example.com",
"first_name": "Josh",
"last_name": "Grobanne",
"error_message": null,
"guid": "MIC-09ba578e-8448-4f7f-89e1-b62ff2517edb",
"institution_code": "mxbank",
"institution_name": "MX Bank",
"status": "INITIATED",
"updated_at": "2025-02-13T18:09:00+00:00",
"verified_at": null
}
]
}Create or Preinitiate a Microdeposit
Use this endpoint to create a microdeposit. To create a microdeposit include the first_name, last_name, email, account_number, routing_number, and account_type in the request body. The response will include the new microdeposit record with a status of INITIATED. You can also use this endpoint to pre-initiate a microdeposit by only including first_name, last_name, and email.
curl --request POST \
--url https://int-api.mx.com/users/{user_guid}/micro_deposits \
--header 'Accept-Version: <accept-version>' \
--header 'Authorization: Basic <encoded-value>' \
--header 'Content-Type: application/json' \
--data '{}'import requests
url = "https://int-api.mx.com/users/{user_guid}/micro_deposits"
payload = {}
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({})
};
fetch('https://int-api.mx.com/users/{user_guid}/micro_deposits', 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_guid}/micro_deposits",
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([
]),
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_guid}/micro_deposits"
payload := strings.NewReader("{}")
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_guid}/micro_deposits")
.header("Accept-Version", "<accept-version>")
.header("Authorization", "Basic <encoded-value>")
.header("Content-Type", "application/json")
.body("{}")
.asString();require 'uri'
require 'net/http'
url = URI("https://int-api.mx.com/users/{user_guid}/micro_deposits")
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 = "{}"
response = http.request(request)
puts response.read_body{
"micro_deposit": [
{
"account_number": "3331261",
"account_type": "CHECKING",
"routing_number": "091000019",
"account_name": "My test account",
"email": "example@example.com",
"first_name": "Josh",
"last_name": "Grobanne",
"error_message": null,
"guid": "MIC-09ba578e-8448-4f7f-89e1-b62ff2517edb",
"institution_code": "mxbank",
"institution_name": "MX Bank",
"status": "INITIATED",
"updated_at": "2025-02-13T18:09:00+00:00",
"verified_at": null
}
]
}Authorizations
The MX Platform API requires basic access authentication using your client_id and api_key. These credentials must be Base64 encoded and included in the Authorization header of each API request to ensure secure access.
Here's an example using curl to access v20250224. Replace https://int-api.mx.com/endpoint with the actual API endpoint you wish to access and your Base64 encoded client_id and api_key.
curl -L -X POST `https://int-api.mx.com/endpoint' \
-H 'Content-Type: application/json' \
-H 'Accept: application/json' \
-H 'Accept-Version: v20250224'
-H 'Authorization: Basic BASE_64_ENCODING_OF{client_id:api_key}'Headers
MX Platform API version.
"v20250224"
Path Parameters
The unique identifier for a user, beginning with the prefix USR-.
Body
Hide child attributes
Hide child attributes
The account number associated with the account. This will typically be a masked or partial account number.
"3331261"
The type of account. Some account types may include subtypes.
ANY, CASH, CHECKING, CHECKING_LINE_OF_CREDIT, CREDIT_CARD, LOAN, LINE_OF_CREDIT, SAVINGS, INVESTMENT, MORTGAGE, INSURANCE, PREPAID, PROPERTY "CHECKING"
The routing number for the account.
"091000019"
The human-readable name for the account.
"My test account"
The email address associated with the account.
"example@example.com"
The account owner's first name. This may also include a middle name. This field will be null unless name splitting has been enabled. Contact MX to have this feature enabled.
"Josh"
The last name of the account holder.
"Grobanne"
Response
OK
Hide child attributes
Hide child attributes
The account number associated with the account. This will typically be a masked or partial account number.
"3331261"
The type of account. Some account types may include subtypes.
ANY, CASH, CHECKING, CHECKING_LINE_OF_CREDIT, CREDIT_CARD, LOAN, LINE_OF_CREDIT, SAVINGS, INVESTMENT, MORTGAGE, INSURANCE, PREPAID, PROPERTY "CHECKING"
The routing number for the account.
"091000019"
The human-readable name for the account.
"My test account"
The email address associated with the account.
"example@example.com"
The account owner's first name. This may also include a middle name. This field will be null unless name splitting has been enabled. Contact MX to have this feature enabled.
"Josh"
The last name of the account holder.
"Grobanne"
A message describing an error that occurred.
null
The unique identifier for the microdeposit. Defined by MX.
"MIC-09ba578e-8448-4f7f-89e1-b62ff2517edb"
The code identifying a financial institution.
"mxbank"
An easy-to-read name for an institution. May be null for institutions that are not in the MX system.
"MX Bank"
The name of the current status. See Microdeposit Statuses.
"INITIATED"
The date and time the resource was last updated in ISO 8601 format with a timestamp.
For categories, this field will always be null when is_default is true.
"2025-02-13T18:09:00+00:00"
The date and time at which the microdeposit status changed from DEPOSITED to VERIFIED.
null

