---
title: "Payments - External 3DS Authentication"
method: POST
path: "/payments/{payment_id}/3ds/authentication"
tags: ["Payments"]
---

# Payments - External 3DS Authentication

`POST /payments/{payment_id}/3ds/authentication`

External 3DS Authentication is performed and returns the AuthenticationResponse

## Path parameters

- `payment_id` string, required

## Request body

- PaymentsExternalAuthenticationRequest
  - `client_secret` string, nullable — Client Secret
  - `sdk_information` SdkInformation — SDK Information if request is from SDK
    - `sdk_app_id` string, required — Unique ID created on installations of the 3DS Requestor App on a Consumer Device
    - `sdk_enc_data` string, required — JWE Object containing data encrypted by the SDK for the DS to decrypt
    - `sdk_ephem_pub_key` object, required — Public key component of the ephemeral key pair generated by the 3DS SDK
    - `sdk_trans_id` string, required — Unique transaction identifier assigned by the 3DS SDK
    - `sdk_reference_number` string, required — Identifies the vendor and version for the 3DS SDK that is integrated in a 3DS Requestor App
    - `sdk_max_timeout` integer, required — Indicates maximum amount of time in minutes
    - `sdk_type` '01' | '02' | '03' | '04' | '05' — Enum representing the type of 3DS SDK.
    - `device_details` DeviceDetails — Device details for collecting Device information
      - `device_type` string, nullable — Device type
      - `device_brand` string, nullable — Device brand
      - `device_os` string, nullable — Device OS
      - `device_display` string, nullable — Device display
  - `device_channel` 'APP' | 'BRW', required — Device Channel indicating whether request is coming from App or Browser
  - `threeds_method_comp_ind` 'Y' | 'N' | 'U', required — Indicates if 3DS method data was successfully completed or not

## Response `200`

Authentication created

- PaymentsExternalAuthenticationResponse
  - `trans_status` 'Y' | 'N' | 'U' | 'A' | 'R' | 'C' | 'D' | 'I', required — Indicates the transaction status
  - `acs_url` string, nullable — Access Server URL to be used for challenge submission
  - `challenge_request` string, nullable — Challenge request which should be sent to acs_url
  - `challenge_request_key` string, nullable — Challenge request key which should be set as form field name for creq
  - `acs_reference_number` string, nullable — Unique identifier assigned by the EMVCo(Europay, Mastercard and Visa)
  - `acs_trans_id` string, nullable — Unique identifier assigned by the ACS to identify a single transaction
  - `three_dsserver_trans_id` string, nullable — Unique identifier assigned by the 3DS Server to identify a single transaction
  - `acs_signed_content` string, nullable — Contains the JWS object created by the ACS for the ARes(Authentication Response) message
  - `three_ds_requestor_url` string, required — Three DS Requestor URL
  - `three_ds_requestor_app_url` string, nullable — Merchant app declaring their URL within the CReq message so that the Authentication app can call the Merchant app after OOB authentication has occurred
  - `error_message` string, nullable — Error message if any

## Other responses

- `400` — Missing mandatory fields

---

[API](https://skmtc.net/hyperswitch/apis/dynamic-routing-openapi-3-0.md) · [All operations](https://skmtc.net/hyperswitch/apis/dynamic-routing-openapi-3-0/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/hyperswitch/dynamic-routing-openapi-3-0/revisions/8fbf69ab2597/schema)
