Stripe.Subscription (stripity_stripe v2.17.3) View Source

Work with Stripe subscription objects.

You can:

  • Create a subscription
  • Retrieve a subscription
  • Update a subscription
  • Delete a subscription
  • Search subscriptions

Stripe API reference: https://stripe.com/docs/api#subscription

Link to this section Summary

Functions

Create a subscription.

Delete a subscription. Takes the subscription id or a Stripe.Subscription struct.

Delete a subscription. Takes the subscription id or a Stripe.Subscription struct. Second argument can be a map of cancellation params, such as invoice_now, or a list of options, such as custom API key.

Delete a subscription. Takes the subscription id or a Stripe.Subscription struct. Second argument is a map of cancellation params, such as invoice_now. Third argument is a list of options, such as custom API key.

Deletes the discount on a subscription.

List all subscriptions.

Retrieve a subscription.

Search subscriptions

Update a subscription.

Link to this section Types

Specs

pause_collection() :: %{behavior: String.t(), resumes_at: Stripe.timestamp()}
Link to this type

pending_invoice_item_interval()

View Source

Specs

pending_invoice_item_interval() :: %{
  interval: String.t(),
  interval_count: integer()
}

Specs

pending_update() :: %{
  billing_cycle_anchor: Stripe.timestamp(),
  expires_at: Stripe.timestamp(),
  subscription_items: [Stripe.SubscriptionItem.t()],
  trial_end: Stripe.timestamp(),
  trial_from_plan: boolean()
}

Specs

t() :: %Stripe.Subscription{
  application_fee_percent: float() | nil,
  automatic_tax: map(),
  billing_cycle_anchor: Stripe.timestamp() | nil,
  billing_thresholds: map() | nil,
  cancel_at: Stripe.timestamp() | nil,
  cancel_at_period_end: boolean(),
  canceled_at: Stripe.timestamp() | nil,
  collection_method: String.t() | nil,
  collection_method_cycle_anchor: Stripe.timestamp() | nil,
  collection_method_thresholds:
    Stripe.Types.collection_method_thresholds() | nil,
  created: Stripe.timestamp(),
  currency: String.t() | nil,
  current_period_end: Stripe.timestamp() | nil,
  current_period_start: Stripe.timestamp() | nil,
  customer: Stripe.id() | Stripe.Customer.t(),
  days_until_due: integer() | nil,
  default_payment_method: Stripe.id() | Stripe.PaymentMethod.t() | nil,
  default_source: Stripe.id() | Stripe.Source.t() | nil,
  default_tax_rates: [Stripe.TaxRate],
  discount: Stripe.Discount.t() | nil,
  ended_at: Stripe.timestamp() | nil,
  id: Stripe.id(),
  items: Stripe.List.t(Stripe.SubscriptionItem.t()),
  latest_invoice: Stripe.id() | Stripe.Invoice.t() | nil,
  livemode: boolean(),
  metadata: Stripe.Types.metadata(),
  next_pending_invoice_item_invoice: Stripe.timestamp() | nil,
  object: String.t(),
  pause_collection: pause_collection() | nil,
  pending_invoice_item_interval: pending_invoice_item_interval() | nil,
  pending_setup_intent: Stripe.SetupIntent.t() | nil,
  pending_update: pending_update() | nil,
  plan: Stripe.Plan.t() | nil,
  promotion_code: pause_collection() | nil,
  quantity: integer() | nil,
  schedule: String.t() | nil,
  start_date: Stripe.timestamp(),
  status: String.t(),
  tax_rate: term(),
  test_clock: term(),
  transfer_data: map(),
  trial_end: Stripe.timestamp() | nil,
  trial_start: Stripe.timestamp() | nil
}

Link to this section Functions

Link to this function

create(params, opts \\ [])

View Source

Specs

create(params, Stripe.options()) :: {:ok, t()} | {:error, Stripe.Error.t()}
when params: %{
       :customer => Stripe.id() | Stripe.Customer.t(),
       optional(:application_fee_percent) => integer(),
       optional(:billing_cycle_anchor) => Stripe.timestamp(),
       optional(:billing_thresholds) => map(),
       optional(:collection_method) => String.t(),
       optional(:collection_method_cycle_anchor) => Stripe.timestamp(),
       optional(:cancel_at) => Stripe.timestamp(),
       optional(:cancel_at_period_end) => boolean(),
       optional(:collection_method) => String.t(),
       optional(:coupon) => Stripe.id() | Stripe.Coupon.t(),
       optional(:days_until_due) => non_neg_integer(),
       :items => [
         %{
           optional(:plan) => Stripe.id() | Stripe.Plan.t(),
           optional(:price) => Stripe.id() | Stripe.Price.t(),
           optional(:billing_methods) => map(),
           optional(:metadata) => map(),
           optional(:quantity) => non_neg_integer(),
           optional(:tax_rates) => list()
         }
       ],
       optional(:default_payment_method) => Stripe.id(),
       optional(:default_tax_rates) => [Stripe.id()],
       optional(:expand) => [String.t()],
       optional(:metadata) => Stripe.Types.metadata(),
       optional(:payment_behavior) => String.t(),
       optional(:prorate) => boolean(),
       optional(:proration_behavior) => String.t(),
       optional(:promotion_code) => Stripe.id(),
       optional(:tax_rate) => Stripe.id() | Stripe.TaxRate.t(),
       optional(:trial_end) => Stripe.timestamp() | :now,
       optional(:trial_from_plan) => boolean(),
       optional(:trial_period_days) => non_neg_integer()
     }

Create a subscription.

Specs

delete(Stripe.id() | t()) :: {:ok, t()} | {:error, Stripe.Error.t()}

Delete a subscription. Takes the subscription id or a Stripe.Subscription struct.

Specs

delete(Stripe.id() | t(), Stripe.options()) ::
  {:ok, t()} | {:error, Stripe.Error.t()}
delete(Stripe.id() | t(), params) :: {:ok, t()} | {:error, Stripe.Error.t()}
when params: %{
       optional(:invoice_now) => boolean(),
       optional(:prorate) => boolean()
     }

Delete a subscription. Takes the subscription id or a Stripe.Subscription struct. Second argument can be a map of cancellation params, such as invoice_now, or a list of options, such as custom API key.

Link to this function

delete(id, params, opts)

View Source

Specs

delete(Stripe.id() | t(), params, Stripe.options()) ::
  {:ok, t()} | {:error, Stripe.Error.t()}
when params: %{
       optional(:invoice_now) => boolean(),
       optional(:prorate) => boolean()
     }

Delete a subscription. Takes the subscription id or a Stripe.Subscription struct. Second argument is a map of cancellation params, such as invoice_now. Third argument is a list of options, such as custom API key.

Link to this function

delete_discount(id, opts \\ [])

View Source

Specs

delete_discount(Stripe.id() | t(), Stripe.options()) ::
  {:ok, t()} | {:error, Stripe.Error.t()}

Deletes the discount on a subscription.

Link to this function

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

View Source

Specs

list(params, Stripe.options()) ::
  {:ok, Stripe.List.t(t())} | {:error, Stripe.Error.t()}
when params: %{
       optional(:collection_method) => String.t(),
       optional(:created) => Stripe.date_query(),
       optional(:customer) => Stripe.Customer.t() | Stripe.id(),
       optional(:ending_before) => t() | Stripe.id(),
       optional(:limit) => 1..100,
       optional(:plan) => Stripe.Plan.t() | Stripe.id(),
       optional(:price) => Stripe.Price.t() | Stripe.id(),
       optional(:starting_after) => t() | Stripe.id(),
       optional(:status) => String.t()
     }

List all subscriptions.

Link to this function

retrieve(id, opts \\ [])

View Source

Specs

retrieve(Stripe.id() | t(), Stripe.options()) ::
  {:ok, t()} | {:error, Stripe.Error.t()}

Retrieve a subscription.

Link to this function

search(params, opts \\ [])

View Source

Specs

search(params, Stripe.options()) ::
  {:ok, Stripe.SearchResult.t(t())} | {:error, Stripe.Error.t()}
when params: %{
       :query => Stripe.search_query(),
       optional(:limit) => 1..100,
       optional(:page) => String.t()
     }

Search subscriptions

Link to this function

update(id, params, opts \\ [])

View Source

Specs

update(Stripe.id() | t(), params, Stripe.options()) ::
  {:ok, t()} | {:error, Stripe.Error.t()}
when params: %{
       optional(:application_fee_percent) => float(),
       optional(:billing_cycle_anchor) => Stripe.timestamp(),
       optional(:billing_thresholds) => map(),
       optional(:collection_method) => String.t(),
       optional(:collection_method_cycle_anchor) => Stripe.timestamp(),
       optional(:cancel_at) => Stripe.timestamp(),
       optional(:cancel_at_period_end) => boolean(),
       optional(:collection_method) => String.t(),
       optional(:coupon) => Stripe.id() | Stripe.Coupon.t(),
       optional(:days_until_due) => non_neg_integer(),
       optional(:items) => [
         %{
           optional(:id) => Stripe.id() | binary(),
           optional(:plan) => Stripe.id() | Stripe.Plan.t(),
           optional(:price) => Stripe.id() | Stripe.Price.t(),
           optional(:billing_methods) => map(),
           optional(:metadata) => map(),
           optional(:quantity) => non_neg_integer(),
           optional(:tax_rates) => list()
         }
       ],
       optional(:default_payment_method) => Stripe.id(),
       optional(:default_tax_rates) => [Stripe.id()],
       optional(:metadata) => Stripe.Types.metadata(),
       optional(:pause_collection) => pause_collection(),
       optional(:prorate) => boolean(),
       optional(:proration_behavior) => String.t(),
       optional(:proration_date) => Stripe.timestamp(),
       optional(:tax_rate) => Stripe.id() | Stripe.TaxRate.t(),
       optional(:trial_end) => Stripe.timestamp() | :now,
       optional(:trial_from_plan) => boolean()
     }

Update a subscription.

Takes the id and a map of changes.