# The 3DS Authentication object

### The 3DS Authentication object

```json
{
  "id": "tdsa_1QmCRMJM0r9zBvr4OVmMRa6X",
  "object": "three_d_secure.authentication",
  "acquirer_details": {
    "acquirer_bin": "424242",
    "acquirer_merchant_id": "050661454304761",
    "requestor_id": "V0000000001234"
  },
  "amount": 1000,
  "channel": {
    "browser": {
      "accept_header": "Accept:  *.*;",
      "color_depth": 24,
      "ip_address": "1.12.123.255",
      "java_enabled": false,
      "javascript_enabled": true,
      "language": "en-US",
      "screen_height": 756,
      "screen_width": 1528,
      "timezone_offset": 0,
      "user_agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/122.0.0.0 Safari/537.36"
    },
    "type": "browser"
  },
  "currency": "eur",
  "directory_server": "visa",
  "fingerprinting_url": "https://hooks.stripe.com/three_d_secure/fingerprint/tdsa_1QmCRMJM0r9zBvr4OVmMRa6X",
  "flow_preference": {
    "type": "frictionless"
  },
  "livemode": false,
  "message_category": "payment_authentication",
  "payment_method": "pm_1QmCRLJM0r9zBvr43F9eNoly",
  "status": "requires_submission"
}
```

## Attributes

- `id` (string)
  Unique identifier for the object.

- `object` (string, value is "three_d_secure.authentication")
  String representing the object’s type. Objects of the same type share the same value.

- [`acquirer_details`](https://docs.stripe.com/api/three-d-secure/authentication/object.md?query=acquirer_details) (object, nullable)
  Contains additional details about the acquirer for this 3DS Authentication.

- `amount` (integer, nullable)
  The amount for this 3DS Authentication.

- `challenge_url` (string, nullable)
  The URL for presenting a challenge to your cardholder, present if status is requires_challenge.

- [`channel`](https://docs.stripe.com/api/three-d-secure/authentication/object.md?query=channel) (object)
  Contains additional details on the channel used for this 3DS Authentication.

- `created` (timestamp)
  Time at which the object was created. Measured in seconds since the Unix epoch.

- `currency` (enum, nullable)
  Three-letter [ISO currency code](https://www.iso.org/iso-4217-currency-codes.html), in lowercase. Must be a [supported currency](https://docs.stripe.com/currencies.md).

- `directory_server` (enum)
  The 3DS directory server with which this 3DS Authentication was processed.
Possible enum values:
  - `american_express`
    American Express Directory Server

  - `cartes_bancaires`
    Cartes Bancaires Directory Server

  - `discover`
    Discover Directory Server

  - `mastercard`
    Mastercard Directory Server

  - `visa`
    Visa Directory Server

- `fingerprinting_url` (string, nullable)
  The URL for performing issuer fingerprinting, present if fingerprinting is supported for the given payment method.

- [`flow_preference`](https://docs.stripe.com/api/three-d-secure/authentication/object.md?query=flow_preference) (object, nullable)
  Contains additional details on your flow preference for this 3DS Authentication.

- [`future_usage`](https://docs.stripe.com/api/three-d-secure/authentication/object.md?query=future_usage) (object, nullable)
  Contains information about future usage of this 3DS Authentication.

- `livemode` (boolean)
  If the object exists in live mode, the value is `true`. If the object exists in test mode, the value is `false`.

- `message_category` (enum)
  Indicates whether this 3DS Authentication is being performed for a payment or non-payment use case.
Possible enum values:
  - `non_payment_authentication`
    Use `non_payment_authentication` to indicate that this 3DS Authentication is being performed for a non-payment use case.

  - `payment_authentication`
    Use `payment_authentication` to indicate that this 3DS Authentication is being performed for a payment use case.

- `metadata` (map, nullable)
  Set of [key-value pairs](https://docs.stripe.com/api/metadata.md) that you can attach to an object. This can be useful for storing additional information about the object in a structured format.

- `outcome` (enum, nullable)
  The outcome of this 3DS Authentication.
Possible enum values:
  - `abandoned`
    Indicates that the authentication was not successful because the cardholder abandoned the authentication during a challenge.

  - `attempt_acknowledged`
    Indicates that the authentication was not performed but the card network stepped in to acknowledge the attempt and provided the necessary data to proceed to authorization.

  - `authenticated`
    Indicates that the authentication was successful.

  - `canceled`
    Indicates that the authentication was canceled.

  - `denied`
    Indicates that the authentication was not successful because the cardholder intentionally denied the challenge.

  - `informational`
    Indicates that the ACS acknowledged the 3DS requestor challenge preference.

  - `internal_error`
    Indicates that the authentication could not be performed as our system is experiencing technical difficulties at the moment. You may retry authentication at a later time.

  - `not_supported`
    Indicates that the authentication could not be performed because the card used does not support 3D Secure.

  - `not_triggered`
    Indicates that the authentication was not triggered because it was not required for this transaction based on the provided reason.

  - `processing_error`
    Indicates that the authentication could not be performed because the ACS encountered a technical or other problem.

  - `rejected`
    Indicates that the authentication was not successful because the issuer rejected the attempt and requested that authorization not be attempted.

- [`outcome_details`](https://docs.stripe.com/api/three-d-secure/authentication/object.md?query=outcome_details) (object, nullable, includable (not returned by default; request it with the `expand` request parameter))
  Contains additional details about the outcome, including the information you need to pass to your third-party gateway to make the authorization.

- `payment_method` (string, expandable (can be expanded into an object with the `expand` request parameter))
  ID of the payment method (a PaymentMethod object) to attach to this 3DS Authentication.

- `reason` (enum, nullable)
  The reason for invoking this 3DS Authentication.
Possible enum values:
  - `cardholder_authentication`
    The authentication is performed to attempt to require the cardholder to actively complete a challenge.

  - `issuer_requested`
    The authentication is performed when the issuer soft declines the transaction. This option should be used when you have tried authorization without 3DS authentication and the bank responded in a soft decline. Stripe will then trigger 3DS, post which you can retry authorization with the issuer.

  - `liability_shift`
    The authentication is performed to try to shift liability away from the merchant and onto the issuer to reduce the cost implications from disputes.

    **Note**: If you don’t select `liability_shift` as your reason, the 3DS flow won’t prioritize liability shift as a desired outcome. And even when `liability_shift` is selected, liability shift is not guaranteed, since that decision is made by the network and not Stripe([source](https://docs.stripe.com/payments/3d-secure/authentication-flow.md#disputed-payments)).

  - `processing_costs`
    The authentication is performed to optimize payments processing cost.

  - `regulatory_compliance`
    The authentication is performed solely to enable compliance with local regulations such as SCA (Strong Customer Authentication). Use this option when your sole requirement is compliance with local regulations, such as SCA or other 3DS-related mandates. The authentication will be performed only as necessary for compliance purposes.

    **Note:** This `reason` parameter value will always apply even when you do not choose this value explicitly.

- [`shipping_address`](https://docs.stripe.com/api/three-d-secure/authentication/object.md?query=shipping_address) (object, nullable)
  The address to which a physical product was shipped. You should try to include as complete address information as possible.

- `status` (enum)
  Status of this Authentication.
Possible enum values:
  - `canceled`
    Indicates that the authentication was canceled.

  - `error`
    Indicates that an error occurred.

  - `failed`
    Indicates that the authentication failed.

  - `requires_challenge`
    Indicates that a challenge is required.

  - `requires_submission`
    Indicates that you need to submit this Authentication.

  - `succeeded`
    Indicates that the authentication was successful.
