Verify — BillPay
Tokenize a biller account for BillPay push disbursements.
curl --request POST \
--url https://payapi-sandbox.ingo.money/gateway/verify--billpay \
--header 'Authorization: <api-key>' \
--header 'Content-Type: application/json' \
--data '
{
"participant_id": 12345,
"payee_id": "123457",
"timestamp": 1587052132,
"version": 11,
"participant_unique_id1": "f8f68709-8e5d-4c19-8ca0-2eaffef4ec57",
"account": "12345678",
"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,
"participant_unique_id2": "257b5bae-d52f-42e2-8f2c-0700d8d7a7a5",
"account_type": "BP"
}
'import requests
url = "https://payapi-sandbox.ingo.money/gateway/verify--billpay"
payload = {
"participant_id": 12345,
"payee_id": "123457",
"timestamp": 1587052132,
"version": 11,
"participant_unique_id1": "f8f68709-8e5d-4c19-8ca0-2eaffef4ec57",
"account": "12345678",
"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,
"participant_unique_id2": "257b5bae-d52f-42e2-8f2c-0700d8d7a7a5",
"account_type": "BP"
}
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,
payee_id: '123457',
timestamp: 1587052132,
version: 11,
participant_unique_id1: 'f8f68709-8e5d-4c19-8ca0-2eaffef4ec57',
account: '12345678',
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,
participant_unique_id2: '257b5bae-d52f-42e2-8f2c-0700d8d7a7a5',
account_type: 'BP'
})
};
fetch('https://payapi-sandbox.ingo.money/gateway/verify--billpay', 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--billpay",
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,
'payee_id' => '123457',
'timestamp' => 1587052132,
'version' => 11,
'participant_unique_id1' => 'f8f68709-8e5d-4c19-8ca0-2eaffef4ec57',
'account' => '12345678',
'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,
'participant_unique_id2' => '257b5bae-d52f-42e2-8f2c-0700d8d7a7a5',
'account_type' => 'BP'
]),
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--billpay"
payload := strings.NewReader("{\n \"participant_id\": 12345,\n \"payee_id\": \"123457\",\n \"timestamp\": 1587052132,\n \"version\": 11,\n \"participant_unique_id1\": \"f8f68709-8e5d-4c19-8ca0-2eaffef4ec57\",\n \"account\": \"12345678\",\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 \"participant_unique_id2\": \"257b5bae-d52f-42e2-8f2c-0700d8d7a7a5\",\n \"account_type\": \"BP\"\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--billpay")
.header("Authorization", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"participant_id\": 12345,\n \"payee_id\": \"123457\",\n \"timestamp\": 1587052132,\n \"version\": 11,\n \"participant_unique_id1\": \"f8f68709-8e5d-4c19-8ca0-2eaffef4ec57\",\n \"account\": \"12345678\",\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 \"participant_unique_id2\": \"257b5bae-d52f-42e2-8f2c-0700d8d7a7a5\",\n \"account_type\": \"BP\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://payapi-sandbox.ingo.money/gateway/verify--billpay")
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 \"payee_id\": \"123457\",\n \"timestamp\": 1587052132,\n \"version\": 11,\n \"participant_unique_id1\": \"f8f68709-8e5d-4c19-8ca0-2eaffef4ec57\",\n \"account\": \"12345678\",\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 \"participant_unique_id2\": \"257b5bae-d52f-42e2-8f2c-0700d8d7a7a5\",\n \"account_type\": \"BP\"\n}"
response = http.request(request)
puts response.read_body{
"status": 100,
"client_message": "Success",
"data": {
"customer_account_token": "a74eacf4-32e8-4081-b69c-565a89dd6cf1",
"last_4": "5678",
"request_timestamp": 1587052142,
"issuers": [
{
"payee_id": "123457",
"payee_name": "First Service Middle Jersey",
"payee_address": "PO Box 5555",
"payee_city": "Secaucus",
"payee_state": "NJ",
"payee_zip": "07032-0310",
"credit_info": {
"min": "5.00",
"max": "2000.00",
"card_type": "NA",
"estimated_posting_time": "Payment will post 04/17/2026",
"estimated_posting_date": "04/17/2026"
},
"issuing_network": "NA",
"credit_enabled": 1,
"debit_enabled": 0
}
],
"participant_unique_id1": "f8f68709-8e5d-4c19-8ca0-2eaffef4ec57",
"participant_unique_id2": "257b5bae-d52f-42e2-8f2c-0700d8d7a7a5",
"count": 1
},
"time": "1.6832"
}{
"status": 700,
"client_message": "Account not currently available for payment",
"data": {
"request_timestamp": 1587052142
}
}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, recipient_first_name, recipient_last_name, recipient_address1, recipient_city, recipient_state, recipient_zip) — never both.
Unique participant identifier assigned by Ingo.
12345
Ingo assigned payee ID for the selected biller. Obtain from the Biller Payments Search API prior to calling Verify.
40"123457"
Unix timestamp of the request.
1587052132
API version of the request. Current version is 11.
11
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"f8f68709-8e5d-4c19-8ca0-2eaffef4ec57"
Always BP for bill payment transactions.
BP 1"BP"
Alternative to raw account data when the account was previously tokenized. If provided, the following fields are not required and should be omitted: account, recipient_first_name, recipient_last_name, recipient_address1, recipient_city, recipient_state, recipient_zip.
1 - 255"a74eacf4-32e8-4081-b69c-565a89dd6cf1"
Customer bill payment account number. Required unless a valid customer_account_token is provided.
1 - 255"12345678"
Customer first name. Required unless a valid customer_account_token is provided.
1 - 255"Johnny"
Customer last name. Required unless a valid customer_account_token is provided.
1 - 255"Rockets"
Optional recipient business name.
150"Rockets LLC"
Customer billing address line 1. Required unless a valid customer_account_token is provided.
1 - 255"123 Main St"
Customer billing city. Required unless a valid customer_account_token is provided.
1 - 255"Atlanta"
Customer billing 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"
Customer billing 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"
Customer billing address line 2.
255"Apt 2"
Optional recipient email address.
255"johnny.rockets@example.com"
10-digit recipient phone number.
10"1231231234"
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"257b5bae-d52f-42e2-8f2c-0700d8d7a7a5"
Dollar amount of disbursement. Max value determined by participant velocity limits.
x >= 0.011010.5
Response
Verification successful — token returned
curl --request POST \
--url https://payapi-sandbox.ingo.money/gateway/verify--billpay \
--header 'Authorization: <api-key>' \
--header 'Content-Type: application/json' \
--data '
{
"participant_id": 12345,
"payee_id": "123457",
"timestamp": 1587052132,
"version": 11,
"participant_unique_id1": "f8f68709-8e5d-4c19-8ca0-2eaffef4ec57",
"account": "12345678",
"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,
"participant_unique_id2": "257b5bae-d52f-42e2-8f2c-0700d8d7a7a5",
"account_type": "BP"
}
'import requests
url = "https://payapi-sandbox.ingo.money/gateway/verify--billpay"
payload = {
"participant_id": 12345,
"payee_id": "123457",
"timestamp": 1587052132,
"version": 11,
"participant_unique_id1": "f8f68709-8e5d-4c19-8ca0-2eaffef4ec57",
"account": "12345678",
"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,
"participant_unique_id2": "257b5bae-d52f-42e2-8f2c-0700d8d7a7a5",
"account_type": "BP"
}
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,
payee_id: '123457',
timestamp: 1587052132,
version: 11,
participant_unique_id1: 'f8f68709-8e5d-4c19-8ca0-2eaffef4ec57',
account: '12345678',
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,
participant_unique_id2: '257b5bae-d52f-42e2-8f2c-0700d8d7a7a5',
account_type: 'BP'
})
};
fetch('https://payapi-sandbox.ingo.money/gateway/verify--billpay', 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--billpay",
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,
'payee_id' => '123457',
'timestamp' => 1587052132,
'version' => 11,
'participant_unique_id1' => 'f8f68709-8e5d-4c19-8ca0-2eaffef4ec57',
'account' => '12345678',
'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,
'participant_unique_id2' => '257b5bae-d52f-42e2-8f2c-0700d8d7a7a5',
'account_type' => 'BP'
]),
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--billpay"
payload := strings.NewReader("{\n \"participant_id\": 12345,\n \"payee_id\": \"123457\",\n \"timestamp\": 1587052132,\n \"version\": 11,\n \"participant_unique_id1\": \"f8f68709-8e5d-4c19-8ca0-2eaffef4ec57\",\n \"account\": \"12345678\",\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 \"participant_unique_id2\": \"257b5bae-d52f-42e2-8f2c-0700d8d7a7a5\",\n \"account_type\": \"BP\"\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--billpay")
.header("Authorization", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"participant_id\": 12345,\n \"payee_id\": \"123457\",\n \"timestamp\": 1587052132,\n \"version\": 11,\n \"participant_unique_id1\": \"f8f68709-8e5d-4c19-8ca0-2eaffef4ec57\",\n \"account\": \"12345678\",\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 \"participant_unique_id2\": \"257b5bae-d52f-42e2-8f2c-0700d8d7a7a5\",\n \"account_type\": \"BP\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://payapi-sandbox.ingo.money/gateway/verify--billpay")
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 \"payee_id\": \"123457\",\n \"timestamp\": 1587052132,\n \"version\": 11,\n \"participant_unique_id1\": \"f8f68709-8e5d-4c19-8ca0-2eaffef4ec57\",\n \"account\": \"12345678\",\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 \"participant_unique_id2\": \"257b5bae-d52f-42e2-8f2c-0700d8d7a7a5\",\n \"account_type\": \"BP\"\n}"
response = http.request(request)
puts response.read_body{
"status": 100,
"client_message": "Success",
"data": {
"customer_account_token": "a74eacf4-32e8-4081-b69c-565a89dd6cf1",
"last_4": "5678",
"request_timestamp": 1587052142,
"issuers": [
{
"payee_id": "123457",
"payee_name": "First Service Middle Jersey",
"payee_address": "PO Box 5555",
"payee_city": "Secaucus",
"payee_state": "NJ",
"payee_zip": "07032-0310",
"credit_info": {
"min": "5.00",
"max": "2000.00",
"card_type": "NA",
"estimated_posting_time": "Payment will post 04/17/2026",
"estimated_posting_date": "04/17/2026"
},
"issuing_network": "NA",
"credit_enabled": 1,
"debit_enabled": 0
}
],
"participant_unique_id1": "f8f68709-8e5d-4c19-8ca0-2eaffef4ec57",
"participant_unique_id2": "257b5bae-d52f-42e2-8f2c-0700d8d7a7a5",
"count": 1
},
"time": "1.6832"
}{
"status": 700,
"client_message": "Account not currently available for payment",
"data": {
"request_timestamp": 1587052142
}
}