For the complete documentation index, see llms.txt. This page is also available as Markdown.

Products

Operations related to products

Get store products

get

Retrieves information about all products in your store. Use the page parameter to paginate results. Set details to true to include detailed product information. Set only_enabled to true to retrieve only enabled products.

Authorization:

  • Requires a valid JWT Bearer token.

  • The token must include the permission: read-products.

Authorizations
AuthorizationstringRequired
Bearer authentication header of the form Bearer <token>.
Query parameters
pageintegerOptional

The page number to retrieve.

Default: 1
max_pageintegerOptional

The maximum number of elements per page. This number must be between 5-50.

Default: 50
detailsbooleanOptional

Enable detailed response for each product.

Default: false
only_enabledbooleanOptional

Include only enabled products.

Default: false
categoryintegerOptional

Limit products to a specific category ID.

Example: 18
currencystringOptional

Display currency code (optional). Supported currencies: GBP, USD, EUR, CAD, AUD, CHF. If omitted, prices are displayed in store currency. Converts all product prices (price, old_price, min_donation) and custom field prices.

Example: USD
Responses
200

Successful operation

application/json
product_countnumberOptionalExample: 87
currencystringOptional

Currency in which all prices are expressed. Matches the requested currency parameter, or the store's default currency if not specified.

Example: GBP
get/store/products
GET /v1/store/products HTTP/1.1
Host: api.tip4serv.com
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
{
  "products": [
    {
      "id": "64",
      "name": "VIP +",
      "status": true,
      "slug": "vip-plus",
      "price": 17.99,
      "old_price": 19.99,
      "percent_off": 10,
      "recurring_discount": true,
      "discount_end": 1758563356951,
      "donation": false,
      "min_donation": 10,
      "small_description": "This product is quite amazing. It allows you to unlock our VIP +\nperks...\n",
      "category": 1,
      "subscription": true,
      "stock": 10,
      "duration_periodicity": "month",
      "period_num": 3,
      "trial": 7,
      "featured": true,
      "image": "https://cdn.tip4serv.com/shops-img/example.png",
      "created_date": 1753098967,
      "currency": "GBP"
    }
  ],
  "product_count": 87,
  "currency": "GBP"
}

Get store categories

get

Retrieves information about all categories. Use page to paginate results. Use parent to filter subcategories of a specific parent category.

Authorization:

  • Requires a valid JWT Bearer token.

  • The token must include the permission: read-products.

Authorizations
AuthorizationstringRequired
Bearer authentication header of the form Bearer <token>.
Query parameters
pageintegerOptional

The page number to retrieve.

Default: 1
max_pageintegerOptional

The maximum number of elements per page. This number must be between 5-50.

Default: 50
parentintegerOptional

The parent category to which we will retrieve it's sub-categories. By default it won't filter by parent category.

Default: 1
Responses
200

Successful operation

application/json
category_countnumberOptionalExample: 8
get/store/categories
GET /v1/store/categories HTTP/1.1
Host: api.tip4serv.com
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
{
  "categories": [
    {
      "id": 67,
      "name": "Perks",
      "description": "In this category, you will find special perks for the Duster Epic Rust server. Ranging from vehicles to epic items.",
      "slug": "perks",
      "hide": false,
      "main_redirect": false,
      "parent_id": 1
    }
  ],
  "category_count": 8
}

Get product by slug

get

Retrieves detailed information about a single product identified by it's slug. set details to true for full product details.

Authorization:

  • Requires a valid JWT Bearer token.

  • The token must include the permission: read-products.

Authorizations
AuthorizationstringRequired
Bearer authentication header of the form Bearer <token>.
Path parameters
slugstringRequired

the slug of the product to retrieve.

Example: vip-plus
Query parameters
detailsbooleanOptional

Enable detailed response.

currencystringOptional

Display currency code (optional). Supported currencies: GBP, USD, EUR, CAD, AUD, CHF. If omitted, prices are displayed in store currency. Converts all product prices (price, old_price, min_donation) and custom field prices.

Example: USD
Responses
200

Product found successfully

application/json
idintegerRequired

Unique identifier of the product.

Example: 40
namestringRequired

Name of the product.

Example: VIP +
statusbooleanRequired

Indicates whether the product is enabled.

Example: true
slugstringRequired

URL-friendly name of the product.

Example: vip-plus
priceintegerRequired

Current price of the product after any applicable discounts. Expressed in the store's currency, or the requested display currency if the currency parameter was used.

Example: 17.99
old_priceintegerOptional

Original price of the product without discounts. Expressed in the store's currency, or the requested display currency if the currency parameter was used.

Example: 19.99
percent_offintegerOptional

Percentage off from the original price if a discount applies.

Example: 10
recurring_discountbooleanOptional

Indicates whether the discount is applied on each occurrence of the subscription.

Example: true
discount_endintegerOptional

Timestamp of the discount expiration. (expressed in the store timezone)

Example: 1758563356951
donationbooleanOptional

Indicates if the product is a donation-type product, this allow the user to choose the amount of the donation, price therefore defines the minimum donation amount.

Example: false
min_donationnumberOptional

Minimum donation amount (only present if donation is true). If currency parameter is used, this value is converted to the requested currency.

Example: 10
descriptionstringRequired

Full description of the product.

Example: This product is quite amazing. It allows you to unlock our VIP + perks and showcase your skills on our server.
gallerystring[]Required

List of all images related to the product.

Example: ["https://cdn.tip4serv.com/shops-img/example.png","https://cdn.tip4serv.com/shops-img/another_image.jpg"]
youtubestringOptional

URL of the video associated with the product.

Example: https://youtu.be/K1QICrgxTjA
categoryone ofRequired

Category the product belongs to (integer or full category object if details are enabled).

Example: 1
integerOptional
or
featuredbooleanRequired

Indicates whether the product is featured.

Example: true
stockintegerRequired

Available stock of the product.

Example: 10
trialintegerRequired

Number of trial days available for this product.

Example: 14
renewal_startstringOptional

If trial days are enabled, defines when commands in the "Do this after each renewal payment" event start.

Accepted values:
first_payment, second_payment

Example: first_payment
delivery_methodstringRequired

Indicates the delivery method used to deliver the actions of the product. Can Possible values:

  • all_servers : will deliver the product commands on every servers. - server_choice : the user will be prompted to choose on which server he wish to receive his product. - auto_detect : Tip4Serv will automatically detect on which server the user is connected, and deliver only on this server. If no option is specified, the default option will be set to all_servers
server_choicebooleanRequired

Indicates whether the customer can select the server for product delivery. ⚠ This flag is deprecated, please use delivery_mode instead, to know the delivery method of the actions.

Example: false
quantitybooleanRequired

Indicates whether the customer can select the quantity to purchase.

Example: true
cmd_multiplierbooleanOptional

If quantity is selectable, determines whether commands are multiplied by the chosen quantity.

Example: false
filesbooleanRequired

Indicates if the product provides downloadable files upon purchase.

Example: false
subscriptionbooleanRequired

Indicates whether the product is a subscription.

Example: true
disable_giftcard_paymentsbooleanOptional

Indicates whether the product can be purchased with a giftcard. If not specified this option will be set to false by default. If set to true a customer won't be able to purchase this product with a giftcard.

giftcardbooleanRequired

Indicates whether the product supports gift cards.

Example: false
giftcard_expirationbooleanOptional

Indicates whether the generated gift card will eventually expire.

Example: false
giftcard_expiration_duration_periodicitystringOptional

Unit of time for the gift card expiration duration.

Possible values:

  • day – duration in days - week – duration in weeks - month – duration in months - year – duration in years

Example: If duration_periodicity = month and period_num = 3, the giftcard will expire 3 months after the purchase.

Example: month
giftcard_expiration_period_numintegerOptional

Number of duration_periodicity units before the giftcard expires. Examples:

  • Giftcard expires after 3 months
  • Giftcard expires after 1 year Example: period_num: 3 → charge every 3 months
Example: 3
enable_stockbooleanRequired

Indicates if stock management is enabled for the product.

Example: false
subscription_cyclestringOptional

Determines whether subscriptions are recurring or expire by default. Accepted values: each, expire

Example: each
cumul_subbooleanRequired

If set to false prevents customers from subscribing to the same product multiple times.

Example: false
onetime_subbooleanOptional

Allows customers to purchase the product for a single billing cycle without subscribing.

Example: false
enable_trialbooleanRequired

Indicates whether trial days are enabled.

Example: true
duration_periodicitystringOptional

Unit of time for the subscription duration.

Possible values:

  • day – duration in days
  • week – duration in weeks
  • month – duration in months
  • year – duration in years

Example: If duration_periodicity = month and period_num = 3, the subscription lasts 3 months.

Example: month
period_numnumberOptional

Number of duration_periodicity units before the subscription expires or the next charge occurs.

Examples:

  • Charge the customer every 3 months
  • Charge the customer every 1 year

Accepted ranges:

  • 1–99 for days
  • 1–52 for weeks
  • 1–12 for months
  • 1–1 for years

Example: period_num: 3 → charge every 3 months

Example: 3
created_dateintegerRequired

Timestamp of product creation in the store's timezone.

Example: 1758563300951
last_editedintegerRequired

Timestamp of the last product modification in the store's timezone.

Example: 1758563356951
currencystringOptional

Currency in which all prices are expressed. Matches the requested currency parameter, or the store's default currency if not specified.

Example: GBP
get/store/product/{slug}
GET /v1/store/product/{slug} HTTP/1.1
Host: api.tip4serv.com
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
{
  "id": "40",
  "name": "VIP +",
  "status": true,
  "slug": "vip-plus",
  "price": 17.99,
  "old_price": 19.99,
  "percent_off": 10,
  "recurring_discount": true,
  "discount_end": 1758563356951,
  "donation": false,
  "min_donation": 10,
  "description": "This product is quite amazing. It allows you to unlock our VIP + perks and showcase your skills on our server.",
  "gallery": [
    "https://cdn.tip4serv.com/shops-img/example.png",
    "https://cdn.tip4serv.com/shops-img/another_image.jpg"
  ],
  "youtube": "https://youtu.be/K1QICrgxTjA",
  "category": 1,
  "featured": true,
  "stock": 10,
  "trial": 14,
  "renewal_start": "first_payment",
  "delivery_method": "text",
  "server_choice": false,
  "quantity": true,
  "cmd_multiplier": false,
  "files": false,
  "subscription": true,
  "disable_giftcard_payments": true,
  "giftcard": false,
  "giftcard_expiration": false,
  "giftcard_expiration_duration_periodicity": "month",
  "giftcard_expiration_period_num": 3,
  "enable_stock": false,
  "subscription_cycle": "each",
  "cumul_sub": false,
  "onetime_sub": false,
  "enable_trial": true,
  "purchase_limit": {
    "purchase_times": 2,
    "type": "every",
    "cycle": 3,
    "periodicity": "month"
  },
  "duration_periodicity": "month",
  "period_num": 3,
  "custom_rules": [
    {
      "id": 1,
      "order": 1,
      "name": "My new rule",
      "type": "number_limit",
      "min": 1,
      "max": 1,
      "fields": [
        1,
        3
      ]
    }
  ],
  "custom_fields": [
    {
      "id": 1,
      "order": 1,
      "name": "My custom field",
      "type": "text",
      "marker": "bonus_points",
      "if_not_filled": "text",
      "default_value": 10,
      "required": true,
      "minimum": 1,
      "maximum": 100,
      "step": 1,
      "number_type": "text",
      "price": 2.5,
      "options": [
        {
          "id": 2,
          "order": 2,
          "name": "Red",
          "value": 3,
          "price": 2.5
        }
      ]
    }
  ],
  "created_date": 1758563300951,
  "last_edited": 1758563356951,
  "server_options": [
    {
      "id": 10,
      "name": "Duster SMP #1"
    }
  ],
  "actions": {
    "36252": {
      "payment_command": [
        {
          "str": "AddPoints {steam_id} 5000",
          "event": "Must be online"
        },
        {
          "str": "say Thanks {steam_username} for your purchase!",
          "event": "Execute"
        }
      ],
      "refund_command": [
        {
          "str": "RemovePoints {steam_id} 5000",
          "event": "Must be online"
        }
      ]
    }
  },
  "currency": "GBP"
}

Create a product

post

Create a new product in your store.

Authorization:

  • Requires a valid JWT Bearer token.

  • The token must include the permission: create-discounts.

Authorizations
AuthorizationstringRequired
Bearer authentication header of the form Bearer <token>.
Body
namestringRequired

Name of the product.

Example: VIP +
statusbooleanOptional

Indicates whether the product is enabled. If not specified, the product will be automatically enabled

Default: trueExample: true
slugstringOptional

URL-friendly name of the product. If not specified will be automatically calculated.

Example: vip-plus
priceintegerRequired

Current price of the product after any applicable discounts, in the store's currency.

Example: 17.99
recurring_discountbooleanOptional

Indicates whether the discount is applied on each occurrence of the subscription.

Example: true
donationbooleanOptional

Indicates if the product is a donation-type product, this allow the user to choose the amount of the donation, price therefore defines the minimum donation amount.

Example: false
descriptionstringOptional

Full description of the product.

Example: This product is quite amazing. It allows you to unlock our VIP + perks and showcase your skills on our server.
youtubestringOptional

URL of the video associated with the product.

Example: https://youtu.be/K1QICrgxTjA
categoryone ofOptional

Category the product belongs to (integer or full category object if details are enabled). If not specified, the product will be automatically added to the default category.

Example: 1
integerOptional
or
featuredbooleanOptional

Indicates whether the product is featured. If not specified will be set to false.

Example: false
enable_stockintegerOptional

Enable a system of limited stock for this product. By default if not set, no stock system will be implemented.

Example: true
stockintegerOptional

Available stock of the product. enable_stock must be set to true first.

Example: 10
enable_trialbooleanOptional

Indicates whether trial days are enabled.

Example: true
trialintegerOptional

Number of trial days available for this product. If not specified no trial period will be set. enable_trial must first be set to true.

Example: 14
renewal_startstringOptional

If trial days are enabled, defines when commands in the "Do this after each renewal payment" event start.

Accepted values:
first_payment, second_payment

Example: first_payment
quantitybooleanOptional

Indicates whether the customer can select the quantity to purchase. If not specified customers will by default be able to purchase the product multiple times.

Example: true
cmd_multiplierbooleanOptional

If quantity is selectable, determines whether commands are multiplied by the chosen quantity. If set to true each command will be executed "quantity" times, by default cmd_multiplier is set to false.

Example: false
subscriptionbooleanOptional

Indicates whether the product is a subscription. If not specified the product will not be an subscription.

Example: false
disable_giftcard_paymentsbooleanOptional

Indicates whether the product can be purchased with a giftcard. If not specified this option will be set to false by default. If set to true a customer won't be able to purchase this product with a giftcard.

Example: false
giftcardbooleanOptional

Indicates whether the product supports gift cards. If not specified the product will not offer any giftcard.

Example: false
giftcard_expirationbooleanOptional

Indicates whether the generated gift card will eventually expire.

Example: false
giftcard_expiration_duration_periodicitystringOptional

Unit of time for the gift card expiration duration.

Possible values:

  • day – duration in days - week – duration in weeks - month – duration in months - year – duration in years

Example: If duration_periodicity = month and period_num = 3, the giftcard will expire 3 months after the purchase.

Example: month
giftcard_expiration_period_numintegerOptional

Number of duration_periodicity units before the giftcard expires. Examples:

  • Giftcard expires after 3 months
  • Giftcard expires after 1 year Example: period_num: 3 → charge every 3 months
Example: 3
subscription_cyclestringOptional

Determines whether subscriptions are recurring or expire by default. Accepted values: each, expire

Example: each
cumul_subbooleanOptional

If set to false prevents customers from subscribing to the same product multiple times. By default set to true.

Example: false
onetime_subbooleanOptional

Allows customers to purchase the product for a single billing cycle without subscribing. By default set to true.

Example: false
duration_periodicitystringOptional

Unit of time for the subscription duration.

Possible values:

  • day – duration in days
  • week – duration in weeks
  • month – duration in months
  • year – duration in years

Example: If duration_periodicity = month and period_num = 3, the subscription lasts 3 months.

Example: month
period_numnumberOptional

Number of duration_periodicity units before the subscription expires or the next charge occurs.

Examples:

  • Charge the customer every 3 months
  • Charge the customer every 1 year

Accepted ranges:

  • 1–99 for days
  • 1–52 for weeks
  • 1–12 for months
  • 1–1 for years

Example: period_num: 3 → charge every 3 months

If not specified will be set by default to 1.

Example: 3
Responses
200

Successful operation

application/json
idintegerRequired

Unique identifier of the product.

Example: 40
namestringRequired

Name of the product.

Example: VIP +
statusbooleanRequired

Indicates whether the product is enabled.

Example: true
slugstringRequired

URL-friendly name of the product.

Example: vip-plus
priceintegerRequired

Current price of the product after any applicable discounts. Expressed in the store's currency, or the requested display currency if the currency parameter was used.

Example: 17.99
old_priceintegerOptional

Original price of the product without discounts. Expressed in the store's currency, or the requested display currency if the currency parameter was used.

Example: 19.99
percent_offintegerOptional

Percentage off from the original price if a discount applies.

Example: 10
recurring_discountbooleanOptional

Indicates whether the discount is applied on each occurrence of the subscription.

Example: true
discount_endintegerOptional

Timestamp of the discount expiration. (expressed in the store timezone)

Example: 1758563356951
donationbooleanOptional

Indicates if the product is a donation-type product, this allow the user to choose the amount of the donation, price therefore defines the minimum donation amount.

Example: false
min_donationnumberOptional

Minimum donation amount (only present if donation is true). If currency parameter is used, this value is converted to the requested currency.

Example: 10
descriptionstringRequired

Full description of the product.

Example: This product is quite amazing. It allows you to unlock our VIP + perks and showcase your skills on our server.
gallerystring[]Required

List of all images related to the product.

Example: ["https://cdn.tip4serv.com/shops-img/example.png","https://cdn.tip4serv.com/shops-img/another_image.jpg"]
youtubestringOptional

URL of the video associated with the product.

Example: https://youtu.be/K1QICrgxTjA
categoryone ofRequired

Category the product belongs to (integer or full category object if details are enabled).

Example: 1
integerOptional
or
featuredbooleanRequired

Indicates whether the product is featured.

Example: true
stockintegerRequired

Available stock of the product.

Example: 10
trialintegerRequired

Number of trial days available for this product.

Example: 14
renewal_startstringOptional

If trial days are enabled, defines when commands in the "Do this after each renewal payment" event start.

Accepted values:
first_payment, second_payment

Example: first_payment
delivery_methodstringRequired

Indicates the delivery method used to deliver the actions of the product. Can Possible values:

  • all_servers : will deliver the product commands on every servers. - server_choice : the user will be prompted to choose on which server he wish to receive his product. - auto_detect : Tip4Serv will automatically detect on which server the user is connected, and deliver only on this server. If no option is specified, the default option will be set to all_servers
server_choicebooleanRequired

Indicates whether the customer can select the server for product delivery. ⚠ This flag is deprecated, please use delivery_mode instead, to know the delivery method of the actions.

Example: false
quantitybooleanRequired

Indicates whether the customer can select the quantity to purchase.

Example: true
cmd_multiplierbooleanOptional

If quantity is selectable, determines whether commands are multiplied by the chosen quantity.

Example: false
filesbooleanRequired

Indicates if the product provides downloadable files upon purchase.

Example: false
subscriptionbooleanRequired

Indicates whether the product is a subscription.

Example: true
disable_giftcard_paymentsbooleanOptional

Indicates whether the product can be purchased with a giftcard. If not specified this option will be set to false by default. If set to true a customer won't be able to purchase this product with a giftcard.

giftcardbooleanRequired

Indicates whether the product supports gift cards.

Example: false
giftcard_expirationbooleanOptional

Indicates whether the generated gift card will eventually expire.

Example: false
giftcard_expiration_duration_periodicitystringOptional

Unit of time for the gift card expiration duration.

Possible values:

  • day – duration in days - week – duration in weeks - month – duration in months - year – duration in years

Example: If duration_periodicity = month and period_num = 3, the giftcard will expire 3 months after the purchase.

Example: month
giftcard_expiration_period_numintegerOptional

Number of duration_periodicity units before the giftcard expires. Examples:

  • Giftcard expires after 3 months
  • Giftcard expires after 1 year Example: period_num: 3 → charge every 3 months
Example: 3
enable_stockbooleanRequired

Indicates if stock management is enabled for the product.

Example: false
subscription_cyclestringOptional

Determines whether subscriptions are recurring or expire by default. Accepted values: each, expire

Example: each
cumul_subbooleanRequired

If set to false prevents customers from subscribing to the same product multiple times.

Example: false
onetime_subbooleanOptional

Allows customers to purchase the product for a single billing cycle without subscribing.

Example: false
enable_trialbooleanRequired

Indicates whether trial days are enabled.

Example: true
duration_periodicitystringOptional

Unit of time for the subscription duration.

Possible values:

  • day – duration in days
  • week – duration in weeks
  • month – duration in months
  • year – duration in years

Example: If duration_periodicity = month and period_num = 3, the subscription lasts 3 months.

Example: month
period_numnumberOptional

Number of duration_periodicity units before the subscription expires or the next charge occurs.

Examples:

  • Charge the customer every 3 months
  • Charge the customer every 1 year

Accepted ranges:

  • 1–99 for days
  • 1–52 for weeks
  • 1–12 for months
  • 1–1 for years

Example: period_num: 3 → charge every 3 months

Example: 3
created_dateintegerRequired

Timestamp of product creation in the store's timezone.

Example: 1758563300951
last_editedintegerRequired

Timestamp of the last product modification in the store's timezone.

Example: 1758563356951
currencystringOptional

Currency in which all prices are expressed. Matches the requested currency parameter, or the store's default currency if not specified.

Example: GBP
post/store/product
POST /v1/store/product HTTP/1.1
Host: api.tip4serv.com
Authorization: Bearer YOUR_SECRET_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 1465

{
  "name": "VIP +",
  "status": true,
  "slug": "vip-plus",
  "price": 17.99,
  "recurring_discount": true,
  "donation": false,
  "description": "This product is quite amazing. It allows you to unlock our VIP + perks and showcase your skills on our server.",
  "youtube": "https://youtu.be/K1QICrgxTjA",
  "category": 1,
  "featured": false,
  "enable_stock": true,
  "stock": 10,
  "enable_trial": true,
  "trial": 14,
  "renewal_start": "first_payment",
  "quantity": true,
  "cmd_multiplier": false,
  "subscription": false,
  "disable_giftcard_payments": false,
  "giftcard": false,
  "giftcard_expiration": false,
  "giftcard_expiration_duration_periodicity": "month",
  "giftcard_expiration_period_num": 3,
  "custom_fields": [
    {
      "id": 1,
      "order": 1,
      "name": "My custom field",
      "type": "text",
      "marker": "bonus_points",
      "if_not_filled": "text",
      "default_value": 10,
      "required": true,
      "minimum": 1,
      "maximum": 100,
      "step": 1,
      "number_type": "text",
      "price": 2.5,
      "options": [
        {
          "id": 2,
          "order": 2,
          "name": "Red",
          "value": 3,
          "price": 2.5
        }
      ]
    }
  ],
  "custom_rules": [
    {
      "name": "My new rule",
      "type": "number_limit",
      "min": 1,
      "max": 1,
      "fields": [
        1,
        3
      ]
    }
  ],
  "subscription_cycle": "each",
  "cumul_sub": false,
  "onetime_sub": false,
  "duration_periodicity": "month",
  "period_num": 3,
  "purchase_limit": {
    "purchase_times": 2,
    "type": "every",
    "cycle": 3,
    "periodicity": "month"
  },
  "actions": {
    "36252": {
      "payment_command": [
        {
          "str": "AddPoints {steam_id} 5000",
          "event": "Must be online"
        },
        {
          "str": "say Thanks {steam_username} for your purchase!",
          "event": "Execute"
        }
      ],
      "refund_command": [
        {
          "str": "RemovePoints {steam_id} 5000",
          "event": "Must be online"
        }
      ]
    }
  }
}
{
  "id": "40",
  "name": "VIP +",
  "status": true,
  "slug": "vip-plus",
  "price": 17.99,
  "old_price": 19.99,
  "percent_off": 10,
  "recurring_discount": true,
  "discount_end": 1758563356951,
  "donation": false,
  "min_donation": 10,
  "description": "This product is quite amazing. It allows you to unlock our VIP + perks and showcase your skills on our server.",
  "gallery": [
    "https://cdn.tip4serv.com/shops-img/example.png",
    "https://cdn.tip4serv.com/shops-img/another_image.jpg"
  ],
  "youtube": "https://youtu.be/K1QICrgxTjA",
  "category": 1,
  "featured": true,
  "stock": 10,
  "trial": 14,
  "renewal_start": "first_payment",
  "delivery_method": "text",
  "server_choice": false,
  "quantity": true,
  "cmd_multiplier": false,
  "files": false,
  "subscription": true,
  "disable_giftcard_payments": true,
  "giftcard": false,
  "giftcard_expiration": false,
  "giftcard_expiration_duration_periodicity": "month",
  "giftcard_expiration_period_num": 3,
  "enable_stock": false,
  "subscription_cycle": "each",
  "cumul_sub": false,
  "onetime_sub": false,
  "enable_trial": true,
  "purchase_limit": {
    "purchase_times": 2,
    "type": "every",
    "cycle": 3,
    "periodicity": "month"
  },
  "duration_periodicity": "month",
  "period_num": 3,
  "custom_rules": [
    {
      "id": 1,
      "order": 1,
      "name": "My new rule",
      "type": "number_limit",
      "min": 1,
      "max": 1,
      "fields": [
        1,
        3
      ]
    }
  ],
  "custom_fields": [
    {
      "id": 1,
      "order": 1,
      "name": "My custom field",
      "type": "text",
      "marker": "bonus_points",
      "if_not_filled": "text",
      "default_value": 10,
      "required": true,
      "minimum": 1,
      "maximum": 100,
      "step": 1,
      "number_type": "text",
      "price": 2.5,
      "options": [
        {
          "id": 2,
          "order": 2,
          "name": "Red",
          "value": 3,
          "price": 2.5
        }
      ]
    }
  ],
  "created_date": 1758563300951,
  "last_edited": 1758563356951,
  "server_options": [
    {
      "id": 10,
      "name": "Duster SMP #1"
    }
  ],
  "actions": {
    "36252": {
      "payment_command": [
        {
          "str": "AddPoints {steam_id} 5000",
          "event": "Must be online"
        },
        {
          "str": "say Thanks {steam_username} for your purchase!",
          "event": "Execute"
        }
      ],
      "refund_command": [
        {
          "str": "RemovePoints {steam_id} 5000",
          "event": "Must be online"
        }
      ]
    }
  },
  "currency": "GBP"
}

Upload a thumbnail

post

Update a new product in your store.

Authorization:

  • Requires a valid JWT Bearer token.

  • The token must include the permission: create-products or update-products.

Authorizations
AuthorizationstringRequired
Bearer authentication header of the form Bearer <token>.
Path parameters
idintegerRequired

The ID of the product to attach the file to.

Example: 123
Body
filestring · binaryRequired

The thumbnail to upload. Ther image must not be heavier than 8Mb.

Responses
200

File uploaded successfully.

application/json
messagestringOptionalExample: The thumbnail was successfully uploaded.
statusintegerOptionalExample: 200
post/store/product/{id}/thumbnail
POST /v1/store/product/{id}/thumbnail HTTP/1.1
Host: api.tip4serv.com
Authorization: Bearer YOUR_SECRET_TOKEN
Content-Type: multipart/form-data
Accept: */*
Content-Length: 17

{
  "file": "binary"
}
{
  "message": "The thumbnail was successfully uploaded.",
  "status": 200
}

Upload an image to be displayed in the product gallery

post

Update a new product in your store.

Authorization:

  • Requires a valid JWT Bearer token.

  • The token must include the permission: create-products or update-products.

Authorizations
AuthorizationstringRequired
Bearer authentication header of the form Bearer <token>.
Path parameters
idintegerRequired

The ID of the product to attach the image to.

Example: 123
Body
filestring · binaryRequired

The image to upload. The image must not be heavier than 8Mb.

Responses
200

Image uploaded successfully.

application/json
messagestringOptionalExample: The image was successfully uploaded.
statusintegerOptionalExample: 200
post/store/product/{id}/gallery
POST /v1/store/product/{id}/gallery HTTP/1.1
Host: api.tip4serv.com
Authorization: Bearer YOUR_SECRET_TOKEN
Content-Type: multipart/form-data
Accept: */*
Content-Length: 17

{
  "file": "binary"
}
{
  "message": "The image was successfully uploaded.",
  "status": 200
}

Delete a monetized file

delete

Delete a monetized file.

Authorization:

  • Requires a valid JWT Bearer token.

  • The token must include the permission: create-products or update-products.

Authorizations
AuthorizationstringRequired
Bearer authentication header of the form Bearer <token>.
Path parameters
idintegerRequired

The ID of the product to attach the file to.

Example: 123
file_idintegerRequired

The id of the file attached to a product to delete.

Example: 1
Responses
200

File uploaded successfully.

application/json
messagestringOptionalExample: The file was successfully deleted.
statusintegerOptionalExample: 200
delete/store/product/{id}/file/{file_id}
DELETE /v1/store/product/{id}/file/{file_id} HTTP/1.1
Host: api.tip4serv.com
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
{
  "message": "The file was successfully deleted.",
  "status": 200
}

Upload a file to sell for a product

post

Upload a file to sell in your product.

Authorization:

  • Requires a valid JWT Bearer token.

  • The token must include the permission: create-products or update-products.

Authorizations
AuthorizationstringRequired
Bearer authentication header of the form Bearer <token>.
Path parameters
idintegerRequired

The ID of the product to attach the file to.

Example: 123
Body
expirationintegerOptional

Number of days the file remains available after purchase. Use -1 to keep the file valid forever.

(This will affect the other files for the same product)

Default: -1Example: -1
filestring · binaryRequired

The file to upload. The file must not be heavier than 50Mb.

Responses
200

File uploaded successfully.

application/json
idintegerRequired

Unique ID of the uploaded product file.

Example: 1
file_namestringRequired

Display name of the uploaded file.

Example: vip-pack.zip
expirationintegerRequired

Number of days the file remains available after purchase. -1 means the file never expires.

Example: -1
urlstring · uriOptional

Internal or signed URL used to download the file.

Example: https://api.tip4serv.com/v1/store/product/123/file/42/download
created_atintegerRequired

Unix timestamp when the file was uploaded.

Example: 1761234717
post/store/product/{id}/file
POST /v1/store/product/{id}/file HTTP/1.1
Host: api.tip4serv.com
Authorization: Bearer YOUR_SECRET_TOKEN
Content-Type: multipart/form-data
Accept: */*
Content-Length: 33

{
  "expiration": -1,
  "file": "binary"
}
{
  "id": 1,
  "file_name": "vip-pack.zip",
  "expiration": -1,
  "url": "https://api.tip4serv.com/v1/store/product/123/file/42/download",
  "created_at": 1761234717
}
delete

Delete a gallery image from the product.

Authorization:

  • Requires a valid JWT Bearer token.

  • The token must include the permission: create-products or update-products.

Authorizations
AuthorizationstringRequired
Bearer authentication header of the form Bearer <token>.
Path parameters
idintegerRequired

The ID of the product where the image is attached to.

Example: 123
image_idintegerRequired

The image_id corresponds to the gallery image position, starting at 1.

For example, given the gallery:

["image_1.webp", "image_2.webp", "image_3.png"]

To delete image_2.webp, send:

image_id = 2

Important: If your product uses both a thumbnail and a gallery, the thumbnail may appear at the beginning of the gallery array returned by the API.

Do not include the thumbnail when calculating the image_id.

For example, given:

["thumbnail.jpg", "image_1.webp", "image_2.webp", "image_3.png"]

To delete image_2.webp, the image_id is still 2, not 3.

Example: 1
Responses
200

Image successfully deleted.

application/json
messagestringOptionalExample: The image was successfully deleted.
statusintegerOptionalExample: 200
delete/store/product/{id}/gallery/{image_id}
DELETE /v1/store/product/{id}/gallery/{image_id} HTTP/1.1
Host: api.tip4serv.com
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
{
  "message": "The image was successfully deleted.",
  "status": 200
}

Get product by ID

get

Retrieves detailed information about a single product identified by id. Set details to true for full product details.

Authorization:

  • Requires a valid JWT Bearer token.

  • The token must include the permission: read-products.

Authorizations
AuthorizationstringRequired
Bearer authentication header of the form Bearer <token>.
Path parameters
idintegerRequired

The ID of the product to retrieve.

Query parameters
detailsbooleanOptional

Enable detailed response.

currencystringOptional

Display currency code (optional). Supported currencies: GBP, USD, EUR, CAD, AUD, CHF. If omitted, prices are displayed in store currency. Converts all product prices (price, old_price, min_donation) and custom field prices.

Example: USD
Responses
200

Product found successfully

application/json
idintegerRequired

Unique identifier of the product.

Example: 40
namestringRequired

Name of the product.

Example: VIP +
statusbooleanRequired

Indicates whether the product is enabled.

Example: true
slugstringRequired

URL-friendly name of the product.

Example: vip-plus
priceintegerRequired

Current price of the product after any applicable discounts. Expressed in the store's currency, or the requested display currency if the currency parameter was used.

Example: 17.99
old_priceintegerOptional

Original price of the product without discounts. Expressed in the store's currency, or the requested display currency if the currency parameter was used.

Example: 19.99
percent_offintegerOptional

Percentage off from the original price if a discount applies.

Example: 10
recurring_discountbooleanOptional

Indicates whether the discount is applied on each occurrence of the subscription.

Example: true
discount_endintegerOptional

Timestamp of the discount expiration. (expressed in the store timezone)

Example: 1758563356951
donationbooleanOptional

Indicates if the product is a donation-type product, this allow the user to choose the amount of the donation, price therefore defines the minimum donation amount.

Example: false
min_donationnumberOptional

Minimum donation amount (only present if donation is true). If currency parameter is used, this value is converted to the requested currency.

Example: 10
descriptionstringRequired

Full description of the product.

Example: This product is quite amazing. It allows you to unlock our VIP + perks and showcase your skills on our server.
gallerystring[]Required

List of all images related to the product.

Example: ["https://cdn.tip4serv.com/shops-img/example.png","https://cdn.tip4serv.com/shops-img/another_image.jpg"]
youtubestringOptional

URL of the video associated with the product.

Example: https://youtu.be/K1QICrgxTjA
categoryone ofRequired

Category the product belongs to (integer or full category object if details are enabled).

Example: 1
integerOptional
or
featuredbooleanRequired

Indicates whether the product is featured.

Example: true
stockintegerRequired

Available stock of the product.

Example: 10
trialintegerRequired

Number of trial days available for this product.

Example: 14
renewal_startstringOptional

If trial days are enabled, defines when commands in the "Do this after each renewal payment" event start.

Accepted values:
first_payment, second_payment

Example: first_payment
delivery_methodstringRequired

Indicates the delivery method used to deliver the actions of the product. Can Possible values:

  • all_servers : will deliver the product commands on every servers. - server_choice : the user will be prompted to choose on which server he wish to receive his product. - auto_detect : Tip4Serv will automatically detect on which server the user is connected, and deliver only on this server. If no option is specified, the default option will be set to all_servers
server_choicebooleanRequired

Indicates whether the customer can select the server for product delivery. ⚠ This flag is deprecated, please use delivery_mode instead, to know the delivery method of the actions.

Example: false
quantitybooleanRequired

Indicates whether the customer can select the quantity to purchase.

Example: true
cmd_multiplierbooleanOptional

If quantity is selectable, determines whether commands are multiplied by the chosen quantity.

Example: false
filesbooleanRequired

Indicates if the product provides downloadable files upon purchase.

Example: false
subscriptionbooleanRequired

Indicates whether the product is a subscription.

Example: true
disable_giftcard_paymentsbooleanOptional

Indicates whether the product can be purchased with a giftcard. If not specified this option will be set to false by default. If set to true a customer won't be able to purchase this product with a giftcard.

giftcardbooleanRequired

Indicates whether the product supports gift cards.

Example: false
giftcard_expirationbooleanOptional

Indicates whether the generated gift card will eventually expire.

Example: false
giftcard_expiration_duration_periodicitystringOptional

Unit of time for the gift card expiration duration.

Possible values:

  • day – duration in days - week – duration in weeks - month – duration in months - year – duration in years

Example: If duration_periodicity = month and period_num = 3, the giftcard will expire 3 months after the purchase.

Example: month
giftcard_expiration_period_numintegerOptional

Number of duration_periodicity units before the giftcard expires. Examples:

  • Giftcard expires after 3 months
  • Giftcard expires after 1 year Example: period_num: 3 → charge every 3 months
Example: 3
enable_stockbooleanRequired

Indicates if stock management is enabled for the product.

Example: false
subscription_cyclestringOptional

Determines whether subscriptions are recurring or expire by default. Accepted values: each, expire

Example: each
cumul_subbooleanRequired

If set to false prevents customers from subscribing to the same product multiple times.

Example: false
onetime_subbooleanOptional

Allows customers to purchase the product for a single billing cycle without subscribing.

Example: false
enable_trialbooleanRequired

Indicates whether trial days are enabled.

Example: true
duration_periodicitystringOptional

Unit of time for the subscription duration.

Possible values:

  • day – duration in days
  • week – duration in weeks
  • month – duration in months
  • year – duration in years

Example: If duration_periodicity = month and period_num = 3, the subscription lasts 3 months.

Example: month
period_numnumberOptional

Number of duration_periodicity units before the subscription expires or the next charge occurs.

Examples:

  • Charge the customer every 3 months
  • Charge the customer every 1 year

Accepted ranges:

  • 1–99 for days
  • 1–52 for weeks
  • 1–12 for months
  • 1–1 for years

Example: period_num: 3 → charge every 3 months

Example: 3
created_dateintegerRequired

Timestamp of product creation in the store's timezone.

Example: 1758563300951
last_editedintegerRequired

Timestamp of the last product modification in the store's timezone.

Example: 1758563356951
currencystringOptional

Currency in which all prices are expressed. Matches the requested currency parameter, or the store's default currency if not specified.

Example: GBP
get/store/product/{id}
GET /v1/store/product/{id} HTTP/1.1
Host: api.tip4serv.com
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
{
  "id": "40",
  "name": "VIP +",
  "status": true,
  "slug": "vip-plus",
  "price": 17.99,
  "old_price": 19.99,
  "percent_off": 10,
  "recurring_discount": true,
  "discount_end": 1758563356951,
  "donation": false,
  "min_donation": 10,
  "description": "This product is quite amazing. It allows you to unlock our VIP + perks and showcase your skills on our server.",
  "gallery": [
    "https://cdn.tip4serv.com/shops-img/example.png",
    "https://cdn.tip4serv.com/shops-img/another_image.jpg"
  ],
  "youtube": "https://youtu.be/K1QICrgxTjA",
  "category": 1,
  "featured": true,
  "stock": 10,
  "trial": 14,
  "renewal_start": "first_payment",
  "delivery_method": "text",
  "server_choice": false,
  "quantity": true,
  "cmd_multiplier": false,
  "files": false,
  "subscription": true,
  "disable_giftcard_payments": true,
  "giftcard": false,
  "giftcard_expiration": false,
  "giftcard_expiration_duration_periodicity": "month",
  "giftcard_expiration_period_num": 3,
  "enable_stock": false,
  "subscription_cycle": "each",
  "cumul_sub": false,
  "onetime_sub": false,
  "enable_trial": true,
  "purchase_limit": {
    "purchase_times": 2,
    "type": "every",
    "cycle": 3,
    "periodicity": "month"
  },
  "duration_periodicity": "month",
  "period_num": 3,
  "custom_rules": [
    {
      "id": 1,
      "order": 1,
      "name": "My new rule",
      "type": "number_limit",
      "min": 1,
      "max": 1,
      "fields": [
        1,
        3
      ]
    }
  ],
  "custom_fields": [
    {
      "id": 1,
      "order": 1,
      "name": "My custom field",
      "type": "text",
      "marker": "bonus_points",
      "if_not_filled": "text",
      "default_value": 10,
      "required": true,
      "minimum": 1,
      "maximum": 100,
      "step": 1,
      "number_type": "text",
      "price": 2.5,
      "options": [
        {
          "id": 2,
          "order": 2,
          "name": "Red",
          "value": 3,
          "price": 2.5
        }
      ]
    }
  ],
  "created_date": 1758563300951,
  "last_edited": 1758563356951,
  "server_options": [
    {
      "id": 10,
      "name": "Duster SMP #1"
    }
  ],
  "actions": {
    "36252": {
      "payment_command": [
        {
          "str": "AddPoints {steam_id} 5000",
          "event": "Must be online"
        },
        {
          "str": "say Thanks {steam_username} for your purchase!",
          "event": "Execute"
        }
      ],
      "refund_command": [
        {
          "str": "RemovePoints {steam_id} 5000",
          "event": "Must be online"
        }
      ]
    }
  },
  "currency": "GBP"
}

Delete the specified product.

delete

Delete the specified product.

Authorization:

  • Requires a valid JWT Bearer token.

  • The token must include the permissions: delete-products.

Authorizations
AuthorizationstringRequired
Bearer authentication header of the form Bearer <token>.
Path parameters
idintegerRequired

the ID of the product to update.

Responses
200

Successful operation

application/json
messagestringOptionalExample: The product has been successfully deleted.
statusnumberOptionalExample: 200
delete/store/product/{id}
DELETE /v1/store/product/{id} HTTP/1.1
Host: api.tip4serv.com
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
{
  "message": "The product has been successfully deleted.",
  "status": 200
}

Update a product

patch

Update a new product in your store.

Authorization:

  • Requires a valid JWT Bearer token.

  • The token must include the permission: update-products.

Authorizations
AuthorizationstringRequired
Bearer authentication header of the form Bearer <token>.
Path parameters
idintegerRequired

The ID of the product to update.

Body
namestringOptional

Name of the product.

Example: VIP +
statusbooleanOptional

Indicates whether the product is enabled. If not specified, the product will be automatically enabled

Default: trueExample: true
slugstringOptional

URL-friendly name of the product. If not specified will be automatically calculated.

Example: vip-plus
priceintegerOptional

Current price of the product after any applicable discounts, in the store's currency.

Example: 17.99
recurring_discountbooleanOptional

Indicates whether the discount is applied on each occurrence of the subscription.

Example: true
donationbooleanOptional

Indicates if the product is a donation-type product, this allow the user to choose the amount of the donation, price therefore defines the minimum donation amount.

Example: false
descriptionstringOptional

Full description of the product.

Example: This product is quite amazing. It allows you to unlock our VIP + perks and showcase your skills on our server.
youtubestringOptional

URL of the video associated with the product.

Example: https://youtu.be/K1QICrgxTjA
categoryone ofOptional

Category the product belongs to (integer or full category object if details are enabled). If not specified, the product will be automatically added to the default category.

Example: 1
integerOptional
or
featuredbooleanOptional

Indicates whether the product is featured. If not specified will be set to false.

Example: false
enable_stockintegerOptional

Enable a system of limited stock for this product. By default if not set, no stock system will be implemented.

Example: true
stockintegerOptional

Available stock of the product. enable_stock must be set to true first.

Example: 10
enable_trialbooleanOptional

Indicates whether trial days are enabled.

Example: true
trialintegerOptional

Number of trial days available for this product. If not specified no trial period will be set. enable_trial must first be set to true.

Example: 14
renewal_startstringOptional

If trial days are enabled, defines when commands in the "Do this after each renewal payment" event start.

Accepted values:
first_payment, second_payment

Example: first_payment
quantitybooleanOptional

Indicates whether the customer can select the quantity to purchase. If not specified customers will by default be able to purchase the product multiple times.

Example: true
cmd_multiplierbooleanOptional

If quantity is selectable, determines whether commands are multiplied by the chosen quantity. If set to true each command will be executed "quantity" times, by default cmd_multiplier is set to false.

Example: true
subscriptionbooleanOptional

Indicates whether the product is a subscription. If not specified the product will not be an subscription.

Example: false
disable_giftcard_paymentsbooleanOptional

Indicates whether the product can be purchased with a giftcard. If not specified this option will be set to false by default. If set to true a customer won't be able to purchase this product with a giftcard.

giftcardbooleanOptional

Indicates whether the product supports gift cards. If not specified the product will not offer any giftcard.

Example: false
giftcard_expirationbooleanOptional

Indicates whether the generated gift card will eventually expire.

Example: false
giftcard_expiration_duration_periodicitystringOptional

Unit of time for the gift card expiration duration.

Possible values:

  • day – duration in days - week – duration in weeks - month – duration in months - year – duration in years

Example: If duration_periodicity = month and period_num = 3, the giftcard will expire 3 months after the purchase.

Example: month
giftcard_expiration_period_numintegerOptional

Number of duration_periodicity units before the giftcard expires. Examples:

  • Giftcard expires after 3 months
  • Giftcard expires after 1 year Example: period_num: 3 → charge every 3 months
Example: 3
subscription_cyclestringOptional

Determines whether subscriptions are recurring or expire by default. Accepted values: each, expire

Example: each
cumul_subbooleanOptional

If set to false prevents customers from subscribing to the same product multiple times.

Example: false
onetime_subbooleanOptional

Allows customers to purchase the product for a single billing cycle without subscribing.

Example: false
duration_periodicitystringOptional

Unit of time for the subscription duration.

Possible values:

  • day – duration in days
  • week – duration in weeks
  • month – duration in months
  • year – duration in years

Example: If duration_periodicity = month and period_num = 3, the subscription lasts 3 months.

Example: month
period_numnumberOptional

Number of duration_periodicity units before the subscription expires or the next charge occurs.

Examples:

  • Charge the customer every 3 months
  • Charge the customer every 1 year

Accepted ranges:

  • 1–99 for days
  • 1–52 for weeks
  • 1–12 for months
  • 1–1 for years

Example: period_num: 3 → charge every 3 months

Example: 3
Responses
200

Successful operation

application/json
idintegerRequired

Unique identifier of the product.

Example: 40
namestringRequired

Name of the product.

Example: VIP +
statusbooleanRequired

Indicates whether the product is enabled.

Example: true
slugstringRequired

URL-friendly name of the product.

Example: vip-plus
priceintegerRequired

Current price of the product after any applicable discounts. Expressed in the store's currency, or the requested display currency if the currency parameter was used.

Example: 17.99
old_priceintegerOptional

Original price of the product without discounts. Expressed in the store's currency, or the requested display currency if the currency parameter was used.

Example: 19.99
percent_offintegerOptional

Percentage off from the original price if a discount applies.

Example: 10
recurring_discountbooleanOptional

Indicates whether the discount is applied on each occurrence of the subscription.

Example: true
discount_endintegerOptional

Timestamp of the discount expiration. (expressed in the store timezone)

Example: 1758563356951
donationbooleanOptional

Indicates if the product is a donation-type product, this allow the user to choose the amount of the donation, price therefore defines the minimum donation amount.

Example: false
min_donationnumberOptional

Minimum donation amount (only present if donation is true). If currency parameter is used, this value is converted to the requested currency.

Example: 10
descriptionstringRequired

Full description of the product.

Example: This product is quite amazing. It allows you to unlock our VIP + perks and showcase your skills on our server.
gallerystring[]Required

List of all images related to the product.

Example: ["https://cdn.tip4serv.com/shops-img/example.png","https://cdn.tip4serv.com/shops-img/another_image.jpg"]
youtubestringOptional

URL of the video associated with the product.

Example: https://youtu.be/K1QICrgxTjA
categoryone ofRequired

Category the product belongs to (integer or full category object if details are enabled).

Example: 1
integerOptional
or
featuredbooleanRequired

Indicates whether the product is featured.

Example: true
stockintegerRequired

Available stock of the product.

Example: 10
trialintegerRequired

Number of trial days available for this product.

Example: 14
renewal_startstringOptional

If trial days are enabled, defines when commands in the "Do this after each renewal payment" event start.

Accepted values:
first_payment, second_payment

Example: first_payment
delivery_methodstringRequired

Indicates the delivery method used to deliver the actions of the product. Can Possible values:

  • all_servers : will deliver the product commands on every servers. - server_choice : the user will be prompted to choose on which server he wish to receive his product. - auto_detect : Tip4Serv will automatically detect on which server the user is connected, and deliver only on this server. If no option is specified, the default option will be set to all_servers
server_choicebooleanRequired

Indicates whether the customer can select the server for product delivery. ⚠ This flag is deprecated, please use delivery_mode instead, to know the delivery method of the actions.

Example: false
quantitybooleanRequired

Indicates whether the customer can select the quantity to purchase.

Example: true
cmd_multiplierbooleanOptional

If quantity is selectable, determines whether commands are multiplied by the chosen quantity.

Example: false
filesbooleanRequired

Indicates if the product provides downloadable files upon purchase.

Example: false
subscriptionbooleanRequired

Indicates whether the product is a subscription.

Example: true
disable_giftcard_paymentsbooleanOptional

Indicates whether the product can be purchased with a giftcard. If not specified this option will be set to false by default. If set to true a customer won't be able to purchase this product with a giftcard.

giftcardbooleanRequired

Indicates whether the product supports gift cards.

Example: false
giftcard_expirationbooleanOptional

Indicates whether the generated gift card will eventually expire.

Example: false
giftcard_expiration_duration_periodicitystringOptional

Unit of time for the gift card expiration duration.

Possible values:

  • day – duration in days - week – duration in weeks - month – duration in months - year – duration in years

Example: If duration_periodicity = month and period_num = 3, the giftcard will expire 3 months after the purchase.

Example: month
giftcard_expiration_period_numintegerOptional

Number of duration_periodicity units before the giftcard expires. Examples:

  • Giftcard expires after 3 months
  • Giftcard expires after 1 year Example: period_num: 3 → charge every 3 months
Example: 3
enable_stockbooleanRequired

Indicates if stock management is enabled for the product.

Example: false
subscription_cyclestringOptional

Determines whether subscriptions are recurring or expire by default. Accepted values: each, expire

Example: each
cumul_subbooleanRequired

If set to false prevents customers from subscribing to the same product multiple times.

Example: false
onetime_subbooleanOptional

Allows customers to purchase the product for a single billing cycle without subscribing.

Example: false
enable_trialbooleanRequired

Indicates whether trial days are enabled.

Example: true
duration_periodicitystringOptional

Unit of time for the subscription duration.

Possible values:

  • day – duration in days
  • week – duration in weeks
  • month – duration in months
  • year – duration in years

Example: If duration_periodicity = month and period_num = 3, the subscription lasts 3 months.

Example: month
period_numnumberOptional

Number of duration_periodicity units before the subscription expires or the next charge occurs.

Examples:

  • Charge the customer every 3 months
  • Charge the customer every 1 year

Accepted ranges:

  • 1–99 for days
  • 1–52 for weeks
  • 1–12 for months
  • 1–1 for years

Example: period_num: 3 → charge every 3 months

Example: 3
created_dateintegerRequired

Timestamp of product creation in the store's timezone.

Example: 1758563300951
last_editedintegerRequired

Timestamp of the last product modification in the store's timezone.

Example: 1758563356951
currencystringOptional

Currency in which all prices are expressed. Matches the requested currency parameter, or the store's default currency if not specified.

Example: GBP
patch/store/product/{id}
PATCH /v1/store/product/{id} HTTP/1.1
Host: api.tip4serv.com
Authorization: Bearer YOUR_SECRET_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 1439

{
  "name": "VIP +",
  "status": true,
  "slug": "vip-plus",
  "price": 17.99,
  "recurring_discount": true,
  "donation": false,
  "description": "This product is quite amazing. It allows you to unlock our VIP + perks and showcase your skills on our server.",
  "youtube": "https://youtu.be/K1QICrgxTjA",
  "category": 1,
  "featured": false,
  "enable_stock": true,
  "stock": 10,
  "enable_trial": true,
  "trial": 14,
  "renewal_start": "first_payment",
  "quantity": true,
  "cmd_multiplier": true,
  "subscription": false,
  "disable_giftcard_payments": true,
  "giftcard": false,
  "giftcard_expiration": false,
  "giftcard_expiration_duration_periodicity": "month",
  "giftcard_expiration_period_num": 3,
  "custom_fields": [
    {
      "order": 1,
      "name": "My custom field",
      "type": "text",
      "marker": "bonus_points",
      "if_not_filled": "text",
      "default_value": 10,
      "required": true,
      "minimum": 1,
      "maximum": 100,
      "step": 1,
      "number_type": "text",
      "price": 2.5,
      "options": [
        {
          "name": "Red",
          "value": 3,
          "price": 2.5
        }
      ]
    }
  ],
  "custom_rules": [
    {
      "name": "My new rule",
      "type": "number_limit",
      "min": 1,
      "max": 1,
      "fields": [
        1,
        3
      ]
    }
  ],
  "subscription_cycle": "each",
  "cumul_sub": false,
  "onetime_sub": false,
  "duration_periodicity": "month",
  "period_num": 3,
  "purchase_limit": {
    "purchase_times": 2,
    "type": "every",
    "cycle": 3,
    "periodicity": "month"
  },
  "actions": {
    "36252": {
      "payment_command": [
        {
          "str": "AddPoints {steam_id} 5000",
          "event": "Must be online"
        },
        {
          "str": "say Thanks {steam_username} for your purchase!",
          "event": "Execute"
        }
      ],
      "refund_command": [
        {
          "str": "RemovePoints {steam_id} 5000",
          "event": "Must be online"
        }
      ]
    }
  }
}
{
  "id": "40",
  "name": "VIP +",
  "status": true,
  "slug": "vip-plus",
  "price": 17.99,
  "old_price": 19.99,
  "percent_off": 10,
  "recurring_discount": true,
  "discount_end": 1758563356951,
  "donation": false,
  "min_donation": 10,
  "description": "This product is quite amazing. It allows you to unlock our VIP + perks and showcase your skills on our server.",
  "gallery": [
    "https://cdn.tip4serv.com/shops-img/example.png",
    "https://cdn.tip4serv.com/shops-img/another_image.jpg"
  ],
  "youtube": "https://youtu.be/K1QICrgxTjA",
  "category": 1,
  "featured": true,
  "stock": 10,
  "trial": 14,
  "renewal_start": "first_payment",
  "delivery_method": "text",
  "server_choice": false,
  "quantity": true,
  "cmd_multiplier": false,
  "files": false,
  "subscription": true,
  "disable_giftcard_payments": true,
  "giftcard": false,
  "giftcard_expiration": false,
  "giftcard_expiration_duration_periodicity": "month",
  "giftcard_expiration_period_num": 3,
  "enable_stock": false,
  "subscription_cycle": "each",
  "cumul_sub": false,
  "onetime_sub": false,
  "enable_trial": true,
  "purchase_limit": {
    "purchase_times": 2,
    "type": "every",
    "cycle": 3,
    "periodicity": "month"
  },
  "duration_periodicity": "month",
  "period_num": 3,
  "custom_rules": [
    {
      "id": 1,
      "order": 1,
      "name": "My new rule",
      "type": "number_limit",
      "min": 1,
      "max": 1,
      "fields": [
        1,
        3
      ]
    }
  ],
  "custom_fields": [
    {
      "id": 1,
      "order": 1,
      "name": "My custom field",
      "type": "text",
      "marker": "bonus_points",
      "if_not_filled": "text",
      "default_value": 10,
      "required": true,
      "minimum": 1,
      "maximum": 100,
      "step": 1,
      "number_type": "text",
      "price": 2.5,
      "options": [
        {
          "id": 2,
          "order": 2,
          "name": "Red",
          "value": 3,
          "price": 2.5
        }
      ]
    }
  ],
  "created_date": 1758563300951,
  "last_edited": 1758563356951,
  "server_options": [
    {
      "id": 10,
      "name": "Duster SMP #1"
    }
  ],
  "actions": {
    "36252": {
      "payment_command": [
        {
          "str": "AddPoints {steam_id} 5000",
          "event": "Must be online"
        },
        {
          "str": "say Thanks {steam_username} for your purchase!",
          "event": "Execute"
        }
      ],
      "refund_command": [
        {
          "str": "RemovePoints {steam_id} 5000",
          "event": "Must be online"
        }
      ]
    }
  },
  "currency": "GBP"
}

Last updated