Skip to main content
POST
/
gateway
/
verify--paypal-venmo
Verify and tokenize an unverified PayPal or Venmo account
curl --request POST \
  --url https://payapi-sandbox.ingo.money/gateway/verify--paypal-venmo \
  --header 'Authorization: <api-key>' \
  --header 'Content-Type: application/json' \
  --data '
{
  "participant_id": 12345,
  "account_type": "PU",
  "receiver_type": 1,
  "participant_unique_id1": "5ced00c4-116d-4786-b1cd-016f7f23dc54",
  "timestamp": 1598505599,
  "version": 11,
  "account": "jane.doe@example.com",
  "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": "5555550100",
  "amount": 50.01,
  "participant_unique_id2": "4259cf7e-ffd2-414a-9c82-cca8a4613e69",
  "store_id": "",
  "terminal_id": "",
  "clerk_id": ""
}
'
import requests

url = "https://payapi-sandbox.ingo.money/gateway/verify--paypal-venmo"

payload = {
"participant_id": 12345,
"account_type": "PU",
"receiver_type": 1,
"participant_unique_id1": "5ced00c4-116d-4786-b1cd-016f7f23dc54",
"timestamp": 1598505599,
"version": 11,
"account": "jane.doe@example.com",
"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": "5555550100",
"amount": 50.01,
"participant_unique_id2": "4259cf7e-ffd2-414a-9c82-cca8a4613e69",
"store_id": "",
"terminal_id": "",
"clerk_id": ""
}
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: 'PU',
receiver_type: 1,
participant_unique_id1: '5ced00c4-116d-4786-b1cd-016f7f23dc54',
timestamp: 1598505599,
version: 11,
account: 'jane.doe@example.com',
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: '5555550100',
amount: 50.01,
participant_unique_id2: '4259cf7e-ffd2-414a-9c82-cca8a4613e69',
store_id: '',
terminal_id: '',
clerk_id: ''
})
};

fetch('https://payapi-sandbox.ingo.money/gateway/verify--paypal-venmo', 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--paypal-venmo",
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' => 'PU',
'receiver_type' => 1,
'participant_unique_id1' => '5ced00c4-116d-4786-b1cd-016f7f23dc54',
'timestamp' => 1598505599,
'version' => 11,
'account' => 'jane.doe@example.com',
'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' => '5555550100',
'amount' => 50.01,
'participant_unique_id2' => '4259cf7e-ffd2-414a-9c82-cca8a4613e69',
'store_id' => '',
'terminal_id' => '',
'clerk_id' => ''
]),
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--paypal-venmo"

payload := strings.NewReader("{\n \"participant_id\": 12345,\n \"account_type\": \"PU\",\n \"receiver_type\": 1,\n \"participant_unique_id1\": \"5ced00c4-116d-4786-b1cd-016f7f23dc54\",\n \"timestamp\": 1598505599,\n \"version\": 11,\n \"account\": \"jane.doe@example.com\",\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\": \"5555550100\",\n \"amount\": 50.01,\n \"participant_unique_id2\": \"4259cf7e-ffd2-414a-9c82-cca8a4613e69\",\n \"store_id\": \"\",\n \"terminal_id\": \"\",\n \"clerk_id\": \"\"\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--paypal-venmo")
.header("Authorization", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"participant_id\": 12345,\n \"account_type\": \"PU\",\n \"receiver_type\": 1,\n \"participant_unique_id1\": \"5ced00c4-116d-4786-b1cd-016f7f23dc54\",\n \"timestamp\": 1598505599,\n \"version\": 11,\n \"account\": \"jane.doe@example.com\",\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\": \"5555550100\",\n \"amount\": 50.01,\n \"participant_unique_id2\": \"4259cf7e-ffd2-414a-9c82-cca8a4613e69\",\n \"store_id\": \"\",\n \"terminal_id\": \"\",\n \"clerk_id\": \"\"\n}")
.asString();
require 'uri'
require 'net/http'

url = URI("https://payapi-sandbox.ingo.money/gateway/verify--paypal-venmo")

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\": \"PU\",\n \"receiver_type\": 1,\n \"participant_unique_id1\": \"5ced00c4-116d-4786-b1cd-016f7f23dc54\",\n \"timestamp\": 1598505599,\n \"version\": 11,\n \"account\": \"jane.doe@example.com\",\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\": \"5555550100\",\n \"amount\": 50.01,\n \"participant_unique_id2\": \"4259cf7e-ffd2-414a-9c82-cca8a4613e69\",\n \"store_id\": \"\",\n \"terminal_id\": \"\",\n \"clerk_id\": \"\"\n}"

response = http.request(request)
puts response.read_body
{
  "status": 100,
  "client_message": "Success",
  "recipient_message": "Success",
  "data": {
    "customer_account_token": "a3650c4f-60e3-4f80-ba4b-b79055e20007",
    "last_4": "k6Aw",
    "expiration_date": "",
    "request_timestamp": 1598505603,
    "issuers": [
      {
        "payee_id": "614004",
        "payee_name": "Paypal",
        "payee_address": "",
        "payee_city": "",
        "payee_state": "",
        "payee_zip": "",
        "credit_info": {
          "min": "0.01",
          "max": "10000.00",
          "card_type": "NA",
          "estimated_posting_time": "Payment will post within 5 minutes.",
          "estimated_posting_date": "04/21/2026"
        },
        "issuing_network": "NA",
        "credit_enabled": 1,
        "debit_enabled": 0
      }
    ],
    "participant_unique_id1": "5ced00c4-116d-4786-b1cd-016f7f23dc54",
    "participant_unique_id2": "4259cf7e-ffd2-414a-9c82-cca8a4613e69",
    "count": 1
  },
  "time": "2.4577"
}
{
"status": 700,
"client_message": "Account not currently available for payment",
"data": {
"request_timestamp": 1598505603
}
}

Authorizations

Authorization
string
header
required

HMAC-SHA512 signed Authorization header. See the Authentication page for the complete signing guide.

Body

application/json

Provide either customer_account_token or the full set of raw account fields (account, receiver_type, recipient_first_name, recipient_last_name, recipient_address1, recipient_city, recipient_state, recipient_zip) — never both.

participant_id
integer
required

Unique participant identifier assigned by Ingo.

Example:

12345

account_type
enum<string>
required

Indicates the type of transaction. PU = PayPal unverified account payout transaction, VE = Venmo payout transaction.

Available options:
PU,
VE
Minimum string length: 1
Example:

"PU"

participant_unique_id1
string
required

Participant assigned ID for the disbursement. Should be carried forward to the process request for tracking purposes. Must not contain NPI data.

Required string length: 1 - 254
Example:

"5ced00c4-116d-4786-b1cd-016f7f23dc54"

timestamp
integer<int64>
required

Unix timestamp of the request.

Example:

1598505599

version
integer
required

API version of the request. Current version is 11.

Example:

11

receiver_type
enum<integer>

Required when customer_account_token is not provided. Determines how the account value is interpreted. 1 = EMAIL, 2 = PHONE, 3 = PAYPAL_ID (PayPal PU only), 4 = USER_HANDLE (Venmo VE only).

Available options:
1,
2,
3,
4
Example:

1

customer_account_token
string | null

Alternative to raw account data when the account was previously tokenized. If provided, receiver_type and all raw account fields (account, recipient_first_name, recipient_last_name, recipient_address1, recipient_city, recipient_state, recipient_zip) are not required and should be omitted.

Required string length: 1 - 254
Example:

"a3650c4f-60e3-4f80-ba4b-b79055e20007"

account
string

Value used to identify the receiving account. Required unless customer_account_token is provided. Interpretation depends on receiver_type: EMAIL address, phone number, PayPal ID, or Venmo user handle.

Required string length: 1 - 254
Example:

"jane.doe@example.com"

recipient_first_name
string

Recipient first name. Required unless customer_account_token is provided.

Required string length: 1 - 254
Example:

"Jane"

recipient_last_name
string

Recipient last name. Required unless customer_account_token is provided.

Required string length: 1 - 254
Example:

"Doe"

recipient_address1
string

Recipient address line 1. Required unless customer_account_token is provided.

Required string length: 1 - 254
Example:

"123 Main St"

recipient_city
string

Recipient city. Required unless customer_account_token is provided.

Required string length: 1 - 254
Example:

"Atlanta"

recipient_state
string

Recipient state (standard US postal abbreviation). Required unless customer_account_token is provided.

Required string length: 2
Pattern: ^(?: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])$
Example:

"GA"

recipient_zip
string | null

Recipient zip code. 5-digit zip or zip+4 in xxxxx-xxxx format. Required unless customer_account_token is provided.

Maximum string length: 10
Pattern: ^[0-9]{5}(?:-[0-9]{4})?$
Example:

"30313"

recipient_address2
string | null

Optional recipient address line 2.

Maximum string length: 254
Example:

"Apt 2"

recipient_business_name
string | null

Optional recipient business name.

Maximum string length: 150
Example:

"Doe Enterprises"

recipient_phone
string | null

Optional 10-digit recipient phone number.

Maximum string length: 10
Example:

"5551234567"

recipient_email
string | null

Optional recipient email address.

Maximum string length: 254
Example:

"jane.doe@example.com"

amount
number<float> | null

Dollar amount of disbursement.

Required range: x >= 0.01
Example:

50.01

participant_unique_id2
string | null

Optional second participant assigned ID for the disbursement. This value should be the same on all activity pertaining to a disbursement attempt.

Maximum string length: 254
Example:

"4259cf7e-ffd2-414a-9c82-cca8a4613e69"

store_id
string | null

Client assigned store ID. Required for Retail client participants.

Maximum string length: 254
Example:

"STORE-001"

terminal_id
string | null

Client assigned terminal ID. Required for Retail client participants.

Maximum string length: 254
Example:

"TERM-042"

clerk_id
string | null

Client assigned clerk ID. Required for Retail client participants.

Maximum string length: 254
Example:

"CLK-007"

Response

Verification successful — token returned

status
integer

Numeric code describing the status of the API request. 100 = Success.

Example:

100

client_message
string

Text description associated with the status code.

Example:

"Success"

recipient_message
string

Text description associated with the status code for the recipient.

Example:

"Success"

data
object
time
string

Time in seconds to complete the request.

Example:

"2.4577"

validation_errors
string | null

Provides additional detail on validation type errors when applicable.

Example:

null