# `Stripe.Resources.CustomerSession.Components.PaymentElement.Features`
[🔗](https://github.com/jeffhuen/tiger_stripe/blob/main/lib/stripe/resources/customer_session.ex#L195)

Nested struct within the parent resource.

# `t`

```elixir
@type t() :: %Stripe.Resources.CustomerSession.Components.PaymentElement.Features{
  payment_method_allow_redisplay_filters: [String.t()] | nil,
  payment_method_redisplay: String.t() | nil,
  payment_method_redisplay_limit: integer() | nil,
  payment_method_remove: String.t() | nil,
  payment_method_save: String.t() | nil,
  payment_method_save_usage: String.t() | nil
}
```

* `payment_method_allow_redisplay_filters` - A list of [`allow_redisplay`](https://docs.stripe.com/api/payment_methods/object#payment_method_object-allow_redisplay) values that controls which saved payment methods the Payment Element displays by filtering to only show payment methods with an `allow_redisplay` value that is present in this list.

If not specified, defaults to ["always"]. In order to display all saved payment methods, specify ["always", "limited", "unspecified"].
* `payment_method_redisplay` - Controls whether or not the Payment Element shows saved payment methods. This parameter defaults to `disabled`. Possible values: `disabled`, `enabled`.
* `payment_method_redisplay_limit` - Determines the max number of saved payment methods for the Payment Element to display. This parameter defaults to `3`. The maximum redisplay limit is `10`. Nullable.
* `payment_method_remove` - Controls whether the Payment Element displays the option to remove a saved payment method. This parameter defaults to `disabled`.

Allowing buyers to remove their saved payment methods impacts subscriptions that depend on that payment method. Removing the payment method detaches the [`customer` object](https://docs.stripe.com/api/payment_methods/object#payment_method_object-customer) from that [PaymentMethod](https://docs.stripe.com/api/payment_methods). Possible values: `disabled`, `enabled`.
* `payment_method_save` - Controls whether the Payment Element displays a checkbox offering to save a new payment method. This parameter defaults to `disabled`.

If a customer checks the box, the [`allow_redisplay`](https://docs.stripe.com/api/payment_methods/object#payment_method_object-allow_redisplay) value on the PaymentMethod is set to `'always'` at confirmation time. For PaymentIntents, the [`setup_future_usage`](https://docs.stripe.com/api/payment_intents/object#payment_intent_object-setup_future_usage) value is also set to the value defined in `payment_method_save_usage`. Possible values: `disabled`, `enabled`.
* `payment_method_save_usage` - When using PaymentIntents and the customer checks the save checkbox, this field determines the [`setup_future_usage`](https://docs.stripe.com/api/payment_intents/object#payment_intent_object-setup_future_usage) value used to confirm the PaymentIntent.

When using SetupIntents, directly configure the [`usage`](https://docs.stripe.com/api/setup_intents/object#setup_intent_object-usage) value on SetupIntent creation. Possible values: `off_session`, `on_session`. Nullable.

---

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