Stripe Balance singleton.
Balance.retrieve(client) fetches the platform balance.
Balance.retrieve(client, stripe_account: "acct_123") fetches the
connected account's balance via the per-request Stripe-Account header —
this is the ONLY distinction between the two reads.
Reconciliation loop antipattern
Code that walks every connected account in a loop MUST pass the
stripe_account: opt on each call. Calling Balance.retrieve(client)
with no opts inside such a loop returns the platform balance every time
and silently produces wrong reconciliation totals.
Examples
# Platform balance
{:ok, balance} = LatticeStripe.Balance.retrieve(client)
# Connected account balance (per-request override)
{:ok, balance} =
LatticeStripe.Balance.retrieve(client, stripe_account: "acct_123")
# Read available USD balance
[usd] = Enum.filter(balance.available, &(&1.currency == "usd"))
IO.puts("Available USD: #{usd.amount}")
# Read source-type breakdown
IO.puts("From cards: #{usd.source_types.card}")Module surface
Balance is a singleton — it has no id, no list/1, no
create/2, update/3, or delete/2. The only operations are
retrieve/2 and retrieve!/2.
Stripe API Reference
Summary
Types
@type t() :: %LatticeStripe.Balance{ available: [LatticeStripe.Balance.Amount.t()] | nil, connect_reserved: [LatticeStripe.Balance.Amount.t()] | nil, extra: map(), instant_available: [LatticeStripe.Balance.Amount.t()] | nil, issuing: map() | nil, livemode: boolean() | nil, object: String.t(), pending: [LatticeStripe.Balance.Amount.t()] | nil }
A Stripe Balance object.
Functions
@spec retrieve( LatticeStripe.Client.t(), keyword() ) :: {:ok, t()} | {:error, LatticeStripe.Error.t()}
Retrieves the Stripe Balance.
Sends GET /v1/balance and returns {:ok, %Balance{}}.
Pass stripe_account: "acct_..." in opts to retrieve a connected
account's balance via the per-request Stripe-Account header.
@spec retrieve!( LatticeStripe.Client.t(), keyword() ) :: t()
Like retrieve/2 but raises LatticeStripe.Error on failure.