|
Does the difference make difference? PG Soft integration with the SoftSwiss Game Aggregator helps us to figure this out!

Contents
Revision History ......................................................................................................................................3
1 Overview...........................................................................................................................................6
2 System Requirements.......................................................................................................................7
2.1 Game Dimensions...................................................................................................................7
2.2 Hardware ................................................................................................................................7
2.3 Browser...................................................................................................................................7
2.4 Unsupported Browser.............................................................................................................7
3 Launch Game....................................................................................................................................8
3.1 Game Authorization Modes....................................................................................................8
3.1.1 URL Scheme ........................................................................................................................9
3.1.2 Web Lobby ........................................................................................................................13
3.2 Game Launch Restrictions ....................................................................................................15
4 Game Launch JS Library..................................................................................................................16
4.1 Avoid Browser Pop-up Blockers............................................................................................16
4.2 Implementation ....................................................................................................................17
5 Integration API................................................................................................................................18
5.1 Operator Provided API..........................................................................................................18
5.1.1 API Formats.......................................................................................................................18
5.1.2 Verify Session....................................................................................................................22
5.1.3 Wallet Operation...............................................................................................................24
5.2 PGSoft Provided API..............................................................................................................54
5.2.1 API Formats.......................................................................................................................54
5.2.2 Bet History Interpreter (Optional) ....................................................................................55
5.2.3 Others (Optional) ..............................................................................................................58
5.3 Integrate PGSoft Game into Operator’s iOS Application......................................................59
6 Resolve Pending Bet.......................................................................................................................60
7 Reset Game State ...........................................................................................................................62
8 Restrictions.....................................................................................................................................63
8.1 IP ...........................................................................................................................................63
8.2 Currency................................................................................................................................63
9 Appendix.........................................................................................................................................64
9.1 Error codes............................................................................................................................64
9.2 Currencies.............................................................................................................................66
9.3 Bet Types...............................................................................................................................70
9.4 Transaction Types.................................................................................................................71
9.5 Platforms...............................................................................................................................71
9.6 Languages..............................................................................................................................72
Revision History
Version Date Description
2.2 2021-05-20 Revamp Version of document
2.3 2021-05-28
5.1.3.2 Bet & Payout
• Amended Failed Transaction section
2.4 2021-10-13
Added new contents
• 5.1.1.3 Hash Authentication
Added new APIs
• 5.1.3.2.3 Bet Payout
• 5.1.3.3 Balance Adjustment
Amended restricted countries
• 8.1 IP
Amended currency list
• 9.2 Currencies
Amended contents
• 5.1.3.2.1 Bet
• 5.1.3.2.2 Payout
Amended Trace Id in API URL and API URL example
• 5.1.2 Verify Session
• 5.1.3.1 Get Player Wallet
• 5.1.3.2.1 Bet
• 5.1.3.2.2 Payout
Added new error code
• 9.1 Error codes
Amended browser support version
• 2.3 Browser
Amended request
• 3.1.1 URL Scheme
Removed section
• 9.6 Games
2.4.1 2021-11-10
Amended Request
• 5.1.3.2.3 Bet Payout
Change validation description
• 5.1.3.2.3 Bet Payout
Fixed incorrect document layout and format issue
• 5.1.2 Verify Session
2.4.2 2021-11-24
Amended Request
• 5.1.3.2.3 Bet Payout
Added validation condition
• 5.1.3.2.3 Bet Payout
2.4.3 2022-06-27
Amended data type
• 3.1.2 Web Lobby
Amended description
• 3.1.1 URL Scheme
• 5.1.1.3.1 Header Fields
Added new currencies
• 9.2 Currencies
Removed Jackpot related parameters & API
• 5.2.9 Others (Optional)
• 5.1.3.2.1 Bet (Deprecated)
• 5.1.3.2.2 Payout (Deprecated)
• 5.1.3.2.3 Bet Payout
Removed parameter is_minus_count from General Bet Information
• 5.1.3.2.3 Bet Payout
Added missing parameter (create_time & platform)
• 5.1.3.2.3 Bet Payout
Amended description & URL example
• 5.1.1.3.1 Hash Fields
• 3.1.2 Web Lobby
Removed ct parameter from API request
• 3.1.1 URL Scheme
Added new language
• 9.6 Languages
Amended API URL
• 5.2.8 Bet History Interpreter (Optional)
Removed player related API
• 5.2.3 Create Player (Optional)
• 5.2.4 Kick Out Player (Optional)
• 5.2.5 Suspend Player (Optional)
• 5.2.6 Resume Player (Optional)
• 5.2.7 Check Player Status (Optional)
Added new API
• 5.1.3.4 Update Bet Details
Added new contents
• 2.4 Unsupported Browser
2.4.4 2022-07-22
Amended parameter name
• 3.1.2 Web Lobby
• 4.2 Implementation
Amended contents & removed PHP currency
• 8.2 Currency
Removed DEC & TNT currency
• 9.2 Currencies
Amended contents
• 3.1.1.1 Reality Check
Removed rurl parameter
• 3.1.1 URL Scheme
Amended contents
• 5.1.1.3.1 Header Fields
2.4.5 2023-05-20
Added new contents and new request parameter
• 3.1.1 URL Scheme
• 3.1.2 Web Lobby
• 5.1.1.3 Hash Authentication (Optional)
• 5.1.2 Verify Session
• 5.1.3.2.3 Bet Payout
• 5.1.3.3 Balance Adjustment
Removed Game Authorization Modes
• 3.1 WebView
• 3.1.3 WebView (For PGSoft Apps and PGSoft Lobby only)
• 5.2.2 Login Game
Removed HRK & AUD Currency
• 9.2 Currencies
1 Overview
This document details the Integration of the operator wallet mode, also known as Seamless Wallet
mode. This process details that PGSoft system will call the operator API in real time for every single
transaction while the player is playing games to achieve the addition or deduction of the player's
balance.
2 System Requirements
2.1 Game Dimensions
PGSoft games are responsive H5 and are displayed vertically, thus, minimum dimensions are
required. Please refer to the following for game dimensions in iframe:
• Ideal dimensions : 1280 x 720
• Minimum dimensions : 540 x 960
• Maximum dimensions : 1080 x 2340
2.2 Hardware
Android iOS Windows
Version of
Operating System
5.0 or above 10.0 or above 7 or above
RAM 2GB 1GB 2GB
CPU
ARM Cortex-A9
or above
iPhone 6
or above
• 1 gigahertz (GHz) or faster
• 32-bit (x86) or 64-bit (x64)
processor
• Dual core at least
Storage 2GB and above 2GB and above 20GB and above
2.3 Browser
• Microsoft Edge : version 79 or above
• Firefox : version 58 or above
• Google Chrome : version 59 or above
• Safari : version 11.1 or above
• others : browser based on Chromium that equal to Google Chrome 59 or above
2.4 Unsupported Browser
• Android : Firefox browser, CM browser
• iOS : CM browser
• Desktop : UC browser, Baidu browser, Quark browser, CM browser, IE browser
3 Launch Game
3.1 Game Authorization Modes
PGSoft supports two kinds of game launch authorization modes:
• URL scheme mode is for iOS, Android and browser, it uses the token parameters to authorize
and login.
• Web lobby mode is a responsive web page which uses token parameters to authorize and
login.
3.1.1 URL Scheme
URL scheme is an ordinary method for game launch. Player is required to login via the operator’s
website and launch the game through the operator’s game lobby page
Note:
Operator is required to provide verifySession1 API for operator’s player session authentication
Request
API URL : {PgSoftPublicDomain}/{GameId}/index.html
HTTP method : GET
URL:
Parameter name Data Type Mandatory Description
GameId String Yes Unique identity for each game2
URL Parameters:
Parameter name Data Type Mandatory Description
btt Integer Yes Game launch mode3
ot String Yes Unique identity of operator
ops String Yes
Token generated by operator system
Note:
• Max 200 characters
• Please set the parameter value as
GUID format or any random string
• Please encode the value with
UrlEncode to avoid unexpected error
l String No
Display language of game4
Default: en
te Integer No
Time elapsed for game health reminder
in seconds for operator (Reality check5)
ri Integer No
Reminder interval for game health
reminder in seconds (Reality check6)
op String No
Custom parameter for operator, PGSoft
API will include parameter value upon
verifying operator’s player session
1 Please refer to Verify Session section for more information
2 Please get the latest list from PGSoft
3 Please refer to Bet Types section for complete list
4 Please refer to Languages section for complete list
5 Please refer to Reality Check section for more information
6 Please refer to Reality Check section for more information
Note: Please encode the value with
UrlEncode to avoid unexpected error
f String No
Game exit URL
Default: Redirect to PGSoft quit page
Note:
• In Trial Game mode, value will be
used for redirection of the Real
Game prompt
• Assign value to PGGameCloseUrl to
close the game window
• Please encode the value with
UrlEncode to avoid unexpected
errors
iwk Integer No
Device compatibility check7 when
launching the game
0: Normal mode (Default)
1: Skip compatibility check
Note:
• Skipping compatibility check might
cause WebGL error or WebGL crash
• This option is for IOS Web Kit &
Safari only
oc Integer No
Screen orientation check8 when
launching the game
0: Skip screen orientation check
1: Normal mode (Default)
Example:
https://m.pg-redirect.net/1/index.html?ot=abcd&ops=12345-abcd-1234-abcd12345&btt=1
7 Please refer to screenshot
3.1.1.1 Reality Check
In URL scheme9
, operator may include “te” and “ri” parameter into the launch game URL for reality
check.
• te : Time used in the calculation for the first reality check in second(s)
• ri : Reality check interval in second(s)
Example:
ri=300&te =290
The first reality check reminder will show after 10 seconds (300s-290s=10s), and subsequent
reminders will show up for every 5 minutes.
Screenshot
Health reminder
9 Please refer to URL Scheme section for more information
3.1.2 Web Lobby
PGSoft web lobby is a responsive webpage with all PGSoft games which allows player to play PGSoft
games in one place. It provides a brand-new experience to the player using beautiful, attractive,
informative, and effective UI design. We recommend operators to integrate PGSoft web lobby into
their website.
Player is required to login via the operator’s website and launch PGSoft games through PGSoft web
lobby.
Note:
Operator is required to provide verifySession10 API for operator’s player session authentication
Request
API URL : {PgSoftPublicDomain}/web-lobby/{panel_type}
HTTP method : GET
URL:
Parameter
name
Data Type Mandatory Description
panel_type String Yes
Display panel of web lobby at first load
[NO VALUE] : Default panel (Tournament)
tournament/open : Tournament – Open for
entry panel
tournament/process: Tournament – In progress
panel
tournament/end : Tournament – Ended panel
games : Show only game
10 Please refer to Verify Session section for more information
URL Parameters:
Parameter
name
Data type Mandatory Description
ot String Yes Unique identity of operator
ops String Yes
Token generated by operator system
Note:
• Max 200 characters
• Please set the parameter value as GUID format
or any random string
• Please encode the value with UrlEncode to
avoid unexpected error
l String No
Display language of web lobby11
Default: Player device language
width Integer No
Page width of web lobby
Default: Responsive
Value range: Value ≥ 930
Example:
https://public.pg-redirect.net/web-lobby/tournament/open/?ot=abc123&ops=abc123-
abc123&l=en
Screenshot
Web Lobby
3.2 Game Launch Restrictions
Multiple windows or multiple game launches are unsupported by PGSoft games. Players will be
locked and kick out of games, and encounter errors when the below are detected:
S1302XXXXXXXX: Unsuccessful Game Authorization
S1309XXXXXXXX: Player account been suspended
S1305XXXXXXXX: Server request failure
When encountering the above errors, players may close the game windows and relaunch the game
to unlock their player accounts:
S1302XXXXXXXX: Please relaunch the game
S1309XXXXXXXX: Player account will be unlocked automatically after 10 minutes, please relaunch
the game after 10 minutes
S1305XXXXXXXX: Please relaunch the game
4 Game Launch JS Library
Operator is required to launch the game by using PGSoft JS library to provide the best gaming
experience to players:
• Implementation of automatically adapting pop-up window according to the user's display size.
• PGSoft games are all designed to be displayed vertically, the pop-up window format is
consistent with product design.
• Achieving the optimal gaming Interface height will allow users to feel visually comfortable, in
line with usage habits.
• Presenting the best in-game visual quality to the players, providing the best gaming
experience.
4.1 Avoid Browser Pop-up Blockers
The general rules that popup blockers will engage are:
• Invoked from jаvascript that is not invoked by direct user action
• Pop-up content are not from the same domain as the source
Operator is recommended to follow the instructions below to avoid browser pop-up blockers:
• Create a redirection page and redirect to game launch URL (URL scheme12)
• When players click the game launch button/link, use the PGSoft JS function
(PGSDK.launchGame) and launch the redirection page.
4.2 Implementation
Step 1
Include the following line in the HTML <head> tags:
Note:
Operator can self-host the JS library as well: https://public.pg-redirect.net/sdk/main.min.js
Step2
Operator is required to create a self-host redirection page to bypass popup blockers on web
browsers.
Sample code of redirect page:
Step3
Use the following JS script to launch PGSoft games. Operator is required to create a self-host
redirection page to bypass popup blockers on web browsers.
Parameters:
Parameter name Data Type Mandatory Description
operator_redirection_URL String Yes
Operator self-host page which
will redirect to game launch
URL (URL scheme13)
Example:
PGSDK.launchGame('https://[OperatorDomain]/redirect.html');
5 Integration API
5.1 Operator Provided API
5.1.1 API Formats
5.1.1.1 Request
The API uses HTTP form methods and a RESTful endpoint structure. PGSoft will send requests in the
following content type:
Content-Type: application/x-www-form-urlencoded
5.1.1.2 Response
API returns JSON-formatted responses. For successful and failed API request, operator is required to
return an API response with HTTP status code 200.
API uses global JSON response format for all API methods, with the following content type:
Content-Type: application/json
Parameters:
Parameter name Data Type Description
data14 JSON Object Response information for API methods
error JSON Object Error information when an error or exception occur
Example:
Success Response
{
"data": {
[API method response. JSON object format may vary depending on API methods]
},
"error": null,
}
Failed/Error Response
{
"data": null,
"error": {
"code": "[Error code]",
"message": "[Error message]"
}
}
5.1.1.3 Hash Authentication (Optional)
We highly recommend that operator integrate with hash authentication to secure every request. If
operator choose to integrate with hash authentication, PGSoft system will validate the hash
information provided in the header fields in every request. Hash Authentication only implement to
Verify Session API.
5.1.1.3.1 Header Fields
The following table describes the various request headers in the preceding example:
Example
Host:
apiexample.pgsoft.com
x-date: 20190902
x-content-sha256:
1700116101f424b9f6fc695b4dbaf2b7b0ee763ba1b3b53298e3069143ed46f1
Authorization: PWS-HMAC-SHA256
Credential=20190902/OPERATORTOKENEXAMPLE/pws/v1,SignedHeaders=host;x
-content-sha256;xdate,Signature=d78220cf06ae85f9d1db11dad9c3fd926799619eab3d28574aadb
8cf328cd7aa
Header: x-content-sha256
Calculate a SHA256 hash of the request string body:
Example
POST body:
operator_token=abc123&secret_key=a1b25cde5f3gh46ijkl&count=5000&bet_
type=1&row_version=1346592723000
x-content-sha256:
1700116101f424b9f6fc695b4dbaf2b7b0ee763ba1b3b53298e3069143ed46f1
Header: Authentication
The following table describes the various components of the Authorization header value in
the preceding example:
To calculate a signature, you first need a string that includes {host}{x-content-sha256}{xdate} to sign. You will then calculate a HMAC-SHA256 hash of the string to sign by using a
signing key:
Calculate a HMAC-SHA256 hash of the string body:
Example
Salt : SALTEXAMPLE
Host : apiexample.pgsoft.com
x-date : 20190902
x-content-sha256 :
1700116101f424b9f6fc695b4dbaf2b7b0ee763ba1b3b53298e3069143ed46f1
Signature:
d78220cf06ae85f9d1db11dad9c3fd926799619eab3d28574aadb8cf328cd7aa
5.1.2 Verify Session
PGSoft game system will call this operator API to check the player session token generated when
players login to game.
Note:
• This API is required for URL scheme or web lobby authorization mode15
• New player will be created automatically
Request
API URL : {OperatorAPIDomain}/VerifySession
HTTP method : POST
URL Parameters:
Parameter name Data Type Mandatory Description
trace_id String Yes
Unique identity (GUID) of the request
Note:
Please set the parameter value as
GUID format
Body Parameters:
Parameter name Data Type Mandatory Description
operator_token String Yes Unique identity of operator
secret_key String Yes
Shared passphrase between PGSoft
and operator
operator_player_session String Yes
Token generated by operator’s
system when the game is launched
(URL Scheme16)
game_id Integer No Unique identity of games
ip String No Player IP address
custom_parameter
String
No
operator_param values in URL
scheme17
bet_type Integer Yes Game launch mode18
Example:
URL:
https://operator.api/VerifySession?trace_id=b3f37e57-2873-40b1-aa95-f126c25ed311
Body:
operator_token=abc123&secret_key=a1b25cde5f3gh46ijkl&operator_player_session=a2b3c
4d5e6f7g8&game_id=1&ip=1.1.1.1&custom_parameter=operatorparam123&bet_type=1
15 Please refer to URL Scheme and Web Lobby section for login flow and details
16 Please refer to URL Scheme section for more information
17 Please refer to URL Scheme section for more information
18 Please refer to Bet Types section for complete list
Validation
Operator is required to perform validations to the following parameters:
Parameter name Description Expected
behaviour
operator_token Make sure the parameter value is the same as
the one PGSoft has provided. Return error when
not match
secret_key
operator_player_session
Make sure the operator_player_session matches
with the token generated in URL scheme19
Response
Body Parameters:
JSON Object
Parameter name Data type Mandatory Description
player_name String Yes
Unique identity of players
• player name is not case sensitive
• Only alphabet, number, and “@”,
“-”, ”_” symbols are allowed
Note: Max 50 characters
nickname String No Nickname of player
Note: Max 50 characters
currency String Yes Currency of player
Example:
{
"data": {
"player_name": "player1",
"nickname":"nickname",
"currency": "USD"
},
"error": null
}
Error Response
Code Message
1034 Invalid request
1200 Internal server error
5.1.3 Wallet Operation
5.1.3.1 Get Player Wallet
Operator is required to provide the total balance of the wallets that can be used in all PGSoft games.
It includes total balance in the cash wallet.
Request
API URL : {OperatorAPIDomain}/Cash/Get
HTTP method : POST
URL Parameters:
Parameter name Data Type Mandatory Description
trace_id String Yes
Unique identity (GUID) of the request
Note:
This ID is for issue troubleshooting only.
Please do not use this ID in duplicate
request validation
Body Parameters:
Parameter name Data Type Mandatory Description
operator_token String Yes Unique identity of operator
secret_key String Yes
Shared passphrase between PGSoft
and operator
player_name String Yes Unique identity of players
operator_player_session String No
Token generated by operator’s
system when the game is launched
(URL Scheme20)
game_id Integer No Unique identity of games
Example:
URL:
https://operator.api/Cash/Get?trace_id=b3f37e57-2873-40b1-aa95-f126c25ed311
Body:
operator_token=abc123&secret_key=a1b25cde5f3gh46ijkl&player_name=player123&operato
r_player_session=a2b3c4d5e6f7g8&game_id=1
Operator is required to perform validation to the following parameters:
Parameter name Description Expected
behaviour
operator_token Make sure the parameter value is the same as
the one PGSoft has provided. Return error when
not match
secret_key
player_name
Make sure the parameter value matches the
given player’s name in Verify Session21
Response
Body Parameters:
JSON Object
Parameter name Data type Mandatory Description
currency_code String Yes Currency of player
balance_amount Decimal Yes
Cash Balance of player
Note:
• Supports up to 2 decimal places
• Extra decimal values will be
truncated.
Example: Game will show 11.12
if balance_amount value is
11.125
updated_time Long Yes
Updated time of player record
(Unix time stamp in milliseconds)
Example:
{
"data": {
"currency_code": "CNY",
"balance_amount": 11.12,
"updated_time": 1530879795000
},
"error": null
}
Error Response
Code Message
1034 Invalid request
3005 Player wallet does not exist
5.1.3.2 Bet & Payout
PGSoft system will expect idempotent operations for all API operations. Operator is required to
perform duplicate request checking for all incoming transaction requests.
PGSoft may resend the transaction due to network difficulties or other unforeseen circumstances.
Please refer to the following for the precautions and correct process flow to handle duplicated
requests:
• Operator is required to perform validation of operator_token and secret_key for every
transaction request.
• transaction_id is the only unique identifier for every transaction request, including bet
and payout
• In the case where a request with the same transaction_id is found and operator has
proceeded the previous request, please ignore the duplicated request, and return the
previous successful response for the duplicated request.
• In the case where a request with the same transaction_id is found and the previous
request has failed, please retry, and return the corresponding results to PGSoft.
• In the case of a request with new transaction_id, operator may proceed to wallet
addition or deduction accordingly, and return the successful response to PGSoft.
Game Disconnected
In the case where players are encountering errors and have been disconnected from the game,
PGSoft system will automatically resume the game from its previous stage (including free spin,
bonus, free game) without any alert on the next player login.
Player will see the same screen before the error happened and will be able to continue the game
from the previous stage.
Failed Transaction
PGSoft games will stop and show errors when PGSoft receives the following error codes during bet
transactions:
• 3004 PlayerNotFoundException
• 3005 WalletNotFoundException
• 3008 BonusNotFoundException
• 3009 FreeGameNotFoundException
• 3019 NotEnoughFreeGameException
• 3021 BetNotFoundException
• 3055 SnapshotNotFoundException
• 3059 BetLimitExceededException
• 3062 TransactionRolledBackException
• 3073 BetFailedException
• 3200 NotEnoughBalanceException
• 3201 NotEnoughBonusBalanceException
• 3202 NotEnoughCashBalanceException
• 3094 MaximumBetLimitReachErrorCode
• 3095 BalanceDecreasesLimitReachErrorCode
Operator should not cancel the pay-out transaction for a successful bet. System will always retry for
a pay-out transaction until it is successful. Please contact PGSoft if you would like to cancel the payout transaction.
5.1.3.2.1 Bet (Deprecated)
PGSoft system will call the operator API in real time while the player is betting to achieve the
deduction of the player's balance.
Note:
This API method has been deprecated. It will still be functioning, but will remain in maintenance
mode, which means PGSoft will no longer actively enhance this API or its capability with new
features.
Operators are encouraged to move to new replacement API - Bet Payout API (TransferInOut)22, which
provides more functionality and better performance.
Existing operators are required to maintain the old bet and payout API as previous pending bets will be
resent using the old API.
Request
API URL : {OperatorAPIDomain}/Cash/TransferOut
HTTP method : POST
URL Parameters:
Parameter name Data Type Mandatory Description
trace_id String Yes
Unique identity (GUID) of the request
Note:
This ID is for issue troubleshooting only.
Please do not use this ID in duplicate
request validation
Body Parameters:
Category Parameter name Data
Type Mandatory Description
Authentication
Information
operator_token String Yes Unique identity of operator
secret_key String Yes
Shared passphrase between
PGSoft and operator
operator_player
_session
String No
Token generated by operator
system when game is launched
(URL Scheme23)
General Bet Information
player_name String Yes Unique identity of players
game_id Integer Yes Unique identity of games
parent_bet_id String Yes Unique identity of parent bet
bet_id String Yes
Unique identity of child bet
Note:
Unique key for bets
currency_code String Yes Currency of player
platform String No Platform of player24
transfer_amount Decimal Yes Bet amount.
22 Please refer to Bet Payout section for more information
23 Please refer to URL Scheme section for more information
24 Please refer to Platform section for more information
Note:
PGSoft will send a bet request
with ZERO transfer amount for
free spins
transaction_id String Yes
Unique identity of transaction.
Format:
{BetId}-{ParentBetId}-
{transactionType}-{balanceId}
Transaction type:
101: Payout
201: Bet
400: BonusToCash
403: FreeGameToCash
wallet_type String No
To indicate the type of wallet for
the current transaction.
C: Cash
B: Bonus
G: FreeGame
create_time Long Yes
Bet start time and bet last updated
time
(Unix time stamp in milliseconds)
Note:
updated_time is not equal to bet
end time
updated_time Long Yes
Bet Indicator
is_validate_bet Boolean No
To indicate if the request is a
transaction that has been resent
for validation
True: Resent transaction
False: Normal transaction
is_adjustment Boolean No
To indicate if the request is an
adjustment or a normal transaction
for a pending bet
True: Adjustment
False: Normal transaction
is_parent_zero_stake Boolean No
To indicate if the request is having
0 bet amount for the first bet of
the round.
True: Having 0 bet amount for the
first bet of the round (For Bacarrat
Deluxe’s free hands action)
False: Having amount larger than 0
in the first bet of the round
is_feature Boolean No
To indicate the spin type
True: Feature spin
False: Normal spin
is_feature_buy Boolean No
To indicate the feature buy
Note:
Only applicable for feature buy
games
is_wager Boolean No
To indicate if the transaction is
wager
True: bet_amount > 0
False: bet_amount = 0
Free Game Information
free_game
_transaction_id
String No
Unique identity of free game.
It can only be seen when Free
Game has been assigned to the
player
Note:
Only available for free game
created using External API
free_game_name String No
Given name of free game.
It can only be seen when Free
Game has been assigned to the
player
free_game_id Integer No
Unique identity of free game.
It can only be seen when Free
Game has been assigned to the
player
is_minus_count Boolean No
To indicate the spin type in free
game
True: Normal spin (Free game
count is deducted)
False: Free spin
Bonus Game Information
bonus_transaction_id String No
Unique identity of bonus game.
It can only be seen when Bonus
Game has been assigned to the
player
Note:
Only available for bonus game
created using External API
bonus_name String No Given name of bonus game.
It can only be seen when Bonus
Game has been assigned to the
player
bonus_id Integer No
Unique identity of bonus game.
It can only be seen when Bonus
Game has been assigned to the
player
bonus_balance
_amount
Decimal No
Total number of bonus amount in
bonus wallet.
It can only be seen when the player
chooses to complete the bonus
with cash.
bonus_ratio_amount Decimal No
Rollover amount the player needs
to achieve in bonus game.
It can only be seen when the player
chooses to complete the bonus
with cash.
Example:
URL:
https://operator.api/Cash/TransferOut?trace_id=b3f37e57-2873-40b1-aa95-f126c25ed311
Body:
operator_token=abc123&secret_key=a1b25cde5f3gh46ijkl&player_name=player123&operato
r_player_session=a2b3c4d5e6f7g8&game_id=1&parent_bet_id=123456&bet_id=123456&bet_t
ype=1¤cy_code=EUR&platform=1&create_time=1530879795000&updated_time=15308797
95000&&transfer_amount=0.11&transaction_id=123456-123456-201-
0&is_validate_bet=false&is_parent_zero_stake=false&is_feature=false
Validation
Operator is required to perform validation to the following parameters:
Parameter name Description Expected
behaviour
player_name Make sure the parameter value matches the given
player information in Verify Session25
Return error
when not match
currency_code
operator_token Make sure the parameter value is the same as the
secret_key one PGSoft has provided.
operator_player_session
Make sure the operator_player_session matches
the token generated in URL scheme26
Do not validate operator_player_session when
is_validate_bet or is_adjustment parameter value
is true
Note:
PGSoft system may resend request for validation
or pending bet
Return successful
response even
with outdated
operator_player_
session
transfer_amount
Make sure there is an error response when there
is insufficient balance
Return error
response 3202
Make sure player balance after deduction (amount
with 2 decimal places) is correct
Return successful
response with
the correct cash
balance
Make sure zero bet amount is accepted for parent
bet
Note:
PGSoft system will send a bet request with ZERO
transfer amount for Bacarrat Deluxe’s free hands
action
Make sure zero bet amount is accepted for child
bet
Note:
PGSoft system will send a bet request with ZERO
transfer amount for free spin
transaction_id
Ignore wallet operation for duplicated requests
(requests with the same transaction_id)
parent_bet_id Proceed wallet operation for request with the
same game hand (requests with the same
parent_bet_id but different bet_id)
Response
Body Parameters:
JSON Object
Parameter name Data type Mandatory Description
currency_code String Yes Currency of player
balance_amount Decimal Yes
Cash Balance of player
Note:
• Support up to 2 decimal places
• Extra decimal values will be
truncated.
Example: Game will show 11.12
if balance_amount value is
11.125
updated_time Long Yes
Updated time of transaction
(Unix time stamp in milliseconds)
Note:
Response updated_time must be
the same as the requested
updated_time for transaction
reference
Example:
{
"data": {
"currency_code": "CNY",
"balance_amount": 11.12,
"updated_time": 1530879795000
},
"error": null
}
Error Response
Code Message
3004 Player does not exist
3005 Player wallet does not exist
3021 Bet does not exist
3033 Bet failed
3202 Insufficient player balance
5.1.3.2.2 Payout (Deprecated)
PGSoft system will call operator API in real time while the player is betting to achieve the addition of
the player's balance.
Note:
This API method has been deprecated. It will still be functioning, but will remain in maintenance
mode, which means PGSoft will no longer actively enhance this API or its capability with new
features.
Operators are encouraged to move to new replacement API - Bet Payout API (TransferInOut)27, which
provides more functionality and better performance.
Existing operators are required to maintain the old bet and payout API as previous pending bets will be
resent using the old API.
Request
API URL : {OperatorAPIDomain}/Cash/TransferIn
HTTP method : POST
URL Parameters:
Parameter name Data Type Mandatory Description
trace_id String Yes
Unique identity (GUID) of the request
Note:
This ID is for issue troubleshooting only.
Please do not use this ID in duplicate
request validation
Body Parameters:
Category Parameter name Data
Type Mandatory Description
Authentication
Information
operator_token String Yes Unique identity of operator
secret_key String Yes
Shared passphrase between
PGSoft and operator
operator_player
_session
String No
Token generated by operator
system when game is launched
(URL Scheme28)
General Bet
Information
player_name String Yes Unique identity of players
game_id Integer Yes Unique identity of games
parent_bet_id String Yes Unique identity of parent bet
bet_id String Yes
Unique identity of child bet
Note:
Unique key for bets
currency_code String Yes Currency of player
platform String No Platform of player29
transfer_amount Decimal Yes
Payout amount.
Note:
PGSoft will send a payout
request with ZERO transfer
amount for the following:
• Every action (Example:
split card) performed by
player in card game
• Special feature in some
slot games
transaction_id String Yes
Unique identity of transaction.
Format:
{BetId}-{ParentBetId}-
{transactionType}-{balanceId}
Transaction type:
101: Payout
201: Bet
400: BonusToCash
403: FreeGameToCash
bet_transaction_id String No
Unique identity of bet
transaction (transfer out).
Format:
{BetId}-{ParentBetId}-
{transactionType}-{balanceId}
Transaction type:
101: Payout
201: Bet
400: BonusToCash
403: FreeGameToCash
wallet_type String No
To indicate the type of wallet
for the current transaction.
C: Cash
B: Bonus
G: FreeGame
create_time Long Yes
29 Please refer to Platform section for more informatio
updated_time Long Yes
Bet start time and bet last
updated time
(Unix time stamp in
milliseconds)
Note:
updated_time is not equal to
bet end time
Bet Indicator
is_validate_bet Boolean No
To indicate if the request is a
transaction that has been
resent for validation
True: Resent transaction
False: Normal transaction
is_adjustment Boolean No
To indicate if the request is an
adjusted or normal transaction
for a pending bet True:
Adjusted transaction
False: Normal transaction
is_parent_zero_stake Boolean No
To indicate if the request is
having 0 bet amount for the
first bet of the round.
True: Having 0 bet amount for
the first bet of the round (For
Bacarrat Deluxe’s free hands
action)
False: Having amount larger
than 0 in the first bet of the
round
is_feature Boolean No
To indicate the spin type
True: Feature spin
False: Normal spin
is_wager Boolean No
To indicate if the transaction is
wager
True: bet_amount > 0
False: bet_amount = 0
is_end_round Boolean No
To indicate if the current game
hand has ended
Free Game
Information
free_game
_transaction_id
String No
Unique identity of free game.
It can only be seen when Free
Game has been assigned to the
player
Note:
Only available for free game
created using External API
free_game_name String No
Given name of free game.
It can only be seen when Free
Game has been assigned to the
player
free_game_id Integer No
Unique identity of free game.
It can only be seen when Free
Game has been assigned to the
player
is_minus_count Boolean No
To indicate the spin type in free
game
True: Normal spin (Free game
count is deducted)
False: Free spin
Bonus Game Information
bonus_transaction_id String No
Unique identity of bonus game.
It can only be seen when bonus
game has been assigned to the
player
Note:
Only available for bonus game
created using External API
bonus_name String No
Given name of bonus game.
It can only be seen when bonus
game has been assigned to the
player
bonus_id Integer No
Unique identity of bonus game.
It can only be seen when bonus
game has been assigned to the
player
bonus_balance
_amount
Decimal No
Total number of bonus amount
in bonus wallet.
It can only be seen when the
player chooses to complete the
bonus game with cash.
bonus_ratio_amount Decimal No
Rollover amount the player
needs to achieve in bonus
game.
It can only be seen when the
player chooses to complete the
bonus game with cash
Example:
URL:
https://operator.api/Cash/TransferIn?trace_id=b3f37e57-2873-40b1-aa95-f126c25ed311
Body:
operator_token=abc123&secret_key=a1b25cde5f3gh46ijkl&player_name=player123&operato
r_player_session=a2b3c4d5e6f7g8&game_id=1&parent_bet_id=123456&bet_id=123456&bet_t
ype=1¤cy_code=EUR&platform=1&create_time=1530879795000&updated_time=15308797
95000&&transfer_amount=0.11&transaction_id=123456-123456-101-
0&is_validate_bet=false&is_parent_zero_stake=false&is_feature=false&is_end_round=t
rue
Validation
Operator is required to perform validation to the following parameters:
Parameter name Description Expected
behaviour
player_name Make sure the parameter value matches the given
player information in Verify Session30
Return error
when not match
currency_code
operator_token Make sure the parameter value is the same as the
secret_key one PGSoft has provided.
operator_player_session
Make sure the operator_player_session matches
the token generated in URL scheme31
Do not validate operator_player_session when
is_validate_bet or is_adjustment parameter value
is true.
Note:
PGSoft system may resend request for validation
or pending bet
Return successful
response even
with outdated
operator_player_
session
transfer_amount
Make sure player balance after addition (amount
with 2 decimal places) is correct
Return successful
response with
correct balance
Make sure zero payout amount is accepted
Note:
PGSoft may send a payout request with ZERO
transfer amount for the following:
• Specific actions (Example: split card)
performed by player in card game
• Special feature in some slot games
Make sure payout without bet request is accepted
Note:
PGSoft may send a payout request WITHOUT bet
request for the following:
• When player perform “convert to cash”
action in the bonus game
• When player perform “convert to cash”
action in the free game
transaction_id
Ignore wallet operation for duplicated requests
(request with same transaction_id)
Response
Body Parameters:
JSON Object
Parameter name Data type Mandatory Description
currency_code String Yes Currency of player
balance_amount Decimal Yes
Cash Balance of player
Note:
• Support up to 2 decimal places
• Extra decimal values will be
truncated.
Example: Game will show 11.12
if balance_amount value is
11.125
updated_time Long Yes
Updated time of transaction
(Unix time stamp in milliseconds)
Note:
Response updated_time must same
with request updated_time for
transaction reference
Example:
{
"data": {
"currency_code": "CNY",
"balance_amount": 11.12,
"updated_time": 1530879795000
},
"error": null
}
Error Response
Code Message
3004 Player does not exist
3005 Player wallet does not exist
3021 Bet does not exist
3034 Payout failed
This transaction request is the combination of both bet and payout within a single request. PGSoft
system will call operator API in real time while the player is betting to achieve either the addition or
deduction of the player's balance. Operator is required to respond within 10 seconds or API timeout
will happen.
Request
API URL : {OperatorAPIDomain}/Cash/TransferInOut
HTTP method : POST
URL Parameters:
Parameter name Data Type Mandatory Description
trace_id String Yes
Unique identity (GUID) of the request
Note:
Please set the parameter value as GUID
format
Body Parameters:
Category Parameter name Data
Type Mandatory Description
Authentication
Information
operator_token String Yes Unique identity of operator
secret_key String Yes
Shared passphrase between
PGSoft and operator
operator_player
_session
String No
Token generated by operator
system when game is launched
(URL Scheme32)
General Bet Information
player_name String Yes Unique identity of players
game_id Integer Yes Unique identity of games
parent_bet_id String Yes Unique identity of parent bet
bet_id String Yes
Unique identity of child bet
Note:
Unique key for bets
currency_code String Yes Currency of player
bet_amount Decimal Yes
Bet amount.
Note:
PGSoft will send a bet request
with ZERO transfer amount for
free spins
win_amount Decimal Yes
Win amount.
Note:
PGSoft will send a payout request
with ZERO transfer amount for the
following:
• Every action (Example: split
card) performed by player in
card games
• Special feature in some slot
games
transfer_amount Decimal Yes
Player Win Loss amount
Note:
The amount can be positive or
negative
Negative: Balance deduction
Positive: Balance addition
transaction_id String Yes
Unique identity of transaction.
Format:
{BetId}-{ParentBetId}-
{transactionType}-{balanceId}
Transaction type:
106: BetPayout
400: BonusToCash
403: FreeGameToCash
Note:
• Max 50 characters
wallet_type String No
To indicate the type of wallet for
the current transaction.
C: Cash
B: Bonus
G: FreeGame
bet_type Integer Yes
Bet types of bet record:
1: Real game
platform String No Platform of player33
create_time Long Yes
Bet start time and bet last updated
time
(Unix time stamp in milliseconds)
Note:
updated_time is not equal to bet
end time
is_validate_bet Boolean No
To indicate if the request is a
transaction that has been resent
for validation
True: Resent transaction
False: Normal transaction
is_adjustment Boolean No
To indicate if the request is an
adjustment or a normal transaction
for a pending bet
True: Adjustment
False: Normal transaction
is_parent_zero_stake Boolean No
To indicate if the request is having
0 bet amount for the first bet of
the round.
True: Having 0 bet amount for the
first bet of the round (For Bacarrat
Deluxe’s free hands action)
False: Having amount larger than 0
in the first bet of the round
is_feature Boolean No
To indicate the spin type
True: Feature spin
False: Normal spin
is_feature_buy Boolean No
To indicate the feature buy
Note:
Only applicable for feature buy
games
is_wager Boolean No
To indicate if the transaction is
wager
True: bet_amount > 0
False: bet_amount = 0
is_end_round Boolean No
To indicate if the current game
hand has ended
Free Game Information
free_game
_transaction_id
String No
Unique identity of free game.
It can only be seen when Free
Game has been assigned to the
player
Note:
Only available for free game
created using External API
free_game_name String No
Given name of free game.
It can only be seen when Free
Game h
free_game_id Integer No
Unique identity of free game.
It can only be seen when Free
Game has been assigned to the
player
is_minus_count Boolean No
To indicate the spin type in free
game
True: Normal spin (Free game
count is deducted)
False: Free spin
Bonus Game Information
bonus_transaction_id String No
Unique identity of bonus game.
It can only be seen when Bonus
Game has been assigned to the
player
Note:
Only available for bonus game
created using External API
bonus_name String No
Given name of bonus game.
It can only be seen when Bonus
Game has been assigned to the
player
bonus_id Integer No
Unique identity of bonus game.
It can only be seen when Bonus
Game has been assigned to the
player
bonus_balance
_amount
Decimal No
Total number of bonus amount in
bonus wallet.
It can only be seen when the player
chooses to complete the bonus
with cash.
bonus_ratio_amount Decimal No
Rollover amount the player needs
to achieve in bonus game.
It can only be seen when the player
chooses to complete the bonus
with cash.
Example:
URL:
https://operator.api/Cash/TransferInOut?trace_id=b3f37e57-2873-40b1-aa95-f126c25ed311
Body:
operator_token=12345&secret_key=bfvcdb&player_name=player123&operator_player_sessi
on=vcbcvbcvb&game_id=1&parent_bet_id=123456&bet_id=123456&bet_type=1¤cy_code
=EUR&create_time=1530879795000&updated_time=1530879795000&bet_amount=100&win_amoun
t=40&transfer_amount=-60&transaction_id=123456-123456-106-
0&wallet_type=C&is_feature=False&is_minus_count=False
Validation
Operator is required to perform validation to the following parameters:
Parameter name Description Expected
behaviour
player_name Make sure the parameter value matches the given
player information in Verify Session34
Return error
when not match
currency_code
operator_token Make sure the parameter value is the same as the
secret_key one PGSoft has provided.
operator_player_session
Make sure the operator_player_session matches
the token generated in URL scheme35
Do not validate operator_player_session when
is_validate_bet or is_adjustment parameter value
is true
Note:
PGSoft system may resend request for validation
or pending bet
Return successful
response even
with outdated
operator_player_
session
bet_amount
Make sure there is an error response when there
is insufficient balance (bet_amount) Return error
response 3202
transfer_amount
Make sure there is an error response when there
is insufficient balance (negative transfer_amount)
Make sure player balance after transaction
(amount with 2 decimal places) is correct
Return successful
response with
the correct cash
balance
Make sure zero transfer amount is accepted for
parent bet
Note:
PGSoft system will send a request with ZERO
transfer amount for Bacarrat Deluxe’s free hands
action
Make sure zero transfer amount is accepted for
child bet
Note:
PGSoft system will send a request with ZERO
transfer amount for free spin
transaction_id
Ignore wallet operation for duplicated requests
(requests with the same transaction_id)
parent_bet_id Proceed wallet operation for request with the
same game hand (requests with the same
parent_bet_id but different bet_id)
Response
Body Parameters:
JSON Object
Parameter name Data type Mandatory Description
currency_code String Yes Currency of player
balance_amount Decimal Yes
Cash Balance of player
Note:
• Support up to 2 decimal places
• Extra decimal values will be
truncated.
Example: Game will show 11.12
if balance_amount value is
11.125
updated_time Long Yes
Updated time of transaction
(Unix time stamp in milliseconds)
Note:
Response updated_time must be
the same as the requested
updated_time for transaction
reference
Example:
{
"data": {
"currency_code": "CNY",
"balance_amount": 11.12,
"updated_time": 1530879795000
},
"error": null
}
Error Response
Code Message
3004 Player does not exist
3005 Player wallet does not exist
3021 Bet does not exist
3033 Bet failed
3202 Insufficient player balance
5.1.3.3 Balance Adjustment
PGSoft will use this API to perform player’s balance addition or deduction. This API can be used for
certain events, such as Cash Tournament.
Request
API URL : {OperatorAPIDomain}/Cash/Adjustment
HTTP method : POST
Body parameters:
Category Parameter name Data
Type Mandatory Description
Authentication
Information
operator_token String Yes Unique identity of operator
secret_key String Yes
Shared passphrase between PGSoft
and operator
General Information
player_name String Yes Unique identity of players
currency_code String Yes Currency of player
transfer_amount Decimal Yes
Adjustment Amount
Negative amount: Balance
deduction
Positive amount: Balance addition
adjustment_id String Yes Reference ID for Adjustment
adjustment_transac
tion_id
String Yes
Unique identity of transaction
Note:
• Max 200 characters
• Operator should use this
parameter to check if the request
is duplicated and implement
idempotent operation
adjustment_time Long Yes
Adjustment time
(Unix time stamp in milliseconds)
transaction_type String Yes
Adjustment source:
115: Promotion
900: External Adjustment
901: Tournament Adjustment
bet_type Integer Yes Game launch mode36
promotion_id Integer No Reference ID for Promotion
promotion_type Integer No
Promotion Type:
1: Money Rain
2: Money Rain Daily Bonus
remark String No Remark for Balance Adjustment
Example:
operator_token=abc123&secret_key=a1b25cde5f3gh46ijkl&player_name=player123&bet_typ
e=1¤cy_code=CNY&transfer_amount=100.00&adjustment_time=1530879795000&adjustm
ent_id=ABC1530879&adjustment_transactionid=ABC1530879-900&transaction_type=900
Validation
Operator is required to perform validation to the following parameters:
Parameter name Description Expected
behaviour
player_name Make sure the parameter value matches the given
player information in Verify Session37 Return error
when not
match
currency_code
operator_token Make sure the parameter value is the same as the one
secret_key PGSoft has provided.
transfer_amount
Make sure there is an error response when there
is insufficient balance (negative transfer_amount)
Return error
response 3202
Make sure player balance after adjustment (amount
with 2 decimal places) is correct
Return
successful
response with
correct
balance
Make sure negative amount is accepted
Make sure the adjustment performs correctly and
accordingly
• Negative: Balance deduction
• Positive: Balance addition
adjustment_transaction
_id
Ignore wallet operation for duplicated requests
(Request with same transaction_id)
Response
Body Parameters:
JSON Object
Parameter name Data type Mandatory Description
adjust_amount Decimal Yes
Adjusted Amount
Note:
• This amount is for reference
purpose. PGSoft will not validate
it.
• Response adjust_amount must be
the same as the requested
transfer_amount for transaction
reference
balance_before Decimal Yes
Player balance before adjustment
(balance_before) & Player balance
after adjustment (balance_after)
Note:
• Only support up to 2 decimals
• Extra decimal values will be
truncated.
Example: Game will show 11.12 if
balance_amount value is 11.125
balance_after Decimal Yes
updated_time Long Yes
Updated time of transaction
(Unix time stamp in milliseconds)
Note:
Response updated_time must be the
same as the requested
adjustment_time for transaction
reference
Example:
{
"data": {
"adjust_amount": 100.00,
"balance_before": 0.00,
"balance_after": 100.00,
"updated_time": 1530879795000
}
Error Response
Code Message
3004 Player does not exist
3005 Player wallet does not exist
5.1.3.4 Update Bet Details
PGSoft game system will call this operator API to update the operator’s latest bet end time when the
bet is successful in PGSoft system.
Request
API URL : {OperatorAPIDomain}/Cash/UpdateBetDetail
HTTP method : POST
Body Parameters:
Parameter name Data
Type Mandatory Description
operator_token String Yes Unique identity of operator
secret_key String Yes
Shared passphrase between
PGSoft and operator
bet_details Json Array Yes List of bet ID with bet end time
updated_time Long Yes
API request time
(Unix time stamp in milliseconds)
Parameter: bet_details
Parameter name Data
Type Mandatory Description
bet_id String Yes
Unique identity of child bet
Note:
Unique key for bets
end_time Long Yes
Bet end time
(Unix time stamp in milliseconds)
Example:
operator_token=abc123&secret_key=a1b25cde5f3gh46ijkl&bet_details=[{"bet_id":"1456887894","e
nd_time":"1644476958000"},{"bet_id":"1456887895","end_time":"1644476958000"}]&updated_ti
me=1645414794000
Validation
Operator is required to perform validation to the following parameters:
Parameter name Description Expected
behaviour
operator_token Make sure the parameter value is the
same as the one PGSoft has provided.
Return error
secret_key when not match
Response
Body Parameters:
JSON Object
Parameter name Data
Type Mandatory Description
is_success Boolean Yes
To indicate if the request is
received
True: Received
False: Not Received
5.2 PGSoft Provided API
5.2.1 API Formats
5.2.1.1 Request
The API uses HTTP form methods and a RESTful endpoint structure. Operator is required to send
requests in the following content type:
Content-Type: application/x-www-form-urlencoded
5.2.1.2 Response
API returns JSON-formatted responses. For successful and failed API requests, PGSoft system will
return an API response with HTTP status code 200.
API uses global JSON response format for all API methods, with the following content type:
Content-Type: application/json
Parameters:
Parameter name Data Type Description
data38 JSON Object Response information for API methods
error39 JSON Object Error information when an error or exception occur
Example:
Successful Response
{
"data": {
[API method response. JSON object format may vary depending on API methods]
},
"error": null,
}
Failed/Error Response
{
"data": null,
"error": {
"code": "[Error code]",
"message": "[Error message]"
}
}
5.2.2 Bet History Interpreter (Optional)
To reveal a player’s bet results and details for specific bet.
Step 1
Before getting the bet detail, operator is required to call this API to get operator's session (Session
timeout: 30 minutes).
Request
API URL : {PgSoftAPIDomain}/Login/v1/LoginProxy
HTTP method : POST
URL Parameters:
Parameter name Data Type Mandatory Description
trace_id String Yes
Unique identity (GUID) of the request
Note:
Please set the parameter value as
GUID format
Body Parameters:
Parameter name Data
Type Mandatory Description
operator_token String Yes Unique identity of operator
secret_key String Yes
Shared passphrase between PGSoft
and operator
Example:
URL:
https://api.pg-bo.me/external/Login/v1/LoginProxy?trace_id=b3f37e57-2873-40b1-
aa95-f126c25ed311
Body:
operator_token=abc123&secret_key=a1b25cde5f3gh46ijkl
Response
Body Parameters:
JSON Object
Parameter name Data Type Description
operator_session String Operator session
Example:
{
"data": {
"operator_session": E4ECB5CF-0BC6-4DA8-8551-8526F48AB9CD
},
"error": null
}
Step 2
Get bet detail by:
API URL : {PgSoftPublicDomain}/history/redirect.html
HTTP method : Get
URL Parameters:
Parameter name Data Type Description
trace_id String
Unique identity (GUID) of the request
Note:
Please set the parameter value as GUID format
t String Operator session from Step 1
psid String Parent Bet ID
sid String Bet ID
lang String
Language:
• en (default)
• zh
type String
Fixed value:
operator
Example:
https://public.pg-redirect.net/history/redirect.html?trace_id=b3f37e57-2873-40b1-
aa95-f126c25ed311&t=E4ECB5CF-0BC6-4DA8-8551-
8526F48AB9CD&psid=12345&sid=12345&lang=en&type=operator
5.2.3 Others (Optional)
PGSoft provides several APIs for different modules and it is optional for integration. Operator may
choose to integrate based on requirements:
• Bet History : To get a player’s bet history
• Game List : To get the latest game list and available bet sizes
• Free Game : To perform several actions (For example: Create free game, assign player
into free game, cancel free game, etc.) through API
• Bonus Game : To perform several actions (For example: Create bonus game, assign player
into bonus game, cancel bonus game, etc.) through API.
• Tournament : To get tournament list, add player into tournament and get tournament
ranking through API
5.3 Integrate PGSoft Game into Operator’s iOS Application
Operator’s application needs to meet the following requirements to launch PGSoft games in the
application client:
• iOS 8.0 or above
• WKWebView
PGSoft game will prompt a “Poor Visit Experience” message if it does not meet the minimum
requirements. Player is allowed to continue launching the game but it may not guarantee a stable,
and high performance experience of the PGSoft game.
To ensure the application client passes the PGSoft game requirement check, operator is required to
include the following codes when initializing WKWebView component in application:
This is to construct a object and set its property on the
configuration. Please take note that the must have at least one
(assign through )
For more details regarding WKWebView, please refer to Apple Developer Documentation
6 Resolve Pending Bet
Sometimes pending bets may occur due to unforeseen circumstances during gameplay due to network
latency, system failure, system timeout and so on.
Generally, pending bet will be resolved automatically when the player relaunches the game. However,
the bet will remain in pending status for some rare scenarios:
• Player did not relaunch the game after encountering an error
• PGSoft system did not receive any response from the operator when resolving pending bets
• PGSoft system receive an error response from the operator when resolving pending bets
Default interval of pending bet resolving time is set to 60 minutes. Pending bets which exceed the
interval will be resolved by PGSoft system automatically. This interval is customizable, and every
operator can have their own bet resolve interval time.
Manual resolve is required when pending bets cannot be resolved after several attempts. In such cases,
the operator is required to resolve the pending bet manually, and PGSoft will mark these bets statuses
as complete after getting the confirmation from the operator
7 Reset Game State
All games will support the resume feature which allows returning players to continue the game at
their last game state from any device. For example, players will be able to continue a game with a
bonus game state few days after even if the player had closed the game when the player won the
bonus game.
However, the player’s game state will reset every 90 days by default. This interval is customizable, and
every operator can have their own game state reset interval time. System will clear all finished and
unfinished game progress, and the player will not be able to continue a game after it has been reset.
For transfer wallet mode, every player game state will reset every 90 days by default:
• PGSoft system will reset a player’s game state automatically if there are no pending bets for
the player
8 Restrictions
8.1 IP
Players from the following restriction area are not able to access PGSoft game:
• Malaysia
• Singapore
• Taiwan
• United States of America
• Hong Kong
• Macau
• Israel
• Iran
• North Korea
• Australia
8.2 Currency
Please find the following for the currencies not supported by PGSoft:
• AUD
• HRK
• HKD
• MOP
• MYR
• SGD
• TWD
• VES
• All cryptocurrencies except MBTC , UBTC, USDT, TUSD & USDC
9 Appendix
9.1 Error codes
Error code Description
1034 Invalid request
1035 Operation Failed
1200 Internal server error
1204 Invalid operator
1300 Invalid player session
1301 Player session token is empty
1302 Invalid player session
1303 Server error occurs
1305 Invalid player
1306 Player is blocked to access current game
1307 Invalid player session
1308 Player session is expired
1309 Player is inactive
1310 Failed to verify operator player session
1315 Player’s operation in progress
1400 Game is under maintenance
1401 Game is inactive
1402 Game does not exist
3001 Value cannot be null
3004 Player does not exist
3005 Player wallet does not exist
3006 Player wallet already exists
3009 Free game does not exist
3013 Out of the balance amount to transfer out
3014 Free game cannot be cancelled
3019 Not enough free game
3021 No bet exists
3022 Bet already pay-out
3030 Free game expired
3031 Free game already converted
3032 Bet already existed
3033 Bet failed
3034 Pay-out failed
3035 Invalid multiplier
3036 Not enough balance to convert
9.2 Currencies
Currency Code Currency Name Base Unit
AED Dirham des Émirats arabes unis 1
AFN Afghanistan Afghani 1
ALL Albanian Lek 1
AMD Armenian Dram 1
ANG Netherlands Antilles Guilder 1
AOA Angola Kwanza 1
ARS Argentine Peso 1
AWG Aruba Guilder 1
AZN Azerbaijani Manat 1
BAM Bosnian Convertible Marka 1
BBD Barbados Dollar 1
BDT Taka bangladais 1
BGN Lev bulgare 1
BHD Bahrain Dinar 1
BIF Burundian Franc 1000
BMD Bermuda Dollar 1
BND Brunei Dollar 1
BOB Bolíviano bolivien 1
BRL Brazil Real 1
BSD Bahamian Dollar 1
BTN Bhutanese Ngultrum 1
BWP Botswana Pula 1
BYN Belarusian Rouble 1
BYR Belarusian Ruble 1
BZD Belize Dollar 1
CAD Canadian Dollar 1
CDF Congolese Franc 1000
CHF Swiss Franc 1
CLP Chilean Peso 1
CNY Chinese Yuan 1
COP Colombian Peso 1000
CRC Colon costaricain 1
CSD Serbian Dinar 1
CUP Cuba Peso 1
CVE Cape Verde Escudo 1
CZK Czech Koruna 1
DJF Djiboutian Franc 1
DKK Danish Krone 1
DOP Peso dominicain 1
DZD Dinar algérien 1
EGP Livre égyptienne 1
ERN Eritrea Nakfa 1
ETB Ethiopian Birr 1
EUR Euro 1
FJD Fiji Dollar 1
FKP Falkland Islands (Malvinas) Pound 1
GBP British Pound 1
GEL Georgian Lari 1
GHS Ghanaian Cedi 1
GIP Gibraltar Pound 1
GMD Gambian Dalasi 1
GNF Guinean Franc 1000
GTQ Quetzal guatémaltèque 1
GYD Guyana Dollar 1
HNL Honduran Lempira 1
HTG Haiti Gourde 1
HUF Hungarian Forint 1
IDR Indonesian Rupiah 1000
ILS Shekel israélien 1
INR Indian Rupee 1
IQD Dinar irakien 1000
IRR Iranian Rial 1000
ISK Couronne islandaise 1
JMD Jamaica Dollar 1
JOD Jordanian Dinar 1
JPY Japanese Yen 1
KES Kenyan Shilling 1
KGS Som du Kirghizistan 1
KHR Cambodian Riel 1000
KMF Comorian Franc 1
KPW North Korea Won 1
KRW South Korean Won 1000
KWD Kuwait Dinar 1
KYD Cayman Islands Dollar 1
KZT Kazakhstani Tenge 1
LAK Lao Kip 1000
LBP Livre libanaise 1000
LKR Roupie sri lankaise
LRD Liberia Dollar 1
LSL Lesotho Loti 1
LVL Latvian Lats 1
LYD Dinar libyen 1
MAD Moroccan Dirham 1
MBTC Milli Bitcoin 1
MDL Moldovan Leu 1
MGA Madagascar Ariary 1000
MKD Dinar macédonien 1
MMK Burmese Kyat 1000
MNT Mongolian Tughrik 1000
MUR Mauritius Rupee 1
MVR Maldivian Rufiyaa 1
MWK Malawian Kwacha 1
MXN Mexican Peso 1
MZN Mozambican Metical 1
NAD Namibia Dollar 1
NGN Nigerian Naira 1
NIO Cordoba nicaraguayen 1
NOK Norwegian Krone 1
NPR Nepal Rupee 1
NZD New Zealand dollar 1
OMR Oman Rial 1
PAB Balboa panaméen 1
PEN Peruvian Sol 1
PGK Papua New Guinea Kina 1
PHP Philippine Peso 1
PKR Pakistan Rupee 1
PLN Poland Złoty 1
PYG Guarani paraguayen 1000
QAR Rial qatari 1
RON Romanian Leu 1
RSD Serbian Dinar 1
RUB Russian Ruble 1
RWF Rwandan Franc 1000
SAR Rial saoudien 1
SBD Solomon Islands Dollar 1
SCR Seychellois Rupee 1
SDG Livre soudanaise 1
SEK Swedish Krona 1
SHP Saint Helena Pound 1
SLL Sierra Leonean Leone 1000
SOS Somalia Shilling 1
SRD Suriname Dollar 1
SVC Colon salvadorien 1
SYP Livre syrienne 1
SZL Swazi Lilangeni 1
THB Thai Baht 1
TJS Tajikistan Somoni 1
TMT Turkmenistan Manat 1
TND Dinar tunisien 1
TOP Tongan paʻanga 1
TRY Turkish Lira 1
TTD Trinidad and Tobago Dollar 1
TUSD TrueUSD(Crypto) 1
TZS Tanzanian Shilling 1000
UAH Ukrainian Hryvnia 1
UBTC Micro Bitcoin 1
UGX Uganda Shilling 1000
USD United States Dollar 1
USDC USD Coin (Crypto) 1
USDT Tether 1
UYU Peso uruguayen 1
UZS Uzbekistani Som 1000
VND Vietnamese Dong 1000
VUV Vanuatu Vatu 1
WST Samoa Tala 1
XAF Central African CFA Franc BEAC 1
XCD East Caribbean Dollar 1
XOF CFA Franc 1
XPF CFP Franc 1
YER Rial yéménite 1
ZAR Rand sud-africain 1
ZMW Zambian Kwacha 1
Go back
|