Payment Validation
This guide explains how you can reply to Tip4Serv webhooks and how to control the validation (DELIVERED) of orders, either server-wide or per individual command.
Response Semantics
A) 200 OK response with no body
200 OK response with no bodyEffect:
- All orders contained in the event are marked as DELIVERED. 
- The related financial object (payment or subscription) is marked as processed. 
This is the default behavior: simple and global. Code example: Create an endpoint
B) 200 OK response with a targeted JSON
200 OK response with a targeted JSONTo validate only specific servers and/or commands, return application/json in the following format:
{
  "ok": true,
  "results": [
    {
      "server_id": "20859",
      "commands": [
        { "command_id": "0", "delivered": true },
        { "command_id": "1", "delivered": false, "error": "server unreachable" }
      ]
    },
    {
      "server_id": "20861",
      "delivered": true
    }
  ]
}Priority Rules
- Servers/commands absent from the JSON are not modified (they remain undelivered). 
- If - delivered: false+- erroris provided, the platform logs the error and does not attempt to mark the command as delivered.
Headers & Content-Type
- Content-Type: application/json; charset=utf-8
- Always return HTTP 200 if the request was authenticated and functionally processed (even if you reject some commands with - delivered: false).
- Use 401 only for invalid signature/timestamp: Secure & Handle Webhook 
3) Usage Examples
Example 1 — Validate everything (global)
Response:
HTTP/1.1 200 OK
Content-Length: 2
okExample 2 — Validate only some commands of a server
{
  "ok": true,
  "results": [
    {
      "server_id": "20859",
      "commands": [
        { "command_id": "0", "delivered": true },
        { "command_id": "1", "delivered": false, "error": "server unreachable" }
      ]
    }
  ]
}Example 3 — Validate an entire server at once
{
  "ok": true,
  "results": [
    { "server_id": "20861", "delivered": true }
  ]
}Example 4 — Validate nothing (acknowledged but functionally refused)
{
  "ok": true
}Last updated
