curl --request POST \
--url https://console.advinservers.com/api/v1/client/licenses/{license}/withdraw-cancellation \
--header 'Authorization: Bearer <token>'import requests
url = "https://console.advinservers.com/api/v1/client/licenses/{license}/withdraw-cancellation"
headers = {"Authorization": "Bearer <token>"}
response = requests.post(url, headers=headers)
print(response.text)const options = {method: 'POST', headers: {Authorization: 'Bearer <token>'}};
fetch('https://console.advinservers.com/api/v1/client/licenses/{license}/withdraw-cancellation', 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://console.advinservers.com/api/v1/client/licenses/{license}/withdraw-cancellation",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://console.advinservers.com/api/v1/client/licenses/{license}/withdraw-cancellation"
req, _ := http.NewRequest("POST", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://console.advinservers.com/api/v1/client/licenses/{license}/withdraw-cancellation")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://console.advinservers.com/api/v1/client/licenses/{license}/withdraw-cancellation")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"uuid": "5d0c8f6e-3b1a-4e27-9f45-1c7a2b8d6e90",
"type": "whmcs",
"type_label": "WHMCS",
"plan_name": "Plus",
"name": "WHMCS Plus",
"status": "active",
"status_label": "Active",
"progress_message": null,
"needs_funds": false,
"awaits_staff": false,
"license_key": "Leased-3f9a2c71e8b4d065",
"is_suspended": false,
"download_url": "https://download.whmcs.com/",
"billing": {
"service_id": 7452,
"invoice_id": 16741,
"invoice_url": null,
"checkout_uuid": null,
"invoice_status": "Paid",
"amount": "27.60",
"currency": "USD",
"billing_cycle": "Monthly",
"payment_due_at": null,
"payment_window_minutes": 30,
"paid_at": "2026-07-21T09:12:41+00:00"
},
"cancellation_type": null,
"cancellation_requested_at": null,
"autopay": false,
"can_cancel": true,
"can_withdraw_cancellation": false,
"infrastructure_agreed_at": "2026-07-21T09:12:33+00:00",
"issued_at": "2026-07-21T09:12:58+00:00",
"created_at": "2026-07-21T09:12:33+00:00"
}{
"message": "The request could not be carried out."
}{
"message": "Unauthenticated."
}{
"message": "This API key is not allowed to do that in this team. It needs the \"snapshot.delete\" permission."
}{
"message": "Not found."
}{
"message": "The name field is required.",
"errors": {}
}{
"message": "Too Many Attempts."
}Withdraw a license cancellation
Overview
Withdraws an end-of-period cancellation and continues billing for the license. Available only when can_withdraw_cancellation is true. Immediate cancellations cannot be reversed. Automatic payments remain disabled and must be set up again.
Permissions
Requires the billing.purchase (Make purchases) permission for the selected team. Resources outside that team return 404.
curl --request POST \
--url https://console.advinservers.com/api/v1/client/licenses/{license}/withdraw-cancellation \
--header 'Authorization: Bearer <token>'import requests
url = "https://console.advinservers.com/api/v1/client/licenses/{license}/withdraw-cancellation"
headers = {"Authorization": "Bearer <token>"}
response = requests.post(url, headers=headers)
print(response.text)const options = {method: 'POST', headers: {Authorization: 'Bearer <token>'}};
fetch('https://console.advinservers.com/api/v1/client/licenses/{license}/withdraw-cancellation', 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://console.advinservers.com/api/v1/client/licenses/{license}/withdraw-cancellation",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://console.advinservers.com/api/v1/client/licenses/{license}/withdraw-cancellation"
req, _ := http.NewRequest("POST", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://console.advinservers.com/api/v1/client/licenses/{license}/withdraw-cancellation")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://console.advinservers.com/api/v1/client/licenses/{license}/withdraw-cancellation")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"uuid": "5d0c8f6e-3b1a-4e27-9f45-1c7a2b8d6e90",
"type": "whmcs",
"type_label": "WHMCS",
"plan_name": "Plus",
"name": "WHMCS Plus",
"status": "active",
"status_label": "Active",
"progress_message": null,
"needs_funds": false,
"awaits_staff": false,
"license_key": "Leased-3f9a2c71e8b4d065",
"is_suspended": false,
"download_url": "https://download.whmcs.com/",
"billing": {
"service_id": 7452,
"invoice_id": 16741,
"invoice_url": null,
"checkout_uuid": null,
"invoice_status": "Paid",
"amount": "27.60",
"currency": "USD",
"billing_cycle": "Monthly",
"payment_due_at": null,
"payment_window_minutes": 30,
"paid_at": "2026-07-21T09:12:41+00:00"
},
"cancellation_type": null,
"cancellation_requested_at": null,
"autopay": false,
"can_cancel": true,
"can_withdraw_cancellation": false,
"infrastructure_agreed_at": "2026-07-21T09:12:33+00:00",
"issued_at": "2026-07-21T09:12:58+00:00",
"created_at": "2026-07-21T09:12:33+00:00"
}{
"message": "The request could not be carried out."
}{
"message": "Unauthenticated."
}{
"message": "This API key is not allowed to do that in this team. It needs the \"snapshot.delete\" permission."
}{
"message": "Not found."
}{
"message": "The name field is required.",
"errors": {}
}{
"message": "Too Many Attempts."
}Authorizations
Your API key, sent as a bearer token. Create one in the control panel under API Keys, give it only the permissions the integration needs, and copy it when it is created. It cannot be shown again. Each key is restricted to one owned team. The key determines the team for every request.
Path Parameters
The license UUID
"5d0c8f6e-3b1a-4e27-9f45-1c7a2b8d6e90"
Response
The record, as a JSON object. There is no envelope.
A software license: which product and plan it is, its key, what it costs, and what may be done with it right now.
The uuid UUID.
"5d0c8f6e-3b1a-4e27-9f45-1c7a2b8d6e90"
The product the license is for.
whmcs, blesta "whmcs"
The product's name as the panel writes it.
"WHMCS"
The plan it was bought on, such as "Plus" or "Unlimited".
"Plus"
The product and plan together, such as "Blesta Unlimited".
"WHMCS Plus"
The value of status.
pending_payment, issuing, active, pending_cancellation, cancelled, expired, payment_review "active"
The status in the customer's words, with suspension first.
"Active"
What the license is waiting on, when it is waiting on something.
null
Whether the purchase is waiting for the account to hold enough credit.
false
Whether our team is issuing the license or looking at its purchase by hand.
false
The license key, once the license has been issued.
"Leased-3f9a2c71e8b4d065"
Whether billing has suspended the license because a renewal is unpaid.
false
Where the licensed software can be downloaded, when one is set.
"https://download.whmcs.com/"
The value of billing.
Show child attributes
Show child attributes
{
"service_id": 7452,
"invoice_id": 16741,
"invoice_url": null,
"checkout_uuid": null,
"invoice_status": "Paid",
"amount": "27.60",
"currency": "USD",
"billing_cycle": "Monthly",
"payment_due_at": null,
"payment_window_minutes": 30,
"paid_at": "2026-07-21T09:12:41+00:00"
}
The value of cancellation_type.
immediate, end_of_billing, null null
The date and time for cancellation requested at, in UTC.
null
The value of autopay.
false
Whether the customer can cancel.
true
Whether an end-of-period cancellation can still be taken back.
false
When the customer agreed to use the license on our infrastructure only. Null for a license bought before licenses were sold here.
"2026-07-21T09:12:33+00:00"
The date and time for issued at, in UTC.
"2026-07-21T09:12:58+00:00"
The date and time for created at, in UTC.
"2026-07-21T09:12:33+00:00"