Record and reverse tax via Stripe's standalone Tax Transactions API.
Lifecycle
Create a transaction from a live calculation ID with a globally unique
reference, inspect it via retrieve/3 or list_line_items/4, and reverse
it with create_reversal/3 when refunds or corrections require undoing
recorded tax.
Operational constraints
Tax calculations expire after roughly 90 days — create transactions from
a calculation before expires_at. The reference you pass to
create_from_calculation/3 and create_reversal/3 must be globally
unique across all tax transactions in your Stripe account (for example
"order_#{order_id}").
Relationship to other tax surfaces
This module is not LatticeStripe.Invoice.AutomaticTax. Automatic tax on
Invoices, Subscriptions, and Quotes is configured via nested automatic_tax
settings on those Billing resources. Use this Transactions API for custom
payment flows that calculate tax with LatticeStripe.Tax.Calculation first.
Filing, returns, and threshold monitoring are out of SDK scope.
Usage
reference = "order_#{order.id}"
{:ok, txn} =
LatticeStripe.Tax.Transaction.create_from_calculation(client, %{
"calculation" => calc.id,
"reference" => reference
})
{:ok, reversal} =
LatticeStripe.Tax.Transaction.create_reversal(client, %{
"mode" => "full",
"original_transaction" => txn.id,
"reference" => "#{reference}-rev"
})See Standalone Tax API for the canonical calculate → record → reverse workflow.
Summary
Functions
Creates a Tax Transaction from an existing Tax Calculation.
Like create_from_calculation/3 but raises on failure.
Creates a reversal Tax Transaction.
Like create_reversal/3 but raises on failure.
Lists line items for a Tax Transaction.
Like list_line_items/4 but raises on failure.
Retrieves a Tax Transaction by ID.
Like retrieve/3 but raises on failure.
Types
@type t() :: %LatticeStripe.Tax.Transaction{ created: integer() | nil, currency: String.t() | nil, customer: LatticeStripe.Customer.t() | String.t() | nil, customer_details: LatticeStripe.Tax.CustomerDetails.t() | nil, extra: map(), id: String.t() | nil, line_items: LatticeStripe.List.t() | nil, livemode: boolean() | nil, metadata: map() | nil, object: String.t(), posted_at: integer() | nil, reference: String.t() | nil, reversal: map() | String.t() | nil, shipping_cost: LatticeStripe.Tax.ShippingCost.t() | nil, tax_date: integer() | nil, type: String.t() | nil }
Functions
@spec create_from_calculation(LatticeStripe.Client.t(), map(), keyword()) :: {:ok, t()} | {:error, LatticeStripe.Error.t()}
Creates a Tax Transaction from an existing Tax Calculation.
@spec create_from_calculation!(LatticeStripe.Client.t(), map(), keyword()) :: t()
Like create_from_calculation/3 but raises on failure.
@spec create_reversal(LatticeStripe.Client.t(), map(), keyword()) :: {:ok, t()} | {:error, LatticeStripe.Error.t()}
Creates a reversal Tax Transaction.
@spec create_reversal!(LatticeStripe.Client.t(), map(), keyword()) :: t()
Like create_reversal/3 but raises on failure.
@spec list_line_items(LatticeStripe.Client.t(), String.t(), map(), keyword()) :: {:ok, LatticeStripe.Response.t()} | {:error, LatticeStripe.Error.t()}
Lists line items for a Tax Transaction.
@spec list_line_items!(LatticeStripe.Client.t(), String.t(), map(), keyword()) :: LatticeStripe.Response.t()
Like list_line_items/4 but raises on failure.
@spec retrieve(LatticeStripe.Client.t(), String.t(), keyword()) :: {:ok, t()} | {:error, LatticeStripe.Error.t()}
Retrieves a Tax Transaction by ID.
@spec retrieve!(LatticeStripe.Client.t(), String.t(), keyword()) :: t()
Like retrieve/3 but raises on failure.