# Cancellation Request

<table><thead><tr><th width="115.0677490234375" align="center">Source</th><th width="55.919189453125" align="center"></th><th width="114.782958984375" align="center">Destination</th></tr></thead><tbody><tr><td align="center"><strong>Client</strong></td><td align="center"><strong>→</strong></td><td align="center"><strong>MTS</strong></td></tr></tbody></table>

MTS supports the cancellation of any accepted ticket (or a bet within a multi-bet ticket) in its entire or partial value. In the case of partial cancellation, a portion of the ticket's original stake is returned to the bettor while the remaining part is still in play, and the payout depends on the event's outcome. In this case, the cancellation request must include the ratio of the stake (field "percentage") the bettor receives back.

Clients can send as many partial cancellation requests as they need, provided that the cancellation ratio of each cancellation request includes all previous cancellation requests' ratios, as MTS does not aggregate the ratio values of individual requests and treats the last request as if there were no previous requests.

Using different types of the Cancellation details object makes it possible to cancel – fully or partially – a single bet or a subset of bets within a multi-bet ticket, with custom cancellation ratios for each bet. With an appropriate Cancellation request, it is also possible to cancel an eventual re-offer offered by MTS.

**Envelope and Content table:**

The envelope provides the Content's (Cancellation request) context and contains the following fields (besides Content):

* operatorId
* correlationId
* timestampUtc
* operation
* version

<table data-full-width="true"><thead><tr><th width="351.646728515625">Example</th><th width="149.85418701171875">Field Name</th><th>Field Description</th><th width="100">Mandatory/ Optional</th><th width="100">Data Type</th></tr></thead><tbody><tr><td><pre><code>{
</code></pre></td><td><br></td><td><br></td><td><br></td><td><br></td></tr><tr><td><pre><code>  "operatorId": 9985,
</code></pre></td><td>operatorId</td><td>ID to uniquely identify the client from which the ticket originated,<br>ID is provided to the client by Sportradar,<br>The client is obliged to include it in every ticket</td><td>M</td><td>Integer</td></tr><tr><td><pre><code>  "content": {
       ..........
       ..........
       },
</code></pre></td><td>content</td><td>See Content object description below</td><td>M</td><td>Object</td></tr><tr><td><pre><code>  "correlationId": "ew24faU66psM",
</code></pre></td><td>correlationId</td><td>Client defined string to facilitate the request-response pairing,<br>Sportradar is obliged to return the same string in every response</td><td>M</td><td>String</td></tr><tr><td><pre><code>  "timestampUtc": 1678265556000,
</code></pre></td><td>timestampUtc</td><td>Timestamp of ticket placement as submitted by the client (Unix time milliseconds format),<br>minimal: 1,<br>maximum: 9223372036854776000</td><td>M</td><td>Integer</td></tr><tr><td><pre><code>  "operation": "ticket-cancel",
</code></pre></td><td>operation</td><td>Declaration of ticket content type, should be "ticket-cancel" in case of Cancellation request</td><td>M</td><td>String</td></tr><tr><td><pre><code>  "version": "3.0"
</code></pre></td><td>version</td><td>Indicates the ticket format version</td><td>M</td><td>String</td></tr><tr><td><code>}</code></td><td><br></td><td><br></td><td><br></td><td><br></td></tr></tbody></table>

### Content object (Cancellation request) <a href="#mtscancellationrequest-v3.0-contentcontentobject-cancellationrequest" id="mtscancellationrequest-v3.0-contentcontentobject-cancellationrequest"></a>

This object constitutes the ticket itself and includes the following fields:

* type
* cancellationId
* details

**Content object table:**

<table data-full-width="true"><thead><tr><th width="350.61376953125">Example</th><th width="156.59454345703125">Field Name</th><th>Field Description</th><th width="100">Mandatory/ Optional</th><th width="100">Data Type</th></tr></thead><tbody><tr><td><pre><code>"content": {
</code></pre></td><td><br></td><td><br></td><td><br></td><td>Object</td></tr><tr><td><pre><code>    "type": "cancel",
</code></pre></td><td>type</td><td>Declaration of content type, should be "cancel" in case of Cancellation request</td><td>M</td><td>String</td></tr><tr><td><pre data-overflow="wrap"><code>    "cancellationId": "CANC8787414", 
</code></pre></td><td>cancellationId</td><td>Unique ID of this particular cancellation request in client's system, referenced in eventual ack message, minimal string length = 1,<br>maximum string length = 128</td><td>O</td><td>String</td></tr><tr><td><pre><code>    "details": {
</code></pre></td><td>details</td><td>Cancellation details - additional information related to the ticket</td><td>M</td><td>Object</td></tr><tr><td><pre><code>        "type": .......
             ..........
             ..........
             }
     },        
</code></pre></td><td><ul><li>type</li></ul></td><td><p>See description of the 5 specific "details" types below</p><ul><li>ticket</li><li>ticket-partial</li><li>bet</li><li>bet-partial</li><li>reoffer</li></ul></td><td>M</td><td>String</td></tr></tbody></table>

**1. Cancellation details ("type": "ticket") table**

This type is used to cancel an entire ticket.

Fields:

* type
* ticketId
* ticketSignature
* code

<table data-full-width="true"><thead><tr><th width="351">Example</th><th width="162.37152099609375">Field Name</th><th>Field Description</th><th width="100">Mandatory/ Optional</th><th width="100">Data Type</th></tr></thead><tbody><tr><td><pre><code>    {
</code></pre></td><td><br></td><td><br></td><td><br></td><td><br></td></tr><tr><td><pre><code>        "type": "ticket",
</code></pre></td><td>type</td><td>Specifies the type of cancellation details</td><td>M</td><td>String</td></tr><tr><td><pre><code>        "ticketId": "Ticket_3690",
</code></pre></td><td>ticketId</td><td>ID of the original ticket that is to be affected by this cancellation</td><td>M</td><td>String</td></tr><tr><td><pre data-overflow="wrap"><code>      "ticketSignature": "HHDut7XIEl+SmjWB3x
DB0AIB6fUZVFOvmGKm6Rcvxm0=",
</code></pre></td><td>ticketSignature</td><td>Signature from MTS's response to initial ticket placement</td><td>M</td><td>String</td></tr><tr><td><pre><code>        "code": 101     
</code></pre></td><td>code</td><td>Cancellation reason code,<br>see <a href="/pages/1jhqkpHcxDVLUyDe9IOO">list of codes</a></td><td>M</td><td>Integer</td></tr><tr><td><pre><code>    }
</code></pre></td><td><br></td><td><br></td><td><br></td><td><br></td></tr></tbody></table>

**2. Cancellation details ("type": "ticket-partial") table**

This type is used to cancel only a portion of the ticket.

Fields:

* type
* ticketId
* ticketSignature
* code
* percentage

<table data-full-width="true"><thead><tr><th width="351">Example</th><th width="170.14056396484375">Field Name</th><th>Field Description</th><th width="100">Mandatory/ Optional</th><th width="100">Data Type</th></tr></thead><tbody><tr><td><pre><code>    {
</code></pre></td><td><br></td><td><br></td><td><br></td><td><br></td></tr><tr><td><pre><code>        "type": "ticket-partial",
</code></pre></td><td>type</td><td>Specifies the type of cancellation details</td><td>M</td><td>String</td></tr><tr><td><pre><code>        "ticketId": "Ticket_3690",
</code></pre></td><td>ticketId</td><td>ID of the original ticket that is to be affected by this cancellation</td><td>M</td><td>String</td></tr><tr><td><pre data-overflow="wrap"><code>      "ticketSignature": "HHDut7XIEl+SmjWB3x
DB0AIB6fUZVFOvmGKm6Rcvxm0=",
</code></pre></td><td>ticketSignature</td><td>Signature from MTS's response to initial ticket placement</td><td>M</td><td>String</td></tr><tr><td><pre><code>        "code": 103,     
</code></pre></td><td>code</td><td>Cancellation reason code,<br>see <a href="/pages/1jhqkpHcxDVLUyDe9IOO#cancellation-reason-codes">list of codes</a></td><td>M</td><td>Integer</td></tr><tr><td><pre><code>        "percentage": "0.9"
</code></pre></td><td>percentage</td><td>Proportion of the ticket that is to be cancelled,<br>format: up to 8 decimal places after a zero and decimal point,<br>has to be passed as a decimal (i.e. 0.9 and not 90),<br>Java regex: ^0(\\.\\d{1,8})?$</td><td>M</td><td>String</td></tr><tr><td><pre><code>    }
</code></pre></td><td><br></td><td><br></td><td><br></td><td><br></td></tr></tbody></table>

**3. Cancellation details ("type": "bet") table**

This type is used to cancel an entire bet.\\

Fields:

* type
* ticketId
* ticketSignature
* betId
* code

<table data-full-width="true"><thead><tr><th width="350.7265625">Example</th><th width="156.82464599609375">Field Name</th><th>Field Description</th><th width="100">Mandatory/ Optional</th><th width="100">Data Type</th></tr></thead><tbody><tr><td><pre><code>    {
</code></pre></td><td><br></td><td><br></td><td><br></td><td><br></td></tr><tr><td><pre><code>        "type": "bet",
</code></pre></td><td>type</td><td>Specifies the type of cancellation details</td><td>M</td><td>String</td></tr><tr><td><pre><code>        "ticketId": "Ticket_3690",
</code></pre></td><td>ticketId</td><td>ID of the original ticket that is to be affected by this cancellation</td><td>M</td><td>String</td></tr><tr><td><pre data-overflow="wrap"><code>      "ticketSignature": "HHDut7XIEl+SmjWB3x
DB0AIB6fUZVFOvmGKm6Rcvxm0=",
</code></pre></td><td>ticketSignature</td><td>Signature from MTS's response to initial ticket placement</td><td>M</td><td>String</td></tr><tr><td><pre><code>        "betId": "bjda6GH",
</code></pre></td><td>bettId</td><td>ID of the initial bet (defined by client) which is to be affected with this cancellation</td><td>M</td><td>String</td></tr><tr><td><pre><code>        "code": 103,     
</code></pre></td><td>code</td><td>Cancellation reason code,<br>see <a href="/pages/1jhqkpHcxDVLUyDe9IOO#cancellation-reason-codes">list of codes</a></td><td>M</td><td>Integer</td></tr><tr><td><pre><code>    }
</code></pre></td><td><br></td><td><br></td><td><br></td><td><br></td></tr></tbody></table>

**4. Cancellation details ("type": "bet-partial") table**

This type is used to cancel a portion of a bet.

Fields:

* type
* ticketId
* ticketSignature
* betId
* code
* percentage

<table data-full-width="true"><thead><tr><th width="350.8828125">Example</th><th width="181.47314453125">Field Name</th><th>Field Description</th><th width="100">Mandatory/ Optional</th><th width="100">Data Type</th></tr></thead><tbody><tr><td><pre><code>    {
</code></pre></td><td><br></td><td><br></td><td><br></td><td><br></td></tr><tr><td><pre><code>        "type": "bet-partial",
</code></pre></td><td>type</td><td>Specifies the type of cancellation details</td><td>M</td><td>String</td></tr><tr><td><pre><code>        "ticketId": "Ticket_3690",
</code></pre></td><td>ticketId</td><td>ID of the original ticket that is to be affected by this cancellation</td><td>M</td><td>String</td></tr><tr><td><pre data-overflow="wrap"><code>      "ticketSignature": "HHDut7XIEl+SmjWB3x
DB0AIB6fUZVFOvmGKm6Rcvxm0=",
</code></pre></td><td>ticketSignature</td><td>Signature from MTS's response to initial ticket placement</td><td>M</td><td>String</td></tr><tr><td><pre><code>        "betId": "bjda6GH",
</code></pre></td><td>betId</td><td>ID of the initial bet (defined by client) which is to be affected with this cancellation</td><td>M</td><td>String</td></tr><tr><td><pre><code>        "code": 103     
</code></pre></td><td>code</td><td>Cancellation reason code,<br>see <a href="/pages/1jhqkpHcxDVLUyDe9IOO#cancellation-reason-codes">list of codes</a></td><td>M</td><td>Integer</td></tr><tr><td><pre><code>        "percentage": "0.8"
</code></pre></td><td>percentage</td><td>Proportion of the bet that is to be cancelled,<br>format: up to 8 decimal places after a zero and decimal point,<br>has to be passed as a decimal (i.e. 0.8 and not 80),<br>Java regex: ^0(\\.\\d{1,8})?$</td><td>M</td><td>String</td></tr><tr><td><pre><code>    }
</code></pre></td><td><br></td><td><br></td><td><br></td><td><br></td></tr></tbody></table>

**5. Cancellation details ("type": "reoffer") table**

This type is used to explicitly cancel a re-offer that has been previously sent by MTS. By means of this cancellation, a previously reserved liability (by the re-offer functionality) is released.

Fields:

* type
* ticketId
* ticketSignature
* code

<table data-full-width="true"><thead><tr><th width="350.7265625">Example</th><th width="142.775146484375">Field Name</th><th>Field Description</th><th width="100">Mandatory/ Optional</th><th width="100">Data Type</th></tr></thead><tbody><tr><td><pre><code>    {
</code></pre></td><td><br></td><td><br></td><td><br></td><td><br></td></tr><tr><td><pre><code>        "type": "reoffer",
</code></pre></td><td>type</td><td>Specifies the type of cancellation details</td><td>M</td><td>String</td></tr><tr><td><pre><code>        "ticketId": "Ticket_3690",
</code></pre></td><td>ticketId</td><td>ID of the original ticket that is to be affected by this cancellation</td><td>M</td><td>String</td></tr><tr><td><pre data-overflow="wrap"><code>      "ticketSignature": "HHDut7XIEl+SmjWB3x
DB0AIB6fUZVFOvmGKm6Rcvxm0=",
</code></pre></td><td>ticketSignature</td><td>Signature from MTS's response to initial ticket placement</td><td>M</td><td>String</td></tr><tr><td><pre><code>        "code": 103     
</code></pre></td><td>code</td><td>Cancellation reason code,<br>see <a href="/pages/1jhqkpHcxDVLUyDe9IOO#cancellation-reason-codes">list of codes</a></td><td>M</td><td>Integer</td></tr><tr><td><pre><code>    }
</code></pre></td><td><br></td><td><br></td><td><br></td><td><br></td></tr></tbody></table>


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.sportradar.com/transaction30api/api-description/ticket-json-format-description/cancellation-description-and-flow/cancellation-request.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
