Firstly; I have searched the list of previous questions / topics with the title "Transaction Not Completed Timed Out" for an answer and have not found anything that covers the full range of questions I have.
One of our high value merchants (> $1.5M USD / per day) who uses Moneris for processing payments is seeing the following issue when running transactions against the production / live Moneris server.
We use a pre-authorization & completion (charge / capture) workflow for our transactions and receive a successful pre-auth, however when we attempt a pre-auth completion occasionally we see an error message "Transaction Not Completed Timed Out" for our high value merchant this can equate to a few hundred transactions where we receive this response.
We interpret this as a pre-auth completion failure on our side according to the documentation found here: https://developer.moneris.com/en/More/Testing/Error%20Messages%20and%20Response%20Codes we then re-queue the pre-auth completion job to run again later on.
The ProblemThe issue here is that if the transaction was actually successful but the timeout was between Moneris and the payment processor, it is possible that the customer's payment instrument has been charged and seemingly Moneris has no knowledge of that since Moneris received and returned a "Transaction Not Completed Timed Out" message.How does Moneris handle idempotency in this case? I have seen that we can use a status_check along with completion, however this seems quite limited to me in the fact that it can only be called within 2 minutes of the last failed transaction and then only once. So we could add a status_check before each and every completion but that would add additional complexity to the process and what would happen if the status_check fails before the pre-auth completion? In addition another consideration here is that the pdf I have here says to use the status_check that: The feature must be enabled in your merchant profile. To have it enabled, contact Moneris. From what we have seen in our investigations if this status_check is not enabled on the merchant account a status check functions as whatever transaction is set in type. So in essence we could compound the problem by performing a double pre-auth completion if the merchant account is not setup for status checks.
In summary my questions are:
Many thanks in advance for you assistance on this matter