# `LatticeStripe.Tax.CustomerDetails`
[🔗](https://github.com/szTheory/lattice_stripe/blob/v2.2.2/lib/lattice_stripe/tax/customer_details.ex#L1)

The `customer_details` object embedded in a Stripe Tax calculation or transaction.

Reachable from `t:LatticeStripe.Tax.Calculation.t/0` and
`t:LatticeStripe.Tax.Transaction.t/0`. It records the address Stripe actually used to
source the tax decision, which is what you inspect when a calculation lands in an
unexpected jurisdiction.

Embedded value struct: fields are additive. Keys Stripe adds later appear under
`:extra` rather than being dropped, so a new field never breaks decoding.

# `t`

```elixir
@type t() :: %LatticeStripe.Tax.CustomerDetails{
  address: map() | nil,
  address_source: String.t() | nil,
  extra: map(),
  ip_address: String.t() | nil,
  tax_ids: list() | nil,
  taxability_override: atom() | String.t() | nil
}
```

# `from_map`

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

---

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