# `Stripe.Resources.SetupAttempt.PaymentMethodDetails.Card.ThreeDSecure`
[🔗](https://github.com/jeffhuen/tiger_stripe/blob/main/lib/stripe/resources/setup_attempt.ex#L238)

Nested struct within the parent resource.

# `t`

```elixir
@type t() :: %Stripe.Resources.SetupAttempt.PaymentMethodDetails.Card.ThreeDSecure{
  authentication_flow: String.t() | nil,
  electronic_commerce_indicator: String.t() | nil,
  result: String.t() | nil,
  result_reason: String.t() | nil,
  transaction_id: String.t() | nil,
  version: String.t() | nil
}
```

* `authentication_flow` - For authenticated transactions: how the customer was authenticated by
the issuing bank. Possible values: `challenge`, `frictionless`. Nullable.
* `electronic_commerce_indicator` - The Electronic Commerce Indicator (ECI). A protocol-level field
indicating what degree of authentication was performed. Possible values: `01`, `02`, `05`, `06`, `07`. Nullable.
* `result` - Indicates the outcome of 3D Secure authentication. Possible values: `attempt_acknowledged`, `authenticated`, `exempted`, `failed`, `not_supported`, `processing_error`. Nullable.
* `result_reason` - Additional information about why 3D Secure succeeded or failed based
on the `result`. Possible values: `abandoned`, `bypassed`, `canceled`, `card_not_enrolled`, `network_not_supported`, `protocol_error`, `rejected`. Nullable.
* `transaction_id` - The 3D Secure 1 XID or 3D Secure 2 Directory Server Transaction ID
(dsTransId) for this payment. Max length: 5000. Nullable.
* `version` - The version of 3D Secure that was used. Possible values: `1.0.2`, `2.1.0`, `2.2.0`, `2.3.0`, `2.3.1`. Nullable.

---

*Consult [api-reference.md](api-reference.md) for complete listing*
