---
title: "Add a new discount coupon."
method: POST
path: "/api/v1/billing/discountcoupons"
tags: ["Billing"]
---

# Add a new discount coupon.

`POST /api/v1/billing/discountcoupons`

## Request

- Base URL: `https://go.outseta.com`
- URL: `https://go.outseta.com/api/v1/billing/discountcoupons`
- Auth: one of:
  - HTTP bearer
  - API key in header `Authorization`

Only one of AmountOff or PercentOff should be set.
Duration values: 1 = Forever, 2 = Once, 3 = Repeating (DurationInMonths must be set).

## Request body

- DiscountCoupon
  - `Uid` string, nullable
  - `_objectType` string, nullable
  - `Created` string, date-time, required
  - `Updated` string, date-time, required
  - `ActivityEventData` unknown
  - `UniqueIdentifier` string, nullable
  - `Name` string, nullable
  - `IsActive` boolean
  - `AmountOff` number, nullable
  - `PercentOff` number, nullable
  - `RedeemBy` string, date-time, nullable
  - `Duration` 1 | 2 | 3: `1` - Forever, `2` - Once, `3` - Repeating
  - `DurationInMonths` integer, nullable
  - `TimesRedeemed` integer
  - `MaxRedemptions` integer, nullable
  - `DiscountCouponPlans` DiscountCouponPlan[], nullable
    - `Uid` string, nullable
    - `_objectType` string, nullable
    - `Created` string, date-time, required
    - `Updated` string, date-time, required
    - `ActivityEventData` unknown
    - `Plan` Plan
      - `Uid` string, nullable
      - `_objectType` string, nullable
      - `Created` string, date-time, required
      - `Updated` string, date-time, required
      - `ActivityEventData` unknown
      - `Name` string, nullable
      - `Description` string, nullable
      - `PlanFamily` PlanFamily
        - `Uid` string, nullable
        - `_objectType` string, nullable
        - `Created` string, date-time, required
        - `Updated` string, date-time, required
        - `ActivityEventData` unknown
        - `SchemaLessData` object, nullable
        - `Name` string, nullable
        - `IsActive` boolean
        - `IsDefault` boolean
        - `Plans` Plan[], nullable
      - `AccountRegistrationMode` 1 | 2: `1` - Individual, `2` - Team
      - `IsQuantityEditable` boolean, required
      - `MinimumQuantity` integer
      - `MaximumPeople` integer, nullable
      - `MonthlyRate` number
      - `AnnualRate` number
      - `QuarterlyRate` number
      - `OneTimeRate` number
      - `SetupFee` number
      - `SkipSetupFeeOnPlanChange` boolean
      - `IsTaxable` boolean, required
      - `IsActive` boolean
      - `IsPerUser` boolean
      - `RequirePaymentInformation` boolean
      - `TrialPeriodDays` integer
      - `TrialUntilDate` string, date-time, nullable
      - `ExpiresAfterMonths` integer
      - `ExpirationDate` string, date-time, nullable
      - `PostLoginPath` string, nullable
      - `StripeTaxCodeId` string, nullable
      - `UnitOfMeasure` string, nullable
      - `PlanAddOns` PlanAddOn[], nullable
        - `Uid` string, nullable
        - `_objectType` string, nullable
        - `Created` string, date-time, required
        - `Updated` string, date-time, required
        - `ActivityEventData` unknown
        - `Plan` Plan (recursive)
        - `AddOn` AddOn
          - `Uid` string, nullable
          - `_objectType` string, nullable
          - `Created` string, date-time, required
          - `Updated` string, date-time, required
          - `ActivityEventData` unknown
          - `Name` string, nullable
          - `BillingAddOnType` 1 | 2 | 3: `1` - Recurring, `2` - Usage, `3` - OneTime
          - `IsQuantityEditable` boolean, required
          - `MinimumQuantity` integer
          - `MonthlyRate` number
          - `AnnualRate` number
          - `SetupFee` number
          - `UnitOfMeasure` string, nullable
          - `IsTaxable` boolean, required
          - `IsBilledDuringTrial` boolean, required
          - `ExpiresAfterMonths` integer
          - `ExpirationDate` string, date-time, nullable
          - `StripeTaxCodeId` string, nullable
          - `PlanAddOns` PlanAddOn[], nullable
          - `ContentGroups` ContentGroup[], nullable
            - `Uid` string, nullable
            - `_objectType` string, nullable
            - `Created` string, date-time, required
            - `Updated` string, date-time, required
            - `ActivityEventData` unknown
            - `Name` string, required
            - `AccessDeniedPath` string, nullable
            - `ContentGroupItems` ContentGroupItem[], nullable
              - …
            - `AllowedPlans` Plan[], nullable
            - `AllowedProducts` StripeProduct[], nullable
              - …
            - `AllowedAddOns` AddOn[], nullable
          - `IsPerUser` boolean
          - `QuarterlyRate` number
          - `OneTimeRate` number
          - `SubscriptionCount` integer
          - `Quantity` integer
        - `IsUserSelectable` boolean, required
      - `ContentGroups` ContentGroup[], nullable
        - `Uid` string, nullable
        - `_objectType` string, nullable
        - `Created` string, date-time, required
        - `Updated` string, date-time, required
        - `ActivityEventData` unknown
        - `Name` string, required
        - `AccessDeniedPath` string, nullable
        - `ContentGroupItems` ContentGroupItem[], nullable
          - `Uid` string, nullable
          - `_objectType` string, nullable
          - `Created` string, date-time, required
          - `Updated` string, date-time, required
          - `ActivityEventData` unknown
          - `Pattern` string, required
          - `MatchMode` 1 | 2, required: `1` - Equals, `2` - StartsWith
          - `ContentGroup` ContentGroup, required (recursive)
        - `AllowedPlans` Plan[], nullable
        - `AllowedProducts` StripeProduct[], nullable
          - `Uid` string, nullable
          - `_objectType` string, nullable
          - `Created` string, date-time, required
          - `Updated` string, date-time, required
          - `ActivityEventData` unknown
          - `SchemaLessData` object, nullable
          - `StripeId` string, nullable
          - `IsLivemode` boolean
          - `Name` string, nullable
          - `DefaultPriceId` string, nullable
          - `Description` string, nullable
          - `IsActive` boolean
          - `TaxCodeId` string, nullable
          - `UnitLabel` string, nullable
          - `ContentGroups` ContentGroup[], nullable
          - `StripePrices` StripePrice[], nullable
            - `Uid` string, nullable
            - `_objectType` string, nullable
            - `Created` string, date-time, required
            - `Updated` string, date-time, required
            - `ActivityEventData` unknown
            - `SchemaLessData` object, nullable
            - `StripeId` string, nullable
            - `IsLivemode` boolean
            - `BillingScheme` string, nullable
            - `Currency` string, nullable
            - `CustomUnitAmount_Maximum` integer, nullable
            - `CustomUnitAmount_Minimum` integer, nullable
            - `CustomUnitAmount_Preset` integer, nullable
            - `IsActive` boolean
            - `Nickname` string, nullable
            - `Recurring_Interval` string, nullable
            - `Recurring_IntervalCount` integer, nullable
            - `Recurring_StripeMeter` StripeMeter
              - …
            - `Recurring_UsageType` string, nullable
            - `StripeProduct` StripeProduct (recursive)
            - `TaxBehavior` string, nullable
            - `TiersMode` string, nullable
            - `TransformQuantity_DivideBy` integer, nullable
            - `Type` string, nullable
            - `UnitAmount` integer, nullable
            - `UnitAmountDecimal` number, nullable
            - `ShowInSignUpForm` boolean
            - `CurrencySymbol` string, nullable
            - `CurrencyUnitAmount` number, nullable
            - `CurrencyUnitAmountDecimal` number, nullable
            - `Recurring_IntervalDays` integer, nullable
            - `Recurring_Description` string, nullable
            - `StripeMeterId` string, nullable
            - `StripeProductId` string, nullable
          - `AccountRegistrationMode` 1 | 2: `1` - Individual, `2` - Team
          - `ExpiresAfterMonths` integer
          - `ExpirationDate` string, date-time, nullable
          - `IsPerUser` boolean
          - `IsQuantityEditable` boolean
          - `MaximumPeople` integer, nullable
          - `MigratedAddOnUid` string, nullable
          - `MigratedPlanUid` string, nullable
          - `MinimumQuantity` integer, nullable
          - `PostLoginPath` string, nullable
          - `PostPurchaseUrl` string, nullable
          - `RequirePaymentInformation` boolean
          - `StripeProductCrossSells` StripeProductCrossSell[], nullable
            - `Uid` string, nullable
            - `_objectType` string, nullable
            - `Created` string, date-time, required
            - `Updated` string, date-time, required
            - `ActivityEventData` unknown
            - `StripeProduct` StripeProduct (recursive)
            - `CrossSellProduct` StripeProduct (recursive)
            - `IsUserSelectable` boolean
          - `TrialPeriodDays` integer
          - `TrialUntilDate` string, date-time, nullable
          - `CanDelete` boolean
          - `NumberOfPurchases` integer
          - `NumberOfSubscriptions` integer
          - `Quantity` integer, nullable
          - `StripeProductFamily` StripeProductFamily
            - `Uid` string, nullable
            - `_objectType` string, nullable
            - `Created` string, date-time, required
            - `Updated` string, date-time, required
            - `ActivityEventData` unknown
            - `SchemaLessData` object, nullable
            - `Name` string, nullable
            - `IsActive` boolean
            - `IsDefault` boolean
            - `StripeProducts` StripeProduct[], nullable
        - `AllowedAddOns` AddOn[], nullable
          - `Uid` string, nullable
          - `_objectType` string, nullable
          - `Created` string, date-time, required
          - `Updated` string, date-time, required
          - `ActivityEventData` unknown
          - `Name` string, nullable
          - `BillingAddOnType` 1 | 2 | 3: `1` - Recurring, `2` - Usage, `3` - OneTime
          - `IsQuantityEditable` boolean, required
          - `MinimumQuantity` integer
          - `MonthlyRate` number
          - `AnnualRate` number
          - `SetupFee` number
          - `UnitOfMeasure` string, nullable
          - `IsTaxable` boolean, required
          - `IsBilledDuringTrial` boolean, required
          - `ExpiresAfterMonths` integer
          - `ExpirationDate` string, date-time, nullable
          - `StripeTaxCodeId` string, nullable
          - `PlanAddOns` PlanAddOn[], nullable
            - `Uid` string, nullable
            - `_objectType` string, nullable
            - `Created` string, date-time, required
            - `Updated` string, date-time, required
            - `ActivityEventData` unknown
            - `Plan` Plan (recursive)
            - `AddOn` AddOn (recursive)
            - `IsUserSelectable` boolean, required
          - `ContentGroups` ContentGroup[], nullable
          - `IsPerUser` boolean
          - `QuarterlyRate` number
          - `OneTimeRate` number
          - `SubscriptionCount` integer
          - `Quantity` integer
      - `NumberOfSubscriptions` integer, nullable
    - `DiscountCoupon` DiscountCoupon (recursive)
  - `ApplyToAddOns` boolean
  - `IsInUse` boolean, nullable
  - `PlanUids` string, nullable

## Response `200`

- DiscountCoupon
  - `Uid` string, nullable
  - `_objectType` string, nullable
  - `Created` string, date-time, required
  - `Updated` string, date-time, required
  - `ActivityEventData` unknown
  - `UniqueIdentifier` string, nullable
  - `Name` string, nullable
  - `IsActive` boolean
  - `AmountOff` number, nullable
  - `PercentOff` number, nullable
  - `RedeemBy` string, date-time, nullable
  - `Duration` 1 | 2 | 3: `1` - Forever, `2` - Once, `3` - Repeating
  - `DurationInMonths` integer, nullable
  - `TimesRedeemed` integer
  - `MaxRedemptions` integer, nullable
  - `DiscountCouponPlans` DiscountCouponPlan[], nullable
    - `Uid` string, nullable
    - `_objectType` string, nullable
    - `Created` string, date-time, required
    - `Updated` string, date-time, required
    - `ActivityEventData` unknown
    - `Plan` Plan
      - `Uid` string, nullable
      - `_objectType` string, nullable
      - `Created` string, date-time, required
      - `Updated` string, date-time, required
      - `ActivityEventData` unknown
      - `Name` string, nullable
      - `Description` string, nullable
      - `PlanFamily` PlanFamily
        - `Uid` string, nullable
        - `_objectType` string, nullable
        - `Created` string, date-time, required
        - `Updated` string, date-time, required
        - `ActivityEventData` unknown
        - `SchemaLessData` object, nullable
        - `Name` string, nullable
        - `IsActive` boolean
        - `IsDefault` boolean
        - `Plans` Plan[], nullable
      - `AccountRegistrationMode` 1 | 2: `1` - Individual, `2` - Team
      - `IsQuantityEditable` boolean, required
      - `MinimumQuantity` integer
      - `MaximumPeople` integer, nullable
      - `MonthlyRate` number
      - `AnnualRate` number
      - `QuarterlyRate` number
      - `OneTimeRate` number
      - `SetupFee` number
      - `SkipSetupFeeOnPlanChange` boolean
      - `IsTaxable` boolean, required
      - `IsActive` boolean
      - `IsPerUser` boolean
      - `RequirePaymentInformation` boolean
      - `TrialPeriodDays` integer
      - `TrialUntilDate` string, date-time, nullable
      - `ExpiresAfterMonths` integer
      - `ExpirationDate` string, date-time, nullable
      - `PostLoginPath` string, nullable
      - `StripeTaxCodeId` string, nullable
      - `UnitOfMeasure` string, nullable
      - `PlanAddOns` PlanAddOn[], nullable
        - `Uid` string, nullable
        - `_objectType` string, nullable
        - `Created` string, date-time, required
        - `Updated` string, date-time, required
        - `ActivityEventData` unknown
        - `Plan` Plan (recursive)
        - `AddOn` AddOn
          - `Uid` string, nullable
          - `_objectType` string, nullable
          - `Created` string, date-time, required
          - `Updated` string, date-time, required
          - `ActivityEventData` unknown
          - `Name` string, nullable
          - `BillingAddOnType` 1 | 2 | 3: `1` - Recurring, `2` - Usage, `3` - OneTime
          - `IsQuantityEditable` boolean, required
          - `MinimumQuantity` integer
          - `MonthlyRate` number
          - `AnnualRate` number
          - `SetupFee` number
          - `UnitOfMeasure` string, nullable
          - `IsTaxable` boolean, required
          - `IsBilledDuringTrial` boolean, required
          - `ExpiresAfterMonths` integer
          - `ExpirationDate` string, date-time, nullable
          - `StripeTaxCodeId` string, nullable
          - `PlanAddOns` PlanAddOn[], nullable
          - `ContentGroups` ContentGroup[], nullable
            - `Uid` string, nullable
            - `_objectType` string, nullable
            - `Created` string, date-time, required
            - `Updated` string, date-time, required
            - `ActivityEventData` unknown
            - `Name` string, required
            - `AccessDeniedPath` string, nullable
            - `ContentGroupItems` ContentGroupItem[], nullable
              - …
            - `AllowedPlans` Plan[], nullable
            - `AllowedProducts` StripeProduct[], nullable
              - …
            - `AllowedAddOns` AddOn[], nullable
          - `IsPerUser` boolean
          - `QuarterlyRate` number
          - `OneTimeRate` number
          - `SubscriptionCount` integer
          - `Quantity` integer
        - `IsUserSelectable` boolean, required
      - `ContentGroups` ContentGroup[], nullable
        - `Uid` string, nullable
        - `_objectType` string, nullable
        - `Created` string, date-time, required
        - `Updated` string, date-time, required
        - `ActivityEventData` unknown
        - `Name` string, required
        - `AccessDeniedPath` string, nullable
        - `ContentGroupItems` ContentGroupItem[], nullable
          - `Uid` string, nullable
          - `_objectType` string, nullable
          - `Created` string, date-time, required
          - `Updated` string, date-time, required
          - `ActivityEventData` unknown
          - `Pattern` string, required
          - `MatchMode` 1 | 2, required: `1` - Equals, `2` - StartsWith
          - `ContentGroup` ContentGroup, required (recursive)
        - `AllowedPlans` Plan[], nullable
        - `AllowedProducts` StripeProduct[], nullable
          - `Uid` string, nullable
          - `_objectType` string, nullable
          - `Created` string, date-time, required
          - `Updated` string, date-time, required
          - `ActivityEventData` unknown
          - `SchemaLessData` object, nullable
          - `StripeId` string, nullable
          - `IsLivemode` boolean
          - `Name` string, nullable
          - `DefaultPriceId` string, nullable
          - `Description` string, nullable
          - `IsActive` boolean
          - `TaxCodeId` string, nullable
          - `UnitLabel` string, nullable
          - `ContentGroups` ContentGroup[], nullable
          - `StripePrices` StripePrice[], nullable
            - `Uid` string, nullable
            - `_objectType` string, nullable
            - `Created` string, date-time, required
            - `Updated` string, date-time, required
            - `ActivityEventData` unknown
            - `SchemaLessData` object, nullable
            - `StripeId` string, nullable
            - `IsLivemode` boolean
            - `BillingScheme` string, nullable
            - `Currency` string, nullable
            - `CustomUnitAmount_Maximum` integer, nullable
            - `CustomUnitAmount_Minimum` integer, nullable
            - `CustomUnitAmount_Preset` integer, nullable
            - `IsActive` boolean
            - `Nickname` string, nullable
            - `Recurring_Interval` string, nullable
            - `Recurring_IntervalCount` integer, nullable
            - `Recurring_StripeMeter` StripeMeter
              - …
            - `Recurring_UsageType` string, nullable
            - `StripeProduct` StripeProduct (recursive)
            - `TaxBehavior` string, nullable
            - `TiersMode` string, nullable
            - `TransformQuantity_DivideBy` integer, nullable
            - `Type` string, nullable
            - `UnitAmount` integer, nullable
            - `UnitAmountDecimal` number, nullable
            - `ShowInSignUpForm` boolean
            - `CurrencySymbol` string, nullable
            - `CurrencyUnitAmount` number, nullable
            - `CurrencyUnitAmountDecimal` number, nullable
            - `Recurring_IntervalDays` integer, nullable
            - `Recurring_Description` string, nullable
            - `StripeMeterId` string, nullable
            - `StripeProductId` string, nullable
          - `AccountRegistrationMode` 1 | 2: `1` - Individual, `2` - Team
          - `ExpiresAfterMonths` integer
          - `ExpirationDate` string, date-time, nullable
          - `IsPerUser` boolean
          - `IsQuantityEditable` boolean
          - `MaximumPeople` integer, nullable
          - `MigratedAddOnUid` string, nullable
          - `MigratedPlanUid` string, nullable
          - `MinimumQuantity` integer, nullable
          - `PostLoginPath` string, nullable
          - `PostPurchaseUrl` string, nullable
          - `RequirePaymentInformation` boolean
          - `StripeProductCrossSells` StripeProductCrossSell[], nullable
            - `Uid` string, nullable
            - `_objectType` string, nullable
            - `Created` string, date-time, required
            - `Updated` string, date-time, required
            - `ActivityEventData` unknown
            - `StripeProduct` StripeProduct (recursive)
            - `CrossSellProduct` StripeProduct (recursive)
            - `IsUserSelectable` boolean
          - `TrialPeriodDays` integer
          - `TrialUntilDate` string, date-time, nullable
          - `CanDelete` boolean
          - `NumberOfPurchases` integer
          - `NumberOfSubscriptions` integer
          - `Quantity` integer, nullable
          - `StripeProductFamily` StripeProductFamily
            - `Uid` string, nullable
            - `_objectType` string, nullable
            - `Created` string, date-time, required
            - `Updated` string, date-time, required
            - `ActivityEventData` unknown
            - `SchemaLessData` object, nullable
            - `Name` string, nullable
            - `IsActive` boolean
            - `IsDefault` boolean
            - `StripeProducts` StripeProduct[], nullable
        - `AllowedAddOns` AddOn[], nullable
          - `Uid` string, nullable
          - `_objectType` string, nullable
          - `Created` string, date-time, required
          - `Updated` string, date-time, required
          - `ActivityEventData` unknown
          - `Name` string, nullable
          - `BillingAddOnType` 1 | 2 | 3: `1` - Recurring, `2` - Usage, `3` - OneTime
          - `IsQuantityEditable` boolean, required
          - `MinimumQuantity` integer
          - `MonthlyRate` number
          - `AnnualRate` number
          - `SetupFee` number
          - `UnitOfMeasure` string, nullable
          - `IsTaxable` boolean, required
          - `IsBilledDuringTrial` boolean, required
          - `ExpiresAfterMonths` integer
          - `ExpirationDate` string, date-time, nullable
          - `StripeTaxCodeId` string, nullable
          - `PlanAddOns` PlanAddOn[], nullable
            - `Uid` string, nullable
            - `_objectType` string, nullable
            - `Created` string, date-time, required
            - `Updated` string, date-time, required
            - `ActivityEventData` unknown
            - `Plan` Plan (recursive)
            - `AddOn` AddOn (recursive)
            - `IsUserSelectable` boolean, required
          - `ContentGroups` ContentGroup[], nullable
          - `IsPerUser` boolean
          - `QuarterlyRate` number
          - `OneTimeRate` number
          - `SubscriptionCount` integer
          - `Quantity` integer
      - `NumberOfSubscriptions` integer, nullable
    - `DiscountCoupon` DiscountCoupon (recursive)
  - `ApplyToAddOns` boolean
  - `IsInUse` boolean, nullable
  - `PlanUids` string, nullable

## Other responses

- `401`: Unauthorized

---

[API](https://skmtc.dev/outseta/apis/outseta-api.md) · [All operations](https://skmtc.dev/outseta/apis/outseta-api/llms.txt) · [OpenAPI document](https://skmtc.dev/outseta/apis/outseta-api/revisions/c362823af82d?raw)
