View Source Stripe.LineItem (stripity_stripe v3.3.1)

Invoice Line Items represent the individual lines within an invoice and only exist within the context of an invoice.

Each line item is backed by either an invoice item or a subscription item.

Summary

Types

The period associated with this invoice item. When set to different values, the period will be rendered on the invoice. If you have Stripe Revenue Recognition enabled, the period will be used to recognize and defer revenue. See the Revenue Recognition documentation for details.

Data used to generate a new Price object inline.

The pricing information for the invoice item.

Data used to generate a new Product object inline. One of product or product_data is required.

t()

The line_item type.

Data to find or create a TaxRate object.

Functions

When retrieving an invoice, you’ll get a lines property containing the total count of line items and the first handful of those items. There is also a URL where you can retrieve the full (paginated) list of line items.

Updates an invoice’s line item. Some fields, such as tax_amounts, only live on the invoice line item,so they can only be updated through this endpoint. Other fields, such as amount, live on both the invoice item and the invoice line item, so updates on this endpoint will propagate to the invoice item as well. Updating an invoice’s line item is only possible before the invoice is finalized.

Types

@type discounts() :: %{
  optional(:coupon) => binary(),
  optional(:discount) => binary(),
  optional(:promotion_code) => binary()
}
@type period() :: %{optional(:end) => integer(), optional(:start) => integer()}

The period associated with this invoice item. When set to different values, the period will be rendered on the invoice. If you have Stripe Revenue Recognition enabled, the period will be used to recognize and defer revenue. See the Revenue Recognition documentation for details.

@type price_data() :: %{
  optional(:currency) => binary(),
  optional(:product) => binary(),
  optional(:product_data) => product_data(),
  optional(:tax_behavior) => :exclusive | :inclusive | :unspecified,
  optional(:unit_amount) => integer(),
  optional(:unit_amount_decimal) => binary()
}

Data used to generate a new Price object inline.

@type pricing() :: %{optional(:price) => binary()}

The pricing information for the invoice item.

@type product_data() :: %{
  optional(:description) => binary(),
  optional(:images) => [binary()],
  optional(:metadata) => %{optional(binary()) => binary()},
  optional(:name) => binary(),
  optional(:tax_code) => binary(),
  optional(:unit_label) => binary()
}

Data used to generate a new Product object inline. One of product or product_data is required.

@type t() :: %Stripe.LineItem{
  amount: integer(),
  currency: binary(),
  description: binary() | nil,
  discount_amounts: term() | nil,
  discountable: boolean(),
  discounts: term(),
  id: binary(),
  invoice: binary() | nil,
  livemode: boolean(),
  metadata: term(),
  object: binary(),
  parent: term() | nil,
  period: term(),
  pretax_credit_amounts: term() | nil,
  pricing: term() | nil,
  quantity: integer() | nil,
  subscription: (binary() | Stripe.Subscription.t()) | nil,
  taxes: term() | nil
}

The line_item type.

  • amount The amount, in cents (or local equivalent).
  • currency Three-letter ISO currency code, in lowercase. Must be a supported currency.
  • description An arbitrary string attached to the object. Often useful for displaying to users.
  • discount_amounts The amount of discount calculated per discount for this line item.
  • discountable If true, discounts will apply to this line item. Always false for prorations.
  • discounts The discounts applied to the invoice line item. Line item discounts are applied before invoice discounts. Use expand[]=discounts to expand each discount.
  • id Unique identifier for the object.
  • invoice The ID of the invoice that contains this line item.
  • livemode Has the value true if the object exists in live mode or the value false if the object exists in test mode.
  • metadata Set of key-value pairs that you can attach to an object. This can be useful for storing additional information about the object in a structured format. Note that for line items with type=subscription, metadata reflects the current metadata from the subscription associated with the line item, unless the invoice line was directly updated with different metadata after creation.
  • object String representing the object's type. Objects of the same type share the same value.
  • parent The parent that generated this line item.
  • period
  • pretax_credit_amounts Contains pretax credit amounts (ex: discount, credit grants, etc) that apply to this line item.
  • pricing The pricing information of the line item.
  • quantity The quantity of the subscription, if the line item is a subscription or a proration.
  • subscription
  • taxes The tax information of the line item.
@type tax_amounts() :: %{
  optional(:amount) => integer(),
  optional(:tax_rate_data) => tax_rate_data(),
  optional(:taxability_reason) =>
    :customer_exempt
    | :not_collecting
    | :not_subject_to_tax
    | :not_supported
    | :portion_product_exempt
    | :portion_reduced_rated
    | :portion_standard_rated
    | :product_exempt
    | :product_exempt_holiday
    | :proportionally_rated
    | :reduced_rated
    | :reverse_charge
    | :standard_rated
    | :taxable_basis_reduced
    | :zero_rated,
  optional(:taxable_amount) => integer()
}
@type tax_rate_data() :: %{
  optional(:country) => binary(),
  optional(:description) => binary(),
  optional(:display_name) => binary(),
  optional(:inclusive) => boolean(),
  optional(:jurisdiction) => binary(),
  optional(:jurisdiction_level) =>
    :city | :country | :county | :district | :multiple | :state,
  optional(:percentage) => number(),
  optional(:state) => binary(),
  optional(:tax_type) =>
    :amusement_tax
    | :communications_tax
    | :gst
    | :hst
    | :igst
    | :jct
    | :lease_tax
    | :pst
    | :qst
    | :retail_delivery_fee
    | :rst
    | :sales_tax
    | :service_tax
    | :vat
}

Data to find or create a TaxRate object.

Stripe automatically creates or reuses a TaxRate object for each tax amount. If the tax_rate_data exactly matches a previous value, Stripe will reuse the TaxRate object. TaxRate objects created automatically by Stripe are immediately archived, do not appear in the line item’s tax_rates, and cannot be directly added to invoices, payments, or line items.

Functions

Link to this function

list(invoice, params \\ %{}, opts \\ [])

View Source
@spec list(
  invoice :: binary(),
  params :: %{
    optional(:ending_before) => binary(),
    optional(:expand) => [binary()],
    optional(:limit) => integer(),
    optional(:starting_after) => binary()
  },
  opts :: Keyword.t()
) ::
  {:ok, Stripe.List.t(t())} | {:error, Stripe.ApiErrors.t()} | {:error, term()}

When retrieving an invoice, you’ll get a lines property containing the total count of line items and the first handful of those items. There is also a URL where you can retrieve the full (paginated) list of line items.

Details

  • Method: get
  • Path: /v1/invoices/{invoice}/lines
Link to this function

update(invoice, line_item_id, params \\ %{}, opts \\ [])

View Source
@spec update(
  invoice :: binary(),
  line_item_id :: binary(),
  params :: %{
    optional(:amount) => integer(),
    optional(:description) => binary(),
    optional(:discountable) => boolean(),
    optional(:discounts) => [discounts()] | binary(),
    optional(:expand) => [binary()],
    optional(:metadata) => %{optional(binary()) => binary()} | binary(),
    optional(:period) => period(),
    optional(:price_data) => price_data(),
    optional(:pricing) => pricing(),
    optional(:quantity) => integer(),
    optional(:tax_amounts) => [tax_amounts()] | binary(),
    optional(:tax_rates) => [binary()] | binary()
  },
  opts :: Keyword.t()
) :: {:ok, t()} | {:error, Stripe.ApiErrors.t()} | {:error, term()}

Updates an invoice’s line item. Some fields, such as tax_amounts, only live on the invoice line item,so they can only be updated through this endpoint. Other fields, such as amount, live on both the invoice item and the invoice line item, so updates on this endpoint will propagate to the invoice item as well. Updating an invoice’s line item is only possible before the invoice is finalized.

#### Details * Method: `post` * Path: `/v1/invoices/{invoice}/lines/{line_item_id}`