Skip to main content
PATCH
/
coupons
/
coupon
/
{couponName}
curl -X PATCH \
  'https://api.appcharge.com/coupons/coupon/summer26' \
  -H 'Content-Type: application/json' \
  -H 'x-publisher-token: <x-publisher-token>' \
  -d '{
    "active": false,
    "maxRedemptionsPerCustomer": null,
    "expiredBy": null,
    "startsAt": "2026-06-16T09:30:53.378Z",
    "supportedOfferExternalIds": ["1", "3"],
    "firstTimePurchase": false,
    "allowedPlayers": ["player123", "player456"]
}'
{
    "name": "summer26",
    "active": false,
    "discountPercentage": 10,
    "maxRedemptionsPerCustomer": null,
    "expiredBy": null,
    "startsAt": "2026-06-16T09:30:53.378Z",
    "supportedOfferExternalIds": ["1", "3"],
    "firstTimePurchase": false,
    "allowedPlayers": ["player123", "player456"]
}
curl -X PATCH \
  'https://api.appcharge.com/coupons/coupon/summer26' \
  -H 'Content-Type: application/json' \
  -H 'x-publisher-token: <x-publisher-token>' \
  -d '{
    "active": false,
    "maxRedemptionsPerCustomer": null,
    "expiredBy": null,
    "startsAt": "2026-06-16T09:30:53.378Z",
    "supportedOfferExternalIds": ["1", "3"],
    "firstTimePurchase": false,
    "allowedPlayers": ["player123", "player456"]
}'
{
    "name": "summer26",
    "active": false,
    "discountPercentage": 10,
    "maxRedemptionsPerCustomer": null,
    "expiredBy": null,
    "startsAt": "2026-06-16T09:30:53.378Z",
    "supportedOfferExternalIds": ["1", "3"],
    "firstTimePurchase": false,
    "allowedPlayers": ["player123", "player456"]
}

Authorizations

x-publisher-token
string
header
required

Publisher token, as displayed in the Publisher Dashboard.

Path Parameters

couponName
string
required

Coupon name.

Example:

"summer26"

Body

application/json
active
boolean

Whether the coupon is active.

Example:

false

maxRedemptionsPerCustomer
integer | null

Maximum number of times a customer can redeem this coupon. Set to null to remove the maximum redemptions per customer.

Example:

5

expiredBy
string<date-time> | null

Expiration date of the coupon. Set to null to remove the expiration date and make the coupon permanent.

Example:

"2026-12-31T23:59:59.000Z"

startsAt
string<date-time>

Start date of the coupon validity. If not provided, defaults to current date and time.

Example:

"2026-06-16T09:30:53.378Z"

supportedOfferExternalIds
string[]

List of offer external IDs that support this coupon. Empty array means all offers are supported.

Note: This represents both the offer.sku value in the Create Checkout Session API, and the publisherOfferId in the Offers V2 API.

Example:
["bundle1", "rollingoffer3"]
firstTimePurchase
boolean

Whether the coupon is only valid for first-time purchases.

Example:

false

allowedPlayers
string[]

List of player IDs allowed to use this coupon. Empty array means all players are allowed.

Example:
["player123", "player456"]

Response

Coupon updated successfully.

name
string

Coupon name.

Example:

"summer26"

active
boolean

Whether the coupon is active.

Example:

true

discountPercentage
number

Discount percentage applied by the coupon.

Example:

1

maxRedemptionsPerCustomer
integer

Maximum number of times a customer can redeem this coupon.

Example:

2

expiredBy
string<date-time>

Expiration date of the coupon.

Example:

"2025-04-02T06:54:51.670Z"

startsAt
string<date-time>

Start date of the coupon validity.

Example:

"2025-02-02T06:54:51.670Z"

supportedOfferExternalIds
string[]

List of offer external IDs that support this coupon. Empty array means all offers are supported.

Example:
["bundle1", "rollingoffer3"]
firstTimePurchase
boolean

Whether the coupon is only valid for first-time purchases.

Example:

false

allowedPlayers
string[]

List of player IDs allowed to use this coupon. Empty array means all players are allowed.

Example:
["player123", "player456", "player789"]