Skip to main content

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.

Sandbox Environment

Your sandbox mirrors production behavior including account verification services, OFAC screening, and webhook delivery. Sandbox credentials and velocity limits are provisioned during onboarding.
Sandbox velocity limits are client-specific and configured by your Ingo integration manager during onboarding.

Test Categories

CategoryDescriptionHow to initiate
Self-ServiceComplete independently in the sandbox at your own paceYour sandbox credentials
ControlledRequires an enablement flag or pre-loaded test accountsContact your integration manager to schedule

Understanding Soft Failures

Soft failure — A partial match that does not stop the flow. The recipient experiences no interruption and proceeds transparently. Your system is notified of the result in the background via the correlated success webhook carrying the soft-fail status code. No failure webhook emits. Hard failure — A mismatch on a field your configuration has designated as requiring a hard failure. How each verification field’s mismatch is treated is defined during your implementation setup via the configuration form. When a hard failure occurs, the recipient is stopped and must retry. If maximum attempts are exhausted, the session or transaction terminates.

How EAC Testing Works

The Embedded Account Capture flow has two distinct phases, each with its own API call and webhook events: Phase 1 — Session API + iFrame Plugin Call POST /api/v1/sessions/point-in-time/plugin to create a session. Mount the plugin in your application. The recipient interacts with the iFrame — RVDM verification and account tokenization happen within the session. Plugin events use plugin.* webhook topics. Phase 2 — Process API After the recipient’s account is tokenized, call POST /gateway/process to initiate the disbursement. Payment status events use gateway.* webhook topics.

Self-Service Scenarios

Successful Session Creation

Category: Self-ServiceScenario: Send a Session API request with valid recipient information. Mount the plugin successfully in your application.Success criteria: Session created, authorized_url returned, plugin mounts

Idempotent Session Request

Category: Self-ServiceScenario: Resend the same Session API request using the same Idempotency-Key header. Confirms that no duplicate session is created.Success criteria: Response status: 101 — existing session returned, no new session created

Failed Idempotent Session Request

Category: Self-ServiceScenario: Resend a Session API request using the same Idempotency-Key but with modified request body parameters. Confirms that idempotency key mismatch is rejected.Success criteria: Error response indicating idempotency key conflict

Session Expiration

Category: Self-ServiceScenario: Create a session and mount the plugin. Allow the session to expire without any recipient input. Confirms your system handles session expiry correctly.Success criteria: Session expired event firesKey webhook sequence to verify:
#EventTopicExpected Status
Session Expiredplugin.transaction.session.request.expired1128

Card — Successful Tokenization

Category: Self-ServiceScenario: Create a session. Mount the plugin. The recipient enters card details with session recipient information that fully matches. Account is tokenized successfully.Success criteria: RVDM success and tokenization success events fireKey webhook sequence to verify:
#EventTopicExpected Status
1RVDM Successplugin.transaction.recipient.verification.rvdm.success1103
2Tokenization Successplugin.transaction.account.tokenization.success100

Card — RVDM Soft Failure

Category: Self-ServiceScenario: The recipient enters card details with partially matching session recipient information. The recipient experiences no interruption and proceeds transparently. Your system is notified of the partial match in the background via the RVDM success webhook carrying the soft-fail status code. Tokenization still succeeds.Success criteria: RVDM success fires with soft-fail code; tokenization success followsKey webhook sequence to verify:
#EventTopicExpected Status
1RVDM Successplugin.transaction.recipient.verification.rvdm.success1104
2Tokenization Successplugin.transaction.account.tokenization.success100

Card — RVDM Hard Failure

Category: Self-ServiceScenario: The recipient enters card details with non-matching session recipient information. The RVDM hard failure stops the flow. The recipient may retry until max attempts are reached, at which point the session terminates.Success criteria: RVDM failure fires; session terminates after max attemptsKey webhook sequence to verify:
#EventTopicExpected Status
1RVDM Failureplugin.transaction.recipient.verification.rvdm.failure1105
2Session Terminatedplugin.transaction.session.request.terminated1127

Card — Account Not Available

Category: Self-ServiceScenario: The recipient enters a card account number not supported for disbursement. The plugin stops the recipient and the session eventually terminates.Success criteria: CNS/CD failure fires; session terminatesKey webhook sequence to verify:
#EventTopicExpected Status
1CNS/CD Failureplugin.transaction.account.verification.card.cns_cd.failure700
2Session Terminatedplugin.transaction.session.request.terminated1127

Card — Session Termination (Max Attempts)

Category: Self-ServiceScenario: The recipient exhausts all attempts across verification failures. The session terminates.Success criteria: Session terminated event firesKey webhook sequence to verify:
#EventTopicExpected Status
Session Terminatedplugin.transaction.session.request.terminated1127

ACH — Successful Tokenization

Category: Self-ServiceScenario: Create a session. Mount the plugin. The recipient enters a valid routing and account number with fully matching session recipient information. Account is tokenized successfully.Success criteria: RVDM success and tokenization success events fireKey webhook sequence to verify:
#EventTopicExpected Status
1RVDM Successplugin.transaction.recipient.verification.rvdm.success1103
2Tokenization Successplugin.transaction.account.tokenization.success100

ACH — RVDM Soft Failure

Category: Self-ServiceScenario: The recipient enters ACH details with partially matching session recipient information. The recipient experiences no interruption. Your system is notified of the partial match in the background. Tokenization still succeeds.Success criteria: RVDM success fires with soft-fail code; tokenization success followsKey webhook sequence to verify:
#EventTopicExpected Status
1RVDM Successplugin.transaction.recipient.verification.rvdm.success1104
2Tokenization Successplugin.transaction.account.tokenization.success100

ACH — RVDM Hard Failure & Session Termination

Category: Self-ServiceScenario: The recipient enters ACH details with non-matching session recipient information until max attempts are reached. The session terminates.Success criteria: RVDM failure fires; session terminatesKey webhook sequence to verify:
#EventTopicExpected Status
1RVDM Failureplugin.transaction.recipient.verification.rvdm.failure1105
2Session Terminatedplugin.transaction.session.request.terminated1127

BillPay — Successful Tokenization (Single Match)

Category: Self-ServiceScenario: Create a session. Mount the plugin. The recipient searches for and selects a biller, enters their account number, and a single biller match is found. Account is tokenized successfully.Success criteria: Tokenization success event firesKey webhook sequence to verify:
#EventTopicExpected Status
Tokenization Successplugin.transaction.account.tokenization.success100

BillPay — Successful Tokenization (Multiple Matches)

Category: Self-ServiceScenario: The biller search returns multiple matches. The recipient selects the correct biller and the account is tokenized successfully.Success criteria: Tokenization success event firesKey webhook sequence to verify:
#EventTopicExpected Status
Tokenization Successplugin.transaction.account.tokenization.success100

BillPay — No Match Found (Session Termination)

Category: Self-ServiceScenario: The biller search returns no matches for the account data entered. The session terminates.Success criteria: Session terminated event firesKey webhook sequence to verify:
#EventTopicExpected Status
Session Terminatedplugin.transaction.session.request.terminated1127
Process API testing — including successful payments, idempotency, velocity limits, and mocked issuer responses — is documented in the IngoPay API testing guide. The customer_account_token returned from the iFrame plugin is used directly in the IngoPay Process API request.

Controlled Scenarios

The following scenarios require your Ingo integration manager to enable a specific configuration or pre-load test accounts before testing can begin. Contact your integration team to schedule these.

AVS Soft Fail

Category: ControlledScenario: A card account tokenization where the AVS check returns a soft failure. The recipient experiences no interruption and proceeds transparently. Your system is notified of the partial address match in the background via the tokenization success webhook carrying the soft-fail status code.Success criteria: Tokenization success fires with AVS soft-fail status codeKey webhook sequence to verify:
#EventTopicExpected Status
1RVDM Successplugin.transaction.recipient.verification.rvdm.success1103 or 1104
2Tokenization Successplugin.transaction.account.tokenization.success111–119 range

AVS Decline

Category: ControlledScenario: A card account tokenization where the AVS check returns a hard decline. Your system is notified via the AVS/CVV failure webhook. The session terminates.Success criteria: AVS/CVV failure fires; session terminatesKey webhook sequence to verify:
#EventTopicExpected Status
1AVS/CVV Failureplugin.transaction.account.verification.card.avs_cvv.failure753–759 range
2Session Terminatedplugin.transaction.session.request.terminated1127

CVV Decline

Category: ControlledScenario: A card account tokenization where the CVV check returns a hard decline. Your system is notified via the AVS/CVV failure webhook. The session terminates.Success criteria: AVS/CVV failure fires; session terminatesKey webhook sequence to verify:
#EventTopicExpected Status
1AVS/CVV Failureplugin.transaction.account.verification.card.avs_cvv.failure
2Session Terminatedplugin.transaction.session.request.terminated1127

ANV / NAV Soft Fail

Category: ControlledScenario: An ACH account verification returns a soft failure on account number (ANV) or name/address (NAV) validation. The recipient experiences no interruption. Your system is notified of the partial match in the background via the tokenization success webhook carrying the soft-fail status code.Success criteria: Tokenization success fires with soft-fail status codeKey webhook sequence to verify:
#EventTopicExpected Status
1RVDM Successplugin.transaction.recipient.verification.rvdm.success1103 or 1104
2Tokenization Successplugin.transaction.account.tokenization.successSoft-fail status code

RNV / ANV / NAV Hard Decline

Category: ControlledScenario: ACH account verification returns a hard decline on routing number, account number, or name/address validation. Your system is notified via the appropriate failure webhook. The session terminates.Success criteria: Applicable failure event fires; session terminatesKey webhook sequence to verify:
#EventTopicExpected Status
RNV Failureplugin.transaction.account.verification.ach.rnv.failure743
or ANV Failureplugin.transaction.account.verification.ach.anv.failure767–769
or NAV Failureplugin.transaction.account.verification.ach.nav.failure776–778
Session Terminatedplugin.transaction.session.request.terminated1127

Webhook Events Reference

EventTopicExpected Status
Session Expiredplugin.transaction.session.request.expired1128
Session Terminatedplugin.transaction.session.request.terminated1127, 1129
EventTopicExpected Status
RVDM Successplugin.transaction.recipient.verification.rvdm.success1103 (full), 1104 (soft fail)
RVDM Failureplugin.transaction.recipient.verification.rvdm.failure1105
EventTopicExpected Status
Card CNS/CD Failureplugin.transaction.account.verification.card.cns_cd.failure700
Card AVS/CVV Failureplugin.transaction.account.verification.card.avs_cvv.failure753–759
ACH RNV Failureplugin.transaction.account.verification.ach.rnv.failure743
ACH ANV Failureplugin.transaction.account.verification.ach.anv.failure767–769
ACH NAV Failureplugin.transaction.account.verification.ach.nav.failure776–778
PayPal AV Failureplugin.transaction.account.verification.paypal.failure.av1150
EventTopicExpected Status
Tokenization Successplugin.transaction.account.tokenization.success100 (full), 111–119 (AVS soft fail)