wallet/withdrawexpireunfreeze
curl --request POST \
--url https://tron-mainnet.core.chainstack.com/95e61622bf6a8af293978377718e3b77/wallet/withdrawexpireunfreeze \
--header 'Content-Type: application/json' \
--data '
{
"owner_address": "41608f8da72479edc7dd921e4c30bb7e7cddbe722e",
"visible": false
}
'import requests
url = "https://tron-mainnet.core.chainstack.com/95e61622bf6a8af293978377718e3b77/wallet/withdrawexpireunfreeze"
payload = {
"owner_address": "41608f8da72479edc7dd921e4c30bb7e7cddbe722e",
"visible": False
}
headers = {"Content-Type": "application/json"}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'Content-Type': 'application/json'},
body: JSON.stringify({owner_address: '41608f8da72479edc7dd921e4c30bb7e7cddbe722e', visible: false})
};
fetch('https://tron-mainnet.core.chainstack.com/95e61622bf6a8af293978377718e3b77/wallet/withdrawexpireunfreeze', 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://tron-mainnet.core.chainstack.com/95e61622bf6a8af293978377718e3b77/wallet/withdrawexpireunfreeze",
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([
'owner_address' => '41608f8da72479edc7dd921e4c30bb7e7cddbe722e',
'visible' => false
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json"
],
]);
$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://tron-mainnet.core.chainstack.com/95e61622bf6a8af293978377718e3b77/wallet/withdrawexpireunfreeze"
payload := strings.NewReader("{\n \"owner_address\": \"41608f8da72479edc7dd921e4c30bb7e7cddbe722e\",\n \"visible\": false\n}")
req, _ := http.NewRequest("POST", url, payload)
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://tron-mainnet.core.chainstack.com/95e61622bf6a8af293978377718e3b77/wallet/withdrawexpireunfreeze")
.header("Content-Type", "application/json")
.body("{\n \"owner_address\": \"41608f8da72479edc7dd921e4c30bb7e7cddbe722e\",\n \"visible\": false\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://tron-mainnet.core.chainstack.com/95e61622bf6a8af293978377718e3b77/wallet/withdrawexpireunfreeze")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Content-Type"] = 'application/json'
request.body = "{\n \"owner_address\": \"41608f8da72479edc7dd921e4c30bb7e7cddbe722e\",\n \"visible\": false\n}"
response = http.request(request)
puts response.read_body{
"visible": true,
"txID": "<string>",
"raw_data": {
"contract": "<array>",
"ref_block_bytes": "<string>",
"ref_block_hash": "<string>",
"expiration": 123,
"timestamp": 123
},
"raw_data_hex": "<string>"
}TRON node API
wallet/withdrawexpireunfreeze | TRON
TRON API method that withdraws TRX tokens that have completed the unstaking waiting period. wallet/withdrawexpireunfreeze on TRON via Chainstack.
POST
/
95e61622bf6a8af293978377718e3b77
/
wallet
/
withdrawexpireunfreeze
wallet/withdrawexpireunfreeze
curl --request POST \
--url https://tron-mainnet.core.chainstack.com/95e61622bf6a8af293978377718e3b77/wallet/withdrawexpireunfreeze \
--header 'Content-Type: application/json' \
--data '
{
"owner_address": "41608f8da72479edc7dd921e4c30bb7e7cddbe722e",
"visible": false
}
'import requests
url = "https://tron-mainnet.core.chainstack.com/95e61622bf6a8af293978377718e3b77/wallet/withdrawexpireunfreeze"
payload = {
"owner_address": "41608f8da72479edc7dd921e4c30bb7e7cddbe722e",
"visible": False
}
headers = {"Content-Type": "application/json"}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'Content-Type': 'application/json'},
body: JSON.stringify({owner_address: '41608f8da72479edc7dd921e4c30bb7e7cddbe722e', visible: false})
};
fetch('https://tron-mainnet.core.chainstack.com/95e61622bf6a8af293978377718e3b77/wallet/withdrawexpireunfreeze', 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://tron-mainnet.core.chainstack.com/95e61622bf6a8af293978377718e3b77/wallet/withdrawexpireunfreeze",
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([
'owner_address' => '41608f8da72479edc7dd921e4c30bb7e7cddbe722e',
'visible' => false
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json"
],
]);
$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://tron-mainnet.core.chainstack.com/95e61622bf6a8af293978377718e3b77/wallet/withdrawexpireunfreeze"
payload := strings.NewReader("{\n \"owner_address\": \"41608f8da72479edc7dd921e4c30bb7e7cddbe722e\",\n \"visible\": false\n}")
req, _ := http.NewRequest("POST", url, payload)
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://tron-mainnet.core.chainstack.com/95e61622bf6a8af293978377718e3b77/wallet/withdrawexpireunfreeze")
.header("Content-Type", "application/json")
.body("{\n \"owner_address\": \"41608f8da72479edc7dd921e4c30bb7e7cddbe722e\",\n \"visible\": false\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://tron-mainnet.core.chainstack.com/95e61622bf6a8af293978377718e3b77/wallet/withdrawexpireunfreeze")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Content-Type"] = 'application/json'
request.body = "{\n \"owner_address\": \"41608f8da72479edc7dd921e4c30bb7e7cddbe722e\",\n \"visible\": false\n}"
response = http.request(request)
puts response.read_body{
"visible": true,
"txID": "<string>",
"raw_data": {
"contract": "<array>",
"ref_block_bytes": "<string>",
"ref_block_hash": "<string>",
"expiration": 123,
"timestamp": 123
},
"raw_data_hex": "<string>"
}TRON API method that withdraws TRX tokens that have completed the unstaking waiting period. This method allows you to claim TRX that was previously unstaked using
unfreezebalancev2 and has passed the mandatory 14-day waiting period, making the tokens available for transfer.
Get your own node endpoint todayStart for free and get your app to production levels immediately. No credit card required.You can sign up with your GitHub, X, Google, or Microsoft account.
Parameters
owner_address— the address that owns the expired unstaked TRX (hex format)visible— optional boolean to specify address format (default: false for hex format)
Response
visible— boolean indicating address format usedtxID— transaction ID hashraw_data— raw transaction data objectraw_data_hex— hexadecimal representation of raw transaction data
Use case
Thewallet/withdrawexpireunfreeze method is used for:
- Claiming TRX tokens that have completed the 14-day unstaking period.
- Making previously staked TRX available for transfers and trading.
- Completing the unstaking process started with
unfreezebalancev2. - Managing liquidity by converting staked TRX back to transferable tokens.
Last modified on June 22, 2026
Was this page helpful?