curl --request PATCH \
--url https://api.sandbox.cheqpay.mx/pos/v1/plans/{id} \
--header 'Content-Type: application/json' \
--header 'x-api-key: <api-key>' \
--header 'x-merchant-id: <api-key>' \
--data '
{
"name": "Updated Monthly Premium Plan",
"description": "Updated description",
"trialDays": 7,
"active": true,
"metadata": {}
}
'import requests
url = "https://api.sandbox.cheqpay.mx/pos/v1/plans/{id}"
payload = {
"name": "Updated Monthly Premium Plan",
"description": "Updated description",
"trialDays": 7,
"active": True,
"metadata": {}
}
headers = {
"x-api-key": "<api-key>",
"x-merchant-id": "<api-key>",
"Content-Type": "application/json"
}
response = requests.patch(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PATCH',
headers: {
'x-api-key': '<api-key>',
'x-merchant-id': '<api-key>',
'Content-Type': 'application/json'
},
body: JSON.stringify({
name: 'Updated Monthly Premium Plan',
description: 'Updated description',
trialDays: 7,
active: true,
metadata: {}
})
};
fetch('https://api.sandbox.cheqpay.mx/pos/v1/plans/{id}', 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.cheqpay.mx/pos/v1/plans/{id}",
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([
'name' => 'Updated Monthly Premium Plan',
'description' => 'Updated description',
'trialDays' => 7,
'active' => true,
'metadata' => [
]
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"x-api-key: <api-key>",
"x-merchant-id: <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.cheqpay.mx/pos/v1/plans/{id}"
payload := strings.NewReader("{\n \"name\": \"Updated Monthly Premium Plan\",\n \"description\": \"Updated description\",\n \"trialDays\": 7,\n \"active\": true,\n \"metadata\": {}\n}")
req, _ := http.NewRequest("PATCH", url, payload)
req.Header.Add("x-api-key", "<api-key>")
req.Header.Add("x-merchant-id", "<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.patch("https://api.sandbox.cheqpay.mx/pos/v1/plans/{id}")
.header("x-api-key", "<api-key>")
.header("x-merchant-id", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"name\": \"Updated Monthly Premium Plan\",\n \"description\": \"Updated description\",\n \"trialDays\": 7,\n \"active\": true,\n \"metadata\": {}\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.sandbox.cheqpay.mx/pos/v1/plans/{id}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Patch.new(url)
request["x-api-key"] = '<api-key>'
request["x-merchant-id"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"name\": \"Updated Monthly Premium Plan\",\n \"description\": \"Updated description\",\n \"trialDays\": 7,\n \"active\": true,\n \"metadata\": {}\n}"
response = http.request(request)
puts response.read_body{
"id": "123e4567-e89b-12d3-a456-426614174000",
"merchantId": "merchant_123",
"name": "Monthly Premium Plan",
"amount": "9900",
"currency": "MXN",
"interval": "MONTH",
"intervalCount": 1,
"active": true,
"createdAt": "2025-01-15T10:00:00.000Z",
"updatedAt": "2025-01-15T10:00:00.000Z",
"externalId": "PLAN-MONTHLY-001",
"description": "Premium subscription with all features included",
"trialDays": 14,
"metadata": {}
}{
"message": "Validation failed",
"errors": [
{
"field": "name",
"message": "Required"
}
]
}{
"message": "Invalid api key"
}{
"message": "Merchant not found"
}{
"message": "Error message"
}Update a subscription plan
Updates an existing subscription plan. Only name, description, trial days, active status, and metadata can be updated. Amount and interval are immutable.
curl --request PATCH \
--url https://api.sandbox.cheqpay.mx/pos/v1/plans/{id} \
--header 'Content-Type: application/json' \
--header 'x-api-key: <api-key>' \
--header 'x-merchant-id: <api-key>' \
--data '
{
"name": "Updated Monthly Premium Plan",
"description": "Updated description",
"trialDays": 7,
"active": true,
"metadata": {}
}
'import requests
url = "https://api.sandbox.cheqpay.mx/pos/v1/plans/{id}"
payload = {
"name": "Updated Monthly Premium Plan",
"description": "Updated description",
"trialDays": 7,
"active": True,
"metadata": {}
}
headers = {
"x-api-key": "<api-key>",
"x-merchant-id": "<api-key>",
"Content-Type": "application/json"
}
response = requests.patch(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PATCH',
headers: {
'x-api-key': '<api-key>',
'x-merchant-id': '<api-key>',
'Content-Type': 'application/json'
},
body: JSON.stringify({
name: 'Updated Monthly Premium Plan',
description: 'Updated description',
trialDays: 7,
active: true,
metadata: {}
})
};
fetch('https://api.sandbox.cheqpay.mx/pos/v1/plans/{id}', 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.cheqpay.mx/pos/v1/plans/{id}",
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([
'name' => 'Updated Monthly Premium Plan',
'description' => 'Updated description',
'trialDays' => 7,
'active' => true,
'metadata' => [
]
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"x-api-key: <api-key>",
"x-merchant-id: <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.cheqpay.mx/pos/v1/plans/{id}"
payload := strings.NewReader("{\n \"name\": \"Updated Monthly Premium Plan\",\n \"description\": \"Updated description\",\n \"trialDays\": 7,\n \"active\": true,\n \"metadata\": {}\n}")
req, _ := http.NewRequest("PATCH", url, payload)
req.Header.Add("x-api-key", "<api-key>")
req.Header.Add("x-merchant-id", "<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.patch("https://api.sandbox.cheqpay.mx/pos/v1/plans/{id}")
.header("x-api-key", "<api-key>")
.header("x-merchant-id", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"name\": \"Updated Monthly Premium Plan\",\n \"description\": \"Updated description\",\n \"trialDays\": 7,\n \"active\": true,\n \"metadata\": {}\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.sandbox.cheqpay.mx/pos/v1/plans/{id}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Patch.new(url)
request["x-api-key"] = '<api-key>'
request["x-merchant-id"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"name\": \"Updated Monthly Premium Plan\",\n \"description\": \"Updated description\",\n \"trialDays\": 7,\n \"active\": true,\n \"metadata\": {}\n}"
response = http.request(request)
puts response.read_body{
"id": "123e4567-e89b-12d3-a456-426614174000",
"merchantId": "merchant_123",
"name": "Monthly Premium Plan",
"amount": "9900",
"currency": "MXN",
"interval": "MONTH",
"intervalCount": 1,
"active": true,
"createdAt": "2025-01-15T10:00:00.000Z",
"updatedAt": "2025-01-15T10:00:00.000Z",
"externalId": "PLAN-MONTHLY-001",
"description": "Premium subscription with all features included",
"trialDays": 14,
"metadata": {}
}{
"message": "Validation failed",
"errors": [
{
"field": "name",
"message": "Required"
}
]
}{
"message": "Invalid api key"
}{
"message": "Merchant not found"
}{
"message": "Error message"
}Authorizations
API key for authentication (required)
Merchant ID for identifying the merchant (required)
Path Parameters
Subscription plan unique identifier
Body
At least one field must be provided for update
Plan name
1 - 255"Updated Monthly Premium Plan"
Plan description
1000"Updated description"
Number of trial days
1 <= x <= 3657
Whether the plan is active
true
Additional metadata for the plan
Response
Subscription plan updated successfully
Unique plan identifier
"123e4567-e89b-12d3-a456-426614174000"
Merchant identifier
"merchant_123"
Plan name
"Monthly Premium Plan"
Amount in smallest currency unit (string representation of BigInt)
"9900"
Currency code
"MXN"
Billing interval
DAY, WEEK, MONTH, YEAR "MONTH"
Number of intervals between billings
1
Whether the plan is active
true
Creation timestamp
"2025-01-15T10:00:00.000Z"
Last update timestamp
"2025-01-15T10:00:00.000Z"
External plan ID from merchant system
"PLAN-MONTHLY-001"
Plan description
"Premium subscription with all features included"
Number of trial days
14
Additional metadata