# `LatticeStripe.BillingPortal.Configuration.Features.SubscriptionUpdate`
[🔗](https://github.com/szTheory/lattice_stripe/blob/v2.2.2/lib/lattice_stripe/billing_portal/configuration/features/subscription_update.ex#L1)

The `subscription_update` feature settings on a
`LatticeStripe.BillingPortal.Configuration`.

Controls whether customers can update their subscriptions in the billing portal,
including which update types are allowed and how proration is handled.

## Level 3+ fields as raw maps

`products` is a list of product/price objects and `schedule_at_period_end` is
a nested configuration object. Both form Level 3+ structures. Per D-01
(6-module nesting cap), they are stored as raw `[map()] | nil` and
`map() | nil` respectively — accessible via direct map access without
dedicated typed structs.

Parent struct: `LatticeStripe.BillingPortal.Configuration.Features`.

# `t`

```elixir
@type t() :: %LatticeStripe.BillingPortal.Configuration.Features.SubscriptionUpdate{
  billing_cycle_anchor: String.t() | nil,
  default_allowed_updates: [String.t()] | nil,
  enabled: boolean() | nil,
  extra: map(),
  products: [map()] | nil,
  proration_behavior: String.t() | nil,
  schedule_at_period_end: map() | nil,
  trial_update_behavior: String.t() | nil
}
```

# `from_map`

```elixir
@spec from_map(map() | nil) :: t() | nil
```

---

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