Skip to main content

preAuthenticate Method

Overview

The preAuthenticate method initiates the 3D Secure authentication flow. It collects device data and prepares the authentication context, determining whether frictionless or challenge-based verification is needed.

Business Use Case: Before processing a high-value transaction, initiate 3DS to reduce fraud liability and comply with Strong Customer Authentication (SCA) requirements.

Purpose

ScenarioBenefit
Fraud preventionShift liability to card issuer
SCA complianceMeet European regulatory requirements
Risk-based authFrictionless flow for low-risk transactions

Request Fields

FieldTypeRequiredDescription
merchantOrderIdstringYesYour unique order reference
amountMoneyYesTransaction amount
paymentMethodPaymentMethodYesCard details
customerCustomerNoCustomer information
returnUrlstringYesURL to redirect after 3DS

Response Fields

FieldTypeDescription
connectorTransactionIdstringConnector's 3DS transaction ID
statusstringAUTHENTICATION_REQUIRED, FRICTIONLESS
authenticationDataobjectDevice data for next step
redirectionDataobjectChallenge URL if required
statusCodenumberHTTP status code

Example

SDK Setup

const { PaymentMethodAuthenticationClient } = require('hyperswitch-prism');

const authClient = new PaymentMethodAuthenticationClient({
connector: 'stripe',
apiKey: 'YOUR_API_KEY',
environment: 'SANDBOX'
});

Request

const request = {
merchantOrderId: "order_001",
amount: {
minorAmount: 10000,
currency: "USD"
},
paymentMethod: {
card: {
cardNumber: { value: "4242424242424242" },
cardExpMonth: { value: "12" },
cardExpYear: { value: "2027" }
}
},
returnUrl: "https://your-app.com/3ds/return"
};

const response = await authClient.preAuthenticate(request);

Response - Frictionless

{
connectorTransactionId: "pi_3Oxxx...",
status: "FRICTIONLESS",
authenticationData: {
eci: "05",
cavv: "AAABBIIFmA=="
},
statusCode: 200
}

Response - Challenge Required

{
connectorTransactionId: "pi_3Oxxx...",
status: "AUTHENTICATION_REQUIRED",
redirectionData: {
url: "https://acs.bank.com/3ds/challenge",
method: "POST"
},
statusCode: 200
}

3DS Flow

sequenceDiagram
participant App as Your App
participant CS as Prism
participant Bank as Issuer Bank

App->>CS: preAuthenticate
CS->>Bank: Check 3DS eligibility
Bank-->>CS: Return: frictionless or challenge
CS-->>App: Return authentication data
alt Challenge Required
App->>Bank: Redirect customer to challenge
Bank-->>App: Customer completes challenge
end
App->>CS: authenticate
CS-->>App: Final authentication result

Next Steps