Coupons

Customizable Discounts

Coupons are reusable discounts. You can specify who the discount applies to (i.e., which customers) and whether it should be applied on a recurring on non-recurring basis. Additionally, you can share coupon codes with customers so that they can apply the coupons themselves.

Coupon Definition

FieldDescriptionTypeRequired
nameUnique name for this coupon.StringRequired
discount_typeDetermines whether the discount is a flat dollar amount or a percentage of the final invoice amount.

One of: [FLAT, PERCENT]
EnumRequired
discount_amountThe amount of discount to apply based on type.IntegerRequired
frequencyWhether the coupon is One of: [ONCE, RECURRING]EnumRequired
duration_lengthThe time when the coupon will stop being effective one its applied. The duration includes the application day and hence the coupon will stop applying at duration + application day.IntegerOptional (required when frequency is 'recurring')
duration_unitThe unit to use for the duration length specified.

One of: [hour, day, week, month, year]
EnumOptional (required when 'duration_length' is specified)
expiration_timeThe time at which this coupon will expire and can no longer be applied.

This differs from 'duration' as the latter determines how long the coupon will be valid AFTER it is applied.
DatetimeOptional (by default coupons will never expire)
max_usesThe maximum number of such coupons that can be applied.

NOTE: A coupon can only be applied by one 'customer' once. Hence this determines the number of different customers that can use this coupon.
IntegerOptional (by default there is no limit on max uses)
codeUser-facing code that can be given out to end-customers. (e.g. SPECIAL25)StringOptional
excluded_customersList of all customers who cannot use this coupon.[String]Optional
excluded_price_plansList of all price plans who's customers cannot use this coupon[String]Optional

Frequency & Duration

The two frequencies available are ONCE and RECURRING. When the frequency is set as ONCE, the coupon will only be applied to a SINGLE price plan period and will not be applied henceforth.

When the frequency is set as RECURRING, it is important to provide the duration of the coupon lifetime, once it is applied. For example, if the coupon lasts 30 days and was applied on January 1, it will stop working on 1 + 30 = 31st January at midnight. If application date/end date of the coupon is in the middle of the price plan period, the behavior of the discount applied will vary based on discount types.

Discount Types

Flat Discounts

Flat discounts are a direct dollar amount reduced from the invoice amount at the end of the price plan period. It does not matter whether the application date or the end date are in the middle of a price plan period, the flat discount will be applied to the invoice.

For example, assume the flat discount is $100, the frequency is RECURRING with a duration of 10 days, and the customer price plan period is month. If the application date of the coupon was June 25th, the flat discount will be applied to the invoice of June as well as July. Additionally, even if the entire duration is encapsulated within one price plan period, the flat rate will apply to the entire period.

Percentage Discounts

Percentage discounts are a reduction off of a customer's invoice based on a proportion of revenue accrued. Unlike a flat discount, a percentage discount is based on the customer’s usage. For example, a 20% off coupon will remove $20 from a $100 invoice.

Restricting Coupon Access

Coupon access to customers can be restricted in two ways that can both work at the same time. The first way of restricting coupon access is to use 'max_uses' which will determine how many unique customers can use this coupon before it will not be accepted when applying. A single customer will NOT be able to apply the same coupon multiple times. The second way of restricting usage is via the expiration_timestamp which determines the last day when the coupon can still be applied.

NOTE: 'max_uses' and 'expiration_timestamp' work together and are applied on top of each other and hence the more restrictive of the two will stop coupon usage first.

Finally, if the coupon that you are creating is only meant for specific price plans or customers, you can simply exclude the ones for which this coupon will not work by specifying the 'excluded_customers' and 'excluded_price_plans' respectively. These also will be applied on top of each other and the more restriction of the will apply first.

Use Cases

Internal Uses

Coupons do not need to be exposed to customers, instead they can also be used as a way of storing common discounts that you apply on Price Plans and Subscriptions often.

External Uses

Coupons can be directly handed to customers by setting the 'code'. The 'code' will can be used by end users and an Add Coupon API call can be made to Octane in order to state that a customer has applied a coupon.

📘

Usage of Discounts and Coupons

Discounts and Coupons cannot be applied together. A customer can either have an active coupon or an active discount but not both. This implies that if a customer has an active discount on their price plan/subscription then they will not be able to use any issues coupons.