Skip to main content
An Offer object represents a specific pricing configuration for a Product that customers can purchase. Offers define the price, currency, region availability, and subscription terms (if applicable). A single Product can have multiple offers to support different regions, currencies, or pricing tiers. Offers can include product keys for digital goods that are automatically delivered upon purchase. Discounts can be applied to offers to reduce the price.

Endpoints

MethodEndpointDescription
GET/v0/offers/listList and filter offers
POST/v0/offers/createCreate a new offer
GET/v0/offers/{offerId}Retrieve an offer
PATCH/v0/offers/{offerId}/updateUpdate an offer
PATCH/v0/offers/{offerId}/archiveArchive an offer
POST/v0/offers/{offerId}/keys/addAdd product keys
POST/v0/offers/{offerId}/keys/removeRemove unsold keys
DELETE/v0/offers/{offerId}/keys/{keyId}Remove a specific key

The Offer object

object
string
Object type identifier. Always "offer" for Offer objects.
id
string
required
Unique identifier (UUID) for this offer.
internalId
string | null
Your custom identifier for this offer. Use to link to your own SKU system.
name
string | null
Display name of the offer (e.g., “Standard Edition”, “Premium Bundle”).
description
string | null
Description of what’s included in this offer.
price
number
required
Price in the specified currency. For Subscriptions, this is the recurring price.
originalPrice
number | null
Original price before any discount. Used to show strikethrough pricing.
currency
string
required
Three-letter ISO 4217 currency code (e.g., "USD", "EUR", "GBP").
region
string | null
Geographic region where this offer is available. Common values: Global, Europe, United States, United Kingdom, North America, Latin America, Asia, EMEA, Rest of the World
platform
string | null
Platform for digital product activation. Common values: Steam, Xbox Live, PSN, Nintendo, Epic Games, GOG.com, Origin, Battle.net, Ubisoft Connect
gtin
string | null
Global Trade Item Number (barcode) for the product.
warningMessage
string | null
Warning or disclaimer message to display to customers.
recurringInterval
string | null
Billing interval for Subscriptions. Possible values: day, week, month, year
recurringIntervalCount
integer | null
Number of intervals between billings. For example, 3 with month interval means billing every 3 months.
trialInterval
string | null
Trial period interval type. Possible values: day, week, month, year
trialIntervalCount
integer | null
Number of intervals for the trial period. For example, 14 with day interval means a 14-day trial.

Example response

{
  "status": "success",
  "data": {
    "offer": {
      "object": "offer",
      "id": "990e8400-e29b-41d4-a716-446655440004",
      "internalId": "sku_standard_us",
      "name": "Standard Edition",
      "description": "Base game with all launch content",
      "price": 59.99,
      "originalPrice": 69.99,
      "currency": "USD",
      "region": "United States",
      "platform": "Steam",
      "gtin": "1234567890123",
      "warningMessage": null,
      "recurringInterval": null,
      "recurringIntervalCount": null,
      "trialInterval": null,
      "trialIntervalCount": null
    }
  }
}

Subscription offer example

{
  "status": "success",
  "data": {
    "offer": {
      "object": "offer",
      "id": "aa0e8400-e29b-41d4-a716-446655440005",
      "internalId": "plan_pro_monthly",
      "name": "Pro Plan - Monthly",
      "description": "Full access to all features",
      "price": 29.99,
      "originalPrice": null,
      "currency": "USD",
      "region": "Global",
      "platform": null,
      "gtin": null,
      "warningMessage": null,
      "recurringInterval": "month",
      "recurringIntervalCount": 1,
      "trialInterval": "day",
      "trialIntervalCount": 14
    }
  }
}