Update Subscription
curl --request PATCH \
--url https://api-sandbox.revolv3.com/api/Subscriptions/{subscriptionId} \
--header 'Content-Type: application/json-patch+json' \
--header 'x-revolv3-token: <api-key>' \
--data '
{
"merchantSubscriptionRefId": "1234-5678-9101",
"intervalType": "Months",
"intervalCount": 1,
"subscriptionStatusType": null,
"subscriptionCancelType": "immediate",
"nextBillDate": "9/1/2026"
}
'import requests
url = "https://api-sandbox.revolv3.com/api/Subscriptions/{subscriptionId}"
payload = {
"merchantSubscriptionRefId": "1234-5678-9101",
"intervalType": "Months",
"intervalCount": 1,
"subscriptionStatusType": None,
"subscriptionCancelType": "immediate",
"nextBillDate": "9/1/2026"
}
headers = {
"x-revolv3-token": "<api-key>",
"Content-Type": "application/json-patch+json"
}
response = requests.patch(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PATCH',
headers: {'x-revolv3-token': '<api-key>', 'Content-Type': 'application/json-patch+json'},
body: JSON.stringify({
merchantSubscriptionRefId: '1234-5678-9101',
intervalType: 'Months',
intervalCount: 1,
subscriptionStatusType: null,
subscriptionCancelType: 'immediate',
nextBillDate: '9/1/2026'
})
};
fetch('https://api-sandbox.revolv3.com/api/Subscriptions/{subscriptionId}', 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://api-sandbox.revolv3.com/api/Subscriptions/{subscriptionId}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "PATCH",
CURLOPT_POSTFIELDS => json_encode([
'merchantSubscriptionRefId' => '1234-5678-9101',
'intervalType' => 'Months',
'intervalCount' => 1,
'subscriptionStatusType' => null,
'subscriptionCancelType' => 'immediate',
'nextBillDate' => '9/1/2026'
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json-patch+json",
"x-revolv3-token: <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://api-sandbox.revolv3.com/api/Subscriptions/{subscriptionId}"
payload := strings.NewReader("{\n \"merchantSubscriptionRefId\": \"1234-5678-9101\",\n \"intervalType\": \"Months\",\n \"intervalCount\": 1,\n \"subscriptionStatusType\": null,\n \"subscriptionCancelType\": \"immediate\",\n \"nextBillDate\": \"9/1/2026\"\n}")
req, _ := http.NewRequest("PATCH", url, payload)
req.Header.Add("x-revolv3-token", "<api-key>")
req.Header.Add("Content-Type", "application/json-patch+json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.patch("https://api-sandbox.revolv3.com/api/Subscriptions/{subscriptionId}")
.header("x-revolv3-token", "<api-key>")
.header("Content-Type", "application/json-patch+json")
.body("{\n \"merchantSubscriptionRefId\": \"1234-5678-9101\",\n \"intervalType\": \"Months\",\n \"intervalCount\": 1,\n \"subscriptionStatusType\": null,\n \"subscriptionCancelType\": \"immediate\",\n \"nextBillDate\": \"9/1/2026\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api-sandbox.revolv3.com/api/Subscriptions/{subscriptionId}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Patch.new(url)
request["x-revolv3-token"] = '<api-key>'
request["Content-Type"] = 'application/json-patch+json'
request.body = "{\n \"merchantSubscriptionRefId\": \"1234-5678-9101\",\n \"intervalType\": \"Months\",\n \"intervalCount\": 1,\n \"subscriptionStatusType\": null,\n \"subscriptionCancelType\": \"immediate\",\n \"nextBillDate\": \"9/1/2026\"\n}"
response = http.request(request)
puts response.read_body{
"subscriptionId": 1,
"customerId": 1,
"merchantSubscriptionRefId": "1234-5678-9101",
"networkTransactionId": null,
"billingIntervalType": "Months",
"billingIntervalCount": 1,
"subscriptionStatusType": "Current",
"subscriptionCancelType": "Immediate",
"initialBillDate": "9/1/2026",
"nextBillDate": "10/1/2026",
"taxAddress": null,
"paymentMethodIds": [
1,
2
],
"cancelledAt": null,
"billingPlans": [
{
"subscriptionBillingPlanId": 1,
"subscriptionId": 0,
"name": "Billing Plan 1",
"value": 10.99,
"startDate": "9/1/2026",
"cyclesRemaining": -1,
"cycleCount": 0,
"valueType": "Standard"
},
{
"subscriptionBillingPlanId": 2,
"subscriptionId": 0,
"name": "Billing Plan 2",
"value": 14.99,
"startDate": "10/1/2026",
"cyclesRemaining": 12,
"cycleCount": 0,
"valueType": "Standard"
}
],
"message": null,
"paymentProcessor": null,
"processorMerchantId": null,
"processorRawResponse": null,
"currency": null,
"responseMessage": null,
"responseCode": null
}{
"message": "Unable to perform the request action with provided data."
}{
"message": "Attempted to perform an unauthorized operation."
}{
"message": "Unable to find an entity with the provided data."
}Subscriptions
Update Subscription
Updates the configuration of an existing active subscription. You can change properties such as the MerchantSubscriptionRefId, billing frequency, SubscriptionStatusType, SubscriptionCancelType, or next billing date without needing to cancel or recreate the subscription.
This endpoint is typically used when a customer upgrades or downgrades their plan, pauses billing, reschedules the next charge, or adjusts internal tracking fields.
Only the fields included in the request will be updated — all others remain unchanged. Some updates may take effect immediately, while others (like plan changes) may apply from the next billing cycle, depending on configuration.
PATCH
/
api
/
Subscriptions
/
{subscriptionId}
Update Subscription
curl --request PATCH \
--url https://api-sandbox.revolv3.com/api/Subscriptions/{subscriptionId} \
--header 'Content-Type: application/json-patch+json' \
--header 'x-revolv3-token: <api-key>' \
--data '
{
"merchantSubscriptionRefId": "1234-5678-9101",
"intervalType": "Months",
"intervalCount": 1,
"subscriptionStatusType": null,
"subscriptionCancelType": "immediate",
"nextBillDate": "9/1/2026"
}
'import requests
url = "https://api-sandbox.revolv3.com/api/Subscriptions/{subscriptionId}"
payload = {
"merchantSubscriptionRefId": "1234-5678-9101",
"intervalType": "Months",
"intervalCount": 1,
"subscriptionStatusType": None,
"subscriptionCancelType": "immediate",
"nextBillDate": "9/1/2026"
}
headers = {
"x-revolv3-token": "<api-key>",
"Content-Type": "application/json-patch+json"
}
response = requests.patch(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PATCH',
headers: {'x-revolv3-token': '<api-key>', 'Content-Type': 'application/json-patch+json'},
body: JSON.stringify({
merchantSubscriptionRefId: '1234-5678-9101',
intervalType: 'Months',
intervalCount: 1,
subscriptionStatusType: null,
subscriptionCancelType: 'immediate',
nextBillDate: '9/1/2026'
})
};
fetch('https://api-sandbox.revolv3.com/api/Subscriptions/{subscriptionId}', 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://api-sandbox.revolv3.com/api/Subscriptions/{subscriptionId}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "PATCH",
CURLOPT_POSTFIELDS => json_encode([
'merchantSubscriptionRefId' => '1234-5678-9101',
'intervalType' => 'Months',
'intervalCount' => 1,
'subscriptionStatusType' => null,
'subscriptionCancelType' => 'immediate',
'nextBillDate' => '9/1/2026'
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json-patch+json",
"x-revolv3-token: <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://api-sandbox.revolv3.com/api/Subscriptions/{subscriptionId}"
payload := strings.NewReader("{\n \"merchantSubscriptionRefId\": \"1234-5678-9101\",\n \"intervalType\": \"Months\",\n \"intervalCount\": 1,\n \"subscriptionStatusType\": null,\n \"subscriptionCancelType\": \"immediate\",\n \"nextBillDate\": \"9/1/2026\"\n}")
req, _ := http.NewRequest("PATCH", url, payload)
req.Header.Add("x-revolv3-token", "<api-key>")
req.Header.Add("Content-Type", "application/json-patch+json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.patch("https://api-sandbox.revolv3.com/api/Subscriptions/{subscriptionId}")
.header("x-revolv3-token", "<api-key>")
.header("Content-Type", "application/json-patch+json")
.body("{\n \"merchantSubscriptionRefId\": \"1234-5678-9101\",\n \"intervalType\": \"Months\",\n \"intervalCount\": 1,\n \"subscriptionStatusType\": null,\n \"subscriptionCancelType\": \"immediate\",\n \"nextBillDate\": \"9/1/2026\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api-sandbox.revolv3.com/api/Subscriptions/{subscriptionId}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Patch.new(url)
request["x-revolv3-token"] = '<api-key>'
request["Content-Type"] = 'application/json-patch+json'
request.body = "{\n \"merchantSubscriptionRefId\": \"1234-5678-9101\",\n \"intervalType\": \"Months\",\n \"intervalCount\": 1,\n \"subscriptionStatusType\": null,\n \"subscriptionCancelType\": \"immediate\",\n \"nextBillDate\": \"9/1/2026\"\n}"
response = http.request(request)
puts response.read_body{
"subscriptionId": 1,
"customerId": 1,
"merchantSubscriptionRefId": "1234-5678-9101",
"networkTransactionId": null,
"billingIntervalType": "Months",
"billingIntervalCount": 1,
"subscriptionStatusType": "Current",
"subscriptionCancelType": "Immediate",
"initialBillDate": "9/1/2026",
"nextBillDate": "10/1/2026",
"taxAddress": null,
"paymentMethodIds": [
1,
2
],
"cancelledAt": null,
"billingPlans": [
{
"subscriptionBillingPlanId": 1,
"subscriptionId": 0,
"name": "Billing Plan 1",
"value": 10.99,
"startDate": "9/1/2026",
"cyclesRemaining": -1,
"cycleCount": 0,
"valueType": "Standard"
},
{
"subscriptionBillingPlanId": 2,
"subscriptionId": 0,
"name": "Billing Plan 2",
"value": 14.99,
"startDate": "10/1/2026",
"cyclesRemaining": 12,
"cycleCount": 0,
"valueType": "Standard"
}
],
"message": null,
"paymentProcessor": null,
"processorMerchantId": null,
"processorRawResponse": null,
"currency": null,
"responseMessage": null,
"responseCode": null
}{
"message": "Unable to perform the request action with provided data."
}{
"message": "Attempted to perform an unauthorized operation."
}{
"message": "Unable to find an entity with the provided data."
}Authorizations
Path Parameters
Required range:
1 <= x <= 1000000000Body
application/json-patch+jsonapplication/jsontext/jsonapplication/*+json
Response
OK
Required range:
1 <= x <= 1000000000Required range:
1 <= x <= 1000000000Maximum string length:
100Maximum string length:
100Maximum string length:
50Required range:
1 <= x <= 1000000000Maximum string length:
50Maximum string length:
50Maximum string length:
20Maximum string length:
20Show child attributes
Show child attributes
Maximum string length:
40Show child attributes
Show child attributes
Maximum string length:
500Maximum string length:
100Maximum string length:
100Maximum string length:
10000Maximum string length:
3Maximum string length:
500Maximum string length:
10
