# `LatticeStripe.Mandate`
[🔗](https://github.com/szTheory/lattice_stripe/blob/v2.2.2/lib/lattice_stripe/mandate.ex#L1)

Operations on Stripe Mandate objects.

Mandates are Stripe-created authorization records used for inspection of
payment authorization state and customer acceptance details. This module is
intentionally retrieve-only: LatticeStripe does not expose create, update, or
delete flows for mandates.

## Usage

    {:ok, mandate} = LatticeStripe.Mandate.retrieve(client, "mandate_123")

    case mandate.customer_acceptance do
      %{type: :online} -> :online_acceptance
      _ -> mandate.status
    end

# `t`

```elixir
@type t() :: %LatticeStripe.Mandate{
  customer_acceptance: LatticeStripe.Mandate.CustomerAcceptance.t() | nil,
  extra: map(),
  id: String.t() | nil,
  livemode: boolean() | nil,
  multi_use: map() | nil,
  object: String.t(),
  on_behalf_of: String.t() | nil,
  payment_method: LatticeStripe.PaymentMethod.t() | String.t() | nil,
  payment_method_details: map() | nil,
  single_use: LatticeStripe.Mandate.SingleUse.t() | nil,
  status: atom() | String.t() | nil,
  type: atom() | String.t() | nil
}
```

# `from_map`

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

# `retrieve`

```elixir
@spec retrieve(LatticeStripe.Client.t(), String.t(), keyword()) ::
  {:ok, t()} | {:error, LatticeStripe.Error.t()}
```

Retrieves a mandate by ID.

Sends `GET /v1/mandates/:id` and returns a typed `%Mandate{}`.

# `retrieve!`

```elixir
@spec retrieve!(LatticeStripe.Client.t(), String.t(), keyword()) :: t()
```

Like `retrieve/3` but raises `LatticeStripe.Error` on failure.

---

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