Handling 101 Response Codes
Examples on why you would get a 101 response code and how to handle them
Reading the Response Code
When processing orders, there are times in the response where you will get a successful response accompanied with a response_code=101. What this means is that the transaction was approved, but there is additional information required in order for the order to be completed. Typically in the response you will also see a post_data response. This is a URL that the Processor is returning for the customer to complete or verify the transaction.
Below are some examples in which you would see a 101 response, and what you need to do to complete the order.
3DS Transactions
Third Party ProvidersIf you are using a third party 3DS provider such as PAAY, this section will not relate to you; authentication is handled by PAAY and only the variables generated by PAAY would need to be passed to Vrio and you would not need to handle 101 responses. View this article for more information.
3D Secure (3DS) is an authentication method that provides an additional layer of authentication for credit card transactions. 3DS asks your customers to verify their identity with the card issuer during payment.
To successfully handle 3DS transactions, you need to pass a redirect_url when attempting to process an order over the API. This URL is something that you host on your end that will tell the browser to go after the customer has verified their transaction.
When this happens, you will need to send your customer to the URL that was returned in the post_data response. Once this process is completed, the customer will be redirected back to the redirect_url that you specified at the time the order was processed.
Once the user is redirected back to your hosted page, you will need to use the API method POST /orders/{order_id}
/complete method posting the following values. (Note: when using the Legacy API, use the POST /order/doProcess3ds method)
- transaction_token = This would be the ID that the processor is returning as a URL variable to your hosted redirect_url. For example, for Stripe this will be the payment_intent.
- merchant_id = This is an optional field but recommended if you are using a payment router and have multiple merchants that can handle the same payment method for the order.
Stripe
There are instances where Stripe gateway will return a requires_action status. The flow is the same, in order to complete the Stripe transaction, you would need to send the customer to the URL specified in the post_data.
The value that you pass back as the payment_token to the POST /orders/{order_id}
/complete API method can be found in the initial response as gateway_response_gateway_id or the same value will be added to the query string to your redirect_url as payment_intent.
NOTE: If you wish to not handle the requires_action status, check the box on the merchant account labeled Decline Status: Requires Action and Stripe will decline the order with this response code authentication_not_handled. If you do not set the decline with this status and you do not pass a redirect_url, the transaction will sit in a pending status in Vrio.
Check out our recipe below for an example of this process.
🦉Stripe Multi-Step Order ProcessingPayPal
You would also see a 101 response when using the PayPal. The flow is the same, in order to complete a PayPal transaction, you would need to send the customer to the URL specified in the post_data response then completed afterwards.
Check out this recipe on how to use PayPal over the Vrio API. And click here to view our guide on Headless Paypal.
🦉Headless PaypalUpdated 14 days ago