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 payment routing logic, OFAC screening, account verification services, 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 set by your integration managerContact your integration manager to schedule
GuidedLive session with your Ingo integration team recommendedContact your integration manager to schedule

Understanding Soft Failures

Ingo uses two distinct failure modes across verification and authentication services: 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 for a soft failure. 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.

A Note on Multi-Party Testing

Notify Managed Parties flows are scenario-driven, not scripted. Party roles, approval decisions, authentication outcomes, and disbursement selections are all made through live recipient and approver interactions. Because the orchestration responds dynamically to those interactions, testing is structured around intended outcomes rather than prescriptive step sequences. The verification mechanism for every scenario is the webhook event sequence — you know a scenario completed correctly when the expected events fire in the correct order.

Self-Service Scenarios

Successful Notification Delivery

Category: Self-ServiceScenario: Stage a transaction via the Notify API. The recipient receives the notification email and it is delivered successfully.Success criteria: Notification delivered without bounceKey webhook sequence to verify:
#EventTopicExpected Status
1Notification Senttransaction.recipient.notification.status.sent1200 series
2Notification Receivedtransaction.recipient.notification.status.received1200 series

Notification Reminder

Category: Self-ServiceScenario: Stage a transaction. Receive the initial notification. Allow the reminder notification to fire without completing the disbursement.Success criteria: Both sent and reminder events receivedKey webhook sequence to verify:
#EventTopicExpected Status
1Notification Senttransaction.recipient.notification.status.sent1200 series
2Notification Sent (Reminder)transaction.recipient.notification.status.sent1200 series

Notification Bounce

Category: Self-ServiceScenario: Stage a transaction using an invalid email address. Confirms your system handles undeliverable notification events.Success criteria: Bounce event receivedKey webhook sequence to verify:
#EventTopicExpected Status
1Notification Senttransaction.recipient.notification.status.sent1200 series
2Notification Bouncedtransaction.recipient.notification.status.bounced1200 series

Idempotent Notify Request

Category: Self-ServiceScenario: Resubmit an identical Notify API request using the same participant_unique_id1. Confirms duplicate protection is working correctly.Success criteria: Response status: 101 — no new transaction created

Cancel — Successful

Category: Self-ServiceScenario: Stage a transaction. Submit a Notify Cancel request before the recipient completes the flow. Confirms cancellation before disbursement selection.Success criteria: Cancellation confirmed, disbursement request canceled event firesKey webhook sequence to verify:
#EventTopicExpected Status
1Notification Senttransaction.recipient.notification.status.sent1200 series
2Disbursement Canceledtransaction.recipient.payment.disbursement.request.canceled1110

Cancel — Failure Conditions

Category: Self-ServiceScenario: Attempt to cancel a transaction in a state that does not permit cancellation — already completed, already canceled, already expired, or invalid notification ID. Confirms your system handles cancel error responses gracefully.Success criteria: Appropriate error status returned for each invalid state

Authentication — Success

Category: Self-ServiceScenario: Stage a transaction. Open the notification and complete the authentication challenge with fully matching data. Recipient proceeds to disbursement selection.Success criteria: Authentication success event fires, flow continues to account selectionKey webhook sequence to verify:
#EventTopicExpected Status
1Notification Senttransaction.recipient.notification.status.sent1200 series
2Notification Receivedtransaction.recipient.notification.status.received1200 series
3Authentication Successtransaction.recipient.authentication.status.success1100

Authentication — Soft Failure

Category: Self-ServiceScenario: Stage a transaction. Open the notification and enter partially matching authentication data. The recipient experiences no interruption and proceeds transparently. Your system is notified of the partial match in the background via the authentication success webhook carrying the soft-fail status code.Success criteria: Authentication success fires with soft-fail status code; recipient proceeds uninterruptedKey webhook sequence to verify:
#EventTopicExpected Status
1Notification Senttransaction.recipient.notification.status.sent1200 series
2Notification Receivedtransaction.recipient.notification.status.received1200 series
3Authentication Successtransaction.recipient.authentication.status.success1101

Authentication — Hard Failure & Termination

Category: Self-ServiceScenario: Stage a transaction. Open the notification and provide non-matching authentication data until maximum attempts are reached. The recipient is stopped at each failure and may retry. After exhausting all attempts, the transaction terminates.Success criteria: Failure event fires, transaction terminatesKey webhook sequence to verify:
#EventTopicExpected Status
1Notification Senttransaction.recipient.notification.status.sent1200 series
2Notification Receivedtransaction.recipient.notification.status.received1200 series
3Authentication Failuretransaction.recipient.authentication.status.failure1102
4Payment Terminatedtransaction.recipient.payment.status.terminated1113

RVDM — Success

Category: Self-ServiceScenario: Stage a transaction with RVDM enabled. Complete authentication. Provide recipient information that fully matches the session data.Success criteria: RVDM success event fires, flow continues to account selectionKey webhook sequence to verify:
#EventTopicExpected Status
1–3Notification / Auth events(as above)
4RVDM Successtransaction.recipient.verification.rvdm.success1103

RVDM — Soft Failure

Category: Self-ServiceScenario: Stage a transaction with RVDM enabled. Provide partially matching recipient data. 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.Success criteria: RVDM success fires with soft-fail status code; recipient proceeds to account selection uninterruptedKey webhook sequence to verify:
#EventTopicExpected Status
1–3Notification / Auth events(as above)
4RVDM Successtransaction.recipient.verification.rvdm.success1104

RVDM — Hard Failure & Termination

Category: Self-ServiceScenario: Stage a transaction with RVDM enabled. Provide non-matching recipient data until maximum attempts are exhausted. The recipient is stopped at each failure and may retry. After exhausting all attempts, the transaction terminates.Success criteria: RVDM failure event fires, transaction terminatesKey webhook sequence to verify:
#EventTopicExpected Status
1–3Notification / Auth events(as above)
4RVDM Failuretransaction.recipient.verification.rvdm.failure1105
5Payment Terminatedtransaction.recipient.payment.status.terminated1113

Card — Successful Disbursement

Category: Self-ServiceScenario: Stage a transaction. Complete the flow through authentication and RVDM. Select card disbursement and tokenize a valid test card. Payment processes successfully.Success criteria: Tokenization and payment success events fireKey webhook sequence to verify:
#EventTopicExpected Status
1–4Notification / Auth / RVDM events(as above)
5Tokenization Successtransaction.account.tokenization.success100
6Payment Successtransaction.recipient.payment.status.success1125

Card — Repeat Recipient

Category: Self-ServiceScenario: Stage a second transaction for a recipient with a previously tokenized card. Complete the flow using the existing token without re-entering card details.Success criteria: Payment completes using stored token, no re-tokenization required

Card — Account Not Available

Category: Self-ServiceScenario: Stage a transaction. Enter a card account number not supported for disbursement. The recipient is stopped and must use a different account. Your system is notified via the CNS/CD failure webhook.Success criteria: CNS/CD failure event firesKey webhook sequence to verify:
#EventTopicExpected Status
CNS/CD Failuretransaction.account.verification.card.failure.cns_cd700

ACH — Successful Disbursement

Category: Self-ServiceScenario: Stage a transaction. Complete authentication and RVDM. Select ACH disbursement and enter a valid test routing and account number. Payment processes successfully.Success criteria: Tokenization and payment success events fireKey webhook sequence to verify:
#EventTopicExpected Status
1–4Notification / Auth / RVDM events(as above)
5Tokenization Successtransaction.account.tokenization.success100
6Payment Successtransaction.recipient.payment.status.success1126

ACH — Repeat Recipient

Category: Self-ServiceScenario: Stage a second ACH transaction for a recipient with a previously registered account. Completes using the existing token.Success criteria: Payment completes using stored token

PayPal — Successful Disbursement

Category: Self-ServiceScenario: Stage a transaction. Complete authentication and select PayPal as the disbursement method. In the PayPal flow, PayPal Account Verification (AV) runs in place of RVDM. The AV success webhook notifies your system of the verification result in the background. The recipient experiences no interruption — the account is tokenized and payment processes successfully.Success criteria: PayPal AV success, tokenization success, and payment success all fire in sequenceKey webhook sequence to verify:
#EventTopicExpected Status
1Notification Senttransaction.recipient.notification.status.sent1200 series
2Notification Receivedtransaction.recipient.notification.status.received1200 series
3Authentication Successtransaction.recipient.authentication.status.success1100 or 1101
4PayPal AV Successtransaction.account.verification.paypal.success.av1148
5Tokenization Successtransaction.account.tokenization.success100
6Payment Successtransaction.recipient.payment.status.success1134

PayPal — Repeat Recipient

Category: Self-ServiceScenario: Stage a second PayPal transaction for a recipient with a previously registered PayPal account. Completes using the existing token.Success criteria: Payment completes using stored token

Check — Recipient-Elected (Client Issuance)

Category: Self-ServiceScenario: Stage a transaction. Complete the flow and have the recipient elect check as their disbursement method. Client issues the check.Success criteria: Check in process event fires confirming the recipient elected checkKey webhook sequence to verify:
#EventTopicExpected Status
Check In Processtransaction.recipient.payment.status.check1111 or 1112

Check — Address Not Confirmed

Category: Self-ServiceScenario: Stage a check transaction. Recipient selects check but does not confirm the address on file.Success criteria: Check in process event fires with address-not-confirmed status codeKey webhook sequence to verify:
#EventTopicExpected Status
Check In Processtransaction.recipient.payment.status.check1112

Check — Notification Expiration (Client Issuance)

Category: Self-ServiceScenario: Stage a Client Issuance check transaction. Allow the notification to expire without recipient action. The disbursement request expires and the transaction terminates.Success criteria: Expired event fires; transaction terminatesKey webhook sequence to verify:
#EventTopicExpected Status
1Disbursement Expiredtransaction.recipient.payment.disbursement.request.expired1109
2Payment Terminatedtransaction.recipient.payment.status.terminated1113

Check — Notification Expiration (Ingo Issuance)

Category: Self-ServiceScenario: Stage an Ingo Issuance check transaction. Allow the notification to expire without recipient action. Ingo defaults to issuing the check — the payment succeeds and the check is issued and subsequently paid.Success criteria: Payment success fires, followed by check issued and check paid eventsKey webhook sequence to verify:
#EventTopicExpected Status
1Payment Successtransaction.recipient.payment.status.success1133
2Check Issuedtransaction.recipient.payment.status.check.issued100
3Check Paidtransaction.recipient.payment.status.check.paid100

Check — Ingo Issuance

Category: Self-ServiceScenario: Stage a transaction configured for Ingo check issuance. Complete the full flow. Ingo issues the check and it is subsequently paid.Success criteria: Payment success, check issued, and check paid events all fireKey webhook sequence to verify:
#EventTopicExpected Status
1Payment Successtransaction.recipient.payment.status.success1133
2Check Issuedtransaction.recipient.payment.status.check.issued100
3Check Paidtransaction.recipient.payment.status.check.paid100

Recipient-Initiated Cancellation

Category: Self-ServiceScenario: Stage a transaction. Open the notification, complete authentication, and have the recipient elect to cancel the disbursement from within the iFrame. Confirms your system handles recipient-initiated cancellation correctly.Success criteria: Recipient cancel event fires, transaction terminatesKey webhook sequence to verify:
#EventTopicExpected Status
Recipient Canceltransaction.recipient.payment.notice.status.recipient.cancel1139
Payment Terminatedtransaction.recipient.payment.status.terminated1113

Controlled Scenarios

The following scenarios require your Ingo integration manager to enable a specific configuration 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 code; payment completesKey webhook sequence to verify:
#EventTopicExpected Status
1–3Notification / Auth / RVDM events(as above)
4Tokenization Successtransaction.account.tokenization.success111–119 range
5Payment Successtransaction.recipient.payment.status.success1125

AVS Decline

Category: ControlledScenario: A card account tokenization where the AVS check returns a hard decline. The recipient is stopped and must use a different account. Your system is notified via the AVS/CVV failure webhook.Success criteria: AVS/CVV failure event fires; account rejectedKey webhook sequence to verify:
#EventTopicExpected Status
AVS/CVV Failuretransaction.account.verification.card.failure.avs_cvv753–759 range

AVS/CVV Max Attempts — Termination

Category: ControlledScenario: AVS or CVV hard failures repeat until the maximum attempt threshold is reached. The recipient is stopped at each failure and may retry. After exhausting all attempts, the transaction terminates.Success criteria: Termination event fires after max attemptsKey webhook sequence to verify:
#EventTopicExpected Status
FinalPayment Terminatedtransaction.recipient.payment.status.terminated1113

ANV / NAV Soft Fail

Category: ControlledScenario: An ACH account verification returns a soft failure on account number validation (ANV) or name/address validation (NAV). The recipient experiences no interruption — the flow continues transparently. Your system is notified of the partial match result in the background via the tokenization success webhook carrying the soft-fail status code.Success criteria: Tokenization success fires with soft-fail status code; payment completesKey webhook sequence to verify:
#EventTopicExpected Status
1Notification Senttransaction.recipient.notification.status.sent1200 series
2Notification Receivedtransaction.recipient.notification.status.received1200 series
3Authentication Successtransaction.recipient.authentication.status.success1100 or 1101
4RVDM Successtransaction.recipient.verification.rvdm.success1103 or 1104
5Tokenization Successtransaction.account.tokenization.successSoft-fail status code
6Payment Successtransaction.recipient.payment.status.success1126

RNV / ANV / NAV Hard Decline

Category: ControlledScenario: ACH account verification returns a hard decline on routing number (RNV), account number (ANV), or name/address (NAV) validation. The recipient is stopped and must use a different account. Your system is notified via the appropriate failure webhook.Success criteria: Applicable failure event fires; account rejectedKey webhook sequence to verify:
#EventTopicExpected Status
RNV Failuretransaction.account.verification.ach.failure.rnv743
or ANV Failuretransaction.account.verification.ach.failure.anv767–769
or NAV Failuretransaction.account.verification.ach.failure.nav776–778

ACH — Max Attempts Termination

Category: ControlledScenario: ACH verification hard failures repeat until maximum attempts are exhausted. The recipient is stopped at each failure and may retry. After exhausting all attempts, the transaction terminates.Success criteria: Termination event fires after max attemptsKey webhook sequence to verify:
#EventTopicExpected Status
FinalPayment Terminatedtransaction.recipient.payment.status.terminated1113

PayPal AV — Soft Fail

Category: ControlledScenario: PayPal account verification returns a partial match. The recipient experiences no interruption and proceeds transparently. Your system is notified of the partial match in the background via the PayPal AV success webhook carrying the soft-fail status code. The account is tokenized and payment completes.Success criteria: PayPal AV success fires with soft-fail status code; tokenization and payment success followKey webhook sequence to verify:
#EventTopicExpected Status
1–3Notification / Auth events(as above)
4PayPal AV Successtransaction.account.verification.paypal.success.avSoft-fail status code
5Tokenization Successtransaction.account.tokenization.success100
6Payment Successtransaction.recipient.payment.status.success1134

PayPal AV — Hard Fail & Max Attempts Termination

Category: ControlledScenario: PayPal account verification returns a hard failure. The recipient is stopped and must retry. If maximum attempts are reached, the transaction terminates. Your system is notified via the PayPal AV failure webhook.Success criteria: PayPal AV failure event fires; termination event fires after max attemptsKey webhook sequence to verify:
#EventTopicExpected Status
PayPal AV Failuretransaction.account.verification.paypal.failure.av1150
FinalPayment Terminatedtransaction.recipient.payment.status.terminated1113

OFAC Suspended — Cleared (Payment Success)

Category: ControlledScenario: A staged transaction triggers an OFAC hit during the disbursement flow. The payment is suspended. After OFAC review, the transaction is cleared and payment completes.Success criteria: Suspended and cleared events both fire; payment ultimately succeedsKey webhook sequence to verify:
#EventTopicExpected Status
1OFAC Suspendedtransaction.recipient.verification.ofac.status.suspended1106
2OFAC Clearedtransaction.recipient.verification.ofac.status.cleared1107
3Payment Successtransaction.recipient.payment.status.success1125–1134

OFAC Suspended — Cleared (Payment Declined)

Category: ControlledScenario: An OFAC suspension is reviewed and the transaction is cleared, but the payment is subsequently declined by the network.Success criteria: Suspended and cleared events fire; payment terminates after clearanceKey webhook sequence to verify:
#EventTopicExpected Status
1OFAC Suspendedtransaction.recipient.verification.ofac.status.suspended1106
2OFAC Clearedtransaction.recipient.verification.ofac.status.cleared1107
3Payment Failuretransaction.recipient.payment.status.failure

OFAC Failure — Transaction Terminated

Category: ControlledScenario: An OFAC suspension is reviewed and confirmed. The transaction is terminated.Success criteria: Suspended and failure events fire; transaction terminatesKey webhook sequence to verify:
#EventTopicExpected Status
1OFAC Suspendedtransaction.recipient.verification.ofac.status.suspended1106
2OFAC Failuretransaction.recipient.verification.ofac.status.failure1108
3Payment Terminatedtransaction.recipient.payment.status.terminated1113

Guided Scenarios

The following scenarios involve multi-party orchestration and dynamic role interactions that benefit from coordination with your Ingo integration team. Contact your integration manager to schedule a guided session.
Multi-party flows are scenario-driven by design. Party roles, approval decisions, and notification configurations interact dynamically based on your implementation setup. The key outcomes to validate during guided sessions:
OutcomeKey events to verify
Single approver — approvedapprovals.pmt-suspendedapprovals.decision.approvedapprovals.complete → payment success
Single approver — declinedapprovals.pmt-suspendedapprovals.decision.declined → payment terminated
Multiple approvers — all approveapprovals.pmt-suspended → multiple decision.approvedapprovals.complete
Multiple approvers — one declinesapprovals.pmt-suspendeddecision.declined → payment terminated
With notified partiesParty notification events firing alongside approval events
With role changespayment.status.roles.change firing when party roles are modified during flow

Returned Payment

Category: GuidedScenario: A previously completed payment is returned by the account issuer. Confirms your system correctly handles the returned status and updates your records.Success criteria: Returned event received and processed correctlyKey webhook sequence to verify:
#EventTopicExpected Status
Payment Returnedtransaction.recipient.payment.status.returned1114

Webhook Events Reference

EventTopicExpected Status
Notification Senttransaction.recipient.notification.status.sent1200 series
Notification Receivedtransaction.recipient.notification.status.received1200 series
Notification Bouncedtransaction.recipient.notification.status.bounced1200 series
Party Notification Senttransaction.party.notification.status.sent1200 series
Party Notification Receivedtransaction.party.notification.status.received1200 series
Party Notification Bouncedtransaction.party.notification.status.bounced1200 series
EventTopicExpected Status
Auth Successtransaction.recipient.authentication.status.success1100 (full), 1101 (soft fail)
Auth Failuretransaction.recipient.authentication.status.failure1102
RVDM Successtransaction.recipient.verification.rvdm.success1103 (full), 1104 (soft fail)
RVDM Failuretransaction.recipient.verification.rvdm.failure1105
OFAC Suspendedtransaction.recipient.verification.ofac.status.suspended1106
OFAC Clearedtransaction.recipient.verification.ofac.status.cleared1107
OFAC Failuretransaction.recipient.verification.ofac.status.failure1108
EventTopicExpected Status
Card CNS/CD Failuretransaction.account.verification.card.failure.cns_cd700
Card AVS/CVV Failuretransaction.account.verification.card.failure.avs_cvv753–759
ACH RNV Failuretransaction.account.verification.ach.failure.rnv743
ACH ANV Failuretransaction.account.verification.ach.failure.anv767–769
ACH NAV Failuretransaction.account.verification.ach.failure.nav776–778
PayPal AV Failuretransaction.account.verification.paypal.failure.av1150
PayPal AV Successtransaction.account.verification.paypal.success.av1148
Tokenization Successtransaction.account.tokenization.success100 (full), 111–119 (AVS soft fail)
EventTopicExpected Status
Payment Suspended (Approvals)transaction.recipient.payment.status.approvals.pmt-suspended1170
Approval — Approvedtransaction.recipient.payment.status.approvals.decision.approved1123
Approval — Declinedtransaction.recipient.payment.status.approvals.decision.declined1124
Approvals Completetransaction.recipient.payment.status.approvals.complete1171
Roles Changetransaction.recipient.payment.status.roles.change
EventTopicExpected Status
Payment Success — Cardtransaction.recipient.payment.status.success1125
Payment Success — ACHtransaction.recipient.payment.status.success1126
Payment Success — Checktransaction.recipient.payment.status.success1133
Payment Success — PayPaltransaction.recipient.payment.status.success1134
Payment Failuretransaction.recipient.payment.status.failurevaries
Payment Terminatedtransaction.recipient.payment.status.terminated1113, 1132
Payment Returnedtransaction.recipient.payment.status.returned1114
Disbursement Expiredtransaction.recipient.payment.disbursement.request.expired1109
Disbursement Canceledtransaction.recipient.payment.disbursement.request.canceled1110
Recipient Canceltransaction.recipient.payment.notice.status.recipient.cancel1139
Check In Processtransaction.recipient.payment.status.check1111, 1112
Check Issuedtransaction.recipient.payment.status.check.issued100
Check Paidtransaction.recipient.payment.status.check.paid100
Check Canceledtransaction.recipient.payment.status.check.canceled100
Check Stoppedtransaction.recipient.payment.status.check.stopped100
Check Returnedtransaction.recipient.payment.status.check.returned1114