Skip to main content
POST
/
gateway
/
process--ach
Push funds to a bank account via ACH, Same-Day ACH, or RTP
curl --request POST \
  --url https://payapi-sandbox.ingo.money/gateway/process--ach \
  --header 'Authorization: Bearer <token>' \
  --header 'Content-Type: application/json' \
  --data '
{
  "participant_id": 12345,
  "account_type": "AC",
  "amount": 1010.5,
  "customer_account_token": "89421718-a62e-4344-8a1d-4baf73fb11f1",
  "source_of_funds": 4,
  "recipient_phone": "1231231234",
  "participant_unique_id1": "5bf1e2c3-2169-406f-bf1b-f7bc5c2303b3",
  "participant_unique_id2": "80525360-dae4-4d0f-9f5c-e09f3fdcf7c8",
  "additional_detail": {
    "source_name": "CorpDisb",
    "descriptive_purpose": "Reimbursement"
  },
  "ledger": {
    "api_key": "lk_live_abc123xyz",
    "user_id": "usr_00456",
    "entity_type": "program",
    "entity_id": "ent_00789"
  },
  "timestamp": 1576100703,
  "version": 11
}
'
{
  "status": 100,
  "client_message": "Success",
  "data": {
    "estimated_posting_time": "Payment will post 04/22/2026",
    "estimated_posting_date": "04/22/2026",
    "transaction_id": 2361537,
    "request_timestamp": 1576100772,
    "customer_account_token": "89421718-a62e-4344-8a1d-4baf73fb11f1",
    "participant_unique_id1": "5bf1e2c3-2169-406f-bf1b-f7bc5c2303b3",
    "participant_unique_id2": "80525360-dae4-4d0f-9f5c-e09f3fdcf7c8"
  },
  "time": "1.3092"
}

Documentation Index

Fetch the complete documentation index at: https://developers.ingopayments.com/llms.txt

Use this file to discover all available pages before exploring further.

Body

application/json
participant_id
integer
required

Unique participant identifier assigned by Ingo.

Example:

12345

timestamp
integer<int64>
required

Unix timestamp of the request.

Example:

1576100703

version
integer
required

API version of the request. Current version is 11.

Example:

11

amount
number<float>
required

Amount of the transaction.

Required range: x >= 0.01
Example:

1010.5

participant_unique_id1
string
required

Participant assigned transaction ID for the process request. Value must be unique and may not contain NPI data. Used for idempotency — a duplicate value returns an idempotent response without initiating a new push request. Appears on daily reconciliation reports.

Required string length: 1 - 255
Example:

"5bf1e2c3-2169-406f-bf1b-f7bc5c2303b3"

account_type
enum<string>
required

Determines the payment rail. AC = Standard ACH, SD = Same-Day ACH, RT = Real-Time Payments (RTP).

Available options:
AC,
SD,
RT
Minimum string length: 1
Example:

"AC"

source_of_funds
enum<integer>
required

Funding source indicator: 1 = Cash, 2 = Check, 3 = Combo of Cash & Check, 4 = Corp Disbursement.

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

4

customer_account_token
string
required

Token representing the account number and customer data as provided in the response from a previous Verify API call.

Required string length: 1 - 255
Example:

"89421718-a62e-4344-8a1d-4baf73fb11f1"

recipient_phone
string | null

10-digit recipient phone number.

Maximum string length: 10
Example:

"1231231234"

participant_unique_id2
string | null

Optional second participant assigned transaction ID. Does not appear on daily reconciliation reports.

Maximum string length: 255
Example:

"80525360-dae4-4d0f-9f5c-e09f3fdcf7c8"

additional_detail
object

Additional transaction details specific to the account type. Applicable for AC and SD only — exclude for RT (RTP) transactions. For ACH, source_name and descriptive_purpose have a combined maximum of 21 characters.

store_id
string | null

Client assigned store ID. Required for Retail client participants.

Maximum string length: 255
Example:

"STORE-001"

clerk_id
string | null

Client assigned clerk ID. Required for Retail client participants.

Maximum string length: 255
Example:

"CLK-007"

terminal_id
string | null

Client assigned terminal ID. Required for Retail client participants.

Maximum string length: 255
Example:

"TERM-042"

ledger
object

Required for clients configured for ledger service. Exclude entirely if not applicable to your integration.

Response

Payment accepted successfully

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"

data
object
time
string

Time in seconds to complete the request.

Example:

"1.3092"