PromotionCode
A Promotion Code represents a customer-redeemable code for an underlying promotion. You can create multiple codes for a single promotion.
If you enable promotion codes in your customer portal configuration, then customers can redeem a code themselves when updating a subscription in the portal. Customers can also view the currently active promotion codes and coupons on each of their subscriptions in the portal.
Summary
Types
@type promotion() :: %{ optional(:coupon) => String.t() | Stripe.Resources.Coupon.t() | nil, optional(:type) => String.t() | nil, optional(String.t()) => term() }
coupon- If promotiontypeiscoupon, the coupon for this promotion. Nullable.type- The type of promotion. Possible values:coupon.
@type restrictions() :: %{ optional(:currency_options) => %{required(String.t()) => restrictions_currency_options()} | nil, optional(:first_time_transaction) => boolean() | nil, optional(:minimum_amount) => integer() | nil, optional(:minimum_amount_currency) => String.t() | nil, optional(String.t()) => term() }
currency_options- Promotion code restrictions defined in each available currency option. Each key must be a three-letter ISO currency code and a supported currency.first_time_transaction- A Boolean indicating if the Promotion Code should only be redeemed for Customers without any successful payments or invoicesminimum_amount- Minimum amount required to redeem this Promotion Code into a Coupon (e.g., a purchase must be $100 or more to work). Nullable.minimum_amount_currency- Three-letter ISO code for minimum_amount Max length: 5000. Nullable.
@type restrictions_currency_options() :: %{ optional(:minimum_amount) => integer() | nil, optional(String.t()) => term() }
minimum_amount- Minimum amount required to redeem this Promotion Code into a Coupon (e.g., a purchase must be $100 or more to work).
@type t() :: %Stripe.Resources.PromotionCode{ active: boolean(), code: String.t(), created: integer(), customer: String.t() | Stripe.Resources.Customer.t(), customer_account: String.t(), expires_at: integer(), id: String.t(), livemode: boolean(), max_redemptions: integer(), metadata: %{required(String.t()) => String.t()}, object: String.t(), promotion: promotion(), restrictions: restrictions(), times_redeemed: integer() }
active- Whether the promotion code is currently active. A promotion code is only active if the coupon is also valid.code- The customer-facing code. Regardless of case, this code must be unique across all active promotion codes for each customer. Valid characters are lower case letters (a-z), upper case letters (A-Z), and digits (0-9). Max length: 5000.created- Time at which the object was created. Measured in seconds since the Unix epoch. Format: Unix timestamp.customer- The customer who can use this promotion code. Nullable. Expandable.customer_account- The account representing the customer who can use this promotion code. Max length: 5000. Nullable.expires_at- Date at which the promotion code can no longer be redeemed. Format: Unix timestamp. Nullable.id- Unique identifier for the object. Max length: 5000.livemode- Has the valuetrueif the object exists in live mode or the valuefalseif the object exists in test mode.max_redemptions- Maximum number of times this promotion code can be redeemed. Nullable.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. Nullable.object- String representing the object's type. Objects of the same type share the same value. Possible values:promotion_code.promotion- Expandable.restrictions- Expandable.times_redeemed- Number of times this promotion code has been used.