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

Webhook Data Structure

When your webhook receives a payment or subscription event, a JSON payload is sent.

Payment success webhook payload

The payment.success webhook tells your integration that a customer has completed a purchase. This page explains the fields in its payload, including customer identifiers, purchased products, and commands configured for your integration.

Example payload

{
  "event": "payment.success",
  "created_at": "2026-09-29T13:00:54.000Z",
  "request_id": "e74d0cfe-acb0b0cb-224491e6-09c3b468",
  "webhook_id": 1,
  "integration_key": "partner-19560-f7e214b2dfb2a9n1", // For Partner integration only
  "store_id": 31,
  "mode": "test",
  "data": {
    "id": 1085674, // Tip4Serv payment or subscription record ID
    "type": 1, // 1 for a payment or 2 for a subscription.
    "gateway": "none",
    "amount": {
      "total_paid": 9.89,
      "currency": "EUR"
    },
    "user": {
      "email": "example@gmail.com",
      "username": "Murga",
      "steam_id": "76561198030562985",
      "steam_username": "Murg@ Tor",
      "minecraft_uuid": "87ac351717f74762bfcaeff0ddd1a9bd",
      "minecraft_username": "Murga",
      "eosid": "84535555555555555555555555555555",
      "discord_id": "376441921087995906",
      "discord_username": "Murga"
    },
    "basket": [
      {
        "id": "104",
        "sub_key": "31t9xjmv",
        "name": "Test Minecraft",
        "price": "8.99",
        "quantity": "1",
        "custom_fields": {
          "1": {
            "field_id": 1,
            "name": "My New Field",
            "value": {
              "option_id": "1",
              "name": "test1",
              "value": "test1",
              "price": 0.9
            },
            "total_price": 0.9,
            "type": "selection",
            "marker": "test",
            "if_not_filled": "do_not_execute"
          }
        }
      }
    ],
    "actions": [
      {
        "server_id": "29940",
        "commands": [
          {
            "str": "give {custom:test} {discord_id} ok",
            "event": "0",
            "product_id": "104",
            "item_key": 0,
            "command_id": "0"
          }
        ]
      }
    ],
    "identifiers": [
      {
        "source": "seller",
        "field_id": 3481,
        "identifier_name": "purchase_code",
        "identifier_label": "Purchase Code",
        "identifier_value": "5456GF",
        "typed_value": "purchase_code:5456GF"
      }
    ]
  }
}

The example shows a test payment. Values and available fields can vary between purchases. In particular, some IDs, prices, and quantities may arrive as strings.

Main fields

Field

Meaning

event

The webhook event. This example uses payment.success. Here is the events list: https://docs.tip4serv.com/webhooks-developers-only/how-do-webhooks-work#example-events

created_at

When the event was created, in ISO 8601 format.

request_id

Identifier for this webhook event. The request_id remains the same across all retry attempts for that event, so you can use it as an idempotency key to prevent processing the same delivery more than once. A new event for the same payment receives a different request_id. For example, a renewal, expiration, refund, or seller-initiated resend is treated as a new event and has its own request_id.

webhook_id

ID of the webhook configuration that received the event.

integration_key

integration_key identifies the partner integration associated with the webhook if applicable.

store_id

ID of the store where the purchase was made.

mode

live for a real purchase or test for a test event.

data

Details of the payment, customer, products, actions, and identifiers.

data object

Field

Meaning

id

Tip4Serv payment or subscription record ID. Use together with data.type to uniquely identify the record.

type

1 for a payment or 2 for a subscription.

transaction_id

It is the PayPal or Stripe transaction ID. Unavailable for bypass and test payment.

gateway

Payment gateway used. Examples include stripe, paypal, free, and none.

amount.total_paid

Total amount paid in the indicated currency.

amount.currency

Currency code, such as EUR or USD.

user

Customer details and standard account identifiers.

basket

Products included in the purchase.

actions

Commands configured for Custom or Partner Integrations.

identifiers

Additional custom identifiers collected for this purchase.

user object

The user object contains the customer’s standard details and linked identities:

Field

Meaning

email

Customer email address.

username

Customer display name.

steam_id, steam_username

Steam identity.

minecraft_uuid, minecraft_username

Minecraft identity.

eosid

ARK: Survival Ascended identifier.

fivem_citizen_id

FiveM citizen identifier, when collected.

discord_id, discord_username

Discord identity.

Some fields may be absent if they were not collected or the customer did not link that service.

basket array

Each entry in basket represents a purchased product.

Field

Meaning

id

Product ID.

sub_key

Identifier for this basket entry.

name

Product name.

price

Product price in the purchase currency.

quantity

Quantity purchased.

custom_fields

Customer selections or values collected for this product, when configured.

A custom_fields entry can include the field’s name and ID, its selected value, any additional price, its type, and a marker used by configured commands. For example, a command containing {custom:test} refers to a custom field with the marker test.

actions array

The actions array lists the commands configured for the current webhook event on servers associated with products in the customer’s basket. It includes servers with matching commands configured in the product editor for Custom Integrations or Partner Integrations added through My Servers.

Each action contains a server_id and a commands array. Each command includes a command_id, str (the command text), and product_id. Additional fields, such as event and item_key, may also be present.

The worker generates command_id as a string containing the command’s zero-based index in its configured list. Use that same value to identify the command when returning per-command results.

Commands for Tip4Serv’s built-in game integrations, such as Minecraft, Rust, and ARK, do not appear here. Tip4Serv handles those directly through RCON or the plugin installed on the game server.

identifiers array

The identifiers array contains additional custom identifiers collected for the purchase. These identifiers were configured either by the seller from the cart fields panel or by the integration partner. These are separate from the standard Steam, Minecraft, Discord, and other identities in user.

Each entry describes one identifier:

Field

Meaning

source

Where the identifier came from. In the example, seller means it was configured by the seller from cart fields. partner means it was configured by a partner integration.

field_id

ID of the field used to collect it.

identifier_name

Machine-readable name, such as purchase_code.

identifier_label

Label shown for the field, such as Purchase Code.

identifier_value

The value provided for this purchase.

typed_value

The identifier name and value together, such as purchase_code:5456GF.

Last updated