{"info":{"_postman_id":"9b99479a-adc6-47e0-be3c-899899ac96bd","name":"SBO Sports FreeBet 568Win API and Customer Seamless Wallet Changes","description":"<html><head></head><body><h3 id=\"complete-cross-promotion-flow-in-the-api-system\">Complete Cross Promotion flow in the API system</h3>\n<ol>\n<li>In back office, create a Promotion for <code>SBO Sports</code> + <code>FreeBet</code>.</li>\n<li>Select the <code>Issuance Method</code>:<ul>\n<li><code>API Issuance</code>: your system decides which players receive FreeBet and calls the 568Win FreeBet API.</li>\n<li><code>System Auto Issuance</code>: 568Win evaluates the configured mission/qualification rules and issues FreeBet automatically.</li>\n</ul>\n</li>\n<li>Configure currency, FreeBet amount, player claim limit, total budget, max payout, expiry, and usage conditions.</li>\n<li>Activate the Promotion and save the generated <code>PromotionKey</code>.</li>\n<li>If your WL/API promotion flow uses section <code>13.5 Cross Promotion Reward</code>, select this Cross Promotion reward campaign there and set the reward count. The selected campaign must be active, use API Issuance, support the promotion currency, and stay within the reward count limit.</li>\n<li>For API Issuance, call the 568Win FreeBet API to issue one or multiple FreeBet tickets. The API response may return before the ticket is immediately usable, so allow a short processing time before treating the FreeBet as available to the player.</li>\n<li>When the player uses the FreeBet in SBO Sports, the existing Customer Seamless Wallet <code>Deduct</code> endpoint is still used with <code>Amount = 0</code> and Promotion Reward parameters in <code>ExtraInfo</code>.</li>\n<li><code>Settle</code>, <code>Cancel</code>, <code>Rollback</code>, and <code>GetBetStatus</code> continue through the existing wallet lifecycle.</li>\n<li>Use FreeBet ticket lookup, <code>PromotionRewardCode</code>, <code>PromotionEventId</code>, <code>TransferCode</code>, and <code>TransactionId</code> for support and reconciliation.</li>\n</ol>\n<h3 id=\"purpose\">Purpose</h3>\n<p>This collection is for customers integrating SBO Sports FreeBet. It explains how to configure FreeBet promotions in back office, when to call the 568Win FreeBet API, and what your Customer Seamless Wallet must support for FreeBet wagers.</p>\n<p>You will learn:</p>\n<ol>\n<li>What must be configured in each backoffice setup stage</li>\n<li>The difference between API Issuance and System Auto Issuance</li>\n<li>Which 568Win FreeBet APIs are used for API Issuance</li>\n<li>Which FreeBet request examples and processing rules your Customer Seamless Wallet must support</li>\n</ol>\n<h3 id=\"what-you-should-know-first\">What you should know first</h3>\n<p>SBO Sports FreeBet has two issuance methods:</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Issuance method</th>\n<th>Issuance behavior</th>\n<th>Do you need to call the 568Win FreeBet API?</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>API Issuance</td>\n<td>You create a FreeBet Promotion in back office, then your system assigns and issues FreeBet to selected players through the API</td>\n<td>Yes</td>\n</tr>\n<tr>\n<td>System Auto Issuance</td>\n<td>568Win automatically issues FreeBet after you configure a player-facing FreeBet mission and the player completes it</td>\n<td>No</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"customer-seamless-wallet-impact\">Customer Seamless Wallet impact</h3>\n<p>Existing wallet endpoint paths, HTTP methods, authentication, request envelopes, and response envelopes do not change.</p>\n<p>Your wallet handlers only need to recognize FreeBet wagers inside the existing Sports lifecycle:</p>\n<ul>\n<li><code>GetBalance</code> does not need FreeBet-specific logic.</li>\n<li><code>Deduct</code> must identify the Promotion Reward parameters in <code>ExtraInfo</code>.</li>\n<li><code>Settle</code>, <code>Cancel</code>, and <code>Rollback</code> continue using the existing transaction lifecycle.</li>\n<li><code>GetBetStatus</code> continues returning wallet-side bet status.</li>\n<li><code>Bonus</code> is not the default payout path for SBO Sports FreeBet.</li>\n</ul>\n<p>SBO Sports FreeBet wagers use <code>Deduct.Amount = 0</code> and include:</p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"PromotionRewardCode\": \"FB-2Q4W6E8R1T3Y5U7I\",\n  \"PromotionRewardAmount\": 50.0,\n  \"PromotionEventId\": 1001\n}\n</code></pre>\n<p>Do not identify FreeBet from <code>Amount = 0</code> alone. Use the Promotion Reward parameters in <code>ExtraInfo</code>.</p>\n</body></html>","schema":"https://schema.getpostman.com/json/collection/v2.0.0/collection.json","toc":[],"owner":"39587621","collectionId":"9b99479a-adc6-47e0-be3c-899899ac96bd","publishedId":"2sBXqMHKGA","public":true,"customColor":{"top-bar":"FFFFFF","right-sidebar":"303030","highlight":"FF6C37"},"publishDate":"2026-05-06T06:12:32.000Z"},"item":[{"name":"568Win FreeBet API","item":[{"name":"Get FreeBet Promotions for API Issuance","id":"b6f05b48-3e9d-4b5b-aae1-f5491b91e9f7","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json; charset=UTF-8"}],"body":{"mode":"raw","raw":"{\n  \"CompanyKey\": \"{{your_company_key_here}}\"\n}"},"url":"https://api.example.com/web-root/restricted/freebet/get-api-issuance-promotions.aspx","description":"<p>Returns FreeBet promotions that were created for API Issuance. After creating the promotion in the back office, your system can assign and issue FreeBets to selected players through the FreeBet API.</p>\n<p>Call this API first to retrieve the <code>promotionKey</code> that must be submitted when issuing FreeBet.</p>\n<h2 id=\"request-fields\">Request fields</h2>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Required</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>CompanyKey</code></td>\n<td>string</td>\n<td>Yes</td>\n<td>Company key provided by 568Win.</td>\n</tr>\n</tbody>\n</table>\n</div><h2 id=\"response-fields\">Response fields</h2>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>serverId</code></td>\n<td>string</td>\n<td>568Win server identifier that handled the request.</td>\n</tr>\n<tr>\n<td><code>promotions</code></td>\n<td>array</td>\n<td>FreeBet promotions available for API Issuance. Please refer to the Promotion table below.</td>\n</tr>\n<tr>\n<td><code>error</code></td>\n<td>object</td>\n<td>Standard 568Win API error object. <code>id = 0</code> means success.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"promotion\">Promotion</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>promotionEventId</code></td>\n<td>number</td>\n<td>568Win promotion event ID.</td>\n</tr>\n<tr>\n<td><code>promotionName</code></td>\n<td>string</td>\n<td>Promotion name.</td>\n</tr>\n<tr>\n<td><code>promotionKey</code></td>\n<td>string</td>\n<td>Promotion key required when issuing FreeBet.</td>\n</tr>\n<tr>\n<td><code>currencies</code></td>\n<td>array</td>\n<td>Supported currencies for the promotion.</td>\n</tr>\n<tr>\n<td><code>expiryRule</code></td>\n<td>object</td>\n<td>FreeBet expiry rule. Please refer to the Expiry Rule table below.</td>\n</tr>\n<tr>\n<td><code>freeBetAmount</code></td>\n<td>number</td>\n<td>FreeBet amount.</td>\n</tr>\n<tr>\n<td><code>maxPayout</code></td>\n<td>number</td>\n<td>Maximum payout per FreeBet ticket.</td>\n</tr>\n<tr>\n<td><code>displayValue</code></td>\n<td>string</td>\n<td>Display value for the amount and max payout.</td>\n</tr>\n<tr>\n<td><code>eventStartTime</code></td>\n<td>string | null</td>\n<td>Promotion start time.</td>\n</tr>\n<tr>\n<td><code>eventEndTime</code></td>\n<td>string | null</td>\n<td>Promotion end time.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"expiry-rule\">Expiry Rule</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>expirationType</code></td>\n<td>string</td>\n<td>Expiry rule type.</td>\n</tr>\n<tr>\n<td><code>expirationDays</code></td>\n<td>number | null</td>\n<td>Number of days after issuance before expiry, when applicable.</td>\n</tr>\n<tr>\n<td><code>expirationDateTime</code></td>\n<td>string | null</td>\n<td>Fixed expiry time, when applicable.</td>\n</tr>\n</tbody>\n</table>\n</div>","urlObject":{"path":["web-root","restricted","freebet","get-api-issuance-promotions.aspx"],"host":["https://api.example.com"],"query":[],"variable":[]}},"response":[{"id":"ac46d67f-c834-457b-93fd-b83f65b1bed3","name":"Success","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"application/json; charset=UTF-8"}],"body":{"mode":"raw","raw":"{\n  \"CompanyKey\": \"{{your_company_key_here}}\"\n}"},"url":"https://api.example.com/web-root/restricted/freebet/get-api-issuance-promotions.aspx"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json; charset=UTF-8"}],"cookie":[],"responseTime":null,"body":"{\n  \"serverId\": \"YY-STG\",\n  \"promotions\": [\n    {\n      \"promotionEventId\": 1001,\n      \"promotionName\": \"Weekly Retention Gift\",\n      \"promotionKey\": \"RETENTION-WEEKLY-301\",\n      \"currencies\": [\n        \"USD\",\n        \"TMP\"\n      ],\n      \"expiryRule\": {\n        \"expirationType\": \"AfterIssued\",\n        \"expirationDays\": 7,\n        \"expirationDateTime\": null\n      },\n      \"freeBetAmount\": 50,\n      \"maxPayout\": 200,\n      \"displayValue\": \"USD 50 FreeBet / Max Payout USD 200\",\n      \"eventStartTime\": \"2026-05-01T00:00:00.000-04:00\",\n      \"eventEndTime\": \"2026-05-31T23:59:59.000-04:00\"\n    }\n  ],\n  \"error\": {\n    \"id\": 0,\n    \"msg\": \"No Error\"\n  }\n}"}],"_postman_id":"b6f05b48-3e9d-4b5b-aae1-f5491b91e9f7"},{"name":"Issue FreeBet by API","event":[{"listen":"test","script":{"exec":["try {","  const json = pm.response.json();","  if (json.freeBetCode) pm.collectionVariables.set('FreeBetCode', json.freeBetCode);","  if (json.amount !== undefined) pm.collectionVariables.set('PromotionRewardAmount', String(json.amount));","} catch (e) {}"],"id":"8c319115-f98d-477d-a19e-ddf984530c81","type":"text/javascript"}}],"id":"a438950e-ed3d-494f-b00b-45641877ec21","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json; charset=UTF-8"}],"body":{"mode":"raw","raw":"{\n  \"CompanyKey\": \"{{your_company_key_here}}\",\n  \"Username\": \"player001\",\n  \"PromotionKey\": \"RETENTION-WEEKLY-301\",\n  \"CurrencyCode\": \"USD\",\n  \"ExternalAssignmentReferenceNo\": \"CRM-20260505-0001\"\n}"},"url":"https://api.example.com/web-root/restricted/freebet/assign-api-issuance.aspx","description":"<p>Issue one SBO Sports FreeBet to a selected player through the FreeBet API.</p>\n<p>After this API returns success, the FreeBet issuance may still need a short processing time before the player can use the FreeBet. Your system should allow time for 568Win to complete issuance before treating the FreeBet as immediately available to the player.</p>\n<p>Your system should keep each <code>externalAssignmentReferenceNo</code> unique so the issuance can be reconciled and duplicate issuance can be avoided.</p>\n<h2 id=\"request-fields\">Request fields</h2>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Required</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>CompanyKey</code></td>\n<td>string</td>\n<td>Yes</td>\n<td>Company key provided by 568Win.</td>\n</tr>\n<tr>\n<td><code>Username</code></td>\n<td>string</td>\n<td>Yes</td>\n<td>Player account receiving the FreeBet.</td>\n</tr>\n<tr>\n<td><code>PromotionKey</code></td>\n<td>string</td>\n<td>Yes</td>\n<td><code>promotionKey</code> returned by the API Issuance promotion list API.</td>\n</tr>\n<tr>\n<td><code>CurrencyCode</code></td>\n<td>string</td>\n<td>Yes</td>\n<td>Issuance currency. It must be supported by the promotion.</td>\n</tr>\n<tr>\n<td><code>ExternalAssignmentReferenceNo</code></td>\n<td>string</td>\n<td>Yes</td>\n<td>Single-issuance reference number generated by your system.</td>\n</tr>\n</tbody>\n</table>\n</div><h2 id=\"response-fields\">Response fields</h2>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>serverId</code></td>\n<td>string</td>\n<td>568Win server identifier that handled the request.</td>\n</tr>\n<tr>\n<td><code>freeBetCode</code></td>\n<td>string</td>\n<td>FreeBet code generated by 568Win.</td>\n</tr>\n<tr>\n<td><code>promotionKey</code></td>\n<td>string</td>\n<td>Promotion key used for issuance.</td>\n</tr>\n<tr>\n<td><code>username</code></td>\n<td>string</td>\n<td>Player account receiving the FreeBet.</td>\n</tr>\n<tr>\n<td><code>status</code></td>\n<td>string</td>\n<td>Current FreeBet status.</td>\n</tr>\n<tr>\n<td><code>currencyCode</code></td>\n<td>string</td>\n<td>FreeBet currency.</td>\n</tr>\n<tr>\n<td><code>amount</code></td>\n<td>number</td>\n<td>FreeBet amount.</td>\n</tr>\n<tr>\n<td><code>maxPayoutPerBet</code></td>\n<td>number</td>\n<td>Maximum payout for this FreeBet ticket.</td>\n</tr>\n<tr>\n<td><code>expiresAt</code></td>\n<td>string | null</td>\n<td>FreeBet expiry time.</td>\n</tr>\n<tr>\n<td><code>externalAssignmentReferenceNo</code></td>\n<td>string</td>\n<td>Single-issuance reference number you submitted.</td>\n</tr>\n<tr>\n<td><code>error</code></td>\n<td>object</td>\n<td>Standard 568Win API error object. <code>id = 0</code> means success.</td>\n</tr>\n</tbody>\n</table>\n</div>","urlObject":{"path":["web-root","restricted","freebet","assign-api-issuance.aspx"],"host":["https://api.example.com"],"query":[],"variable":[]}},"response":[{"id":"0b21494f-21da-4518-a50c-2495ff626eff","name":"Success","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"application/json; charset=UTF-8"}],"body":{"mode":"raw","raw":"{\n  \"CompanyKey\": \"{{your_company_key_here}}\",\n  \"Username\": \"player001\",\n  \"PromotionKey\": \"RETENTION-WEEKLY-301\",\n  \"CurrencyCode\": \"USD\",\n  \"ExternalAssignmentReferenceNo\": \"CRM-20260505-0001\"\n}"},"url":"https://api.example.com/web-root/restricted/freebet/assign-api-issuance.aspx"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json; charset=UTF-8"}],"cookie":[],"responseTime":null,"body":"{\n  \"serverId\": \"YY-STG\",\n  \"freeBetCode\": \"FB-2Q4W6E8R1T3Y5U7I\",\n  \"promotionKey\": \"RETENTION-WEEKLY-301\",\n  \"username\": \"player001\",\n  \"status\": \"Active\",\n  \"currencyCode\": \"USD\",\n  \"amount\": 50,\n  \"maxPayoutPerBet\": 200,\n  \"expiresAt\": \"2026-05-12T00:00:00.000-04:00\",\n  \"externalAssignmentReferenceNo\": \"CRM-20260505-0001\",\n  \"error\": {\n    \"id\": 0,\n    \"msg\": \"No Error\"\n  }\n}"}],"_postman_id":"a438950e-ed3d-494f-b00b-45641877ec21"},{"name":"Batch Issue FreeBet by API","event":[{"listen":"test","script":{"id":"f86134d8-b3c9-4b4e-8d7f-f6ee2e8e7f0c","type":"text/javascript","exec":["try {","  const json = pm.response.json();","  if (Array.isArray(json.assignedTickets) && json.assignedTickets.length > 0 && json.assignedTickets[0].freeBetCode) pm.collectionVariables.set('FreeBetCode', json.assignedTickets[0].freeBetCode);","} catch (e) {}"]}}],"id":"b7bb02b2-0bd7-4f0b-98b9-8bcd9465813a","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"noauth","isInherited":false},"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"CompanyKey\": \"{{your_company_key_here}}\",\n  \"Username\": \"player001\",\n  \"PromotionKey\": \"RETENTION-WEEKLY-301\",\n  \"CurrencyCode\": \"USD\",\n  \"Quantity\": 2,\n  \"BatchExternalReferenceNo\": \"CRM-20260505-BATCH-0001\",\n  \"ItemExternalReferenceNos\": [\n    \"CRM-20260505-BATCH-0001-1\",\n    \"CRM-20260505-BATCH-0001-2\"\n  ]\n}","options":{"raw":{"language":"json"}}},"url":"https://api.example.com/web-root/restricted/freebet/assign-batch.aspx","description":"<p>Issue multiple SBO Sports FreeBet tickets to the same player through the FreeBet API.</p>\n<p>After this API returns success, the issued FreeBet tickets may still need a short processing time before the player can use them. Your system should allow time for 568Win to complete issuance before treating the FreeBets as immediately available to the player.</p>\n<p>Use this API when your system needs to issue multiple FreeBet tickets in one business batch. Each ticket must have a unique <code>itemExternalReferenceNo</code> so you can reconcile or troubleshoot each issued ticket.</p>\n<h2 id=\"request-fields\">Request fields</h2>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Required</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>CompanyKey</code></td>\n<td>string</td>\n<td>Yes</td>\n<td>Company key provided by 568Win.</td>\n</tr>\n<tr>\n<td><code>Username</code></td>\n<td>string</td>\n<td>Yes</td>\n<td>Player account receiving the FreeBet tickets.</td>\n</tr>\n<tr>\n<td><code>PromotionKey</code></td>\n<td>string</td>\n<td>Yes</td>\n<td><code>promotionKey</code> returned by the API Issuance promotion list API.</td>\n</tr>\n<tr>\n<td><code>CurrencyCode</code></td>\n<td>string</td>\n<td>Yes</td>\n<td>Issuance currency. It must be supported by the promotion.</td>\n</tr>\n<tr>\n<td><code>Quantity</code></td>\n<td>number</td>\n<td>Yes</td>\n<td>Number of FreeBet tickets to issue. Must be greater than 0.</td>\n</tr>\n<tr>\n<td><code>BatchExternalReferenceNo</code></td>\n<td>string</td>\n<td>Yes</td>\n<td>Batch reference number generated by your system.</td>\n</tr>\n<tr>\n<td><code>ItemExternalReferenceNos</code></td>\n<td>array</td>\n<td>Yes</td>\n<td>Per-ticket reference numbers. The count must equal <code>Quantity</code>; values cannot be blank or duplicated.</td>\n</tr>\n</tbody>\n</table>\n</div><h2 id=\"response-fields\">Response fields</h2>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>serverId</code></td>\n<td>string</td>\n<td>568Win server identifier that handled the request.</td>\n</tr>\n<tr>\n<td><code>reasonCode</code></td>\n<td>string | null</td>\n<td>Reason code when the batch is not fully successful; <code>null</code> on success.</td>\n</tr>\n<tr>\n<td><code>reasonMessage</code></td>\n<td>string | null</td>\n<td>Reason message when the batch is not fully successful; <code>null</code> on success.</td>\n</tr>\n<tr>\n<td><code>batchExternalReferenceNo</code></td>\n<td>string</td>\n<td>Batch reference number you submitted.</td>\n</tr>\n<tr>\n<td><code>promotionKey</code></td>\n<td>string</td>\n<td>Promotion key used for issuance.</td>\n</tr>\n<tr>\n<td><code>username</code></td>\n<td>string</td>\n<td>Player account receiving the FreeBet tickets.</td>\n</tr>\n<tr>\n<td><code>currencyCode</code></td>\n<td>string</td>\n<td>FreeBet currency.</td>\n</tr>\n<tr>\n<td><code>requestedQuantity</code></td>\n<td>number</td>\n<td>Requested number of tickets.</td>\n</tr>\n<tr>\n<td><code>remainingQuantity</code></td>\n<td>number</td>\n<td>Number of tickets not issued by 568Win; <code>0</code> on success.</td>\n</tr>\n<tr>\n<td><code>assignedTickets</code></td>\n<td>array</td>\n<td>Successfully issued FreeBet tickets. Please refer to the Assigned Ticket table below.</td>\n</tr>\n<tr>\n<td><code>error</code></td>\n<td>object</td>\n<td>Standard 568Win API error object. <code>id = 0</code> means success.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"assigned-ticket\">Assigned Ticket</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>itemExternalReferenceNo</code></td>\n<td>string</td>\n<td>Per-ticket reference number you submitted.</td>\n</tr>\n<tr>\n<td><code>freeBetCode</code></td>\n<td>string</td>\n<td>FreeBet code generated by 568Win.</td>\n</tr>\n</tbody>\n</table>\n</div>","urlObject":{"path":["web-root","restricted","freebet","assign-batch.aspx"],"host":["https://api.example.com"],"query":[],"variable":[]}},"response":[{"id":"d5d37b6e-e259-47b8-90aa-9235c9881201","name":"Success","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"CompanyKey\": \"{{your_company_key_here}}\",\n  \"Username\": \"player001\",\n  \"PromotionKey\": \"RETENTION-WEEKLY-301\",\n  \"CurrencyCode\": \"USD\",\n  \"Quantity\": 2,\n  \"BatchExternalReferenceNo\": \"CRM-20260505-BATCH-0001\",\n  \"ItemExternalReferenceNos\": [\n    \"CRM-20260505-BATCH-0001-1\",\n    \"CRM-20260505-BATCH-0001-2\"\n  ]\n}","options":{"raw":{"language":"json"}}},"url":"https://api.example.com/web-root/restricted/freebet/assign-batch.aspx"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json; charset=utf-8"}],"cookie":[],"responseTime":null,"body":"{\n  \"serverId\": \"YY-STG\",\n  \"reasonCode\": null,\n  \"reasonMessage\": null,\n  \"batchExternalReferenceNo\": \"CRM-20260505-BATCH-0001\",\n  \"promotionKey\": \"RETENTION-WEEKLY-301\",\n  \"username\": \"player001\",\n  \"currencyCode\": \"USD\",\n  \"requestedQuantity\": 2,\n  \"remainingQuantity\": 0,\n  \"assignedTickets\": [\n    {\n      \"itemExternalReferenceNo\": \"CRM-20260505-BATCH-0001-1\",\n      \"freeBetCode\": \"FB-2Q4W6E8R1T3Y5U7I\"\n    },\n    {\n      \"itemExternalReferenceNo\": \"CRM-20260505-BATCH-0001-2\",\n      \"freeBetCode\": \"FB-4A6S8D1F3G5H7J9K\"\n    }\n  ],\n  \"error\": {\n    \"id\": 0,\n    \"msg\": \"No Error\"\n  }\n}"}],"_postman_id":"b7bb02b2-0bd7-4f0b-98b9-8bcd9465813a"}],"id":"87aeecb8-b44d-4d22-8eeb-0118e920f355","description":"<p>The 568Win FreeBet API is used for SBO Sports FreeBet API Issuance.</p>\n<p>API Issuance means you first create a FreeBet Promotion in back office, then issue FreeBets to players through the 568Win FreeBet API.</p>\n<p>API Issuance flow:</p>\n<ol>\n<li>In back office, create a Promotion and select Reward Type: FreeBet and Issuance Method: API Issuance</li>\n<li>Configure currency, FreeBet amount, player claim limit, total budget, max payout, and usage conditions</li>\n<li>Activate the Promotion and save the <code>PromotionKey</code> generated by back office</li>\n<li>If a WL/API promotion uses section 13.5 Cross Promotion Reward, select this active Cross Promotion reward campaign and set the reward count there</li>\n<li>Determine which players should receive the FreeBet reward</li>\n<li>Call the 568Win FreeBet API to issue FreeBets to players. Use the batch API when issuing multiple FreeBet tickets at once</li>\n</ol>\n<p>Common rules:</p>\n<ul>\n<li><p>A successful issuance API response may still need a short processing time before the FreeBet is available to the player.</p>\n</li>\n<li><p>Requests use the existing 568Win API JSON format and <code>CompanyKey</code> authentication.</p>\n</li>\n<li><p>Player identity uses the existing public API <code>Username</code>.</p>\n</li>\n<li><p>568Win resolves platform-side internal identifiers from <code>CompanyKey</code> and <code>Username</code>; do not add internal platform IDs to the request.</p>\n</li>\n<li><p>If your environment already requires <code>ServerId</code>, follow the existing API documentation. It is not a FreeBet-specific field.</p>\n</li>\n</ul>\n<p>System Auto Issuance does not need this API. 568Win issues FreeBet automatically after the player completes the configured mission.</p>\n","_postman_id":"87aeecb8-b44d-4d22-8eeb-0118e920f355"},{"name":"Customer Seamless Wallet FreeBet Change Examples","item":[{"name":"Get User Balance - No FreeBet Change","id":"db4199a0-eaa8-42af-88c5-9ad84f2cb447","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json; charset=UTF-8"}],"body":{"mode":"raw","raw":"{\n  \"CompanyKey\": \"{{your_company_key_here}}\",\n  \"Username\": \"player001\",\n  \"ProductType\": 1,\n  \"GameType\": 1,\n  \"Gpid\": -2\n}"},"url":"https://customer-wallet.example.com/GetBalance","description":"<h3 id=\"freebet-impact\">FreeBet impact</h3>\n<p><code>GetBalance</code> does not need FreeBet-specific logic.</p>\n<p>Continue using the existing Customer Seamless Wallet API behavior and response envelope. Do not add Promotion-specific state or FreeBet ticket lookup logic to this endpoint.</p>\n","urlObject":{"path":["GetBalance"],"host":["https://customer-wallet.example.com"],"query":[],"variable":[]}},"response":[],"_postman_id":"db4199a0-eaa8-42af-88c5-9ad84f2cb447"},{"name":"Deduct Bet Amount - FreeBet Amount 0 + ExtraInfo","id":"98cf9f44-6693-490e-ab49-04299e032b1c","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json; charset=UTF-8"}],"body":{"mode":"raw","raw":"{\n  \"Amount\": 0,\n  \"TransferCode\": \"3998211\",\n  \"TransactionId\": \"3998211\",\n  \"BetTime\": \"2026-05-05T00:23:25.9143053-04:00\",\n  \"GameRoundId\": null,\n  \"GamePeriodId\": null,\n  \"OrderDetail\": null,\n  \"PlayerIp\": \"1.2.3.4\",\n  \"GameTypeName\": null,\n  \"CompanyKey\": \"{{your_company_key_here}}\",\n  \"Username\": \"player001\",\n  \"ProductType\": 1,\n  \"GameType\": 1,\n  \"NewGameType\": 101,\n  \"GameId\": 1,\n  \"Gpid\": -2,\n  \"ExtraInfo\": {\n    \"sportType\": \"Football\",\n    \"marketType\": \"Over/Under\",\n    \"league\": \"ITALY SERIE A\",\n    \"match\": \"Lecce vs Sampdoria\",\n    \"betOption\": \"Over\",\n    \"kickoffTime\": \"2026-05-05T00:23:25\",\n    \"isHalfWonLose\": false,\n    \"winlostDate\": null,\n    \"PromotionRewardCode\": \"FB-2Q4W6E8R1T3Y5U7I\",\n    \"PromotionRewardAmount\": 50.0,\n    \"PromotionEventId\": 1001\n  },\n  \"SeamlessGameExtraInfo\": {\n    \"FeatureBuyStatus\": 0,\n    \"EndRoundStatus\": 0\n  }\n}"},"url":"https://customer-wallet.example.com/Deduct","description":"<h3 id=\"purpose\">Purpose</h3>\n<p>SBO Sports still calls the existing <code>Deduct</code> endpoint when the player places a wager.</p>\n<p>The difference between a normal bet and a FreeBet wager is:</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Scenario</th>\n<th>Amount</th>\n<th>ExtraInfo Promotion Reward parameters</th>\n<th>Customer Seamless Wallet behavior</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>Normal SBO Sports bet</td>\n<td>Greater than 0</td>\n<td>No</td>\n<td>Deduct cash balance according to existing logic</td>\n</tr>\n<tr>\n<td>SBO Sports FreeBet bet</td>\n<td>0</td>\n<td>Yes</td>\n<td>Do not deduct player cash balance. Store the parameters and create a promotion-funded bet</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"freebet-request-parameters\">FreeBet request parameters</h3>\n<p>When a FreeBet wager is placed, <code>ExtraInfo</code> includes three additional fields:</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Field</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>PromotionRewardCode</code></td>\n<td>FreeBet ticket / reward identifier. Customer support and reconciliation can use this value for tracing.</td>\n</tr>\n<tr>\n<td><code>PromotionRewardAmount</code></td>\n<td>FreeBet stake amount. SBO Sports uses this amount to calculate payout. It is not the same as the top-level cash deduction amount.</td>\n</tr>\n<tr>\n<td><code>PromotionEventId</code></td>\n<td>568Win Promotion campaign ID, used for reporting, attribution, and customer support lookup.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"customer-handler-rules\">Customer handler rules</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Scenario</th>\n<th>Customer handling</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>No Promotion Reward parameters</td>\n<td>Process as a normal SBO Sports bet using existing logic.</td>\n</tr>\n<tr>\n<td><code>Amount = 0</code> and all three Promotion Reward parameters are valid</td>\n<td>Treat as a FreeBet wager. Do not deduct player cash balance. Store the parameters and <code>TransferCode + TransactionId</code>.</td>\n</tr>\n<tr>\n<td><code>Amount = 0</code> but no Promotion Reward parameters</td>\n<td>Do not infer FreeBet from amount alone. Process with existing zero amount validation.</td>\n</tr>\n<tr>\n<td>Promotion Reward parameters exist but <code>Amount != 0</code></td>\n<td>Treat as a contract conflict and reject.</td>\n</tr>\n<tr>\n<td><code>PromotionRewardCode</code> is blank</td>\n<td>Reject.</td>\n</tr>\n<tr>\n<td><code>PromotionRewardAmount &lt;= 0</code></td>\n<td>Reject.</td>\n</tr>\n<tr>\n<td><code>PromotionEventId &lt;= 0</code></td>\n<td>Reject.</td>\n</tr>\n<tr>\n<td>Same <code>TransferCode + TransactionId</code> is retried with identical payload</td>\n<td>Return the same idempotent result as the first request.</td>\n</tr>\n<tr>\n<td>Same <code>TransferCode + TransactionId</code> but parameters, amount, player, product, or game differs</td>\n<td>Treat as a duplicate transaction conflict and reject.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"response-keeps-the-existing-format\">Response keeps the existing format</h3>\n<p>The response envelope does not need new FreeBet-specific fields and can continue using the existing format:</p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"AccountName\": \"Player01\",\n  \"Balance\": 8262.52,\n  \"ErrorCode\": 0,\n  \"ErrorMessage\": \"No Error\",\n  \"BetAmount\": 0\n}\n</code></pre>\n<p><code>Balance</code> returns the player's cash balance. The FreeBet stake must not be treated as a player cash deduction.</p>\n","urlObject":{"path":["Deduct"],"host":["https://customer-wallet.example.com"],"query":[],"variable":[]}},"response":[{"id":"76b37f35-0356-4a01-82e2-71f472ead1cd","name":"FreeBet Deduct Success","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"application/json; charset=UTF-8"}],"body":{"mode":"raw","raw":"{\n  \"Amount\": 0,\n  \"TransferCode\": \"3998211\",\n  \"TransactionId\": \"3998211\",\n  \"BetTime\": \"2026-05-05T00:23:25.9143053-04:00\",\n  \"GameRoundId\": null,\n  \"GamePeriodId\": null,\n  \"OrderDetail\": null,\n  \"PlayerIp\": \"1.2.3.4\",\n  \"GameTypeName\": null,\n  \"CompanyKey\": \"{{your_company_key_here}}\",\n  \"Username\": \"player001\",\n  \"ProductType\": 1,\n  \"GameType\": 1,\n  \"NewGameType\": 101,\n  \"GameId\": 1,\n  \"Gpid\": -2,\n  \"ExtraInfo\": {\n    \"sportType\": \"Football\",\n    \"marketType\": \"Over/Under\",\n    \"league\": \"ITALY SERIE A\",\n    \"match\": \"Lecce vs Sampdoria\",\n    \"betOption\": \"Over\",\n    \"kickoffTime\": \"2026-05-05T00:23:25\",\n    \"isHalfWonLose\": false,\n    \"winlostDate\": null,\n    \"PromotionRewardCode\": \"FB-2Q4W6E8R1T3Y5U7I\",\n    \"PromotionRewardAmount\": 50.0,\n    \"PromotionEventId\": 1001\n  },\n  \"SeamlessGameExtraInfo\": {\n    \"FeatureBuyStatus\": 0,\n    \"EndRoundStatus\": 0\n  }\n}"},"url":"https://customer-wallet.example.com/Deduct"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json; charset=UTF-8"}],"cookie":[],"responseTime":null,"body":"{\n  \"AccountName\": \"Player01\",\n  \"Balance\": 8262.52,\n  \"ErrorCode\": 0,\n  \"ErrorMessage\": \"No Error\",\n  \"BetAmount\": 0\n}"},{"id":"cc155cb8-517b-42b0-aa88-6c6eb752a16a","name":"FreeBet Deduct Rejected","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"application/json; charset=UTF-8"}],"body":{"mode":"raw","raw":"{\n  \"Amount\": 0,\n  \"TransferCode\": \"3998211\",\n  \"TransactionId\": \"3998211\",\n  \"BetTime\": \"2026-05-05T00:23:25.9143053-04:00\",\n  \"GameRoundId\": null,\n  \"GamePeriodId\": null,\n  \"OrderDetail\": null,\n  \"PlayerIp\": \"1.2.3.4\",\n  \"GameTypeName\": null,\n  \"CompanyKey\": \"{{your_company_key_here}}\",\n  \"Username\": \"player001\",\n  \"ProductType\": 1,\n  \"GameType\": 1,\n  \"NewGameType\": 101,\n  \"GameId\": 1,\n  \"Gpid\": -2,\n  \"ExtraInfo\": {\n    \"sportType\": \"Football\",\n    \"marketType\": \"Over/Under\",\n    \"league\": \"ITALY SERIE A\",\n    \"match\": \"Lecce vs Sampdoria\",\n    \"betOption\": \"Over\",\n    \"kickoffTime\": \"2026-05-05T00:23:25\",\n    \"isHalfWonLose\": false,\n    \"winlostDate\": null,\n    \"PromotionRewardCode\": \"FB-2Q4W6E8R1T3Y5U7I\",\n    \"PromotionRewardAmount\": 50.0,\n    \"PromotionEventId\": 1001\n  },\n  \"SeamlessGameExtraInfo\": {\n    \"FeatureBuyStatus\": 0,\n    \"EndRoundStatus\": 0\n  }\n}"},"url":"https://customer-wallet.example.com/Deduct"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json; charset=UTF-8"}],"cookie":[],"responseTime":null,"body":"{\n  \"AccountName\": \"Player01\",\n  \"Balance\": 0,\n  \"ErrorCode\": 1,\n  \"ErrorMessage\": \"Invalid FreeBet parameters\",\n  \"BetAmount\": 0\n}"}],"_postman_id":"98cf9f44-6693-490e-ab49-04299e032b1c"},{"name":"Settle Bet - FreeBet Uses Existing Settle","id":"1377f0b5-1e9b-4a4c-a25c-4139fdb22aaf","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json; charset=UTF-8"}],"body":{"mode":"raw","raw":"{\n  \"TransferCode\": \"3998211\",\n  \"WinLoss\": 150.0,\n  \"ResultType\": 0,\n  \"ResultTime\": \"2026-05-05T23:33:49.0404216-04:00\",\n  \"CommissionStake\": 0.0,\n  \"GameResult\": \"\",\n  \"CompanyKey\": \"{{your_company_key_here}}\",\n  \"Username\": \"player001\",\n  \"ProductType\": 1,\n  \"GameType\": 1,\n  \"Gpid\": -2,\n  \"IsCashOut\": false,\n  \"ExtraInfo\": {\n    \"sportType\": \"Football\",\n    \"marketType\": \"Over/Under\",\n    \"league\": \"ITALY SERIE A\",\n    \"match\": \"Lecce vs Sampdoria\",\n    \"betOption\": \"Over\",\n    \"kickoffTime\": \"2026-05-05T00:23:25\",\n    \"isHalfWonLose\": false,\n    \"winlostDate\": \"2026-05-05T00:00:00\"\n  }\n}"},"url":"https://customer-wallet.example.com/Settle","description":"<h3 id=\"freebet-impact\">FreeBet impact</h3>\n<p><code>Settle</code> does not need a FreeBet-specific endpoint or new request fields.</p>\n<p>Find the original bet by <code>TransferCode</code> or the existing transaction identifier:</p>\n<ul>\n<li>If the original bet is not FreeBet, continue using the existing settle logic.</li>\n<li>If the original bet is FreeBet, credit the result based on the <code>WinLoss</code> / settlement amount sent by SBO Sports.</li>\n<li>Do not recalculate FreeBet payout rules or <code>MaxPayoutPerBet</code> in the wallet.</li>\n<li>Retain the Promotion Reward parameters stored during <code>Deduct</code> for support lookup and reconciliation.</li>\n<li>If the same settlement payload is retried, return the same idempotent result.</li>\n<li>If a different settlement amount or outcome is sent after settlement, reject it as a settlement conflict or require your existing rollback / resettlement flow first.</li>\n</ul>\n<p>Response envelope keeps the existing format. No FreeBet-specific response fields are required.</p>\n","urlObject":{"path":["Settle"],"host":["https://customer-wallet.example.com"],"query":[],"variable":[]}},"response":[],"_postman_id":"1377f0b5-1e9b-4a4c-a25c-4139fdb22aaf"},{"name":"Rollback - FreeBet Uses Existing Rollback","id":"8ef79fcf-6271-42c0-87a8-59b224a6d063","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json; charset=UTF-8"}],"body":{"mode":"raw","raw":"{\n  \"CompanyKey\": \"{{your_company_key_here}}\",\n  \"Username\": \"player001\",\n  \"TransferCode\": \"3998211\",\n  \"ProductType\": 1,\n  \"GameType\": 1,\n  \"Gpid\": -2,\n  \"ExtraInfo\": {\n    \"sportType\": \"Football\",\n    \"marketType\": \"Over/Under\",\n    \"league\": \"ITALY SERIE A\",\n    \"match\": \"Lecce vs Sampdoria\",\n    \"betOption\": \"Over\",\n    \"kickoffTime\": \"2026-05-05T00:23:25\",\n    \"isHalfWonLose\": false,\n    \"winlostDate\": null\n  }\n}"},"url":"https://customer-wallet.example.com/Rollback","description":"<h3 id=\"freebet-impact\">FreeBet impact</h3>\n<p><code>Rollback</code> does not need a FreeBet-specific endpoint or new request fields.</p>\n<p>Follow the existing rollback flow and move the wallet-side bet state back through your existing state model. Keep the Promotion Reward parameters with the transaction record.</p>\n<p>Important: wallet rollback does not restore the 568Win FreeBet ticket to active. It only rolls back the wallet-side bet state according to the existing wallet contract.</p>\n<p>If the same rollback payload is retried, return the same idempotent result.</p>\n<p>Response envelope keeps the existing format. No FreeBet-specific response fields are required.</p>\n","urlObject":{"path":["Rollback"],"host":["https://customer-wallet.example.com"],"query":[],"variable":[]}},"response":[{"id":"78f48faa-f6a9-4ecb-81a1-e994370940ee","name":"Rollback Success","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"application/json; charset=UTF-8"}],"body":{"mode":"raw","raw":"{\n  \"CompanyKey\": \"{{your_company_key_here}}\",\n  \"Username\": \"player001\",\n  \"TransferCode\": \"3998211\",\n  \"ProductType\": 1,\n  \"GameType\": 1,\n  \"Gpid\": -2,\n  \"ExtraInfo\": {\n    \"sportType\": \"Football\",\n    \"marketType\": \"Over/Under\",\n    \"league\": \"ITALY SERIE A\",\n    \"match\": \"Lecce vs Sampdoria\",\n    \"betOption\": \"Over\",\n    \"kickoffTime\": \"2026-05-05T00:23:25\",\n    \"isHalfWonLose\": false,\n    \"winlostDate\": null\n  }\n}"},"url":"https://customer-wallet.example.com/Rollback"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json; charset=UTF-8"}],"cookie":[],"responseTime":null,"body":"{\n  \"AccountName\": \"Player01\",\n  \"Balance\": 8222.52,\n  \"ErrorCode\": 0,\n  \"ErrorMessage\": \"No Error\"\n}"}],"_postman_id":"8ef79fcf-6271-42c0-87a8-59b224a6d063"},{"name":"Cancel Bet - FreeBet Uses Existing Cancel","id":"87271d06-50b0-4271-a2db-72e905044182","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json; charset=UTF-8"}],"body":{"mode":"raw","raw":"{\n  \"CompanyKey\": \"{{your_company_key_here}}\",\n  \"Username\": \"player001\",\n  \"TransferCode\": \"3998211\",\n  \"ProductType\": 1,\n  \"GameType\": 1,\n  \"IsCancelAll\": true,\n  \"TransactionId\": \"3998211\",\n  \"Gpid\": -2,\n  \"ExtraInfo\": {\n    \"sportType\": \"Football\",\n    \"marketType\": \"Over/Under\",\n    \"league\": \"ITALY SERIE A\",\n    \"match\": \"Lecce vs Sampdoria\",\n    \"betOption\": \"Over\",\n    \"kickoffTime\": \"2026-05-05T00:23:25\",\n    \"isHalfWonLose\": false,\n    \"winlostDate\": null\n  }\n}"},"url":"https://customer-wallet.example.com/Cancel","description":"<h3 id=\"freebet-impact\">FreeBet impact</h3>\n<p><code>Cancel</code> does not need a FreeBet-specific endpoint or new request fields.</p>\n<p>Follow the existing cancel flow and move the wallet-side bet state to void.</p>\n<ul>\n<li>If the bet is FreeBet, no player cash stake needs to be refunded because <code>Deduct.Amount = 0</code>.</li>\n<li>Keep the Promotion Reward parameters for support lookup and reconciliation.</li>\n<li>If the same cancel payload is retried, return the same idempotent result.</li>\n</ul>\n<p>Response envelope keeps the existing format. No FreeBet-specific response fields are required.</p>\n","urlObject":{"path":["Cancel"],"host":["https://customer-wallet.example.com"],"query":[],"variable":[]}},"response":[{"id":"2ac22eac-b36e-4d26-8b9e-dfa4a3628546","name":"Cancel Success","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"application/json; charset=UTF-8"}],"body":{"mode":"raw","raw":"{\n  \"CompanyKey\": \"{{your_company_key_here}}\",\n  \"Username\": \"player001\",\n  \"TransferCode\": \"3998211\",\n  \"ProductType\": 1,\n  \"GameType\": 1,\n  \"IsCancelAll\": true,\n  \"TransactionId\": \"3998211\",\n  \"Gpid\": -2,\n  \"ExtraInfo\": {\n    \"sportType\": \"Football\",\n    \"marketType\": \"Over/Under\",\n    \"league\": \"ITALY SERIE A\",\n    \"match\": \"Lecce vs Sampdoria\",\n    \"betOption\": \"Over\",\n    \"kickoffTime\": \"2026-05-05T00:23:25\",\n    \"isHalfWonLose\": false,\n    \"winlostDate\": null\n  }\n}"},"url":"https://customer-wallet.example.com/Cancel"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json; charset=UTF-8"}],"cookie":[],"responseTime":null,"body":"{\n  \"AccountName\": \"Player01\",\n  \"Balance\": 8242.52,\n  \"ErrorCode\": 0,\n  \"ErrorMessage\": \"No Error\"\n}"}],"_postman_id":"87271d06-50b0-4271-a2db-72e905044182"},{"name":"Get Bet Status - No FreeBet-Specific Fields","id":"fa77e40e-576d-4db2-9a90-0f1f6441e57b","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json; charset=UTF-8"}],"body":{"mode":"raw","raw":"{\n  \"CompanyKey\": \"{{your_company_key_here}}\",\n  \"Username\": \"player001\",\n  \"TransferCode\": \"3998211\",\n  \"ProductType\": 1,\n  \"GameType\": 1,\n  \"Gpid\": -2\n}"},"url":"https://customer-wallet.example.com/GetBetStatus","description":"<h3 id=\"freebet-impact\">FreeBet impact</h3>\n<p><code>GetBetStatus</code> does not need new FreeBet-specific fields.</p>\n<p>This endpoint queries the existing Customer Seamless Wallet bet status. It is not the backoffice FreeBet Ticket status and does not expose internal FreeBet Ticket Detail fields.</p>\n<p>Continue returning existing wallet-side bet statuses, for example:</p>\n<ul>\n<li><code>running</code></li>\n<li><code>settled</code></li>\n<li><code>void</code></li>\n</ul>\n<p>If the bet is an SBO Sports FreeBet wager, the same response envelope and existing bet status rules still apply.</p>\n","urlObject":{"path":["GetBetStatus"],"host":["https://customer-wallet.example.com"],"query":[],"variable":[]}},"response":[],"_postman_id":"fa77e40e-576d-4db2-9a90-0f1f6441e57b"}],"id":"4b80b30d-e0be-4ae2-94fa-0040f5e87be2","description":"<p>This folder provides change examples for Customer Seamless Wallet implementers.</p>\n<p>Existing Seamless Wallet endpoint paths, HTTP methods, CompanyKey authentication, request envelopes, and response envelopes do not change.</p>\n<p>Customer checklist:</p>\n<ol>\n<li><code>GetBalance</code> does not need FreeBet-specific logic</li>\n<li><code>Deduct</code> must identify the FreeBet parameters</li>\n<li><code>Settle</code>, <code>Cancel</code>, and <code>Rollback</code> continue using the existing bet lifecycle</li>\n<li><code>GetBetStatus</code> continues returning existing wallet-side statuses</li>\n<li><code>Bonus</code> is not the default payout path for SBO Sports FreeBet</li>\n</ol>\n<p>The most important endpoint is <code>Deduct</code>: when SBO Sports FreeBet is used, <code>Amount = 0</code> and <code>ExtraInfo</code> contains the Promotion Reward parameters. Your wallet should store these parameters with <code>TransferCode + TransactionId</code> for later settlement, rollback, cancellation, support lookup, and reconciliation.</p>\n","_postman_id":"4b80b30d-e0be-4ae2-94fa-0040f5e87be2"},{"name":"Backoffice Setup Notes","item":[{"name":"Documentation Note - Complete Flow and Setup Stages","id":"0d8a5507-e879-4ba1-82a0-6ade894a8ff9","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"https://example.invalid/docs-only/freebet-full-flow","description":"<p><strong>Documentation note only. Do not send this request. This item explains back-office setup; it is not an API endpoint.</strong></p>\n<h3 id=\"complete-cross-promotion-flow-in-the-api-system\">Complete Cross Promotion flow in the API system</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Step</th>\n<th>Where</th>\n<th>What you do</th>\n<th>Result</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>1</td>\n<td>Back office Promotion List</td>\n<td>Create a Promotion for <code>SBO Sports</code> + <code>FreeBet</code>.</td>\n<td>A FreeBet Promotion draft is created.</td>\n</tr>\n<tr>\n<td>2</td>\n<td>Basic Settings / Promotion Event</td>\n<td>Set Promotion name, event time, product, reward type, and Issuance Method.</td>\n<td>The Promotion is classified as API Issuance or System Auto Issuance.</td>\n</tr>\n<tr>\n<td>3</td>\n<td>Budget &amp; Risk Controls</td>\n<td>Configure currency, FreeBet amount, player claim limit, total budget, and max payout.</td>\n<td>568Win can enforce issuance budget, per-player claim limit, and payout cap.</td>\n</tr>\n<tr>\n<td>4</td>\n<td>Issuance Conditions</td>\n<td>Configure mission/qualification rules only for System Auto Issuance.</td>\n<td>568Win can automatically determine player qualification.</td>\n</tr>\n<tr>\n<td>5</td>\n<td>Reward Usage Conditions</td>\n<td>Configure ticket expiry and eligible SBO Sports conditions.</td>\n<td>The player can use FreeBet only under the configured usage rules.</td>\n</tr>\n<tr>\n<td>6</td>\n<td>Review / Activate</td>\n<td>Review settings and activate the Promotion.</td>\n<td>The Promotion can issue and validate FreeBet tickets. Save the <code>PromotionKey</code>.</td>\n</tr>\n<tr>\n<td>7</td>\n<td>Optional 13.5 Cross Promotion Reward setting</td>\n<td>When a WL/API promotion should give this FreeBet reward, choose Cross Promotion Reward, select this campaign, and set the reward count.</td>\n<td>The WL/API promotion can assign this FreeBet reward when its own promotion flow qualifies the player.</td>\n</tr>\n<tr>\n<td>8</td>\n<td>568Win FreeBet API</td>\n<td>For API Issuance, call the single or batch issuance API.</td>\n<td>568Win creates FreeBet tickets for selected players.</td>\n</tr>\n<tr>\n<td>9</td>\n<td>Customer Seamless Wallet</td>\n<td>Support <code>Deduct.Amount = 0</code> and the Promotion Reward parameters in <code>ExtraInfo</code>.</td>\n<td>FreeBet bets run through the existing wallet lifecycle without new endpoints.</td>\n</tr>\n<tr>\n<td>10</td>\n<td>Support / reconciliation</td>\n<td>Use FreeBet ticket lookup and wallet references.</td>\n<td>You can reconcile by <code>PromotionRewardCode</code>, <code>PromotionEventId</code>, <code>TransferCode</code>, and <code>TransactionId</code>.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"135-cross-promotion-reward-setting\">13.5 Cross Promotion Reward setting</h3>\n<p>Use the 13.5 Cross Promotion Reward setting only when another WL/API promotion should issue this FreeBet reward after its own qualification flow.</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Setting</th>\n<th>What to check</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>Reward Mode</td>\n<td>Select Cross Promotion Reward.</td>\n</tr>\n<tr>\n<td>Reward Campaign</td>\n<td>Select the active FreeBet Promotion created in Cross Promotion.</td>\n</tr>\n<tr>\n<td>Reward Count</td>\n<td>Number of FreeBet tickets to issue per qualified request.</td>\n</tr>\n<tr>\n<td>Currency</td>\n<td>Must match the selected FreeBet Promotion currency.</td>\n</tr>\n<tr>\n<td>PromotionKey</td>\n<td>Keep the generated key stable; backend issuance uses it to map to the FreeBet Promotion.</td>\n</tr>\n</tbody>\n</table>\n</div><p>Before launch, confirm the selected FreeBet Promotion is active, uses API Issuance, supports the same currency, and the reward count is within the configured player claim limit and assignment count limit.</p>\n<h3 id=\"five-backoffice-setup-stages\">Five backoffice setup stages</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Stage</th>\n<th>Screen</th>\n<th>Customer action</th>\n<th>Checkpoint</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>1</td>\n<td>Basic Settings / Promotion Event</td>\n<td>Create promotion name, promotion period, Product, Reward Type, and Issuance Method</td>\n<td>Confirm whether this FreeBet uses API Issuance or System Auto Issuance</td>\n</tr>\n<tr>\n<td>2</td>\n<td>Amount and Risk / General Setting</td>\n<td>Configure currency, FreeBet amount, total budget, player claim count, and max payout</td>\n<td>Confirm amount, currency, budget cap, and max payout match promotion rules</td>\n</tr>\n<tr>\n<td>3</td>\n<td>Qualifying Conditions</td>\n<td>Configure player-facing mission rules only for System Auto Issuance</td>\n<td>Confirm metric, period, threshold, and SBO Sports conditions are complete</td>\n</tr>\n<tr>\n<td>4</td>\n<td>Use Conditions</td>\n<td>Configure ticket expiry time and eligible SBO Sportsbook conditions</td>\n<td>Confirm ticket expiry and eligible SBO Sportsbook conditions match the promotion terms</td>\n</tr>\n<tr>\n<td>5</td>\n<td>Review / Activate</td>\n<td>Review and activate the promotion</td>\n<td>Issuance and usage start only after activation</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"sportsbook-conditions\">Sportsbook conditions</h3>\n<p>Use Sports Conditions define where the player can use the FreeBet.</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Setting</th>\n<th>What it means for you</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>Condition group</td>\n<td>A group of rules for one set of eligible bets. Add another group when you need a separate rule set.</td>\n</tr>\n<tr>\n<td>Condition logic</td>\n<td>How this group combines with the previous group, for example AND logic.</td>\n</tr>\n<tr>\n<td>Applicable to</td>\n<td>Whether the FreeBet can be used on live bets, non-live bets, or both.</td>\n</tr>\n<tr>\n<td>Sport filter</td>\n<td>Include or exclude specific sports.</td>\n</tr>\n<tr>\n<td>League filter</td>\n<td>Include or exclude specific leagues within the selected sport.</td>\n</tr>\n<tr>\n<td>Match filter</td>\n<td>Include or exclude specific matches.</td>\n</tr>\n<tr>\n<td>Market filter</td>\n<td>Include or exclude specific market types.</td>\n</tr>\n<tr>\n<td>Odds condition</td>\n<td>Set minimum or maximum eligible odds. Odds are entered as Euro odds.</td>\n</tr>\n</tbody>\n</table>\n</div><p>If no specific sport, league, match, or market is selected, the condition applies to all values allowed by the rule.</p>\n<h3 id=\"complete-flow-diagram\">Complete flow diagram</h3>\n<img src=\"https://content.pstmn.io/36460f9e-a512-45d9-8736-eb496403b421/c2JvLWZyZWViZXQtY3Jvc3MtcHJvbW90aW9uLWZsb3ctZW4ucG5n\" alt width=\"900\" />\n\n<h3 id=\"back-office-screen-reference\">Back-office screen reference</h3>\n<p>These images help you understand where settings are configured and how the setup flow works. The production UI may differ slightly due to layout or wording adjustments.</p>\n<p>Basic Settings / Promotion Event:</p>\n<img src=\"https://content.pstmn.io/88079bf2-423a-4d24-ac69-80d21c3bc603/YmFja29mZmljZS0wMS1iYXNpYy1zZXR0aW5ncy5wbmc=\" width=\"900\" />\n\n<p>Amount and Risk / General Setting:</p>\n<img src=\"https://content.pstmn.io/742f4a6d-8826-4b3c-90a1-8ecb1f3148ef/YmFja29mZmljZS0wMi1hbW91bnQtcmlzay5wbmc=\" width=\"900\" />\n\n<p>Qualifying Conditions:</p>\n<img src=\"https://content.pstmn.io/6d1dee8c-c937-4f23-8809-8c62fb680a41/YmFja29mZmljZS0wMy1xdWFsaWZ5aW5nLWNvbmRpdGlvbnMucG5n\" width=\"900\" />\n\n<h3 id=\"responsibility-boundary\">Responsibility boundary</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Area</th>\n<th>Your responsibility</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>Back-office setup</td>\n<td>Correctly create the promotion, amount, budget, qualification conditions, use conditions, and promotion status</td>\n</tr>\n<tr>\n<td>13.5 Cross Promotion Reward setting</td>\n<td>If another WL/API promotion issues this reward, select the correct active FreeBet Promotion and reward count.</td>\n</tr>\n<tr>\n<td>API Issuance</td>\n<td>If using API Issuance, call the 568Win FreeBet API to issue FreeBet to selected players.</td>\n</tr>\n<tr>\n<td>Customer Seamless Wallet</td>\n<td>Support <code>Deduct.Amount = 0</code> and <code>ExtraInfo</code> Promotion Reward parameters. Later lifecycle endpoints continue using existing logic</td>\n</tr>\n<tr>\n<td>Support and reconciliation</td>\n<td>Use <code>PromotionRewardCode</code>, <code>PromotionEventId</code>, <code>TransferCode</code>, and <code>TransactionId</code> for lookup</td>\n</tr>\n</tbody>\n</table>\n</div>","urlObject":{"protocol":"https","path":["docs-only","freebet-full-flow"],"host":["example","invalid"],"query":[],"variable":[]}},"response":[],"_postman_id":"0d8a5507-e879-4ba1-82a0-6ade894a8ff9"},{"name":"Documentation Note - System Auto Issuance Backoffice Setup","id":"ab34904d-7dcc-4efe-af93-00e205b91b69","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"https://example.invalid/docs-only/system-auto-issuance-backoffice-setup","description":"<p><strong>Documentation note only. Do not send this request. This item explains back-office setup; it is not an API endpoint.</strong></p>\n<h3 id=\"what-is-system-auto-issuance\">What is System Auto Issuance?</h3>\n<p>System Auto Issuance means you create a player-facing FreeBet mission in back office. 568Win displays player progress and issues FreeBet automatically after the mission is completed.</p>\n<p>You do not need to call the 568Win FreeBet issuance API for this issuance method.</p>\n<h3 id=\"setup-stages\">Setup stages</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Stage</th>\n<th>Your action</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>Step 1 Basic Settings</td>\n<td>Choose System Auto Issuance, then configure promotion name and promotion period.</td>\n</tr>\n<tr>\n<td>Step 2 Amount and Risk</td>\n<td>Configure currency, FreeBet amount, total budget, player claim limit, and max payout.</td>\n</tr>\n<tr>\n<td>Step 3 Qualifying Conditions</td>\n<td>Configure what betting conditions a player must satisfy to automatically receive FreeBet.</td>\n</tr>\n<tr>\n<td>Step 4 Use Conditions</td>\n<td>Configure FreeBet ticket expiry time and eligible SBO Sportsbook conditions.</td>\n</tr>\n<tr>\n<td>Step 5 Review / Activate</td>\n<td>Review settings and activate the promotion.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"flow-after-activation\">Flow after activation</h3>\n<ol>\n<li>Player places a normal SBO Sports wager</li>\n<li>568Win accumulates player progress based on backoffice mission rules</li>\n<li>After the player completes the mission, 568Win automatically creates a FreeBet ticket</li>\n<li>The player uses FreeBet to place a wager in SBO Sports</li>\n<li>SBO Sports calls Customer Seamless Wallet <code>Deduct</code></li>\n<li><code>Deduct.Amount = 0</code>, and <code>ExtraInfo</code> contains the Promotion Reward parameters</li>\n<li>Later <code>Settle</code>, <code>Cancel</code>, and <code>Rollback</code> continue using existing endpoints</li>\n</ol>\n<h3 id=\"checklist\">Checklist</h3>\n<ul>\n<li>Confirm qualification conditions, period, currency threshold, and SBO Sportsbook conditions</li>\n<li>Confirm use conditions match promotion terms</li>\n<li>Confirm Seamless Wallet can identify <code>Deduct.Amount = 0</code> and the Promotion Reward parameters</li>\n<li>Confirm support can look up tickets by <code>FreeBetCode</code> / <code>PromotionRewardCode</code></li>\n</ul>\n","urlObject":{"protocol":"https","path":["docs-only","system-auto-issuance-backoffice-setup"],"host":["example","invalid"],"query":[],"variable":[]}},"response":[],"_postman_id":"ab34904d-7dcc-4efe-af93-00e205b91b69"},{"name":"Documentation Note - API Issuance Backoffice Setup","id":"a5745761-4347-40f9-96b0-3acbd0a8472e","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"https://example.invalid/docs-only/api-issuance-backoffice-setup","description":"<p><strong>Documentation note only. Do not send this request. This item explains back-office setup; it is not an API endpoint.</strong></p>\n<h3 id=\"what-is-api-issuance\">What is API Issuance?</h3>\n<p>API Issuance means you create a FreeBet Promotion in back office, then your system decides which player receives the FreeBet and calls the 568Win FreeBet API. If another WL/API promotion should give this reward, configure the 13.5 Cross Promotion Reward setting after the FreeBet Promotion is active.</p>\n<h3 id=\"setup-stages\">Setup stages</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Stage</th>\n<th>Your action</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>Step 1 Basic Settings</td>\n<td>Choose API Issuance and save the <code>PromotionKey</code> provided by back office.</td>\n</tr>\n<tr>\n<td>Step 2 Amount and Risk</td>\n<td>Configure currency, FreeBet amount, total budget, player claim limit, and max payout.</td>\n</tr>\n<tr>\n<td>Step 3 Qualifying Conditions</td>\n<td>Usually not the main setup focus because selected players are determined by your system.</td>\n</tr>\n<tr>\n<td>Step 4 Use Conditions</td>\n<td>Configure FreeBet ticket expiry time and eligible SBO Sportsbook conditions.</td>\n</tr>\n<tr>\n<td>Step 5 Review / Activate</td>\n<td>Review settings and activate the promotion.</td>\n</tr>\n<tr>\n<td>Optional 13.5 Cross Promotion Reward</td>\n<td>Select this campaign when a WL/API promotion should issue this FreeBet reward, then set reward count.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"issuance-flow\">Issuance flow</h3>\n<ol>\n<li><p>Your system or linked WL/API promotion flow decides which player should receive FreeBet</p>\n</li>\n<li><p>Call \"Get FreeBet Promotions for API Issuance\" to confirm <code>PromotionKey</code></p>\n</li>\n<li><p>Call \"Issue FreeBet by API\" or \"Batch Issue FreeBet by API\"</p>\n</li>\n<li><p>Response returns <code>freeBetCode</code></p>\n</li>\n<li><p>Allow a short processing time before treating the FreeBet as immediately available to the player</p>\n</li>\n<li><p>When the player uses FreeBet, your Customer Seamless Wallet receives the same code in <code>Deduct.ExtraInfo.PromotionRewardCode</code></p>\n</li>\n</ol>\n<h3 id=\"apis-used\">APIs used</h3>\n<ul>\n<li><p><code>POST /web-root/restricted/freebet/get-api-issuance-promotions.aspx</code></p>\n</li>\n<li><p><code>POST /web-root/restricted/freebet/assign-api-issuance.aspx</code></p>\n</li>\n<li><p><code>POST /web-root/restricted/freebet/assign-batch.aspx</code></p>\n</li>\n</ul>\n<h3 id=\"checklist\">Checklist</h3>\n<ul>\n<li><p>Confirm the FreeBet Promotion is configured for API Issuance</p>\n</li>\n<li><p>Save <code>PromotionKey</code></p>\n</li>\n<li><p>If using 13.5 Cross Promotion Reward, confirm the selected campaign, currency, and reward count are correct</p>\n</li>\n<li><p>Confirm <code>ExternalAssignmentReferenceNo</code>, <code>BatchExternalReferenceNo</code>, and each <code>ItemExternalReferenceNo</code> are unique where applicable</p>\n</li>\n<li><p>Confirm Customer Seamless Wallet can identify <code>Deduct.Amount = 0</code> and the Promotion Reward parameters</p>\n</li>\n<li><p>Confirm support can use <code>ExternalAssignmentReferenceNo</code>, <code>FreeBetCode</code>, and <code>PromotionRewardCode</code> for lookup and reconciliation</p>\n</li>\n</ul>\n","urlObject":{"protocol":"https","path":["docs-only","api-issuance-backoffice-setup"],"host":["example","invalid"],"query":[],"variable":[]}},"response":[],"_postman_id":"a5745761-4347-40f9-96b0-3acbd0a8472e"}],"id":"0d42f425-56ce-4aab-b32d-119129ce3db2","description":"<p>This folder explains backoffice setup for customers. These entries are documentation notes and do not need to be sent as requests.</p>\n<p>Purpose:</p>\n<ol>\n<li>Help you understand the complete Cross Promotion flow and the five back-office setup stages inside Postman</li>\n<li>Explain the operational difference between API Issuance and System Auto Issuance</li>\n<li>Connect back-office setup, optional 13.5 Cross Promotion Reward linkage, 568Win issuance APIs, and Customer Seamless Wallet Deduct / Settle / Cancel / Rollback into one complete flow</li>\n</ol>\n<p>Read \"Complete Flow Diagram and Setup Stages\" first, then read the API Issuance or System Auto Issuance note based on your issuance method.</p>\n","_postman_id":"0d42f425-56ce-4aab-b32d-119129ce3db2"}],"variable":[{"key":"568WinApiDomain","value":"https://api.example.com"},{"key":"YourDomain","value":"https://customer-wallet.example.com"},{"key":"CompanyKey","value":"{{your_company_key_here}}"},{"key":"PlayerName","value":"player001"},{"key":"PromotionKey","value":"RETENTION-WEEKLY-301"},{"key":"CurrencyCode","value":"USD"},{"key":"ExternalAssignmentReferenceNo","value":"CRM-20260505-0001"},{"key":"FreeBetCode","value":"FB-2Q4W6E8R1T3Y5U7I"},{"key":"PromotionRewardAmount","value":"50.0"},{"key":"PromotionEventId","value":"1001"},{"key":"TransferCode","value":"3998211"},{"key":"TransactionId","value":"3998211"},{"key":"BatchExternalReferenceNo","value":"CRM-20260505-BATCH-0001","type":"string"},{"key":"ItemExternalReferenceNo1","value":"CRM-20260505-BATCH-0001-1","type":"string"},{"key":"ItemExternalReferenceNo2","value":"CRM-20260505-BATCH-0001-2","type":"string"}]}