Cancel Trade
Cancels an open trade (one that has not yet been accepted or cancelled). Note that only the player who created the trade can cancel it via this API call, to prevent griefing of the trade system (cancelling trades in order to prevent other players from accepting them, for trades that can be claimed by more than one player).
Error codes
This operation may return the following PlayFab errors:
| Error | Code |
|---|---|
| ProductDisabledForTitle | 1609 |
| TradeAlreadyFilled | 1163 |
| TradeCancelled | 1162 |
| TradeDoesNotExist | 1161 |
| TradeStatusNotValidForCancelling | 1159 |
| TradeWaitForStatusTimeout | 1164 |
POST
/
Client
/
CancelTrade
Cancel Trade
curl --request POST \
--url https://{titleId}.playfabapi.com/Client/CancelTrade \
--header 'Content-Type: application/json' \
--header 'X-Authorization: <api-key>' \
--data '
{
"TradeId": "D819CEC225EA9948C351"
}
'import requests
url = "https://{titleId}.playfabapi.com/Client/CancelTrade"
payload = { "TradeId": "D819CEC225EA9948C351" }
headers = {
"X-Authorization": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'X-Authorization': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({TradeId: 'D819CEC225EA9948C351'})
};
fetch('https://{titleId}.playfabapi.com/Client/CancelTrade', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://{titleId}.playfabapi.com/Client/CancelTrade",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'TradeId' => 'D819CEC225EA9948C351'
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"X-Authorization: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://{titleId}.playfabapi.com/Client/CancelTrade"
payload := strings.NewReader("{\n \"TradeId\": \"D819CEC225EA9948C351\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("X-Authorization", "<api-key>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://{titleId}.playfabapi.com/Client/CancelTrade")
.header("X-Authorization", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"TradeId\": \"D819CEC225EA9948C351\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://{titleId}.playfabapi.com/Client/CancelTrade")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["X-Authorization"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"TradeId\": \"D819CEC225EA9948C351\"\n}"
response = http.request(request)
puts response.read_body{
"code": 200,
"status": "OK",
"data": {
"Trade": {
"Status": "Cancelled",
"TradeId": "D819CEC225EA9948C351",
"OfferingPlayerId": "CD803BF233CE76CC",
"OfferedInventoryInstanceIds": [
"1359447",
"635691"
],
"RequestedCatalogItemIds": [
"rare_hat_7"
],
"OpenedAt": "2015-04-07T09:04:28+00:00",
"CancelledAt": "2015-04-07T09:18:24+00:00"
}
}
}{
"code": 123,
"errorCode": 123,
"status": "<string>",
"error": "<string>",
"errorMessage": "<string>",
"errorDetails": {}
}Authorizations
This API requires a client session ticket, available from any Client Login function.
Body
application/json
Trade identifier.
Response
The Http status code. If X-ReportErrorAsSuccess header is set to true, this will report the actual http error code.
The Http status code as a string.
Show child attributes
Show child attributes
Example:
{
"Trade": {
"Status": "Cancelled",
"TradeId": "D819CEC225EA9948C351",
"OfferingPlayerId": "CD803BF233CE76CC",
"OfferedInventoryInstanceIds": ["1359447", "635691"],
"RequestedCatalogItemIds": ["rare_hat_7"],
"OpenedAt": "2015-04-07T09:04:28+00:00",
"CancelledAt": "2015-04-07T09:18:24+00:00"
}
}
Last modified on October 1, 2026
Was this page helpful?
⌘I
Cancel Trade
curl --request POST \
--url https://{titleId}.playfabapi.com/Client/CancelTrade \
--header 'Content-Type: application/json' \
--header 'X-Authorization: <api-key>' \
--data '
{
"TradeId": "D819CEC225EA9948C351"
}
'import requests
url = "https://{titleId}.playfabapi.com/Client/CancelTrade"
payload = { "TradeId": "D819CEC225EA9948C351" }
headers = {
"X-Authorization": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'X-Authorization': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({TradeId: 'D819CEC225EA9948C351'})
};
fetch('https://{titleId}.playfabapi.com/Client/CancelTrade', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://{titleId}.playfabapi.com/Client/CancelTrade",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'TradeId' => 'D819CEC225EA9948C351'
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"X-Authorization: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://{titleId}.playfabapi.com/Client/CancelTrade"
payload := strings.NewReader("{\n \"TradeId\": \"D819CEC225EA9948C351\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("X-Authorization", "<api-key>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://{titleId}.playfabapi.com/Client/CancelTrade")
.header("X-Authorization", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"TradeId\": \"D819CEC225EA9948C351\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://{titleId}.playfabapi.com/Client/CancelTrade")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["X-Authorization"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"TradeId\": \"D819CEC225EA9948C351\"\n}"
response = http.request(request)
puts response.read_body{
"code": 200,
"status": "OK",
"data": {
"Trade": {
"Status": "Cancelled",
"TradeId": "D819CEC225EA9948C351",
"OfferingPlayerId": "CD803BF233CE76CC",
"OfferedInventoryInstanceIds": [
"1359447",
"635691"
],
"RequestedCatalogItemIds": [
"rare_hat_7"
],
"OpenedAt": "2015-04-07T09:04:28+00:00",
"CancelledAt": "2015-04-07T09:18:24+00:00"
}
}
}{
"code": 123,
"errorCode": 123,
"status": "<string>",
"error": "<string>",
"errorMessage": "<string>",
"errorDetails": {}
}