Financial

Financial Endpoints

This section will display all available endpoints to get financial data.

Subsections of Financial

Currency

Currency Endpoints

This section will display all available endpoints to get currency data.

Subsections of Currency

Currency by IP

This method returns a currency by player’s IP address, generally used before Registration to determine which currency to display to player upon registration.

Request (GET)

/gateway/currencies/{version}/currencyByIP/{brand_id}

Parameters:

Name In Type Required Description
version path string true The API version to use.
brand_id path int true The ID of the casino. If a brand_id is not provided, all message formats will be fetched from default storage.

Response

Status 200

{
  "status": "success",
  "data": {
    "isoCountryCode": "IL",
    "isoCurrencyCode": "USD",
    "symbol": "$"
  }
}

Status 400

{
  "errMsg": "invalid input - invalid brand id"
}

Status 400

{
  "status": "failed",
  "data": "currency not found, reason: reason"
}

Status 500

{
  "result": "internal server error"
}

Response Parameters:

Name Description
status indication if request was successful or not.
data.isoCountryCode ISO2 country code, will be fetch from X-Forwarded-For header.
data.isoCurrencyCode ISO3 currency code for this country.
data.symbol currency symbol.

Supported Currencies

This method returns a currency of the brand and all supported currencies.

Request (GET)

/gateway/cashier/supported/currencies/{brand_id}

Parameters:

Name In Type Required Description
brand_id path string true The ID of the casino. If a brand_id is not provided, all message formats will be fetched from default storage.

Response

Status 200

{
  "base_currency": "EUR",
  "supported_currencies": [
    {
      "iso_code": "USD",
      "symbol": "$",
      "unicode": "$",
      "position": "before"
    },
    {
      "iso_code": "EUR",
      "symbol": "€",
      "unicode": "€",
      "position": "before"
    }
  ]
}

Status 400

{
  "errMsg": "invalid input - invalid brand id"
}

Status 500

{
  "result": "internal server error"
}

Response Parameters:

Name Description
base_currency Brand base currency.
supported_currencies.iso_code ISO2 code of currency.
supported_currencies.symbol symbol of currency.
supported_currencies.unicode unicode of currency.
supported_currencies.position where does the symbol of currency should be displayed, before/after the amount.

Deposit

Deposit Endpoints

This section will display all available endpoints to get Deposit data.

Logic For All provider is as following:

  1. Get Payment Methods for the player.
  2. Begin Deposit process.
  3. Response will contain uri for provider, and all the data needed to send to provider, should transfer to provider page.

However, we have couple of providers which will be explained in the following sections.

  1. Praxis HPF: Praxis supports HPF(hosted payment fields) for some of its payment methods, if mode will be returned as ‘hpf’ we should do the following:
    1. Get Payment Methods for the player.
    2. Begin Deposit process.
    3. Use praxis script to open iframe with the payment fields.
    4. Send Direct Deposit
    5. Response will contain if request was successful or not.
    6. Following fields should be sent in this case: hpf_auth_token, device_data, ref_id.
  2. Praxis HPF Async: Praxis supports HPF(hosted payment fields) for some of its payment methods, if mode will be returned as ‘hpf’ we should do the following:
    1. Get Payment Methods for the player.
    2. Begin Deposit process.
    3. Use praxis script to open iframe with the payment fields.
    4. Send Direct Deposit, version should be 3.0 and above.
    5. Response will contain if request was successful or not.
    6. Following fields should be sent in this case: hpf_auth_token, device_data, ref_id.
    7. Every few seconds call should be sent to Deposit State to check if the deposit was successful.
  3. Direct Deposit: We have some providers which expect direct call from us, on this case mode will be ‘direct’ and we should do the following::
    1. Get Payment Methods for the player.
    2. Begin Deposit process.
    3. Send Direct Deposit, Following fields should be sent in this case: request_token, params, payment_data.
    4. Response will contain if request was successful or not.
    5. Every few seconds call should be sent to Deposit State to check if the deposit was successful.
    6. 3Ds cascading happens when Deposit State return status_name = ‘Initialized’ is_completed = true and redirect_url is not empty. Redirect player to redirect_url.
    7. Operator should provide platform with path to page where PSP provider will redirect player in case 3Ds deposit declined/canceled.
    8. When player arrives this page, Site need to call Has_Cascading to check if cascading exists. On False redirect player to decline deposit page. On True display player friendly message ‘Do you want to make an additional deposit?’.
    9. When player agree to make additional deposit, Site need to call Do Cascading and continue to ask for Deposit State

The following scenarios will require additional calls to Status API:

  1. if mode = status_request
  2. if mode = hpf and version > 3.0
  3. if mode = direct
  4. if additional_instructions.status_request = true
  5. if player choose to make additional deposit after 3ds deposit decline

Subsections of Deposit

Begin Deposit

This method begins a deposit transaction. use gateway.[msdomain]

Request (POST)

/gateway/financials/{brand_id}/{version}/player/deposit

{
  "amount": 10.5,
  "bonusCode": "",
  "country": "IL",
  "paymentProviderId": 1,
  "paymentMethodId": 1,
  "currency": "EUR",
  "lang": "en"
}

Parameters:

Name In Type Required Description
version path string true The API version to use.
brand_id path string true The ID of the casino. If a brand_id is not provided, all message formats will be fetched from default storage.
x-auth-token header string true Player login session.
amount body string true Request amount in major currency (i.e 10.50 and not in cents 1050).
bonusCode body string false Bonus code for the request, if applicable.
country body string true Player country.
paymentProviderId body int true Request provider id.
paymentMethodId body int true Requested method id for chosen provider.
currency body string true Player requested currency (does not have to match his currency).
Referer header string true Some payment providers restrict transactions for specific domains, domain should be verified.
X-Forwarded-For header string true Player IP.

Response

Status 200

{
  "url": "urlparams",
  "params": {
    "amount": 10.5,
    "bonusCode": "",
    "country": "IL",
    "paymentProviderId": 1,
    "paymentMethodId": 1,
    "currency": "EUR",
    "lang": "en"
  },
  "mode": "embedded/window/hpf/status_request/direct",
  "refNum": "",
  "request_token": "aaaaa",
  "safecharge": true,
  "additional_instructions": {
    "status_request": true,
    "add_iframe_code": "allow=\"clipboard-read; clipboard-write\""
  }
}

Status 400

{
  "errMsg": "invalid input - invalid brand id"
}

401 Response

{
  "errMsg": "invalid input - invalid token"
}

401 Response, in case of some addition requirement needed before proceeding

Error Code Description
INCOMPLETE_REGISTRATION The player did not complete his registration process, need to complete Registration Step Two.
TNC_APPROVAL_REQUIRED Player need to approve TnC.
PRIVACY_APPROVAL_REQUIRED Player need to approve Privacy Policy.
PASSWORD_CHANGE_REQUIRED Player has temp password and need to Change Password.
EMAIL_NOT_VERIFIED Player email is not verified and cannot continue any process till he verifies his mail.
{
  "result": "INCOMPLETE_REGISTRATION"
}

Status 403

{
  "result": "deposit_limit"
}

Status 412. Redirect player to Personal Details page for updating data missing to perform deposit

{
  "status": "Error",
  "data": [
    "zipPostalCode",
    "birthdate",
    "city",
    "address"
  ],
  "message": "missing fields",
  "userFriendlyMessage": "missing fields"
}

Status 500

{
  "result": "internal server error"
}

Response Parameters:

Name Type Description
mode = embedded string Indication to open the deposit form in embedded window (iframe).
mode = window string Indication to open the deposit form in seperate window.
mode = hpf string Mode which is relevant only for Praxis(and specific payment methods), for additional documentation please contact us.
mode = direct string Indication that this call won’t work like other, deposit request should be direct call.
mode = status_request string Indication that need to do calls for Status API.
refNum int If deposit transaction started, it will contain the reference id to proceed with.
url string provider url to open window.
request_token string Unique identifier for the request, will be used in direct mode.
safecharge bool indication if provider is safecharge.
params object object which will contain additional details required for deposit.
additional_instructions (Optional) object object which will contain additional details required for deposit request.
additional_instructions.status_request bool Indication that need to do calls for Status API.
additional_instructions.add_iframe_code string Iframe code

Direct Deposit

2nd step uses for Praxis HPF integration.

Call this API from Casino Front-end page that contains direct providers for example: Praxis hosted fields: Card number. Card Exp. Cvv. Amount. Submit button

Request (PUT)

/gateway/financials/deposit/{brand_id}/{version}/direct

{
  "hpf_auth_token": "938c2cc0dcc05f2b68c4287040cfcf71",
  "request_token": "938c2cc0dcc05f2b68c4287040cfcf71",
  "ref_id": 100,
  "params": {
    "amount": 1.1,
    "currency": "EUR",
    "paymentProviderId": 1,
    "paymentMethodId": 1,
    "bonusCode": "somecode",
    "country": "IL"
  },
  "device_data": {
    "user_agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_5) AppleWebKit/605.1.15 (KHTML,like Gecko) Version/13.1.1 Safari/605.1.15",
    "accept_header": "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8",
    "language": "en-us",
    "timezone_offset": -180,
    "color_depth": "24",
    "pixel_depth": "24",
    "pixel_ratio": "2",
    "screen_height": 900,
    "screen_width": 1440,
    "viewport_height": 400,
    "viewport_width": 1440,
    "java_enabled": 0,
    "javascript_enabled": 1
  },
  "payment_data": {
    "cc_number": "1234123412341234",
    "CVV": "111",
    "cc_expiration": "12-12",
    "cc_holder_name": "John Doe"
  }
}

Parameters:

Name In Type Required Description
version path string true The API version to use, for any version higher than 3.0, response will be async, and should be fetched from Deposit State.
brand_id path string true The ID of the casino. If a brand_id is not provided, all message formats will be fetched from default storage.
x-auth-token header string true Player login session.
hpf_auth_token body string false Relevant for Praxis HPF only.
request_token body string false Relevant for Direct call providers.
ref_id body string false should be sent for praxis, not for other.
params body int true additional parameters to send, not relevant for praxis, should send the exact content as you get from Deposit Request .
device_data body int true Relevant only for praxis HPF.
payment_data body string true additional parameters to send, not relevant for praxis.
payment_data.cc_number body string true credit card number without ‘-’.
payment_data.CVV body string true CVV for credit card.
payment_data.cc_expiration body string true expiration date for card, format: MM-YY.
payment_data.cc_holder_name body string true forst name + last name of player.
X-Forwarded-For header string true Player IP.
Referer header string true Site domain.

Response

Status 200

{
  "redirect_url": "https://merchant.com/payment_result/tx-1560610955",
  "status": "OK",
  "ref_id": 12
}

Status 400

{
  "errMsg": "invalid input - invalid brand id"
}

401 Response

{
  "errMsg": "invalid input - invalid token"
}

401 Response, in case of some addition requirement needed before proceeding

Error Code Description
INCOMPLETE_REGISTRATION The player did not complete his registration process, need to complete Registration Step Two.
TNC_APPROVAL_REQUIRED Player need to approve TnC.
PRIVACY_APPROVAL_REQUIRED Player need to approve Privacy Policy.
PASSWORD_CHANGE_REQUIRED Player has temp password and need to Change Password.
EMAIL_NOT_VERIFIED Player email is not verified and cannot continue any process till he verifies his mail.
{
  "result": "INCOMPLETE_REGISTRATION"
}

Status 403

{
  "result": "deposit_limit"
}

Status 412. Redirect player to Personal Details page for updating data missing to perform deposit

{
  "status": "Error",
  "data": [
    "zipPostalCode",
    "birthdate",
    "city",
    "address"
  ],
  "message": "missing fields",
  "userFriendlyMessage": "missing fields"
}

Status 500

{
  "result": "internal server error"
}

Response Parameters:

Name Type Description
status string status of request.
ref_id string reference number to run checks on (Async).

Deposit Status

This API returns deposit status and redirect url (3DS). Use it for Getting current deposit status in case when deposit begin transaction return mode ‘hpf, status_request ,direct’

Request (GET)

/gateway/financials/{brand_id}/{version}/deposit/state/{ref_id}

Parameters:

Name In Type Required Description
version path string true The API version to use, for any version higher than 3.0, response will be async, and should be fetched from Status API.
brand_id path string true The ID of the casino. If a brand_id is not provided, all message formats will be fetched from default storage.
ref_id path int true Deposit reference number.
x-auth-token header string true Player login session.

Response

Status 200

{
  "status_id": 1,
  "status_name": "Approved,Declined,Pending",
  "redirect_url": "https://3dsuri.com/redirect",
  "is_completed": true
}

Status 400

{
  "errMsg": "invalid input - invalid brand id"
}

401 Response

{
  "errMsg": "invalid input - invalid token"
}

Status 403

{
  "result": "deposit_limit"
}

Status 500

{
  "result": "internal server error"
}

Response Parameters:

Name Type Description
status_name string status of request.
redirect_url string link for 3ds.
is_completed string indication if response is final.

Actions (By response fields):

Is Completed Field Status Name Field Description
true ALL finite status of request, stop sending request.
false Initialized and redirect_url is empty close window and call for status behind the scenes.
false ALL continue sending status requests.

Deposit Payment Methods

This method retrieves all the payment methods that are available for making deposits for a specific country. use gateway.[msdomain]

Request (GET)

/gateway/financials/{version}/{brand_id}/payment/methods/2.0/{country}

Parameters:

Name In Type Required Description
version path string true The API version to use, for any version higher than 3.0, response will be async, and should be fetched from Status API.
brand_id path string true The ID of the casino. If a brand_id is not provided, all message formats will be fetched from default storage.
country path string true Player requested country, each country might contain different list of methods.
x-auth-token header string true Player login session.

Response

Status 200

{
  "payment_methods": "[{\"id\":1,\"name\":\"Visa\",\"provider_id\":35,\"description\":\"\",\"logo_url\":\"https://promo.testcasino.com/static-resources/payment_methods/my_account/visa-165x50.png\",\"order\":3,\"min_approved_deposits\":0,\"max_approved_deposits\":10000,\"active\":true,\"country\":[\"AD\",\"AE\",\"AF\",\"AG\",\"AI\",\"AL\",\"AM\",\"AN\",\"AO\",\"AQ\",\"AR\",\"AS\",\"AT\",\"AU\",\"AW\",\"AX\",\"AZ\",\"BA\",\"BB\",\"BD\",\"BE\",\"BF\",\"BG\",\"BH\",\"BI\",\"BJ\",\"BL\",\"BM\",\"BN\",\"BO\",\"BQ\",\"BR\",\"BS\",\"BT\",\"BV\",\"BW\",\"BY\",\"BZ\",\"CA\",\"CC\",\"CD\",\"CF\",\"CG\",\"CH\",\"CI\",\"CK\",\"CL\",\"CM\",\"CN\",\"CO\",\"CR\",\"CU\",\"CV\",\"CW\",\"CX\",\"CY\",\"CZ\",\"DE\",\"DJ\",\"DK\",\"DM\",\"DO\",\"DZ\",\"EC\",\"EE\",\"EG\",\"EH\",\"ER\",\"ES\",\"ET\",\"FI\",\"FJ\",\"FK\",\"FM\",\"FO\",\"FR\",\"GA\",\"GB\",\"GD\",\"GE\",\"GF\",\"GG\",\"GH\",\"GI\",\"GL\",\"GM\",\"GN\",\"GP\",\"GQ\",\"GR\",\"GS\",\"GT\",\"GU\",\"GW\",\"GY\",\"HK\",\"HM\",\"HN\",\"HR\",\"HT\",\"HU\",\"ID\",\"IE\",\"IL\",\"IM\",\"IN\",\"IO\",\"IQ\",\"IR\",\"IS\",\"IT\",\"JE\",\"JM\",\"JO\",\"JP\",\"KE\",\"KG\",\"KH\",\"KI\",\"KM\",\"KN\",\"KP\",\"KR\",\"KW\",\"KY\",\"KZ\",\"LA\",\"LB\",\"LC\",\"LI\",\"LK\",\"LR\",\"LS\",\"LT\",\"LU\",\"LV\",\"LY\",\"MA\",\"MC\",\"MD\",\"ME\",\"MF\",\"MG\",\"MH\",\"MK\",\"ML\",\"MM\",\"MN\",\"MO\",\"MP\",\"MQ\",\"MR\",\"MS\",\"MT\",\"MU\",\"MV\",\"MW\",\"MX\",\"MY\",\"MZ\",\"NA\",\"NC\",\"NE\",\"NF\",\"NG\",\"NI\",\"NL\",\"NO\",\"NP\",\"NR\",\"NU\",\"NZ\",\"OM\",\"PA\",\"PE\",\"PF\",\"PG\",\"PH\",\"PK\",\"PL\",\"PM\",\"PN\",\"PR\",\"PS\",\"PT\",\"PW\",\"PY\",\"QA\",\"RE\",\"RO\",\"RS\",\"RU\",\"RW\",\"SA\",\"SB\",\"SC\",\"SD\",\"SE\",\"SG\",\"SH\",\"SI\",\"SJ\",\"SK\",\"SL\",\"SM\",\"SN\",\"SO\",\"SR\",\"ST\",\"SV\",\"SX\",\"SY\",\"SZ\",\"TC\",\"TD\",\"TF\",\"TG\",\"TH\",\"TJ\",\"TK\",\"TL\",\"TM\",\"TN\",\"TO\",\"TR\",\"TT\",\"TV\",\"TW\",\"TZ\",\"UA\",\"UG\",\"UM\",\"US\",\"UY\",\"UZ\",\"VA\",\"VC\",\"VE\",\"VG\",\"VI\",\"VN\",\"VU\",\"WF\",\"WS\",\"YE\",\"YT\",\"ZA\",\"ZM\",\"ZW\"],\"currency\":[{\"name\":\"CAD\",\"min\":20,\"max\":5000,\"rate_to_euro\":0.689829976032,\"fee\":4,\"active\":true},{\"name\":\"EUR\",\"min\":20,\"max\":5000,\"rate_to_euro\":1,\"fee\":0,\"active\":true},{\"name\":\"GBP\",\"min\":20,\"max\":5000,\"rate_to_euro\":1.1667130837039998,\"fee\":2,\"active\":true},{\"name\":\"INR\",\"min\":1,\"max\":10000000,\"rate_to_euro\":0.013474511615999999,\"fee\":4,\"active\":true},{\"name\":\"USD\",\"min\":20,\"max\":5000,\"rate_to_euro\":0.92608904680444,\"fee\":2.22,\"active\":true}]},{\"id\":442,\"name\":\"CryptoDL\",\"provider_id\":36,\"description\":\"\",\"logo_url\":\"https://promo.testcasino.com/static-resources/\",\"order\":2,\"min_approved_deposits\":0,\"max_approved_deposits\":1000000,\"active\":true,\"country\":[\"AD\",\"AE\",\"AF\",\"AG\",\"AI\",\"AL\",\"AM\",\"AN\",\"AO\",\"AQ\",\"AR\",\"AS\",\"AT\",\"AU\",\"AW\",\"AX\",\"AZ\",\"BA\",\"BB\",\"BD\",\"BE\",\"BF\",\"BG\",\"BH\",\"BI\",\"BJ\",\"BL\",\"BM\",\"BN\",\"BO\",\"BQ\",\"BR\",\"BS\",\"BT\",\"BV\",\"BW\",\"BY\",\"BZ\",\"CA\",\"CC\",\"CD\",\"CF\",\"CG\",\"CH\",\"CI\",\"CK\",\"CL\",\"CM\",\"CN\",\"CO\",\"CR\",\"CU\",\"CV\",\"CW\",\"CX\",\"CY\",\"CZ\",\"DE\",\"DJ\",\"DK\",\"DM\",\"DO\",\"DZ\",\"EC\",\"EE\",\"EG\",\"EH\",\"ER\",\"ES\",\"ET\",\"FI\",\"FJ\",\"FK\",\"FM\",\"FO\",\"FR\",\"GA\",\"GB\",\"GD\",\"GE\",\"GF\",\"GG\",\"GH\",\"GI\",\"GL\",\"GM\",\"GN\",\"GP\",\"GQ\",\"GR\",\"GS\",\"GT\",\"GU\",\"GW\",\"GY\",\"HK\",\"HM\",\"HN\",\"HR\",\"HT\",\"HU\",\"ID\",\"IE\",\"IL\",\"IM\",\"IN\",\"IO\",\"IQ\",\"IR\",\"IS\",\"IT\",\"JE\",\"JM\",\"JO\",\"JP\",\"KE\",\"KG\",\"KH\",\"KI\",\"KM\",\"KN\",\"KP\",\"KR\",\"KW\",\"KY\",\"KZ\",\"LA\",\"LB\",\"LC\",\"LI\",\"LK\",\"LR\",\"LS\",\"LT\",\"LU\",\"LV\",\"LY\",\"MA\",\"MC\",\"MD\",\"ME\",\"MF\",\"MG\",\"MH\",\"MK\",\"ML\",\"MM\",\"MN\",\"MO\",\"MP\",\"MQ\",\"MR\",\"MS\",\"MT\",\"MU\",\"MV\",\"MW\",\"MX\",\"MY\",\"MZ\",\"NA\",\"NC\",\"NE\",\"NF\",\"NG\",\"NI\",\"NL\",\"NO\",\"NP\",\"NR\",\"NU\",\"NZ\",\"OM\",\"PA\",\"PE\",\"PF\",\"PG\",\"PH\",\"PK\",\"PL\",\"PM\",\"PN\",\"PR\",\"PS\",\"PT\",\"PW\",\"PY\",\"QA\",\"RE\",\"RO\",\"RS\",\"RU\",\"RW\",\"SA\",\"SB\",\"SC\",\"SD\",\"SE\",\"SG\",\"SH\",\"SI\",\"SJ\",\"SK\",\"SL\",\"SM\",\"SN\",\"SO\",\"SR\",\"ST\",\"SV\",\"SX\",\"SY\",\"SZ\",\"TC\",\"TD\",\"TF\",\"TG\",\"TH\",\"TJ\",\"TK\",\"TL\",\"TM\",\"TN\",\"TO\",\"TR\",\"TT\",\"TV\",\"TW\",\"TZ\",\"UA\",\"UG\",\"UM\",\"US\",\"UY\",\"UZ\",\"VA\",\"VC\",\"VE\",\"VG\",\"VI\",\"VN\",\"VU\",\"WF\",\"WS\",\"YE\",\"YT\",\"ZA\",\"ZM\",\"ZW\"],\"currency\":[{\"name\":\"CAD\",\"min\":20,\"max\":5000,\"rate_to_euro\":0.689829976032,\"fee\":4,\"active\":false},{\"name\":\"EUR\",\"min\":20,\"max\":5000,\"rate_to_euro\":1,\"fee\":0,\"active\":false},{\"name\":\"GBP\",\"min\":20,\"max\":5000,\"rate_to_euro\":1.1667130837039998,\"fee\":2,\"active\":false},{\"name\":\"USD\",\"min\":20,\"max\":5000,\"rate_to_euro\":0.92608904680444,\"fee\":2.22,\"active\":false},{\"name\":\"USDT\",\"min\":0,\"max\":5000,\"rate_to_euro\":0.909230399808,\"fee\":4,\"active\":true}]}]",
  "min_deposit": "-1",
  "deposit_state": false
}

Status 400

{
  "errMsg": "invalid input - invalid brand id"
}

401 Response

{
  "errMsg": "invalid input - invalid token"
}

401 Response, in case of some addition requirement needed before proceeding

Error Code Description
INCOMPLETE_REGISTRATION The player did not complete his registration process, need to complete Registration Step Two.
TNC_APPROVAL_REQUIRED Player need to approve TnC.
PRIVACY_APPROVAL_REQUIRED Player need to approve Privacy Policy.
PASSWORD_CHANGE_REQUIRED Player has temp password and need to Change Password.
EMAIL_NOT_VERIFIED Player email is not verified and cannot continue any process till he verifies his mail.
{
  "result": "INCOMPLETE_REGISTRATION"
}

Status 500

{
  "result": "internal server error"
}

Response Parameters:

Name Type Description
payment_methods array array of object which will contain payment methods data: 1. Method ID. 2. Provider ID. 3. Min/Max values. 4. Logo…

Deposit Cascading Available

Request (GET)

/gateway/financials/{brand_id}/{version}/deposit/has-cascading/{ref_id}

Parameters:

Name In Type Required Description
version path string true The API version to use, for any version higher than 3.0, response will be async, and should be fetched from Status API.
brand_id path string true The ID of the casino. If a brand_id is not provided, all message formats will be fetched from default storage.
ref_id path int true Deposit reference number.
x-auth-token header string true Player login session.

Response

Status 200

{
  true/false
}

Status 400

{
  "errMsg": "invalid input - invalid brand id"
}

401 Response

{
  "errMsg": "invalid input - invalid token"
}

Status 500

{
  "result": "internal server error"
}

Player Last Deposit

This API returns information about the player’s last deposit.

You can use this method to set the default values in the deposit page. For example, if a player deposits money from a country that is different from their registered country, you can set the last used country as the default country for future deposits. use gateway.[msdomain]

Request (GET)

/gateway/financials/{brand_id}/{version}/player/deposit

Parameters:

Name In Type Required Description
version path string true The API version to use.
brand_id path string true The ID of the casino. If a brand_id is not provided, all message formats will be fetched from default storage.
x-auth-token header string true Player login session.

Response

Status 200

{
  "updateDate": "YYY-MM-DD hh:mm:ss",
  "depositAmount": 0,
  "depositCurrency": "EUR",
  "paymentMethodId": 7,
  "countryCode": "DE"
}

Status 400

{
  "errMsg": "invalid input - invalid brand id"
}

401 Response

{
  "errMsg": "invalid input - invalid token"
}

Status 500

{
  "result": "internal server error"
}

Response Parameters:

Name Description
updateDate last approved deposit time.
depositAmount deposit Amount.
depositCurrency deposit Currency.
paymentMethodId deposit payment methiod id.
countryCode player login country.

Deposit Cascading Continue

Request (POST)

/gateway/financials/{brand_id}/{version}/deposit/continue-cascading/{ref_id}

Parameters:

Name In Type Required Description
version path string true The API version to use, for any version higher than 3.0, response will be async, and should be fetched from Status API.
brand_id path string true The ID of the casino. If a brand_id is not provided, all message formats will be fetched from default storage.
ref_id path int true Deposit reference number.
x-auth-token header string true Player login session.

Response

Status 200

{
}

Status 400

{
  "errMsg": "invalid input - invalid brand id"
}

401 Response

{
  "errMsg": "invalid input - invalid token"
}

Status 500

{
  "result": "internal server error"
}

Credit Card Validation

This API validate credit card details.

Request (POST)

/gateway/financials/:brand_id/:version/deposit/validation/:method_id

{
  "cc_number": "4111111111111111"
}

Parameters:

Name In Type Required Description
version path string true The API version to use.
brand_id path string true The ID of the casino.
method_id path string true ID of method to validate the credit card in front of.
cc_number body string true credit card number to validate, only numbers.
x-auth-token header string true Player login session.

Response

Status 200

{
  "status": "Success",
  "message": "CC_VALID"
}

400 Response

{
  "status": "Failure",
  "message": "BAD_REQUEST"
}
{
  "status": "Failure",
  "message": "CC_EMPTY"
}

401 Response

{
  "errMsg": "invalid input - invalid token"
}

Status 422

  {
  "status": "Failure",
  "message": "CC_INVALID"
}

Status 500

  {
  "status": "Error",
  "message": "INTERNAL_SERVER_ERROR"
}

Cashier Events

Request (POST)

/gateway/financials/{brand_id}/{version}/cashier-events

Parameters:

Name In Type Required Description
version path string true The API version to use.
brand_id path int true none
X-Auth-Token header string true header received from ‘Login’
{
  "ref_id": 1,
  "event": "Close Window"
}

Response

Status 200

{
  "status": "Success",
  "data": {
    "brand_id": 1,
    "player_id": 123456,
    "ref_id": 1,
    "event": "Close Window"
  }
}

Status 400

{
  "status": "Error",
  "data": {
    "brand_id": 1,
    "player_id": 123456,
    "ref_id": 1,
    "event": "Close Window"
  },
  "message": "invalid deposit ref id",
  "userFriendlyMessage": "invalid deposit ref id"
}

Status 401

{
  "errMsg": "invalid input - invalid token"
}

Status 500

{
  "status": "Error",
  "data": {
    "brand_id": 1,
    "player_id": 123456,
    "ref_id": 1,
    "event": "Close Window"
  },
  "message": "error saving cashier event",
  "userFriendlyMessage": "error saving cashier event"
}

Bonuses

Bonuses Endpoints

This section will display all available endpoints to get bonus data.

Most of calls requires an authentication token, which will be different from the player’s authentication token. Call to Get authentication token:

Request (POST)

/gateway/bonus/:version/login/:brand_id

Parameters:

{
  "signed_key": "string"
}
Name In Type Required Description
version path string true The API version to use.
brand_id path int true The ID of the casino.
Authorization header string true subject for validation (i.e Banana).
signed_key body string true key for validation (i.e Banana).

Example responses

will return string “Success” in the body and the Authentication in the header “x-auth-token” of the response

{
  "msg": "Success"
}

the header from result should be sent in the header of the next request as “x-auth-token”, with ‘Bearer ’ prefix

Subsections of Bonuses

Bonus Validation

This method validates the parameters of a bonus. use gateway.[msdomain]
This document contains documentation for API version 1 and 2

Request (GET)

/gateway/bonus/{version}/validate/{brand_id}/{coupon}

Parameters:

Name In Type Required Description
version path string true The API version to use.
brand_id path string true The ID of the casino. If a brand_id is not provided, all message formats will be fetched from default storage.
coupon path string true Bonus code.
btag query string false Player affiliation reference.
currency query string false Player currency.

Response

Status 200

{
  "frb_at_registration": [
    {
      "language": "de",
      "text": "7 Freispiele für Groove_PlayNGo",
      "wagering": "null3"
    }
  ],
  "bonus_at_registration": 100,
  "frb_at_verification": [
    {
      "language": "de",
      "text": "7 Freispiele für Groove_PlayNGo",
      "wagering": "null3"
    }
  ],
  "bonus_at_verification": 30
}

Status 400

{
  "errMsg": "invalid input - invalid brand id"
}

Status 400

{
  "status": "error",
  "data": "coupon time exceeded"
}

Status 500

{
  "result": "internal server error"
}

Response Parameters:

Name Description
frb_at_registration Array which will contain all available languages for FRB bonus which will be given upon registration, need to choose the relevant language for player (frb_at_registration.language) and show its text.
frb_at_verification Array which will contain all available languages for FRB bonus which will be given upon email verification, need to choose the relevant language for player (frb_at_verification.language) and show its text.
bonus_at_registration Amount which will be awarded to player once he completes the registration, please not that if currency is not sent, amount will be displayed in brand default currency.
bonus_at_verification Amount which will be awarded to player once he verifies his email, please not that if currency is not sent, amount will be displayed in brand default currency.

API VERSION 2

Request (GET)

/gateway/bonus/{version - should be >= 2}/validate/{brand_id}/{coupon}

Parameters:

Name In Type Required Description
version path string true The API version to use.
brand_id path string true The ID of the casino. If a brand_id is not provided, all message formats will be fetched from default storage.
coupon path string true Bonus code.
btag query string false Player affiliation reference.
currency query string false Player currency.

Response

Status 200

{
  "registration": {
    "bonus_amount": 1000,
    "wagering_multiplier": 10,
    "frb": [
      {
        "round_count": 25,
        "game_provider": "Betsoft",
        "supported_games": [
          "Primal Wilderness"
        ],
        "wagering_multiplier": 1
      }
    ]
  },
  "verification": {
    "bonus_amount": 10000,
    "wagering_multiplier": 50,
    "frb": [
      {
        "round_count": 10,
        "game_provider": "Pragmatic Play",
        "supported_games": [
          "Floating Dragon Megaways",
          "John Hunter and the Book of Tut Respin™"
        ],
        "wagering_multiplier": 1
      },
      {
        "round_count": 3,
        "game_provider": "Evoplay",
        "supported_games": [
          "Fruit Super Nova 100"
        ],
        "wagering_multiplier": 3
      },
      {
        "round_count": 44,
        "game_provider": "Betsoft",
        "supported_games": [
          "7 Fortune Frenzy",
          "At The Movies",
          "Book of Helios",
          "Dragon Kings NJP"
        ],
        "wagering_multiplier": 3
      }
    ]
  }
}

Status 200, No frb

{
  "registration": {
    "bonus_amount": 1000,
    "wagering_multiplier": 10 
  },
  "verification": {
    "bonus_amount": 10000,
    "wagering_multiplier": 50 
  }
}

Status 400

{
  "status": "Error",
  "data": "",
  "message": "coupon not found",
  "userFriendlyMessage": "coupon not found"
}

Status 500

{
  "error": "internal server error",
  "requestID": "91d3236d-82fe-4c4d-b01c-ea07ffe15af7"
}

Grant Bonus

This method validates the parameters of a bonus. use gateway.[msdomain] Request Parametercomment & givenBy parameters are mandatory for all actionsAdditional Request Parameters Required for each bonus ( request must contain all )

Request (POST)

/gateway/bonus/{version}/grant/{brand_id}/{player_id}/{bonus_action}

Parameters:

{
  "bonusName": "string",
  "newBonusId": "string",
  "amount": 14.3,
  "wageringMultiplier": 3.3,
  "WageringBase": "string",
  "givenBy": "string",
  "comment": "string",
  "wageringRequirement": 0
}
Name In Type Required Description
version path string true The API version to use.
brand_id path int true none
player_id path int true none
bonus_action path string true none
Authentication header string true header received from ‘Login’

Response

Status 200

{
  "refId": 512
}

Status 400

{
  "errMsg": "invalid input - invalid brand id"
}

Status 500

{
  "result": "internal server error"
}

Bonus Type Metadata

Request (GET)

/gateway/bonus/{version}/bonusType/{brand_id}/metadata

Parameters:

Name In Type Required Description
version path string true The API version to use.
brand_id path int true none
Authentication header string true header received from ‘Login’

Response

Status 200

{
  "metadata": [
    {
      "id": "123",
      "bonusName": "string",
      "line": 0,
      "amountPercent": 0,
      "wageringMultiple": 0,
      "calculateWagering": "string",
      "maximumBalance": 0,
      "maximumAmount": 0,
      "displayType": "string",
      "type": "string",
      "comment": "string",
      "lastEditedBy": "string",
      "isActive": 0,
      "isUsed": 0,
      "isVisible": 0
    }
  ]
}

Status 400

{
  "errMsg": "invalid input - invalid brand id"
}

Status 500

{
  "result": "internal server error"
}

Grant FRB Bonus

Request (POST)

/gateway/bonus/{version}/grant/frb/{brand_id}/{player_id}

Parameters:

{
  "player_id": 1234545,
  "template_id": "20c51ae125482b3768653b50c_1639016587471",
  "bonus_id": "manual__20c51ae125482b3768653b50c_1639016587471",
  "comment": "given because of...",
  "operator": "player"
}
Name In Type Required Description
version path string true The API version to use.
brand_id path int true none
player_id path int true none
Authentication header string true header received from ‘Login’

Response

Status 200

{
  "refId": 512
}

Status 400

{
  "errMsg": "invalid input - invalid brand id"
}

Status 500

{
  "result": "internal server error"
}

Bonus Type Metadata

Request (GET)

/gateway/bonus/{version}/get/frb/{brand_id}

Parameters:

Name In Type Required Description
version path string true The API version to use.
brand_id path int true none
Authentication header string true header received from ‘Login’

Response

Status 200

{
  "frb_templates": [
    {
      "_id": "31eead653fb64ce3b2aa5cef4c384be9",
      "id": "",
      "brand_id": 0,
      "bonusName": "555555plo",
      "bonusDescription": "55555555",
      "active": true,
      "manualBonus": true,
      "providers": [
        {
          "providerId": "Groove_Pragma",
          "number_of_rounds": "1",
          "wagering_multiplier": "1",
          "available_from_date": "",
          "expiration_date": "",
          "message_first_line": "",
          "message_second_line": "",
          "offer_name": "",
          "all_games_used": false,
          "games": [
            {
              "brand_id": 0,
              "provider_id": "",
              "Game_Name": "Hot to Burn",
              "Game_Type": "",
              "CasinoId": 158000070,
              "supported_provider_games": ""
            },
            {
              "brand_id": 0,
              "provider_id": "",
              "Game_Name": "Leprechaun Carol",
              "Game_Type": "",
              "CasinoId": 158000080,
              "supported_provider_games": ""
            }
          ],
          "template_id": "",
          "inner_template_id": ""
        }
      ],
      "changed_by": "",
      "offerValue": "N/A",
      "totalNumberOfRounds": 16,
      "availableFromDate": "",
      "frb_bonus_desc": [
        {
          "language": "en",
          "text": "1 Free spins on Pragmatic Play"
        }
      ],
      "templateInUse": false
    }
  ]
}

Status 400

{
  "errMsg": "invalid input - invalid brand id"
}

Status 500

{
  "result": "internal server error"
}

Grant Bonus By Code

Request (POST)

/gateway/bonus/{version}/grant_bonus_by_code/{brand_id}

Parameters:

{
  "bonus_code": "string"
}
Name In Type Required Description
version path string true The API version to use.
brand_id path int true none
x-auth-token header string true Player session.

Response

Status 200

{
  "status": "Success",
  "data": {
    "refId": 151884,
    "msg": ""
  }
}

Status 400

{
  "errMsg": "invalid input - invalid brand id"
}

Status 500

{
  "result": "internal server error"
}

Wagering Complete Info

Request (GET)

/gateway/bonus/{version}/wagering-complete/{brand_id}/{player_id}/{unique_ref_id}

Parameters:

Name In Type Required Description
version path string true The API version to use.
brand_id path int true none
player_id path int true player unique identifier
unique_ref_id path int true player unique reference for wagering completed event
x-auth-token header string true Player session token

Response

Status 200

{
  "status": "Success",
  "data": [
    {
      "bonus_id": "776262",
      "bonus_money_before": "100",
      "bonus_money_removed": "100",
      "real_money_added": "100",
      "max_win": "unlimited"
    },
    {
      "bonus_id": "776266",
      "bonus_money_before": "11",
      "bonus_money_removed": "11",
      "real_money_added": "11",
      "max_win": "unlimited"
    },
    {
      "bonus_id": "776257",
      "bonus_money_before": "10",
      "bonus_money_removed": "10",
      "real_money_added": "10",
      "max_win": "unlimited"
    }
  ]
}

Status 400

{
  "errMsg": "invalid input - invalid brand id"
}

Status 412 (in case of non-existing details for request details)

{
  "status": "Error",
  "data": "wagering complete in progress",
  "message": "wagering complete in progress",
  "userFriendlyMessage": "wagering complete in progress"
}

Status 500

{
  "result": "internal server error"
}

Response Parameters:

Name Description
bonus_id unique identifier for specific bonus
bonus_money_before bonus money before event in specific bonus
bonus_money_removed bonus money removed from bonus
real_money_added real money added to player balance
max_win max winning definition for bonus, please note that if real_money_added is less than max_win, it might change

Cashback Eligibility

Request check (GET)

/gateway/financials/{version}/check/cashback/eligibility/{brand_id}

Parameters:

Name In Type Required Description
version path string true The API version to use.
brand_id path int true none
X-Auth-Token header string true header received from ‘Login’

Response

Status 200

{
  "status": "Success",
  "data": {
    "eligible_deposit": 580,
    "base_cashback_amount": 29,
    "cashback_amount": 72.5,
    "vip_level": "Platinum",
    "minimum_cashback_amount": 20,
    "maximum_balance": 1,
    "decline_reasons": [
      "Cashback amount is less than minimum required",
      "Player balance is high"
    ],
    "bonus_template_name": "abc",
    "eligible": false
  }
}
{
  "status": "Success",
  "data": {
    "eligible_deposit": 580,
    "base_cashback_amount": 29,
    "cashback_amount": 72.5,
    "vip_level": "Platinum",
    "minimum_cashback_amount": 20,
    "maximum_balance": 1,
    "decline_reasons": [],
    "bonus_template_name": "abc",
    "eligible": true
  }
}

Decline Reasons

  • Cashback amount is less than minimum required
  • Player balance is high
  • Player has pending withdrawal
  • Player has open round

Status 400

{
  "status": "Error",
  "data": null,
  "message": "invalid input - invalid brand id",
  "userFriendlyMessage": "invalid input - invalid brand id"
}

Status 500

{
  "status": "Error",
  "data": null,
  "message": "internal server error",
  "userFriendlyMessage": "internal server error"
}

Request Claim (POST)

/gateway/bonus/{version}/cashback/eligibility/{brand_id}

Parameters:

Name In Type Required Description
version path string true The API version to use.
brand_id path int true none
X-Auth-Token header string true header received from ‘Login’

Response

Status 200

{
  "status": "Success",
  "data": {
     "refId": 1825996,
      "msg": ""
  }
}

Status 400

{
  "status": "Error",
  "data": null,
  "message": "player is not eligible for cashback",
  "userFriendlyMessage": "player is not eligible for cashback"
}

Status 500

{
  "status": "Error",
  "data": null,
  "message": "internal server error",
  "userFriendlyMessage": "internal server error"
}

Deposit Bonus Eligibility

Request (GET)

/gateway/bonus/{version}/{brand_id}/deposit_bonus/eligibility

Parameters:

Name In Type Required Description
version path string true The API version to use.
brand_id path int true none
X-Auth-Token header string true header received from ‘Login’
bonus_code query string true The bonus code the players want to use
payment_method query string true the payment method the player wants to use
amount query decimal true the amount the players wants to deposit

Response

Status 200

{
  "status": "Success",
  "data": {
    "bonus_available": true
  }
}
{
  "status": "Success",
  "data": {
    "bonus_available": false,
    "decline_reasons": [
      [{"reason": "Bonus Inactive", "data": ""}, {"reason": "Limit Period", "data": "5"}],
      [{"reason": "Previous Bonus Required", "data": "Reqbon"}]
    ]
  }
}

Decline Reasons

  • invalid_bonus_code
  • bonus_opt_out
  • pending_withdrawals
  • bonus_inactive
  • date_restriction
  • currency_restriction
  • deposit_amount
  • limit_period
  • approved_withdrawal_amount
  • btag_restriction
  • country_restriction
  • day_restriction
  • unfinished_rounds
  • language_restriction
  • marketing_segment
  • deposit_count
  • payment_method
  • affiliate_id
  • player_balance
  • player_real_balance
  • previous_bonus_required
  • previous_bonus_restriction
  • vip_level
  • vip_segmentation

Status 400

{
  "status": "Error",
  "data": null,
  "message": "invalid input - invalid brand id",
  "userFriendlyMessage": "invalid input - invalid brand id"
}

Status 401

{
  "errMsg": "invalid input - invalid token"
}

Status 500

{
  "status": "Error",
  "data": null,
  "message": "internal server error",
  "userFriendlyMessage": "internal server error"
}

Forfeit Bonuses

Request (POST)

/gateway/bonus/{version}/manual_bonus/forfeit_bonuses/{brand_id}

Parameters:

Name In Type Required Description
version path string true The API version to use.
brand_id path int true none
X-Auth-Token header string true header received from ‘Login’

Response

Status 200

{
  "status": "Success",
  "data": {
    "bonus_amount_deducted": "10.4",
    "wagering_amount_deducted": "100"
  }
}

Status 207

{
  "status": "Failure",
  "data": {
    "bonus_amount_deducted": "10.4",
    "wagering_amount_deducted": "100"
  },
  "message": "Some bonuses were forfeited, but some were not",
  "userFriendlyMessage": "Some bonuses were forfeited, but some were not"
  
}

Status 400

{
  "status": "Error",
  "data": " Player has open rounds.",
  "message": "Player has open rounds.",
  "userFriendlyMessage": "Player has open rounds."
}
{
  "status": "Error",
  "data": " Player doesn't have an active bonus.",
  "message": "Player doesn't have an active bonus.",
  "userFriendlyMessage": "Player doesn't have an active bonus."
}

Status 401

{
  "errMsg": "invalid input - invalid token"
}

Status 500

{
  "status": "Error",
  "data": null,
  "message": "internal server error",
  "userFriendlyMessage": "internal server error"
}

Get Recent Active FRB Bonuses Statuses

Request (GET)

/gateway/bonus/{version}/data/{brand_id}

Parameters:

Name In Type Required Description
version path string true The API version to use.
brand_id path int true none
X-Auth-Token header string true Player Login Session

Response

Status 200

{
  "status": "Success",
  "data": [
    {
      "frb_template_name": "3 diff provider 1 g multi games",
      "frb_provider": "Pragmatic Play",
      "total_rounds": "23",
      "frb_game_name": "Sweet Bonanza",
      "frb_game_id": "158000003",
      "frb_bonus_description": "dfbdfbdfb",
      "event_time": "2025-04-10 10:02:06"
    }
  ]
}

Status 400

{
  "status": "Error",
  "data": {
    "errMsg": "invalid input - invalid brandId"
  },
  "message": "invalid brand_id",
  "userFriendlyMessage": "invalid brand id"
}

Status 401

{
  "status": "Error",
  "data": {
    "errMsg": "invalid input - invalid token"
  },
  "message": "authentication failed",
  "userFriendlyMessage": "Authentication failed"
}

Status 500

{
  "result": "internal server error"
}

Good Will Gesture bonus

Request Get GWG Parameters (GET)

/gateway/financials/{version}/gwg/eligibility/{brand_id}/{player_id}

Parameters:

Name In Type Required Description
version path string true The API version to use.
brand_id path int true none
player_id path int true none
Authorization header string true form prop AI_CHAT_AUTH_HEADER

Response

Status 200

{
  "status": "Success",
  "data": {
    "total_balance": 10,
    "bonus_opt_out": false,
    "logged_in": true,
    "vip_level": 1,
    "total_withdrawal_amount": 0,
    "total_deposit_amount": 0,
    "total_bonus_received": 10,
    "withdrawal_ratio": 0,
    "bonus_ratio": 0,
    "pending_kyc_verification": false,
    "cash_gift_eligible_deposits": 0,
    "cash_gift_eligible_deposits_eur": 0,
    "country": "NZ",
    "pending_withdrawal": 0
  }
}

Status 400

{
  "status": "Error",
  "data": null,
  "message": "invalid input - invalid brand id",
  "userFriendlyMessage": "invalid input - invalid brand id"
}

Status 500

{
  "status": "Error",
  "data": null,
  "message": "internal server error",
  "userFriendlyMessage": "internal server error"
}

Request Grant Manual Bonus (POST)

/gateway/bonus/{version}/gwg/{brand_id}/{player_id}

Parameters:

{
  "bonus_name": "string",
  "bonus_amount": 100
}
Name In Type Required Description
version path string true The API version to use.
brand_id path int true none
player_id path int true none
Authorization header string true form prop AI_CHAT_AUTH_HEADER

Response

Status 200

{
  "status": "Success",
  "data": {
     "refId": 1825996,
      "msg": ""
  }
}

Status 400

{
  "status": "Error",
  "data": null,
  "message": "player is not eligible for cashback",
  "userFriendlyMessage": "player is not eligible for cashback"
}

Status 500

{
  "status": "Error",
  "data": null,
  "message": "internal server error",
  "userFriendlyMessage": "internal server error"
}

Comp Points

Comp Points Endpoints

This section will display all available endpoints to get comp points data.

Subsections of Comp Points

Player Comp Points

This method retrieves a players balance of comp points.

Comp points are awarded to a player with each round. When the player accumulates a minimum number of comp points, they can convert their comp points to money. use gateway.[msdomain]

Request (GET)

/gateway/financials/compoints/{version}/{brand_id}

Parameters:

Name In Type Required Description
version path string true The API version to use.
brand_id path int true The ID of the casino. If a brand_id is not provided, all message formats will be fetched from default storage.
x-auth-token path string true Player login session.

Response

Status 200

{
  "compoints": 10,
  "conversionRate": 100
}

Status 400

{
  "errMsg": "invalid input - invalid brand id"
}

Status 401

{
  "errMsg": "invalid input - invalid token"
}

Status 404

{
  "errMsg": "Player getPlayerCompoints Details not found"
}

Status 500

{
  "result": "internal server error"
}

Response Parameters:

Name Description
compoints current comp points balance for player.
conversionRate conversion rate by player segmentation for comp points.

Request (PUT)

/gateway/financials/compoints/{version}/{brand_id}

Parameters:

{
  "conversionAmount": 0
}
Name In Type Required Description
version path string true The API version to use.
brand_id path int true The ID of the casino. If a brand_id is not provided, all message formats will be fetched from default storage.
x-auth-token path string true Player login session.
conversionAmount path int true amount to redeem, will be added to player balance (conversionAmount/ conversionRate), division must return a whole number.

Response

Status 200

{
  "exchangedCompoints": 10,
  "exchangedCash": 1
}

Status 400

{
  "errMsg": "invalid input - invalid brand id"
}

Status 401

{
  "errMsg": "invalid input - invalid token"
}

Status 404

{
  "errMsg": "exchangePlayerCompoints Details not found"
}

Status 422

{
  "result": {
    "field": "compoints_conversion",
    "errorCode": "conversion_value_required"
  }
}

Status 500

{
  "errMsg": "update PlayerCompoints not succeeded"
}

Response Parameters:

Name Description
exchangedCompoints amount exchanged.
exchangedCash amount redeemed to player account.

Transaction History

This method retrieves information about transactions and their statuses. use gateway.[msdomain]

Request (GET)

/gateway/financials/{version}/transactions/{brand_id}/{from}/{to}

Parameters:

Name In Type Required Description
version path string true The API version to use.
brand_id path string true The ID of the casino.
from path string true The start date for the time range.
to path string true The end date for the time range.
type query string false Filters transactions by type. (withdraw/deposit)
status query string false Filters transactions by transaction status.(accepted/rejected/pending)
x-auth-token header string false player login session

Response

Status 200

{
  "all_transactions": [
    {
      "date": "2015-08-05T08:40:51.620Z",
      "transaction_id": "1",
      "transaction_type": "deposit",
      "method": "visa",
      "amount": "1000",
      "status": "Approved"
    }
  ],
  "total_deposits": "0",
  "total_withdrawals": "0",
  "net_deposits": "0"
}

Status 207 (player has pending withdraw)

{
  "pending_withdrawl": {
    "date": "2015-08-05T08:40:51.620Z",
    "transaction_id": "1",
    "transaction_type": "withdrawl",
    "method": "visa",
    "amount": "1000",
    "status": "pending"
  },
  "all_transactions": [
    {
      "date": "2015-08-05T08:40:51.620Z",
      "transaction_id": "1",
      "transaction_type": "deposit",
      "method": "visa",
      "amount": "1000",
      "status": "Approved"
    }
  ],
  "total_deposits": "0",
  "total_withdrawals": "0",
  "net_deposits": "0"
}

Status 400

{
  "errMsg": "invalid input - invalid brand id"
}

Status 500

{
  "result": "internal server error"
}

Response Parameters:

Name Description
all_transactions.date Date of transaction.
all_transactions.transaction_id id of transaction.
all_transactions.transaction_type type of transaction.
all_transactions.method method of transaction.
all_transactions.amount amount of transaction.
all_transactions.status status of transaction.
pending_withdrawl.date Date of transaction.
pending_withdrawl.transaction_id id of transaction.
pending_withdrawl.transaction_type type of transaction.
pending_withdrawl.method method of transaction.
pending_withdrawl.amount amount of transaction.
pending_withdrawl.status status of transaction.
total_deposits total amount of deposits.
total_withdrawals total amount of withdrawals.

Withdraw

Withdrawal Endpoints

This section will display all available endpoints to get Withdrawal data.

In order to make a withdrawal, the following steps should be taken:

  1. Get Withdrawal Methods for the player.
  2. Check Withdrawal Requirements for the player.
  3. Begin Withdrawal process.

Subsections of Withdraw

Withdrawal Methods

This method retrieves all available payment methods that are available for withdrawals (both used and unused).

Note:

  • You can only withdraw money to a used card or bank.
  • If the returned value says no_card under cards, then the payment methods doesn’t require a card number.
  • The logo URL for each payment method appears under key: logo.
  • If no payment methods have been used, the API returns only the default payment methods under used_methods. In most cases, the only default payment method is a bank transfer. For details, see the second example. use gateway.[msdomain]

Request (GET)

/gateway/financials/{version}/methods/{brand_id}

Parameters:

Name In Type Required Description
version path string true The API version to use, for any version higher than 3.0, response will be async, and should be fetched from Status API.
brand_id path string true The ID of the casino. If a brand_id is not provided, all message formats will be fetched from default storage.
x-auth-token header string true Player login session.

Response

Status 200

Version < 4

{
  "used_methods": [
    {
      "Visa": [
        {
          "cards": [
            "3123",
            "-XXX"
          ]
        },
        {
          "logo": "[PROMO_URL]/payment_methods/my_account/visa.png"
        }
      ]
    }
  ],
  "unused_methods": [
    {
      "Skrill": "[PROMO_URL]/payment_methods/my_account/skrill.png"
    },
    {
      "Maestro": "[PROMO_URL]/payment_methods/my_account/maestro.png"
    },
    {
      "Neteller": "[PROMO_URL]/payment_methods/my_account/neteller.png"
    },
    {
      "EcoPayz": "[PROMO_URL]/payment_methods/my_account/ecopayz.png"
    },
    {
      "clickandbuy": "[PROMO_URL]/payment_methods/my_account/clickandbuy.png"
    }
  ]
}

Version = 4

[
  {
    "name": "Visa",
    "cards": [
      "1234"
    ],
    "logo": "logo.png",
    "min": "23.11",
    "max": "105.55"
  }
]

Status 400

{
  "errMsg": "invalid input - invalid brand id"
}

401 Response

{
  "errMsg": "invalid input - invalid token"
}

Status 500

{
  "result": "internal server error"
}

Response Parameters:

Version < 4
Name Type Description
used_methods object List which will contain all the available withdrawal methods for this player (depends also on deposit history).
unused_methods int additional methods(player cannot withdraw with them).
Version = 4
Name Type Description
name string The name of the payment method.
cards array The last four digits of the card number.
logo string The URL of the payment method’s logo.
min string The minimum amount that can be withdrawn using this payment method.
max string The maximum amount that can be withdrawn using this payment method.

Withdrawal Requirements

Check Withdrawal Requirements

This method checks the requirements for making a withdrawal. use gateway.[msdomain]

Request (GET)

/gateway/financials/{version}/requirements/{brand_id}

Parameters:

Name In Type Required Description
version path string true The API version to use, for any version higher than 3.0, response will be async, and should be fetched from Status API.
brand_id path string true The ID of the casino. If a brand_id is not provided, all message formats will be fetched from default storage.
x-auth-token header string true Player login session.

Response

Status 200

{
  "minimum_withdrawal": 5,
  "maximum_withdrawal": "100;"
}

Status 400

{
  "errMsg": "invalid input - invalid brand id"
}

Status 400

{
  "message_format": "wagering_requirements",
  "wagering": 100
}

401 Response

{
  "errMsg": "invalid input - invalid token"
}

Status 500

{
  "result": "internal server error"
}

Response Parameters:

Name Type Description
minimum_withdrawal int minimum amount for withdraw (in major currency).
maximum_withdrawal int maximum amount for withdraw.

Withdrawal Request

This method creates a new, pending withdrawal request. It first verifies that all of the following requirements are met:

  • The payment_method matches one of the payment methods in the response to the Get Payment Methods call
  • The amount is for at least the minimum amount required
  • The card_number parameter includes either the player’s card number if withdrawing to a payment card, or the value no_card if the withdraw is via wire transfer

Note: If withdrawing to a payment card, it must be a card that the player has already used to make a payment or deposit. use gateway.[msdomain]


Version Compatibility Note If you use version 4 in the Get Payment Methods API, you must also use version 4 here in the Withdrawal Request API. Mixing versions will result in incompatible formats and may cause request failures.


Request (POST)

/gateway/financials/{version}/withdrawal/{brand_id}

Parameters:

{
  "amount": 0,
  "bonus_removal": true,
  "payment_method": "stringst",
  "card_number": "string",
  "accountname": "string",
  "accountnumber": "string",
  "swift": "string",
  "bankname": "string"
}
Name In Type Required Description
version path string true The API version to use.
brand_id path int true The ID of the casino. If a brand_id is not provided, all message formats will be fetched from default storage.
x-auth-token header string true Player login session.
request-id header string true 2fa request id.
amount body int true request amount in cents.
bonus_removal body bool true indication if player has approved bonus removal.
payment_method body bool true requested payment method.
card_number body bool true Relevant only for Bank Transfer, the card number.
accountname body bool true Relevant only for Bank Transfer, the account name.
accountnumber body bool true Relevant only for Bank Transfer, the account number.

Response

Note on redirect_url: Some payment providers may require additional player actions after a withdrawal request (e.g., card tokenization). When the response includes a redirect_url field with a non-empty value:

  • The client should open this URL to allow the player to complete the required action
  • The URL can be opened in an iframe or a new browser tab/window
  • This is currently used for payment providers like Rapyd when handling Visa and Mastercard withdrawals for players who don’t have a saved card token
  • Future payment providers or additional use cases may utilize this field

Return URL Flow: After the player completes the action on the redirect URL (which may be on a different site), they will be redirected back to the site they came from. The return URL includes a status indicator that must be handled by the client. The status can be one of:

  • Success - Card token created successfully
  • Pending - Card token creation is pending
  • Failed - Card token creation failed

Upon return, the player should be prompted with the appropriate status of their withdrawal request.

Return URL Configuration: The return URL pattern is configurable per operator and set once during operator setup. While the domain is preset (the system knows where the player came from), operators can customize the URL pattern according to their site structure. Examples of possible configurations:

  • Path-based: https://yoursite.com/card/token/success
  • Hash-based: https://yoursite.com#cardTokenSuccess
  • Custom path: https://yoursite.com/withdrawal/card-verification/success

This follows the same pattern as deposit redirections, allowing operators to align with their existing URL structure.

Status 201

{
  "amount": 1000,
  "ref_id": 147852369,
  "message_format": "withdraw_success",
  "redirect_url": "https://example.com/card-tokenization"
}

Status 400

{
  "errMsg": "invalid input - invalid brand id"
}

Status 401

{
  "errMsg": "invalid input - invalid token"
}

Status 403

{
  "status": "Failure",
  "data": {
    "request-id": "1234567890"
  },
  "message": "2FA required",
  "userFriendlyMessage": "2FA required"
}

If you receive a 422 error code for an Unprocessable Entity error, the client should not use the Message Format method to send a request to the server, but use its internal logic to present the message for one or more fields that didn’t pass the validation.

When a 422 validation error occurs, the response returns an array of one or more error codes detailing the fields that have validation errors. Multiple error messages are issued in the same validation form. The site should handle these validation errors and present a validation message to the player.

This will not call the message format.

The following table explains validation code behavior:

Field Error Code Description
amount minimum_withdrawal_requirement minimum withdrawal amount not met.
balance bonus_removal_warning notification for the player that he has bonus balance available and it will be reset.
{
  "message_format": "minimum_withdrawal_requirement",
  "minimum_withdrawal_amount": 5
}

Status 429

{
  "status": "Failure",
  "data": "2fa code rate limit reached",
  "message": "2FA required",
  "userFriendlyMessage": "2FA required"
}

Status 500

{
  "result": "internal server error"
}

Response Parameters:

Name Description
amount request amount.
ref_id reference ID.
message_format Message format to be displayed taken from Message Format.
redirect_url (Optional) URL for additional actions required after withdrawal request. If returned and not empty, client should open this URL (in iframe or new tab). Currently used for payment provider card tokenization (e.g., Rapyd for Visa/Mastercard when player has no saved card token). After completing the action, the player will be redirected back to your site with a status path (/card/token/{success|pending|failed}). May be extended for additional providers or use cases in the future.

Withdrawal Cancellation

This method cancels a pending withdrawal request, based on the transaction_id in the response to the Transaction History call. Use gateway.[msdomain]

Request (PUT)

/gateway/financials/{version}/withdrawal/{brand_id}

Parameters:

{
  "transaction_id": 0
}
Name In Type Required Description
version path string true The API version to use.
brand_id path int true The ID of the casino. If a brand_id is not provided, all message formats will be fetched from default storage.
x-auth-token header string true Player login session.
transaction_id body int true reference to cancel.

Response

Status 200

{
  "message_format": "cancellation_success"
}

Status 400

{
  "errMsg": "invalid input - invalid brand id"
}

Status 400

{
  "message_format": "cancellation_failed"
}

Status 401

{
  "errMsg": "invalid input - invalid אםלקמ"
}

Status 500

{
  "result": "internal server error"
}

Response Parameters:

Name Description
message_format Message format to be displayed taken from Message Format.

Gamification Coins

Gamification Coins Endpoints

Warning

Testing Phase: These endpoints are currently in testing and not ready for production. API structure and responses may change.

This section provides all available endpoints for the gamification coins system - a virtual currency that players can earn and redeem for various rewards including cash bonuses, free rounds bonuses, and physical items.

Overview

The gamification coins system allows:

  • Balance Management: Track player coins balances with full transaction history
  • Redemption: Players can redeem coins for shop items (cash bonuses, free rounds, physical items)
  • Smart Filtering: Shop items are filtered based on player context (VIP level, country, balance, game availability)
  • Transaction Tracking: Complete audit trail of all coin movements

Authentication

All endpoints require player authentication via the x-auth-token header (except Get Available Shop Items which supports both authenticated and anonymous access).

Available Endpoints

  1. Get Balance - Retrieve player’s current coins balance and totals
  2. Redeem Points - Redeem coins for shop items
  3. Get Transaction History - View paginated transaction history with filters
  4. Get Available Shop Items - Browse shop items filtered by player eligibility

Subsections of Gamification Coins

Get Balance

Warning

Testing Phase: This endpoint is currently in testing and not ready for production. API structure and responses may change.

This method retrieves the current gamification coins balance for a player. Use gateway.[msdomain]

Request (GET)

/gateway/coins/balance/{version}/{brand_id}

Parameters:

Name In Type Required Description
version path string true The API version to use.
brand_id path int true Brand identifier
x-auth-token header string true Player authentication token (extracted from request header)

Note: The player_id is automatically extracted from the x-auth-token header by the gateway and appended to the path when forwarding to the marketing service.

Response

Status 200

{
  "status": "success",
  "data": {
    "brand_id": 1001,
    "player_id": 12345,
    "current_balance": "250.50",
    "total_received": "500.00",
    "total_redeemed": "249.50",
    "updated_at": "2025-01-09T14:30:00Z"
  },
  "message": "Successfully retrieved player balance"
}

Response Fields:

Field Type Description
brand_id int Brand identifier
player_id int Player identifier
current_balance string Current available coins balance (decimal)
total_received string Total coins received since account creation (decimal)
total_redeemed string Total coins redeemed since account creation (decimal)
updated_at string Last balance update timestamp (ISO 8601)

Status 500

{
  "status": "error",
  "data": null,
  "message": "Failed to get player balance"
}

Redeem Points

Warning

Testing Phase: This endpoint is currently in testing and not ready for production. API structure and responses may change.

This method processes a coin redemption/claim for a shop item. Use gateway.[msdomain]

The endpoint validates player eligibility, deducts coins from the player’s balance, and processes the shop item (e.g., grants a bonus, creates a free rounds bonus, or registers a physical item claim).

Request (POST)

/gateway/coins/redeem/{version}/{brand_id}

Parameters:

Name In Type Required Description
version path string true The API version to use.
brand_id path int true Brand identifier
x-auth-token header string true Player authentication token (extracted from request header)

Note: The player_id is automatically extracted from the x-auth-token header by the gateway and appended to the path when forwarding to the marketing service.

Request Body:

{
  "shop_item_id": "507f1f77bcf86cd799439011",
  "rounds": 20,
  "trigger_source": "PLAYER_SHOP",
  "trigger_details": {
    "source_page": "shop_ui",
    "campaign": "weekend_promo"
  },
  "comment": "Weekend promotion claim",
  "uuid": "unique-idempotency-key-123"
}
Field Type Required Description
shop_item_id string true MongoDB ObjectID of the shop item to redeem
rounds int false Number of rounds for FRB selection (only required for FRB items with multiple tiers)
trigger_source string false Source of the redeem (default: “MANUAL”)
trigger_details object false Additional metadata about the redemption
comment string false Optional comment for the transaction
uuid string false Optional idempotency key to prevent duplicate redemptions

Response

Status 200 - Success

{
  "status": "success",
  "data": {
    "success": true,
    "transaction_id": 123456,
    "financial_ref_id": 78910,
    "new_balance": "150.50",
    "amount": "100.00",
    "already_processed": false
  },
  "message": "Successfully claimed coins"
}

Response Fields:

Field Type Description
success boolean Whether the redemption was successful
transaction_id int64 ID of the gamification coins transaction
financial_ref_id int64 Optional - Financial reference ID (e.g., bonus ID) if shop item created one
new_balance string Player’s new coins balance after redemption (decimal)
amount string Amount of coins deducted (decimal)
already_processed boolean True if the UUID was already used (idempotent response)

Status 422 - Validation Error

{
  "status": "fail",
  "data": {
    "result": {
      "code": "INSUFFICIENT_BALANCE",
      "message": "Insufficient balance to redeem this item"
    }
  },
  "message": "Validation error while claiming coins"
}

Common Error Codes:

  • INSUFFICIENT_BALANCE - Player doesn’t have enough coins
  • ITEM_NOT_FOUND - Shop item ID doesn’t exist
  • ITEM_NOT_ELIGIBLE - Player is not eligible for this item (segmentation/eligibility filters)
  • INVALID_ROUNDS_SELECTION - Invalid rounds parameter for FRB item
  • GAME_NOT_AVAILABLE - FRB game is not available for the player

Status 500 - Server Error

{
  "status": "error",
  "data": null,
  "message": "Failed to claim coins"
}

Example Use Cases

Redeem Cash Bonus Item

{
  "shop_item_id": "507f1f77bcf86cd799439011",
  "uuid": "unique-transaction-uuid"
}

Redeem FRB Item with Specific Rounds

{
  "shop_item_id": "507f1f77bcf86cd799439012",
  "rounds": 50,
  "uuid": "unique-transaction-uuid"
}

Redeem Physical Item

{
  "shop_item_id": "507f1f77bcf86cd799439013",
  "comment": "T-shirt size L",
  "uuid": "unique-transaction-uuid"
}

Notes

  • The endpoint automatically extracts the player’s IP address for player context validation
  • Player token from x-auth-token header is used for game availability checks (FRB filtering)
  • Idempotency: If the same uuid is provided multiple times, the first successful redemption is processed, and subsequent requests return the same response with already_processed: true
  • For FRB items with multiple rounds configurations, the rounds parameter must match one of the available tiers

Get Transaction History

Warning

Testing Phase: This endpoint is currently in testing and not ready for production. API structure and responses may change.

This method retrieves the paginated transaction history for a player’s gamification coins. Use gateway.[msdomain]

Request (GET)

/gateway/coins/transactions/{version}/{brand_id}

Parameters:

Name In Type Required Description
version path string true The API version to use.
brand_id path int true Brand identifier
x-auth-token header string true Player authentication token (extracted from request header)
page query int false Page number (default: 1, min: 1, max: 1000)
page_size query int false Number of items per page (default: 20, min: 1, max: 100)
transaction_type query string false Filter by transaction type (RECEIVED or REDEEMED)
start_date query string false Filter transactions from this date (ISO 8601 format)
end_date query string false Filter transactions until this date (ISO 8601 format)

Note: The player_id is automatically extracted from the x-auth-token header by the gateway and appended to the path when forwarding to the marketing service.

Query Parameter Examples:

?page=1&page_size=20
?transaction_type=REDEEMED
?start_date=2025-01-01T00:00:00Z&end_date=2025-01-31T23:59:59Z
?page=2&page_size=50&transaction_type=RECEIVED

Response

Status 200

{
  "status": "success",
  "data": {
    "transactions": [
      {
        "id": 123456,
        "transaction_type": "REDEEMED",
        "transaction_sub_type": "CASH_BONUS",
        "amount": "-100.00",
        "balance_before": "250.50",
        "balance_after": "150.50",
        "created_at": "2025-01-09T14:30:00Z",
        "source": "PLAYER_SHOP",
        "reference_id": 78910,
        "trigger_details": {
          "shop_item_id": "507f1f77bcf86cd799439011",
          "shop_item_name": "10 USD Cash Bonus"
        }
      },
      {
        "id": 123455,
        "transaction_type": "RECEIVED",
        "transaction_sub_type": "MANUAL",
        "amount": "50.00",
        "balance_before": "200.50",
        "balance_after": "250.50",
        "created_at": "2025-01-08T10:15:00Z",
        "source": "ADMIN_GRANT",
        "reference_id": null,
        "trigger_details": {
          "comment": "Customer satisfaction compensation"
        }
      },
      {
        "id": 123454,
        "transaction_type": "REDEEMED",
        "transaction_sub_type": "FRB",
        "amount": "-75.00",
        "balance_before": "275.50",
        "balance_after": "200.50",
        "created_at": "2025-01-07T18:45:00Z",
        "source": "PLAYER_SHOP",
        "reference_id": 54321,
        "trigger_details": {
          "shop_item_id": "507f1f77bcf86cd799439012",
          "shop_item_name": "50 Free Rounds on Starburst",
          "game_id": "starburst",
          "provider_id": "netent",
          "rounds": 50
        }
      }
    ],
    "pagination": {
      "page": 1,
      "page_size": 20,
      "total_pages": 5,
      "total_items": 87
    }
  },
  "message": "Successfully retrieved transaction history"
}

Response Fields:

Transaction Object:
Field Type Description
id int64 Transaction identifier
transaction_type string Type of transaction: “RECEIVED” or “REDEEMED”
transaction_sub_type string Sub-type: “MANUAL”, “CASH_BONUS”, “FRB”, “PHYSICAL”, etc.
amount string Transaction amount (decimal, negative for REDEEMED)
balance_before string Balance before the transaction (decimal)
balance_after string Balance after the transaction (decimal)
created_at string Transaction timestamp (ISO 8601)
source string Trigger source (e.g., “PLAYER_SHOP”, “ADMIN_GRANT”, “SYSTEM”)
reference_id int64 Optional - Financial reference ID (e.g., bonus ID)
trigger_details object Optional - Additional transaction metadata
Pagination Object:
Field Type Description
page int Current page number
page_size int Number of items per page
total_pages int Total number of pages
total_items int Total number of transactions

Transaction Sub-Types:

  • RECEIVED Transactions:

    • MANUAL - Manually granted coins (admin/system)
  • REDEEMED Transactions:

    • CASH_BONUS - Redeemed cash bonus item
    • FRB - Redeemed free rounds bonus item
    • PHYSICAL - Redeemed physical item

Status 500

{
  "status": "error",
  "data": null,
  "message": "Failed to get transaction history"
}

Notes

  • Transactions are returned in reverse chronological order (newest first)
  • Invalid query parameters (page, page_size) will be ignored and defaults will be used
  • Date filters use inclusive ranges (start_date ≤ transaction.created_at ≤ end_date)
  • The trigger_details field contains context-specific information based on the transaction type
  • For REDEEMED transactions, reference_id typically contains the financial system reference (e.g., bonus ID for CASH_BONUS)

Get Available Shop Items

Warning

Testing Phase: This endpoint is currently in testing and not ready for production. API structure and responses may change.

This method retrieves shop items available for a specific player, filtered by player context (VIP level, country, balance, date/time) and game availability. Use gateway.[msdomain]

This endpoint is used to display the shop UI to players, showing only items they are eligible to redeem.

Request (GET)

/gateway/coins/shop/available/{version}/{brand_id}

Parameters:

Name In Type Required Description
version path string true The API version to use.
brand_id path int true Brand identifier
x-auth-token header string false Player authentication token (optional - if not provided, returns all active items)

Note:

  • If x-auth-token is provided, the player_id is extracted and added as a query parameter (?player_id=123) when forwarding to the marketing service
  • If no token is provided, the endpoint returns all active shop items without eligibility filtering (useful for anonymous/preview mode)
  • Player IP address is automatically extracted from the request for geo-location filtering

Response

Status 200 - With Authentication

{
  "status": "success",
  "data": {
    "items": [
      {
        "item": {
          "id": "507f1f77bcf86cd799439011",
          "brand_id": 1001,
          "name": "cash_bonus_10_usd",
          "display_name": "10 USD Cash Bonus",
          "description": "Get $10 cash bonus added to your account",
          "status": "active",
          "segmentation_filters": [
            {
              "field": "vip_level",
              "filter_type": "enum",
              "operator": "in",
              "comparison_val": [3, 4, 5]
            }
          ],
          "eligibility_filters": [
            {
              "field": "balance",
              "filter_type": "numeric",
              "operator": "greater_than_or_equals",
              "comparison_val": 50.0
            }
          ],
          "type": "CASH_BONUS",
          "data": [
            {
              "currency": "USD",
              "amount": "10.00",
              "coins_cost": "100.00"
            },
            {
              "currency": "EUR",
              "amount": "8.50",
              "coins_cost": "100.00"
            }
          ],
          "purchase_stats": {
            "past_week_count": 5,
            "lifetime_count": 127
          },
          "created_at": "2024-12-01T10:00:00Z",
          "created_by": "admin@casino.com",
          "updated_at": "2025-01-05T14:30:00Z",
          "updated_by": "admin@casino.com"
        },
        "is_eligible": true,
        "ineligible_reasons": []
      },
      {
        "item": {
          "id": "507f1f77bcf86cd799439012",
          "brand_id": 1001,
          "name": "frb_starburst_50",
          "display_name": "50 Free Rounds on Starburst",
          "description": "Get 50 free spins on Starburst slot",
          "status": "active",
          "segmentation_filters": [
            {
              "field": "country",
              "filter_type": "string",
              "operator": "in",
              "comparison_val": ["US", "CA", "GB"]
            },
            {
              "field": "day_of_week",
              "filter_type": "enum",
              "operator": "in",
              "comparison_val": [6, 7]
            }
          ],
          "eligibility_filters": [
            {
              "field": "balance",
              "filter_type": "numeric",
              "operator": "greater_than_or_equals",
              "comparison_val": 75.0
            }
          ],
          "type": "FRB",
          "data": {
            "game_id": "starburst",
            "provider_id": "netent",
            "rounds_conf": [
              {
                "rounds": 20,
                "coins_cost": "50.00",
                "duration": 30,
                "conf": [
                  {
                    "currency": "USD",
                    "wagering_multiplier": "10.00",
                    "max_winning": "100.00"
                  },
                  {
                    "currency": "EUR",
                    "wagering_multiplier": "10.00",
                    "max_winning": "85.00"
                  }
                ]
              },
              {
                "rounds": 50,
                "coins_cost": "100.00",
                "duration": 60,
                "conf": [
                  {
                    "currency": "USD",
                    "wagering_multiplier": "15.00",
                    "max_winning": "250.00"
                  }
                ]
              }
            ]
          },
          "purchase_stats": {
            "past_week_count": 12,
            "lifetime_count": 342
          },
          "created_at": "2024-11-15T10:00:00Z",
          "created_by": "admin@casino.com",
          "updated_at": "2025-01-01T12:00:00Z",
          "updated_by": "admin@casino.com"
        },
        "is_eligible": false,
        "ineligible_reasons": [
          "balance: requires 75.00, player has 50.00",
          "day_of_week: requires [6,7], today is 3"
        ]
      },
      {
        "item": {
          "id": "507f1f77bcf86cd799439013",
          "brand_id": 1001,
          "name": "tshirt_limited_edition",
          "display_name": "Limited Edition T-Shirt",
          "description": "Get an exclusive casino branded t-shirt",
          "status": "active",
          "segmentation_filters": [
            {
              "field": "vip_level",
              "filter_type": "enum",
              "operator": "in",
              "comparison_val": [5]
            }
          ],
          "eligibility_filters": [],
          "type": "PHYSICAL",
          "data": {
            "name": "Limited Edition T-Shirt",
            "description": "Casino branded t-shirt, size L",
            "coins_cost": "500.00"
          },
          "purchase_stats": {
            "past_week_count": 2,
            "lifetime_count": 45
          },
          "created_at": "2024-10-01T10:00:00Z",
          "created_by": "admin@casino.com",
          "updated_at": "2024-12-20T16:00:00Z",
          "updated_by": "admin@casino.com"
        },
        "is_eligible": true,
        "ineligible_reasons": []
      }
    ]
  },
  "message": "Successfully retrieved available shop items"
}

Status 200 - Without Authentication (Anonymous/Preview Mode)

{
  "status": "success",
  "data": {
    "items": [
      {
        "item": {
          "id": "507f1f77bcf86cd799439011",
          "brand_id": 1001,
          "name": "cash_bonus_10_usd",
          "display_name": "10 USD Cash Bonus",
          "description": "Get $10 cash bonus added to your account",
          "status": "active",
          "type": "CASH_BONUS",
          "data": [...],
          "purchase_stats": {
            "past_week_count": 5,
            "lifetime_count": 127
          }
        },
        "is_eligible": false,
        "ineligible_reasons": []
      }
    ]
  },
  "message": "Successfully retrieved available shop items"
}

Response Fields:

ShopItemAvailability Object:
Field Type Description
item object Shop item details (see ShopItem below)
is_eligible boolean Whether the player is eligible to redeem this item
ineligible_reasons string[] List of reasons why the player is not eligible (empty if eligible)
ShopItem Object:
Field Type Description
id string Shop item MongoDB ObjectID
brand_id int Brand identifier
name string Internal item name
display_name string User-facing display name
description string Item description
status string Item status: “active” or “inactive”
segmentation_filters Filter[] Player segmentation filters (VIP level, country, day of week, date)
eligibility_filters Filter[] Player eligibility filters (balance, etc.)
type string Item type: “CASH_BONUS”, “FRB”, or “PHYSICAL”
data object Type-specific data (see examples below)
purchase_stats object Purchase statistics (past_week_count, lifetime_count)
created_at string Creation timestamp (ISO 8601)
created_by string Creator email
updated_at string Last update timestamp (ISO 8601)
updated_by string Last updater email
Filter Object:
Field Type Description
field string Filter field: “vip_level”, “country”, “day_of_week”, “date”, “balance”
filter_type string Filter type: “numeric”, “string”, “enum”, “regex”, “date”
operator string Comparison operator: “in”, “equals”, “greater_than”, “less_than”, etc.
comparison_val any Value(s) to compare against (type depends on filter_type)
Data Types by Item Type:

CASH_BONUS:

[
  {
    "currency": "USD",
    "amount": "10.00",
    "coins_cost": "100.00"
  }
]

FRB (Free Rounds Bonus):

{
  "game_id": "starburst",
  "provider_id": "netent",
  "rounds_conf": [
    {
      "rounds": 50,
      "coins_cost": "100.00",
      "duration": 30,
      "conf": [
        {
          "currency": "USD",
          "wagering_multiplier": "15.00",
          "max_winning": "250.00"
        }
      ]
    }
  ]
}

PHYSICAL:

{
  "name": "Limited Edition T-Shirt",
  "description": "Casino branded t-shirt, size L",
  "coins_cost": "500.00"
}

Status 500

{
  "status": "error",
  "data": null,
  "message": "Failed to get available shop items"
}

Filtering Logic

The endpoint applies multiple layers of filtering:

  1. Status Filter: Only “active” shop items are returned
  2. Segmentation Filters (if player is authenticated):
    • VIP Level: Player’s VIP level must match filter criteria
    • Country: Player’s country (from IP) must match filter criteria
    • Day of Week: Current day must match filter criteria (1=Monday, 7=Sunday)
    • Date: Current date/time must match filter criteria
  3. Eligibility Filters (if player is authenticated):
    • Balance: Player’s coins balance must meet threshold
  4. Game Availability (for FRB items, if player is authenticated):
    • Game must be available for the player based on their token
    • Filtered rounds configurations based on player’s currency

Notes

  • Anonymous Access: If no x-auth-token is provided, all active items are returned with is_eligible: false and empty ineligible_reasons
  • Player Context: Player IP, token, VIP level, balance, and country are automatically extracted for filtering
  • FRB Filtering: For FRB items, the data.rounds_conf array is filtered to include only configurations matching the player’s currency
  • Purchase Stats: Statistics show popularity (past 7 days and lifetime)
  • Ineligible Reasons: Clear human-readable explanations for why a player cannot redeem an item
  • Multi-Currency: CASH_BONUS and FRB items can have configurations for multiple currencies

Player Wagering Details

Request (GET)

This method retrieves player wagering details

/gateway/financials/{version}/wagering/{brand_id}

Parameters:

Name In Type Required Description
version path string true The API version to use.
brand_id path int true none
x-auth-token header string true Player session token

Response

Status 200

{
  "status": "Success",
  "data":{
    "total_player_wagering_requirement": 1000,
    "remaining_wagering_balance": 400,
    "fulfilled_wagering": 600,
    "wagering_progress": 60
  }
}

Status 400

{
  "status": "Error",
  "data":{
    "errMsg": "invalid input - invalid token"
  },
  "message": "authentication failed",
  "userFriendlyMessage": "Authentication failed"
}
{
"status": "Error",
"data": {
  "errMsg": "invalid input - invalid brandId"
},
"message": "invalid brand_id",
"userFriendlyMessage": "invalid brand id"
}

Status 401

{
  "status": "Error",
  "data": {
    "errMsg": "invalid input - invalid token"
  },
  "message": "authentication failed",
  "userFriendlyMessage": "Authentication failed"
}

Status 500

{
  "status": "Error",
  "data":"",
  "message": "unable to get player wagering details",
  "userFriendlyMessage": "unable to get player wagering details"
}

Response Parameters:

Name Description
total_player_wagering_requirement total (original/initial) wagering rerquirement as sum of all bonus wagerings
remaining_wagering_balance how much wagering is left until we complete the wagering requirements
fullfiled_wagering how much of the total player wagering reqruirement was fullfiled
wagering_progress ratio of fullfiled / total player wagering requirement, multiplied by 100 to show as precent of total