---
title: "Submit details for a payment"
method: POST
path: "/payments/details"
tags: ["Payments"]
---

# Submit details for a payment

`POST /payments/details`

Submits details for a payment created using `/payments`. This step is only needed when no final state has been reached on the `/payments` request, for example when the shopper was redirected to another page to complete the payment.

## Headers

- `Idempotency-Key` string

## Request body

- PaymentDetailsRequest
  - `authenticationData` DetailsRequestAuthenticationData
    - `authenticationOnly` boolean — Required to trigger the [authentication-only flow](https://docs.adyen.com/online-payments/3d-secure/authentication-only/). If set to **true**, you will only perform the 3D Secure 2 authentication, and will not proceed to the payment authorization.Default: **false**.
  - `details` PaymentCompletionDetails, required
    - `MD` string — A payment session identifier returned by the card issuer.
    - `PaReq` string — (3D) Payment Authentication Request data for the card issuer.
    - `PaRes` string — (3D) Payment Authentication Response data by the card issuer.
    - `authorization_token` string
    - `billingToken` string — PayPal-generated token for recurring payments.
    - `cupsecureplus.smscode` string — The SMS verification code collected from the shopper.
    - `facilitatorAccessToken` string — PayPal-generated third party access token.
    - `oneTimePasscode` string — A random number sent to the mobile phone number of the shopper to verify the payment.
    - `orderID` string — PayPal-assigned ID for the order.
    - `payerID` string — PayPal-assigned ID for the payer (shopper).
    - `payload` string — Payload appended to the `returnURL` as a result of the redirect.
    - `paymentID` string — PayPal-generated ID for the payment.
    - `paymentStatus` string — Value passed from the WeChat MiniProgram `wx.requestPayment` **complete** callback. Possible values: any value starting with `requestPayment:`.
    - `redirectResult` string — The result of the redirect as appended to the `returnURL`.
    - `resultCode` string — Value you received from the WeChat Pay SDK.
    - `returnUrlQueryString` string — The query string as appended to the `returnURL` when using direct issuer links .
    - `threeDSResult` string — Base64-encoded string returned by the Component after the challenge flow. It contains the following parameters: `transStatus`, `authorisationToken`.
    - `threeds2.challengeResult` string — Base64-encoded string returned by the Component after the challenge flow. It contains the following parameter: `transStatus`.
    - `threeds2.fingerprint` string — Base64-encoded string returned by the Component after the challenge flow. It contains the following parameter: `threeDSCompInd`.
    - `vaultToken` string — PayPalv2-generated token for recurring payments.
  - `paymentData` string — Encoded payment data. For [authorizing a payment after using 3D Secure 2 Authentication-only](https://docs.adyen.com/online-payments/3d-secure/other-3ds-flows/authentication-only/#authorise-the-payment-with-adyen): If you received `resultCode`: **AuthenticationNotRequired** in the `/payments` response, use the `threeDSPaymentData` from the same response. If you received `resultCode`: **AuthenticationFinished** in the `/payments` response, use the `action.paymentData` from the same response.
  - `threeDSAuthenticationOnly` boolean — Change the `authenticationOnly` indicator originally set in the `/payments` request. Only needs to be set if you want to modify the value set previously.

## Response `200`

OK - the request has succeeded.

- PaymentDetailsResponse
  - `action` object — Action to be taken for completing the payment. When returned, only the 3D Secure action is needed in most cases.
    - `authorisationToken` string — A token needed to authorise a payment.
    - `paymentData` string — Encoded payment data.
    - `paymentMethodType` string — Specifies the payment method.
    - `subtype` string — A subtype of the token.
    - `token` string — A token to pass to the 3DS2 Component to get the fingerprint.
    - `type` 'threeDS2', required — **threeDS2**
    - `url` string — Specifies the URL to redirect to.
  - `additionalData` object — Contains additional information about the payment. Some data fields are included only if you select them first: Go to **Customer Area** > **Developers** > **Additional data**.
  - `amount` Amount
    - `currency` string, required — The three-character [ISO currency code](https://docs.adyen.com/development-resources/currency-codes#currency-codes) of the amount.
    - `value` integer, required — The numeric value of the amount, in [minor units](https://docs.adyen.com/development-resources/currency-codes#minor-units).
  - `donationToken` string — Donation Token containing payment details for Adyen Giving.
  - `fraudResult` FraudResult
    - `accountScore` integer, required — The total fraud score generated by the risk checks.
    - `results` FraudCheckResult[] — The result of the individual risk checks.
      - `accountScore` integer, required — The fraud score generated by the risk check.
      - `checkId` integer, required — The ID of the risk check.
      - `name` string, required — The name of the risk check.
  - `merchantReference` string — The reference used during the /payments request.
  - `order` CheckoutOrderResponse
    - `amount` Amount
      - `currency` string, required — The three-character [ISO currency code](https://docs.adyen.com/development-resources/currency-codes#currency-codes) of the amount.
      - `value` integer, required — The numeric value of the amount, in [minor units](https://docs.adyen.com/development-resources/currency-codes#minor-units).
    - `expiresAt` string — The expiry date for the order.
    - `orderData` string — The encrypted order data.
    - `pspReference` string, required — The `pspReference` that belongs to the order.
    - `reference` string — The merchant reference for the order.
    - `remainingAmount` Amount
      - `currency` string, required — The three-character [ISO currency code](https://docs.adyen.com/development-resources/currency-codes#currency-codes) of the amount.
      - `value` integer, required — The numeric value of the amount, in [minor units](https://docs.adyen.com/development-resources/currency-codes#minor-units).
  - `paymentMethod` ResponsePaymentMethod
    - `brand` string — The card brand that the shopper used to pay. Only returned if `paymentMethod.type` is **scheme**.
    - `type` string — The `paymentMethod.type` value used in the request.
  - `paymentValidations` PaymentValidationsResponse
    - `name` PaymentValidationsNameResponse
      - `rawResponse` PaymentValidationsNameResultRawResponse
        - `firstName` string — The raw first name validation result that Adyen received from the scheme. First name validation result is only returned for Visa.
        - `fullName` string — The raw full name validation result that Adyen received from the scheme. Full name is the only field that is validated for Mastercard
        - `lastName` string — The raw last name validation result that Adyen received from the scheme. Last name validation result is only returned for Visa.
        - `middleName` string — The raw middle name validation result that Adyen received from the scheme. Middle name validation result is only returned for Visa.
        - `status` string — The raw name validation status value that Adyen received from the scheme. Only returned for Visa.
      - `result` PaymentValidationsNameResultResponse
        - `firstName` string — Informs you if the first name your shopper provided matches the cardholder first name on file at the issuing bank. The first name is only validated for Visa. Possible values: **match**, **partialMatch**, **noMatch**
        - `fullName` string — Informs you if the full name your shopper provided matches the cardholder name on file at the issuing bank. The full name is the only field that is validated for Mastercard. Possible values: **match**, **partialMatch**, **noMatch**
        - `lastName` string — Informs you if the last name your shopper provided matches the cardholder last name on file at the issuing bank. The last name is only validated for Visa. Possible values: **match**, **partialMatch**, **noMatch**
        - `middleName` string — Informs you if the middle name your shopper provided matches the cardholder middle name on file at the issuing bank. The middle name is only validated for Visa. Possible values: **match**, **partialMatch**, **noMatch**
      - `status` 'notPerformed' | 'notSupported' | 'performed' — Informs you if the name validation was performed. Possible values: **performed**, **notPerformed**, **notSupported**
  - `pspReference` string — Adyen's 16-character string reference associated with the transaction/request. This value is globally unique; quote it when communicating with us about this request.
  - `refusalReason` string — If the payment's authorisation is refused or an error occurs during authorisation, this field holds Adyen's mapped reason for the refusal or a description of the error. When a transaction fails, the authorisation response includes `resultCode` and `refusalReason` values. For more information, see [Refusal reasons](https://docs.adyen.com/development-resources/refusal-reasons).
  - `refusalReasonCode` string — Code that specifies the refusal reason. For more information, see [Authorisation refusal reasons](https://docs.adyen.com/development-resources/refusal-reasons).
  - `resultCode` 'AuthenticationFinished' | 'AuthenticationNotRequired' | 'Authorised' | 'Cancelled' | 'ChallengeShopper' | 'Error' | 'IdentifyShopper' | 'PartiallyAuthorised' | 'Pending' | 'PresentToShopper' | 'Received' | 'RedirectShopper' | 'Refused' | 'Success' — The result of the payment. For more information, see [Result codes](https://docs.adyen.com/online-payments/payment-result-codes). Possible values: * **AuthenticationFinished** – The payment has been successfully authenticated with 3D Secure 2. Returned for 3D Secure 2 authentication-only transactions. * **AuthenticationNotRequired** – The transaction does not require 3D Secure authentication. Returned for [standalone authentication-only integrations](https://docs.adyen.com/online-payments/3d-secure/other-3ds-flows/authentication-only). * **Authorised** – The payment was successfully authorised. This state serves as an indicator to proceed with the delivery of goods and services. This is a final state. * **Cancelled** – Indicates the payment has been cancelled (either by the shopper or the merchant) before processing was completed. This is a final state. * **ChallengeShopper** – The issuer requires further shopper interaction before the payment can be authenticated. Returned for 3D Secure 2 transactions. * **Error** – There was an error when the payment was being processed. The reason is given in the `refusalReason` field. This is a final state. * **IdentifyShopper** – The issuer requires the shopper's device fingerprint before the payment can be authenticated. Returned for 3D Secure 2 transactions. * **PartiallyAuthorised** – The payment has been authorised for a partial amount. This happens for card payments when the merchant supports Partial Authorisations and the cardholder has insufficient funds. * **Pending** – Indicates that it is not possible to obtain the final status of the payment. This can happen if the systems providing final status information for the payment are unavailable, or if the shopper needs to take further action to complete the payment. * **PresentToShopper** – Indicates that the response contains additional information that you need to present to a shopper, so that they can use it to complete a payment. * **Received** – Indicates the payment has successfully been received by Adyen, and will be processed. This is the initial state for all payments. * **RedirectShopper** – Indicates the shopper should be redirected to an external web page or app to complete the authorisation. * **Refused** – Indicates the payment was refused. The reason is given in the `refusalReason` field. This is a final state.
  - `shopperLocale` string — The shopperLocale.
  - `threeDS2ResponseData` ThreeDS2ResponseData
    - `acsChallengeMandated` string
    - `acsOperatorID` string
    - `acsReferenceNumber` string
    - `acsSignedContent` string
    - `acsTransID` string
    - `acsURL` string
    - `authenticationType` string
    - `cardHolderInfo` string
    - `cavvAlgorithm` string
    - `challengeIndicator` string
    - `dsReferenceNumber` string
    - `dsTransID` string
    - `exemptionIndicator` string
    - `messageVersion` string
    - `riskScore` string
    - `sdkEphemPubKey` string
    - `threeDSServerTransID` string
    - `transStatus` string
    - `transStatusReason` string
  - `threeDS2Result` ThreeDS2Result
    - `authenticationValue` string — The `authenticationValue` value as defined in the 3D Secure 2 specification.
    - `cavvAlgorithm` string — The algorithm used by the ACS to calculate the authentication value, only for Cartes Bancaires integrations.
    - `challengeCancel` '01' | '02' | '03' | '04' | '05' | '06' | '07' — Indicator informing the Access Control Server (ACS) and the Directory Server (DS) that the authentication has been cancelled. For possible values, refer to [3D Secure API reference](https://docs.adyen.com/online-payments/3d-secure/api-reference#mpidata).
    - `dsTransID` string — The `dsTransID` value as defined in the 3D Secure 2 specification.
    - `eci` string — The `eci` value as defined in the 3D Secure 2 specification.
    - `exemptionIndicator` 'lowValue' | 'secureCorporate' | 'trustedBeneficiary' | 'transactionRiskAnalysis' — Indicates the exemption type that was applied by the issuer to the authentication, if exemption applied. Allowed values: * `lowValue` * `secureCorporate` * `trustedBeneficiary` * `transactionRiskAnalysis`
    - `messageVersion` string — The `messageVersion` value as defined in the 3D Secure 2 specification.
    - `riskScore` string — Risk score calculated by Cartes Bancaires Directory Server (DS).
    - `threeDSRequestorChallengeInd` '01' | '02' | '03' | '04' | '05' | '06' — Indicates whether a challenge is requested for this transaction. Possible values: * **01** — No preference * **02** — No challenge requested * **03** — Challenge requested (3DS Requestor preference) * **04** — Challenge requested (Mandate) * **05** — No challenge (transactional risk analysis is already performed) * **06** — Data Only
    - `threeDSServerTransID` string — The `threeDSServerTransID` value as defined in the 3D Secure 2 specification.
    - `timestamp` string — The `timestamp` value of the 3D Secure 2 authentication.
    - `transStatus` string — The `transStatus` value as defined in the 3D Secure 2 specification.
    - `transStatusReason` string — Provides information on why the `transStatus` field has the specified value. For possible values, refer to [our docs](https://docs.adyen.com/online-payments/3d-secure/api-reference#possible-transstatusreason-values).
    - `whiteListStatus` string — The `whiteListStatus` value as defined in the 3D Secure 2 specification.
  - `threeDSPaymentData` string — When non-empty, contains a value that you must submit to the `/payments/details` endpoint as `paymentData`.

## Other responses

- `400` — Bad Request - a problem reading or understanding the request.
- `401` — Unauthorized - authentication required.
- `403` — Forbidden - insufficient permissions to process the request.
- `422` — Unprocessable Entity - a request validation error.
- `500` — Internal Server Error - the server could not process the request.

---

[API](https://skmtc.net/adyen/apis/checkoutservice.md) · [All operations](https://skmtc.net/adyen/apis/checkoutservice/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/adyen/checkoutservice/revisions/a2d1f411288c/schema)
