The IngoPay Gateway API Verify & Process Methods support Idempotency for safely retrying requests without accidentally performing the same operation twice, or creating a new transaction - either due to network interference or communication failures.
Clients should ASSUME SUCCESS for any Process (payment) requests in which a response has not been received from Ingo Money. This includes the assumption of normal settlement for these transactions by Ingo Money. Any consumer funds associated with the transaction should be accounted for by the client aligning with normal successful transaction processing.
Occurrences such as network issues and timeouts may occur within downstream/upstream communications impacting our clients’ ability to receive a status response from Ingo Money. In the event clients do not receive a response from their process payload request(s) to Ingo Money, clients may safely re-attempt utilizing an Idempotent Method request which contains the same
participant_unique_id1
value as the original request. It is strongly suggested to throttle all Idempotent requests at a minimum of 3-4 seconds after your configured timeout stand-in response code setting as discussed with your Integration Manager.Additionally, there may be occurrences where clients have exhausted their maximum number of system-generated process Idempotent retry attempts to Ingo Money without ever receiving a response. This scenario may be a leading indicator of a systemic outage, either planned or unplanned. Once all Idempotent process retry attempts have been exhausted, clients should ensure the impacted transaction request(s) are properly recorded with the assumption of success in their systems. Clients should directly contact Ingo Payment Services for a manual investigation into all potentially impacted requests. Ingo Payment Services will perform a thorough review of each request providing potential options as next steps to minimize consumer impact as applicable.
A detailed review of timeout settings and configurable options will be discussed and documented by your assigned Integration Manager.
To perform an idempotent Verify request:
customer_account_token
returned in the original verify response payload. Doing so will echo back attributes associated with the customer_account_token upon origination.{
"participant_id": 12345,
"account_type": "CA",
"customer_account_token": "fcf0d15a-396c-4c94-95cf-e57ce3ea0bae",
"participant_unique_id1": "f31fbe31-346d-4564-bb38-71deabbe1c2d",
"participant_unique_id2": "c0359ece-3d5e-4e7a-b6c4-30e5ae4b6a67",
"timestamp": "1579832224",
"version": 11
}
Code | Message | Applicable Call | Description |
---|---|---|---|
101 | Success - Idempotent Response | Verify or Process | Returned when the received unique client assigned participant_unique_id1 value was processed successfully on a prior request. A new transaction is not processed. |
{
"status": 101,
"client_message": "Success - Idempotent",
"data": {
"customer_account_token": "fcf0d15a-396c-4c94-95cf-e57ce3ea0bae",
"last_4": "1111",
"request_timestamp": 1632343252,
"issuers": [
{
"payee_id": "121640",
"payee_name": "Incomm",
"payee_address": "PO Box 1187",
"payee_city": "Monrovia",
"payee_state": "CA",
"payee_zip": "91017",
"credit_info": {
"min": "5.00",
"max": "10000.00",
"card_type": "Prepaid Debit",
"estimated_posting_time": "Payment will post 09/23/2021",
"estimated_posting_date": "09/XX/20XX"
},
"issuing_network": "Visa",
"credit_enabled": 1,
"debit_enabled": 0
}
],
"participant_unique_id1": "f31fbe31-346d-4564-bb38-71deabbe1c2d",
"participant_unique_id2": "c0359ece-3d5e-4e7a-b6c4-30e5ae4b6a67",
"expiration_date": "2112",
"count": 1
},
"time": "3.4497"
}
To perform an idempotent Process request:
Utilize the same participant_unique_id1
value as provided in the original request. If the original request was not received by Ingo, the Idempotent request will be accepted as an original transaction. If the original request was received prior by Ingo, an Idempotent response payload will be returned echoing the response of the original request and should be treated as a 'Success'. Any status change applicable to the resulting transaction will be communicated via reporting, reconciliation (i.e. returns and refunds) and optionally webhooks.
Code | Message | Applicable Call | Description |
---|---|---|---|
101 | Success - Idempotent Response | Verify or Process | Returned when the received unique client assigned participant_unique_id1 value was processed successfully on a prior request. A new transaction is not processed. |
102 | Success - Pending Issuer Response | Process | Returned when response from issuer has not been received by the configured client level timeout |
104 | In Progress - Idempotent Response | Process | Returned when the received unique client assigned participant_unique_id1 value was previously received on a prior request and is currently processing. A new posting attempt to the destination account is not initiated. |
{
"status": 101,
"client_message": "Success - Idempotent",
"data": {
"estimated_posting_date": "MM/DD/20YY",
"estimated_posting_time": "Payment will post MM/DD/20YY",
"transaction_id": "1234567",
"request_timestamp": 1632343628,
"participant_unique_id1": "f31fbe31-346d-4564-bb38-71deabbe1c2d",
"participant_unique_id2": "c0359ece-3d5e-4e7a-b6c4-30e5ae4b6a67",
"customer_account_token": "72713920-c7fd-4045-ac76-ed3979b17910"
},
"time": "0.1374"
}
{
"status": 102,
"client_message": "Success - Pending Issuer Response",
"data": {
"estimated_posting_date": "MM/DD/20YY",
"estimated_posting_time": "Payment will post MM/DD/20YY",
"transaction_id": "1234567",
"request_timestamp": 1632343628,
"participant_unique_id1": "f31fbe31-346d-4564-bb38-71deabbe1c2d",
"participant_unique_id2": "c0359ece-3d5e-4e7a-b6c4-30e5ae4b6a67",
"customer_account_token": "72713920-c7fd-4045-ac76-ed3979b17910"
},
"time": "0.1374"
}
{
"status": 104,
"client_message": "Idempotent - Processing in progress",
"data": {
"estimated_posting_date": "MM/DD/20YY",
"estimated_posting_time": "Payment will post MM/DD/20YY",
"transaction_id": "1234567",
"request_timestamp": 1632343628,
"participant_unique_id1": "f31fbe31-346d-4564-bb38-71deabbe1c2d",
"participant_unique_id2": "c0359ece-3d5e-4e7a-b6c4-30e5ae4b6a67",
"customer_account_token": "72713920-c7fd-4045-ac76-ed3979b17910"
},
"time": "0.1374"
}