3DS Hosted Page
Server-to-server 3DS continuation flow
This is feature is enabled by default for new projects created after 26/02/2026. If you project was created prior to this date, please check with your CSM that this has been enabled for you.
When you attempt an authorization via your backend for a server-to-server flow, a 3DS authentication may be required. This scenario could take place if the PSP returned a soft decline, meaning that the issuer requested for authentication, or if your ProcessOut routing rules were set to trigger 3DS.
We recommend utilizing our front-end SDKs to conduct payments so this can be seamlessly handled automatically. However, we understand that this may not always be possible. Therefore, we have a dedicated hosted page flow to handle the 3DS aspect for you.
This flow is useful when either a soft decline is returned from the payment service provider or your routing rules are defined to trigger 3DS on the transaction.
Pre-requisites
- To ensure the customer has a seamless experience, you must set the
return_urlparameter on the invoice object during creation. This will ensure we redirect the customer back to the context of your website.
API Response
ProcessOut will return the customer_action object as part of the API response when a transaction is soft declined and can be continued by authenticating the customer:
{
"customer_action": {
"type": "redirect",
"value": "https://checkout.processout.com/project_id/gateway_conf_id/hosted-payment-page/?source=source_id?url_params",
"metadata": null
},
"error_type": "card.needs-authentication", // This could be any error code
"message": "3DS authentication is required.", // This could be any error message
"success": false
// ... Misc transaction related data may also be returned here if on a non error scenario.
}To continue with authentication, redirect the customer on the front end to the URL denoted in the customer_action →value parameter. This will redirect the customer to a ProcessOut hosted page, which utilizes ProcessOut's JS library to continue the flow.
This removes the need for the merchant to utilize ProcessOut's JS library on your pages to conduct the flow from the front end.
Completion handling
Once the customer completes the authentication process, they will be redirected back to the return_url set on the invoice.
It is your responsibility to handle the post payment confirmation actions. We suggest to do a server-to-server GET transaction request to understand the latest status of the transaction.
Note
We do have a one hour timeout in place for 3DS payments. If the 3DS transaction was initiated, but subsequently abandoned. We will automatically transition it to timed out failure state.
Updated about 11 hours ago
