MG+ Third-Party Game Provider Integration Guide
Breadcrumbs

Transaction - Game Play Transactions

Adjusts a player balance using DEBIT or CREDIT events. Every round must be marked as finished when no more transactions can be expected. A round can have a single DEBIT, and can have zero or multiple CREDIT events.

POST /v1/transaction

Headers: X-HMAC-Signature, Authorization, X-Request-ID

Request

Request Parameters

Field

Required/Optional

Data Type

Description

playerId

Required

string

Unique identifier for the player.

provider

Required

string

Identifier for the game provider.

game

Required

string

Identifier for the game being launched.

transactionId

Required

string

Unique identifier for this transaction, serving as the idempotency key for the transaction and round combination. This ensures that duplicate requests with the same round ID will not create multiple transactions.

roundId

Required

string

Unique identifier for this round.

amount

Required

decimal

Amount to adjust the balance with, in player currency.

Greater or equal to zero.

transactionType

Required

enum

Possible values: "debit", "credit"

"debit": reduce the player balance, i.e. wager

"credit": increase the player balance, i.e. payout

roundFinished

Optional

boolean

Flag to indicate that the round has been completed. Once set, no more transactions for that round can be processed. Assumed as false if not provided. Every round must be completed at some point.

freeGameInfo

Optional

object

Provide the free game offer and instance if the round should be considered as a free game round.

ip

Required

string

IPv4 of the player.

gameInfo

Optional

object

If a bet includes multiple components, each will be itemized here for detailed breakdown (e.g., side bets).

Request Example

JSON
{
  "playerId": "44-12345-67890",
  "provider": "gameprovider",
  "game": "fantasyquest",
  "transactionId": "guid/uuid/string",
  "roundId": "guid/uuid/string",
  "amount": 10.00,
  "transactionType": "debit",
  "roundFinished": true,
  "freeGameInfo": {
    "instanceId": 1,
    "offerId": 99
  },
  "ip": "1.2.3.4",
  "gameInfo": {
    "gameTransactionType": "spin",
    "metaData": [
      {
        "betType": "standard",
        "amount": 10.00
      }
    ]
  }
}

gameInfo object

Field

Required/Optional

Data Type

Description

gameTransactionType

Optional

enum

Type of transaction. Possible values: spin, featureBuy, sideBet, tip.

metaData

Optional

array

If a bet includes multiple components, each will be itemized here for detailed breakdown.

metaData object

Field

Required/Optional

Data Type

Description

betType

Optional

string

Description of what the bet was made on.

amount

Optional

decimal

The amount for this component of the bet.

Response

Response Parameters

Field

Required/Optional

Data Type

Description

balance

Required

decimal

Current balance of the player, in player’s currency.

freeGameInfo

Optional

array

List of free games available to the player for this game.

Response Example

JSON
{
  "balance": 1480.50,
  "freeGameInfo": [
    {
      "instanceId": 1,
      "offerId": 99,
      "offerName": "Sample Free Spins",
      "instanceInfo": {
        "canBeRejected": false,
        "nearestCostPerBet": 5,
        "numberOfRoundsRemaining": 2,
        "numberOfRoundsAwarded": 10,
        "instanceStartDateUtc": "2025-05-23T11:54:37Z",
        "instanceEndDateUtc": "2025-05-25T13:34:37Z"
      }
    }
  ]
}