# `LatticeStripe.Account.TosAcceptance`
[🔗](https://github.com/szTheory/lattice_stripe/blob/v1.1.0/lib/lattice_stripe/account/tos_acceptance.ex#L1)

Represents the `tos_acceptance` nested object on a Stripe Account.

This struct holds PII (`ip`, `user_agent`). Its `Inspect` implementation
redacts those fields to prevent leakage into logs and IEx output (Phase 17 T-17-01).

Unknown fields from the Stripe API response are preserved in `:extra` per the
F-001 forward-compatibility pattern.

See [Stripe Account API](https://docs.stripe.com/api/accounts/object#account_object-tos_acceptance).

# `t`

```elixir
@type t() :: %LatticeStripe.Account.TosAcceptance{
  date: integer() | nil,
  extra: map(),
  ip: String.t() | nil,
  service_agreement: String.t() | nil,
  user_agent: String.t() | nil
}
```

TOS acceptance settings for a Stripe Account. Contains PII (`ip`, `user_agent`).

# `from_map`

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

Converts a decoded Stripe API map to a `%TosAcceptance{}` struct.

Returns `nil` when given `nil`.

**Security:** The `ip` and `user_agent` fields contain PII. Use `inspect/1` safely —
this struct's `Inspect` implementation redacts those fields (T-17-01 mitigation).

Unknown fields from the Stripe API are captured in `:extra` (F-001 pattern)
for forward compatibility.

---

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