Verify — ACH
Tokenize a bank account for Standard ACH or Same-Day ACH disbursements.
curl --request POST \
--url https://payapi-sandbox.ingo.money/gateway/verify--ach \
--header 'Authorization: <api-key>' \
--header 'Content-Type: application/json' \
--data '
{
"participant_id": 12345,
"account_type": "AC",
"version": 11,
"timestamp": 1576100326,
"participant_unique_id1": "5bf1e2c3-2169-406f-bf1b-f7bc5c2303b3",
"account": "22222222",
"routing_number": "011000015",
"recipient_first_name": "Alex",
"recipient_last_name": "Rivera",
"recipient_address1": "100 Innovation Way",
"recipient_address2": "Apt 2",
"recipient_city": "Anytown",
"recipient_state": "GA",
"recipient_zip": "00000",
"recipient_phone": 1231231234,
"amount": 1010.5,
"fi_account_type": "1",
"fi_account_classification": "1",
"recipient_business_name": "Skywalker Enterprises",
"participant_unique_id2": "80525360-dae4-4d0f-9f5c-e09f3fdcf7c8"
}
'import requests
url = "https://payapi-sandbox.ingo.money/gateway/verify--ach"
payload = {
"participant_id": 12345,
"account_type": "AC",
"version": 11,
"timestamp": 1576100326,
"participant_unique_id1": "5bf1e2c3-2169-406f-bf1b-f7bc5c2303b3",
"account": "22222222",
"routing_number": "011000015",
"recipient_first_name": "Alex",
"recipient_last_name": "Rivera",
"recipient_address1": "100 Innovation Way",
"recipient_address2": "Apt 2",
"recipient_city": "Anytown",
"recipient_state": "GA",
"recipient_zip": "00000",
"recipient_phone": 1231231234,
"amount": 1010.5,
"fi_account_type": "1",
"fi_account_classification": "1",
"recipient_business_name": "Skywalker Enterprises",
"participant_unique_id2": "80525360-dae4-4d0f-9f5c-e09f3fdcf7c8"
}
headers = {
"Authorization": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
participant_id: 12345,
account_type: 'AC',
version: 11,
timestamp: 1576100326,
participant_unique_id1: '5bf1e2c3-2169-406f-bf1b-f7bc5c2303b3',
account: '22222222',
routing_number: '011000015',
recipient_first_name: 'Alex',
recipient_last_name: 'Rivera',
recipient_address1: '100 Innovation Way',
recipient_address2: 'Apt 2',
recipient_city: 'Anytown',
recipient_state: 'GA',
recipient_zip: '00000',
recipient_phone: 1231231234,
amount: 1010.5,
fi_account_type: '1',
fi_account_classification: '1',
recipient_business_name: 'Skywalker Enterprises',
participant_unique_id2: '80525360-dae4-4d0f-9f5c-e09f3fdcf7c8'
})
};
fetch('https://payapi-sandbox.ingo.money/gateway/verify--ach', 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://payapi-sandbox.ingo.money/gateway/verify--ach",
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([
'participant_id' => 12345,
'account_type' => 'AC',
'version' => 11,
'timestamp' => 1576100326,
'participant_unique_id1' => '5bf1e2c3-2169-406f-bf1b-f7bc5c2303b3',
'account' => '22222222',
'routing_number' => '011000015',
'recipient_first_name' => 'Alex',
'recipient_last_name' => 'Rivera',
'recipient_address1' => '100 Innovation Way',
'recipient_address2' => 'Apt 2',
'recipient_city' => 'Anytown',
'recipient_state' => 'GA',
'recipient_zip' => '00000',
'recipient_phone' => 1231231234,
'amount' => 1010.5,
'fi_account_type' => '1',
'fi_account_classification' => '1',
'recipient_business_name' => 'Skywalker Enterprises',
'participant_unique_id2' => '80525360-dae4-4d0f-9f5c-e09f3fdcf7c8'
]),
CURLOPT_HTTPHEADER => [
"Authorization: <api-key>",
"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://payapi-sandbox.ingo.money/gateway/verify--ach"
payload := strings.NewReader("{\n \"participant_id\": 12345,\n \"account_type\": \"AC\",\n \"version\": 11,\n \"timestamp\": 1576100326,\n \"participant_unique_id1\": \"5bf1e2c3-2169-406f-bf1b-f7bc5c2303b3\",\n \"account\": \"22222222\",\n \"routing_number\": \"011000015\",\n \"recipient_first_name\": \"Alex\",\n \"recipient_last_name\": \"Rivera\",\n \"recipient_address1\": \"100 Innovation Way\",\n \"recipient_address2\": \"Apt 2\",\n \"recipient_city\": \"Anytown\",\n \"recipient_state\": \"GA\",\n \"recipient_zip\": \"00000\",\n \"recipient_phone\": 1231231234,\n \"amount\": 1010.5,\n \"fi_account_type\": \"1\",\n \"fi_account_classification\": \"1\",\n \"recipient_business_name\": \"Skywalker Enterprises\",\n \"participant_unique_id2\": \"80525360-dae4-4d0f-9f5c-e09f3fdcf7c8\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "<api-key>")
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://payapi-sandbox.ingo.money/gateway/verify--ach")
.header("Authorization", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"participant_id\": 12345,\n \"account_type\": \"AC\",\n \"version\": 11,\n \"timestamp\": 1576100326,\n \"participant_unique_id1\": \"5bf1e2c3-2169-406f-bf1b-f7bc5c2303b3\",\n \"account\": \"22222222\",\n \"routing_number\": \"011000015\",\n \"recipient_first_name\": \"Alex\",\n \"recipient_last_name\": \"Rivera\",\n \"recipient_address1\": \"100 Innovation Way\",\n \"recipient_address2\": \"Apt 2\",\n \"recipient_city\": \"Anytown\",\n \"recipient_state\": \"GA\",\n \"recipient_zip\": \"00000\",\n \"recipient_phone\": 1231231234,\n \"amount\": 1010.5,\n \"fi_account_type\": \"1\",\n \"fi_account_classification\": \"1\",\n \"recipient_business_name\": \"Skywalker Enterprises\",\n \"participant_unique_id2\": \"80525360-dae4-4d0f-9f5c-e09f3fdcf7c8\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://payapi-sandbox.ingo.money/gateway/verify--ach")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"participant_id\": 12345,\n \"account_type\": \"AC\",\n \"version\": 11,\n \"timestamp\": 1576100326,\n \"participant_unique_id1\": \"5bf1e2c3-2169-406f-bf1b-f7bc5c2303b3\",\n \"account\": \"22222222\",\n \"routing_number\": \"011000015\",\n \"recipient_first_name\": \"Alex\",\n \"recipient_last_name\": \"Rivera\",\n \"recipient_address1\": \"100 Innovation Way\",\n \"recipient_address2\": \"Apt 2\",\n \"recipient_city\": \"Anytown\",\n \"recipient_state\": \"GA\",\n \"recipient_zip\": \"00000\",\n \"recipient_phone\": 1231231234,\n \"amount\": 1010.5,\n \"fi_account_type\": \"1\",\n \"fi_account_classification\": \"1\",\n \"recipient_business_name\": \"Skywalker Enterprises\",\n \"participant_unique_id2\": \"80525360-dae4-4d0f-9f5c-e09f3fdcf7c8\"\n}"
response = http.request(request)
puts response.read_body{
"status": 100,
"client_message": "Success",
"data": {
"customer_account_token": "89421718-a62e-4344-8a1d-4baf73fb11f1",
"last_4": "2222",
"request_timestamp": 1576100403,
"issuers": [
{
"payee_id": "550333",
"payee_name": "Test Bank",
"payee_address": null,
"payee_city": null,
"payee_state": null,
"payee_zip": null,
"credit_info": {
"min": "0.10",
"max": "1000.00",
"card_type": "DDA",
"estimated_posting_time": "Payment will post 04/22/2026",
"estimated_posting_date": "04/22/2026"
},
"issuing_network": "NA",
"credit_enabled": 1,
"debit_enabled": 0
}
],
"participant_unique_id1": "5bf1e2c3-2169-406f-bf1b-f7bc5c2303b3",
"participant_unique_id2": "80525360-dae4-4d0f-9f5c-e09f3fdcf7c8",
"count": 1
},
"time": "1.0263"
}{
"status": 700,
"client_message": "Account not currently available for payment",
"data": {
"request_timestamp": 1576100403
}
}Authorizations
HMAC-SHA512 signed Authorization header. See the Authentication page for the complete signing guide.
Body
Provide either customer_account_token or the raw account fields (account, routing_number, recipient_first_name, recipient_last_name, recipient_address1, recipient_city, recipient_state, recipient_zip) — never both.
Unique participant identifier assigned by Ingo.
12345
Value should be set to AC for Standard ACH / RTP or SD for Same-Day ACH.
AC, SD 1"AC"
API version of the request. Current version is 11.
11
Unix timestamp of the request.
1576100326
Participant assigned ID to be associated with customer_account_token creation. Should correlate to participant assigned values affiliated with future process requests for tracking purposes (e.g. CustomerID or AccountID). Must not contain NPI data.
1 - 255"5bf1e2c3-2169-406f-bf1b-f7bc5c2303b3"
Bank account number. Required unless a valid customer_account_token is provided.
1 - 255"22222222"
Bank routing number associated with the account number. Required unless a valid customer_account_token is provided.
"011000015"
Alternative to raw account data when the account was previously tokenized. If provided, the following fields are not required and should be omitted: recipient_first_name, recipient_last_name, account, routing_number, recipient_address1, recipient_city, recipient_state, recipient_zip.
1 - 255"89421718-a62e-4344-8a1d-4baf73fb11f1"
Recipient zip code. 5-digit zip or zip+4 in xxxxx-xxxx format. Required unless a valid customer_account_token is provided.
10^[0-9]{5}(?:-[0-9]{4})?$"30313"
Recipient first name. Required unless a valid customer_account_token is provided.
1 - 255"Luke"
Recipient last name. Required unless a valid customer_account_token is provided.
1 - 255"Skywalker"
Recipient state (standard US postal abbreviation). Required unless a valid customer_account_token is provided.
2^(?:A[LKSZRAEP]|C[AOT]|D[EC]|F[LM]|G[AU]|HI|I[ADLN]|K[SY]|LA|M[ADEHINOPST]|N[CDEHJMVY]|O[HKR]|P[ARW]|RI|S[CD]|T[NX]|UT|V[AIT]|W[AIVY])$"GA"
Recipient city. Required unless a valid customer_account_token is provided.
1 - 255"Atlanta"
Recipient address line 1. Required unless a valid customer_account_token is provided.
1 - 255"123 Main St."
Financial institution account type. Default = 1 (DDA/Checking). 1 = DDA/Checking, 2 = Savings.
3^(1|2)?$"1"
Financial institution account classification. Default = 1 (Personal). 1 = Personal, 2 = Business.
3^(1|2)?$"1"
Dollar amount of disbursement. Max value determined by participant velocity limits.
x >= 0.011010.5
10-digit recipient phone number.
1231231234
Recipient address line 2.
255"Apt 2"
Optional recipient business name.
150"Skywalker Enterprises"
Optional second participant assigned ID to be associated with customer_account_token creation. Should be carried forward to future process requests for tracking purposes. Must not contain NPI data.
255"80525360-dae4-4d0f-9f5c-e09f3fdcf7c8"
Client assigned store ID. Required for Retail client participants.
255"STORE-001"
Client assigned clerk ID. Required for Retail client participants.
255"CLK-007"
Client assigned terminal ID. Required for Retail client participants.
255"TERM-042"
Response
Verification successful — token returned
curl --request POST \
--url https://payapi-sandbox.ingo.money/gateway/verify--ach \
--header 'Authorization: <api-key>' \
--header 'Content-Type: application/json' \
--data '
{
"participant_id": 12345,
"account_type": "AC",
"version": 11,
"timestamp": 1576100326,
"participant_unique_id1": "5bf1e2c3-2169-406f-bf1b-f7bc5c2303b3",
"account": "22222222",
"routing_number": "011000015",
"recipient_first_name": "Alex",
"recipient_last_name": "Rivera",
"recipient_address1": "100 Innovation Way",
"recipient_address2": "Apt 2",
"recipient_city": "Anytown",
"recipient_state": "GA",
"recipient_zip": "00000",
"recipient_phone": 1231231234,
"amount": 1010.5,
"fi_account_type": "1",
"fi_account_classification": "1",
"recipient_business_name": "Skywalker Enterprises",
"participant_unique_id2": "80525360-dae4-4d0f-9f5c-e09f3fdcf7c8"
}
'import requests
url = "https://payapi-sandbox.ingo.money/gateway/verify--ach"
payload = {
"participant_id": 12345,
"account_type": "AC",
"version": 11,
"timestamp": 1576100326,
"participant_unique_id1": "5bf1e2c3-2169-406f-bf1b-f7bc5c2303b3",
"account": "22222222",
"routing_number": "011000015",
"recipient_first_name": "Alex",
"recipient_last_name": "Rivera",
"recipient_address1": "100 Innovation Way",
"recipient_address2": "Apt 2",
"recipient_city": "Anytown",
"recipient_state": "GA",
"recipient_zip": "00000",
"recipient_phone": 1231231234,
"amount": 1010.5,
"fi_account_type": "1",
"fi_account_classification": "1",
"recipient_business_name": "Skywalker Enterprises",
"participant_unique_id2": "80525360-dae4-4d0f-9f5c-e09f3fdcf7c8"
}
headers = {
"Authorization": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
participant_id: 12345,
account_type: 'AC',
version: 11,
timestamp: 1576100326,
participant_unique_id1: '5bf1e2c3-2169-406f-bf1b-f7bc5c2303b3',
account: '22222222',
routing_number: '011000015',
recipient_first_name: 'Alex',
recipient_last_name: 'Rivera',
recipient_address1: '100 Innovation Way',
recipient_address2: 'Apt 2',
recipient_city: 'Anytown',
recipient_state: 'GA',
recipient_zip: '00000',
recipient_phone: 1231231234,
amount: 1010.5,
fi_account_type: '1',
fi_account_classification: '1',
recipient_business_name: 'Skywalker Enterprises',
participant_unique_id2: '80525360-dae4-4d0f-9f5c-e09f3fdcf7c8'
})
};
fetch('https://payapi-sandbox.ingo.money/gateway/verify--ach', 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://payapi-sandbox.ingo.money/gateway/verify--ach",
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([
'participant_id' => 12345,
'account_type' => 'AC',
'version' => 11,
'timestamp' => 1576100326,
'participant_unique_id1' => '5bf1e2c3-2169-406f-bf1b-f7bc5c2303b3',
'account' => '22222222',
'routing_number' => '011000015',
'recipient_first_name' => 'Alex',
'recipient_last_name' => 'Rivera',
'recipient_address1' => '100 Innovation Way',
'recipient_address2' => 'Apt 2',
'recipient_city' => 'Anytown',
'recipient_state' => 'GA',
'recipient_zip' => '00000',
'recipient_phone' => 1231231234,
'amount' => 1010.5,
'fi_account_type' => '1',
'fi_account_classification' => '1',
'recipient_business_name' => 'Skywalker Enterprises',
'participant_unique_id2' => '80525360-dae4-4d0f-9f5c-e09f3fdcf7c8'
]),
CURLOPT_HTTPHEADER => [
"Authorization: <api-key>",
"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://payapi-sandbox.ingo.money/gateway/verify--ach"
payload := strings.NewReader("{\n \"participant_id\": 12345,\n \"account_type\": \"AC\",\n \"version\": 11,\n \"timestamp\": 1576100326,\n \"participant_unique_id1\": \"5bf1e2c3-2169-406f-bf1b-f7bc5c2303b3\",\n \"account\": \"22222222\",\n \"routing_number\": \"011000015\",\n \"recipient_first_name\": \"Alex\",\n \"recipient_last_name\": \"Rivera\",\n \"recipient_address1\": \"100 Innovation Way\",\n \"recipient_address2\": \"Apt 2\",\n \"recipient_city\": \"Anytown\",\n \"recipient_state\": \"GA\",\n \"recipient_zip\": \"00000\",\n \"recipient_phone\": 1231231234,\n \"amount\": 1010.5,\n \"fi_account_type\": \"1\",\n \"fi_account_classification\": \"1\",\n \"recipient_business_name\": \"Skywalker Enterprises\",\n \"participant_unique_id2\": \"80525360-dae4-4d0f-9f5c-e09f3fdcf7c8\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "<api-key>")
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://payapi-sandbox.ingo.money/gateway/verify--ach")
.header("Authorization", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"participant_id\": 12345,\n \"account_type\": \"AC\",\n \"version\": 11,\n \"timestamp\": 1576100326,\n \"participant_unique_id1\": \"5bf1e2c3-2169-406f-bf1b-f7bc5c2303b3\",\n \"account\": \"22222222\",\n \"routing_number\": \"011000015\",\n \"recipient_first_name\": \"Alex\",\n \"recipient_last_name\": \"Rivera\",\n \"recipient_address1\": \"100 Innovation Way\",\n \"recipient_address2\": \"Apt 2\",\n \"recipient_city\": \"Anytown\",\n \"recipient_state\": \"GA\",\n \"recipient_zip\": \"00000\",\n \"recipient_phone\": 1231231234,\n \"amount\": 1010.5,\n \"fi_account_type\": \"1\",\n \"fi_account_classification\": \"1\",\n \"recipient_business_name\": \"Skywalker Enterprises\",\n \"participant_unique_id2\": \"80525360-dae4-4d0f-9f5c-e09f3fdcf7c8\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://payapi-sandbox.ingo.money/gateway/verify--ach")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"participant_id\": 12345,\n \"account_type\": \"AC\",\n \"version\": 11,\n \"timestamp\": 1576100326,\n \"participant_unique_id1\": \"5bf1e2c3-2169-406f-bf1b-f7bc5c2303b3\",\n \"account\": \"22222222\",\n \"routing_number\": \"011000015\",\n \"recipient_first_name\": \"Alex\",\n \"recipient_last_name\": \"Rivera\",\n \"recipient_address1\": \"100 Innovation Way\",\n \"recipient_address2\": \"Apt 2\",\n \"recipient_city\": \"Anytown\",\n \"recipient_state\": \"GA\",\n \"recipient_zip\": \"00000\",\n \"recipient_phone\": 1231231234,\n \"amount\": 1010.5,\n \"fi_account_type\": \"1\",\n \"fi_account_classification\": \"1\",\n \"recipient_business_name\": \"Skywalker Enterprises\",\n \"participant_unique_id2\": \"80525360-dae4-4d0f-9f5c-e09f3fdcf7c8\"\n}"
response = http.request(request)
puts response.read_body{
"status": 100,
"client_message": "Success",
"data": {
"customer_account_token": "89421718-a62e-4344-8a1d-4baf73fb11f1",
"last_4": "2222",
"request_timestamp": 1576100403,
"issuers": [
{
"payee_id": "550333",
"payee_name": "Test Bank",
"payee_address": null,
"payee_city": null,
"payee_state": null,
"payee_zip": null,
"credit_info": {
"min": "0.10",
"max": "1000.00",
"card_type": "DDA",
"estimated_posting_time": "Payment will post 04/22/2026",
"estimated_posting_date": "04/22/2026"
},
"issuing_network": "NA",
"credit_enabled": 1,
"debit_enabled": 0
}
],
"participant_unique_id1": "5bf1e2c3-2169-406f-bf1b-f7bc5c2303b3",
"participant_unique_id2": "80525360-dae4-4d0f-9f5c-e09f3fdcf7c8",
"count": 1
},
"time": "1.0263"
}{
"status": 700,
"client_message": "Account not currently available for payment",
"data": {
"request_timestamp": 1576100403
}
}