> ## Documentation Index
> Fetch the complete documentation index at: https://walletapi.oppigames.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Payout By Batch

> This API is **used exclusively in Multiplayer games** to process payouts for multiple users after a round ends. It allows updating balances for multiple players in a single call.

```http theme={null}
  POST  /transaction/payout-batch
```

## Functionality

* Adds the payout amount: Increases each user's balance based on their individual payout.
* Handles batch payout: Efficiently processes all eligible player payouts in one call.

Returns an array of responses with each user's updated balance post payout.

## Headers

<ParamField header="x-api-key" type="string" required>
  A unique identifier associated with operator calling API.
</ParamField>

<ParamField header="x-signature" type="string" required>
  A SHA256 HMAC signature generated using the request body and timestamp.
  Format: HMAC\_SHA256(JSON.stringify(data) + '|' + timestamp), signed using the
  provided secret key.
</ParamField>

<ParamField header="x-timestamp" type="string" required>
  An Unix timestamp (milliseconds) when the request was sent. Ensure the same
  value is used in signature generation.
</ParamField>

<ParamField header="content-type" type="string" required>
  Must be set to `application/json`
</ParamField>

## Request Body

<ParamField body="transactions" type="array" required>
  <Expandable title="properties">
    <ParamField body="transactionId" type="string" required example="dd96bda3-9990-4aed-9679-f451a4b82ac4">
      Unique identifier for the transaction.
    </ParamField>

    <ParamField body="refTransactionId" type="string" required example="05fc77cd8-4dd8-48a5-b6b4-1360d0b0f123">
      Unique identifier of the transaction that this transaction is referencing, which is the transactionId of the bet.
    </ParamField>

    <ParamField body="sessionId" type="string" required>
      Unique identifier for the game session.
    </ParamField>

    <ParamField body="roundId" type="string" required>
      Unique identifier for the game round.
    </ParamField>

    <ParamField body="playerId" type="string" required>
      Unique identifier for the player.
    </ParamField>

    <ParamField body="gameId" type="string" required>
      Unique identifier for the game.
    </ParamField>

    <ParamField body="currency" type="string" required>
      Player's current session currency code.
    </ParamField>

    <ParamField body="amount" type="number" required>
      The payout amount won by the player.

      <Note>
        To maintain precision and avoid floating-point errors, the bet field is processed as an integer value by multiplying the actual amount by `100000`.

        For example, a bet of `12.34567` will be represented as `1234567` in the API.
      </Note>
    </ParamField>

    <ParamField body="index" type="number" required>
      Index of the transaction.
    </ParamField>
  </Expandable>
</ParamField>

## Response

<ResponseField name="status" type="string" required>
  Code indicates status of the request weather it is succeed or failed. We have
  listed error codes <a href="/introduction#error-codes">here</a>
</ResponseField>

<ResponseField name="data" type="Data Array">
  <Expandable title="properties">
    <ResponseField name="status" type="string" required example="RS_OK">
      Status of the individual transaction.
    </ResponseField>

    <ResponseField name="transactionId" type="string" required example="dd96bda3-9990-4aed-9679-f451a4b82ac4">
      Unique identifier for the transaction.
    </ResponseField>

    <ResponseField name="refTransactionId" type="string" required example="05fc77cd8-4dd8-48a5-b6b4-1360d0b0f123">
      Unique identifier of the transaction that this transaction is referencing, which is the transactionId of the bet.
    </ResponseField>

    <ResponseField name="sessionId" type="string" required example="d404f1da-26a6-44ff-8b0f-559915152be11742537289208">
      Unique identifier for the session.
    </ResponseField>

    <ResponseField name="roundId" type="string" required example="123xaf1a-s7ax-lles-9aws-5hjtjshosqq2be117425">
      Unique identifier for the game round.
    </ResponseField>

    <ResponseField name="playerId" type="string" required example="18865671">
      Unique identifier for the player.
    </ResponseField>

    <ResponseField name="currency" type="string" required example="EUR">
      Player's current session currency code.
    </ResponseField>

    <ResponseField name="balance" type="number" required example="50000000">
      Player's balance after the transaction.

      <Note>
        To maintain precision and avoid floating-point errors, the balance field is processed as an integer value by multiplying the actual amount by `100000`.

        For example, a balance of `12.34567` will be represented as `1234567` in the API.
      </Note>
    </ResponseField>

    <ResponseField name="index" type="number" required>
      Index of the transaction.
    </ResponseField>
  </Expandable>
</ResponseField>

<RequestExample>
  ```bash Shell theme={null}
  curl --request POST \
    --url 'https://partner-platform-url/transaction/payout-batch' \
    --header 'content-type: application/json' \
    --header 'x-api-key: <x-api-key>' \
    --header 'x-signature: <x-signature>' \
    --header 'x-timestamp: <x-timestamp>' \
    --data '{
      "transactions": [
        {
          "transactionId": "dd96bda3-9990-4aed-9679-f451a4b82ac4",
          "refTransactionId": "05fc77cd8-4dd8-48a5-b6b4-1360d0b0f123",
          "sessionId": "f1dfc865-584c-4cba-a175-06172b2a41141731504451691",
          "roundId": "817e22b4-b030-468b-964e-62b9a7343050-1753428290674",
          "playerId": "18865671",
          "gameId": "G1720761376617",
          "currency": "EUR",
          "amount": 250000000,
          "index": 0
        }
      ]
  }'
  ```

  ```javascript NodeJS theme={null}
  const axios = require("axios");

  const url = "https://partner-platform-url/transaction/payout-batch";
  const headers = {
    "content-type": "application/json",
    "x-api-key": "<x-api-key>",
    "x-signature": "<x-signature>",
    "x-timestamp": "<x-timestamp>",
  };
  const data = {
    transactions: [
      {
        transactionId: "dd96bda3-9990-4aed-9679-f451a4b82ac4",
        refTransactionId: "05fc77cd8-4dd8-48a5-b6b4-1360d0b0f123",
        sessionId: "f1dfc865-584c-4cba-a175-06172b2a41141731504451691",
        roundId: "817e22b4-b030-468b-964e-62b9a7343050-1753428290674",
        playerId: "18865671",
        gameId: "G1720761376617",
        currency: "EUR",
        amount: 250000000,
        index: 0,
      },
    ],
  };

  axios
    .post(url, data, { headers })
    .then((response) => console.log(response.data))
    .catch((error) => console.error(error));
  ```

  ```python Python theme={null}
  import requests

  url = "https://partner-platform-url/transaction/payout-batch"
  headers = {
      "content-type": "<content-type>",
      "x-api-key": "<x-api-key>",
      "x-signature": "<x-signature>",
      "x-timestamp": "<x-timestamp>"
  }
  data = {
      "transactions": [
          {
              "transactionId": "dd96bda3-9990-4aed-9679-f451a4b82ac4",
              "refTransactionId": "05fc77cd8-4dd8-48a5-b6b4-1360d0b0f123",
              "sessionId": "f1dfc865-584c-4cba-a175-06172b2a41141731504451691",
              "roundId": "817e22b4-b030-468b-964e-62b9a7343050-1753428290674",
              "playerId": "18865671",
              "gameId": "G1720761376617",
              "currency": "EUR",
              "amount": 250000000,
              "index": 0
          }
      ]
  }

  response = requests.post(url, headers=headers, json=data)
  print(response.json())

  ```

  ```php PHP theme={null}
  <?php
  $curl = curl_init();

  curl_setopt_array($curl, [
    CURLOPT_URL => "https://partner-platform-url/transaction/payout-batch",
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_POST => true,
    CURLOPT_HTTPHEADER => [
      "content-type: <content-type>",
      "x-api-key: <x-api-key>",
      "x-signature: <x-signature>",
      "x-timestamp: <x-timestamp>"
    ],
    CURLOPT_POSTFIELDS => json_encode([
      "transactions" => [
        [
          "transactionId" => "dd96bda3-9990-4aed-9679-f451a4b82ac4",
          "refTransactionId" => "05fc77cd8-4dd8-48a5-b6b4-1360d0b0f123",
          "sessionId" => "f1dfc865-584c-4cba-a175-06172b2a41141731504451691",
          "roundId" => "817e22b4-b030-468b-964e-62b9a7343050-1753428290674",
          "playerId" => "18865671",
          "gameId" => "G1720761376617",
          "currency" => "EUR",
          "amount" => 250000000,
          "index" => 0
        ]
      ]
    ]),
  ]);

  $response = curl_exec($curl);
  curl_close($curl);

  echo $response;
  ?>

  ```
</RequestExample>

<ResponseExample>
  ```json SUCCESS theme={null}
  {
      "status": "RS_OK",
      "data": [
          {
              "status": "RS_OK",
              "transactionId": "dd96bda3-9990-4aed-9679-f451a4b82ac4",
              "refTransactionId": "05fc77cd8-4dd8-48a5-b6b4-1360d0b0f123",
              "sessionId": "d404f1da-26a6-44ff-8b0f-559915152be11742537289208",
              "roundId": "123xaf1a-s7ax-lles-9aws-5hjtjshosqq2be117425",
              "playerId": "18865671",
              "currency": "EUR",
              "balance": 300000000,
              "index": 0
          }
      ]
  }
  ```

  ```json FAILURE theme={null}
  {
    "status": "RS_ERROR",
    "message": "Oops! Something went wrong. Please refresh the page or try again in a moment"
  }
  ```
</ResponseExample>
