# `Accrue.Billing.UpcomingInvoice`
[🔗](https://github.com/szTheory/accrue/blob/accrue-v1.1.1/lib/accrue/billing/upcoming_invoice.ex#L1)

Non-persistent struct representing a proration preview.

Returned from `Accrue.Billing.preview_upcoming_invoice/2` and never
written to the database — Stripe's upcoming-invoice endpoint is the
source of truth, and the result is always a snapshot at `fetched_at`.

# `t`

```elixir
@type t() :: %Accrue.Billing.UpcomingInvoice{
  amount_due: Accrue.Money.t() | nil,
  currency: atom() | String.t(),
  fetched_at: DateTime.t() | nil,
  lines: [Accrue.Billing.UpcomingInvoice.Line.t()],
  period_end: DateTime.t() | nil,
  period_start: DateTime.t() | nil,
  proration_date: DateTime.t() | nil,
  starting_balance: Accrue.Money.t() | nil,
  subscription_id: String.t() | nil,
  subtotal: Accrue.Money.t() | nil,
  total: Accrue.Money.t() | nil
}
```

---

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