curl --request PATCH \
--url https://api.withflex.com/v1/subscriptions/{id}/pause \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"resume_at": "2026-06-15T14:30:00Z",
"billing_cycle_anchor": "unchanged",
"proration_behavior": "always_invoice"
}
'import requests
url = "https://api.withflex.com/v1/subscriptions/{id}/pause"
payload = {
"resume_at": "2026-06-15T14:30:00Z",
"billing_cycle_anchor": "unchanged",
"proration_behavior": "always_invoice"
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.patch(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PATCH',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
resume_at: '2026-06-15T14:30:00Z',
billing_cycle_anchor: 'unchanged',
proration_behavior: 'always_invoice'
})
};
fetch('https://api.withflex.com/v1/subscriptions/{id}/pause', 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.withflex.com/v1/subscriptions/{id}/pause",
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([
'resume_at' => '2026-06-15T14:30:00Z',
'billing_cycle_anchor' => 'unchanged',
'proration_behavior' => 'always_invoice'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"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://api.withflex.com/v1/subscriptions/{id}/pause"
payload := strings.NewReader("{\n \"resume_at\": \"2026-06-15T14:30:00Z\",\n \"billing_cycle_anchor\": \"unchanged\",\n \"proration_behavior\": \"always_invoice\"\n}")
req, _ := http.NewRequest("PATCH", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
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.withflex.com/v1/subscriptions/{id}/pause")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"resume_at\": \"2026-06-15T14:30:00Z\",\n \"billing_cycle_anchor\": \"unchanged\",\n \"proration_behavior\": \"always_invoice\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.withflex.com/v1/subscriptions/{id}/pause")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Patch.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"resume_at\": \"2026-06-15T14:30:00Z\",\n \"billing_cycle_anchor\": \"unchanged\",\n \"proration_behavior\": \"always_invoice\"\n}"
response = http.request(request)
puts response.read_body{
"subscription": {
"subscription_id": "fsub_01J9XR8M3K7VZ8N2YB4WJ6T0RA",
"created_at": "2026-06-15T14:30:00Z",
"items": [
{
"subscription_item_id": "fsubi_01J9XR8M3K7VZ8N2YB4WJ6T0RA",
"price": "fprice_01J9XR8M3K7VZ8N2YB4WJ6T0RA",
"quantity": 2500,
"created_at": "2026-06-15T14:30:00Z",
"updated_at": "2026-06-15T14:30:00Z",
"test_mode": false
}
],
"latest_invoice": "fin_01J9XR8M3K7VZ8N2YB4WJ6T0RA",
"customer": "fcus_01J9XR8M3K7VZ8N2YB4WJ6T0RA",
"status": "incomplete",
"cancel_at_period_end": false,
"current_period_end": "string",
"current_period_start": "string",
"metadata": {
"order_id": "8842",
"channel": "shopify"
},
"test_mode": false,
"client_secret": {
"setup_secret": "string",
"payment_secret": "string"
},
"proration_behavior": "always_invoice",
"trial_start": "string",
"trial_end": "string",
"cancel_at": "2026-06-15T14:30:00Z",
"canceled_at": "2026-06-15T14:30:00Z",
"default_payment_method": "fpm_01J9XR8M3K7VZ8N2YB4WJ6T0RA",
"backup_payment_method": "fpm_01J9XR8M3K7VZ8N2YB4WJ6T0RA",
"discounts": [
{
"discount_id": "fdi_01J9XR8M3K7VZ8N2YB4WJ6T0RA",
"checkout_session": "fcs_01J9XR8M3K7VZ8N2YB4WJ6T0RA",
"customer": "fcus_01J9XR8M3K7VZ8N2YB4WJ6T0RA",
"subscription": "fsub_01J9XR8M3K7VZ8N2YB4WJ6T0RA",
"invoice": "fin_01J9XR8M3K7VZ8N2YB4WJ6T0RA",
"source": {
"coupon": "fcoup_01J9XR8M3K7VZ8N2YB4WJ6T0RA",
"type": "coupon"
},
"promo_code": "fpromo_01J9XR8M3K7VZ8N2YB4WJ6T0RA",
"test_mode": false,
"end": "string",
"start": "string"
}
],
"pause": {
"paused_at": "2026-06-15T14:30:00Z",
"resume_at": "2026-06-15T14:30:00Z",
"billing_cycle_anchor": "unchanged",
"proration_behavior": "always_invoice",
"credit": "unused_time"
}
}
}{
"code": "string",
"detail": "string"
}{
"code": "string",
"detail": "string"
}{
"code": "string",
"detail": "string"
}{
"code": "string",
"detail": "string"
}{
"detail": [
{
"loc": [
"string"
],
"msg": "string",
"type": "string"
}
]
}{
"code": "string",
"detail": "string"
}Update Pause
Changes when a paused subscription resumes on its own, and how that resume bills.
The body replaces the scheduled resume. Send resume_at with the billing fields to set or
move it; billing fields you omit take their defaults rather than keeping earlier values.
Send resume_at: null to clear it, so the subscription stays paused until you resume it.
Flex resumes on the new date, and an earlier date no longer applies. Stripe isn’t called.
An Idempotency-Key header is not honored here, as on every non-POST endpoint; sending the
same body again is safe.
Refusals carry a typed code: subscription_pause_not_enabled (422) when the account isn’t
in the rollout, not_paused (422) when the subscription isn’t paused, pause_in_progress
(409) while a pause request holds it, resume_in_progress (409) while a resume holds it or
its invoice is open, resume_at_in_past (422) for a date that has passed,
resume_at_required (422) for a billing field with a null resume_at, and
proration_behavior_requires_unchanged_anchor (422) when proration_behavior comes without
billing_cycle_anchor: "unchanged".
curl --request PATCH \
--url https://api.withflex.com/v1/subscriptions/{id}/pause \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"resume_at": "2026-06-15T14:30:00Z",
"billing_cycle_anchor": "unchanged",
"proration_behavior": "always_invoice"
}
'import requests
url = "https://api.withflex.com/v1/subscriptions/{id}/pause"
payload = {
"resume_at": "2026-06-15T14:30:00Z",
"billing_cycle_anchor": "unchanged",
"proration_behavior": "always_invoice"
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.patch(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PATCH',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
resume_at: '2026-06-15T14:30:00Z',
billing_cycle_anchor: 'unchanged',
proration_behavior: 'always_invoice'
})
};
fetch('https://api.withflex.com/v1/subscriptions/{id}/pause', 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.withflex.com/v1/subscriptions/{id}/pause",
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([
'resume_at' => '2026-06-15T14:30:00Z',
'billing_cycle_anchor' => 'unchanged',
'proration_behavior' => 'always_invoice'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"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://api.withflex.com/v1/subscriptions/{id}/pause"
payload := strings.NewReader("{\n \"resume_at\": \"2026-06-15T14:30:00Z\",\n \"billing_cycle_anchor\": \"unchanged\",\n \"proration_behavior\": \"always_invoice\"\n}")
req, _ := http.NewRequest("PATCH", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
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.withflex.com/v1/subscriptions/{id}/pause")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"resume_at\": \"2026-06-15T14:30:00Z\",\n \"billing_cycle_anchor\": \"unchanged\",\n \"proration_behavior\": \"always_invoice\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.withflex.com/v1/subscriptions/{id}/pause")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Patch.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"resume_at\": \"2026-06-15T14:30:00Z\",\n \"billing_cycle_anchor\": \"unchanged\",\n \"proration_behavior\": \"always_invoice\"\n}"
response = http.request(request)
puts response.read_body{
"subscription": {
"subscription_id": "fsub_01J9XR8M3K7VZ8N2YB4WJ6T0RA",
"created_at": "2026-06-15T14:30:00Z",
"items": [
{
"subscription_item_id": "fsubi_01J9XR8M3K7VZ8N2YB4WJ6T0RA",
"price": "fprice_01J9XR8M3K7VZ8N2YB4WJ6T0RA",
"quantity": 2500,
"created_at": "2026-06-15T14:30:00Z",
"updated_at": "2026-06-15T14:30:00Z",
"test_mode": false
}
],
"latest_invoice": "fin_01J9XR8M3K7VZ8N2YB4WJ6T0RA",
"customer": "fcus_01J9XR8M3K7VZ8N2YB4WJ6T0RA",
"status": "incomplete",
"cancel_at_period_end": false,
"current_period_end": "string",
"current_period_start": "string",
"metadata": {
"order_id": "8842",
"channel": "shopify"
},
"test_mode": false,
"client_secret": {
"setup_secret": "string",
"payment_secret": "string"
},
"proration_behavior": "always_invoice",
"trial_start": "string",
"trial_end": "string",
"cancel_at": "2026-06-15T14:30:00Z",
"canceled_at": "2026-06-15T14:30:00Z",
"default_payment_method": "fpm_01J9XR8M3K7VZ8N2YB4WJ6T0RA",
"backup_payment_method": "fpm_01J9XR8M3K7VZ8N2YB4WJ6T0RA",
"discounts": [
{
"discount_id": "fdi_01J9XR8M3K7VZ8N2YB4WJ6T0RA",
"checkout_session": "fcs_01J9XR8M3K7VZ8N2YB4WJ6T0RA",
"customer": "fcus_01J9XR8M3K7VZ8N2YB4WJ6T0RA",
"subscription": "fsub_01J9XR8M3K7VZ8N2YB4WJ6T0RA",
"invoice": "fin_01J9XR8M3K7VZ8N2YB4WJ6T0RA",
"source": {
"coupon": "fcoup_01J9XR8M3K7VZ8N2YB4WJ6T0RA",
"type": "coupon"
},
"promo_code": "fpromo_01J9XR8M3K7VZ8N2YB4WJ6T0RA",
"test_mode": false,
"end": "string",
"start": "string"
}
],
"pause": {
"paused_at": "2026-06-15T14:30:00Z",
"resume_at": "2026-06-15T14:30:00Z",
"billing_cycle_anchor": "unchanged",
"proration_behavior": "always_invoice",
"credit": "unused_time"
}
}
}{
"code": "string",
"detail": "string"
}{
"code": "string",
"detail": "string"
}{
"code": "string",
"detail": "string"
}{
"code": "string",
"detail": "string"
}{
"detail": [
{
"loc": [
"string"
],
"msg": "string",
"type": "string"
}
]
}{
"code": "string",
"detail": "string"
}Authorizations
Use a Bearer token to access this API.
Path Parameters
"fsub_01J9XR8M3K7VZ8N2YB4WJ6T0RA"
Body
A paused subscription's scheduled resume.
A paused subscription's scheduled resume.
When Flex should resume the subscription. Must be in the future. null clears the scheduled resume, so the subscription stays paused until you resume it.
"2026-06-15T14:30:00Z"
Where billing restarts when Flex resumes at resume_at. Defaults to now. Requires resume_at.
now, unchanged "unchanged"
How the partial period is billed. Only with billing_cycle_anchor: "unchanged", where it defaults to create_prorations. Requires resume_at.
create_prorations, always_invoice "always_invoice"
Response
An envelope wrapping a single subscription object.
An envelope wrapping a single subscription object.
The subscription payload carried by the request or response.
Show child attributes
Show child attributes
{ "subscription_id": "fsub_01J9XR8M3K7VZ8N2YB4WJ6T0RA", "created_at": "2026-06-15T14:30:00Z", "items": [ { "subscription_item_id": "fsubi_01J9XR8M3K7VZ8N2YB4WJ6T0RA", "price": "fprice_01J9XR8M3K7VZ8N2YB4WJ6T0RA", "quantity": 2500, "created_at": "2026-06-15T14:30:00Z", "updated_at": "2026-06-15T14:30:00Z", "test_mode": false } ], "latest_invoice": "fin_01J9XR8M3K7VZ8N2YB4WJ6T0RA", "customer": "fcus_01J9XR8M3K7VZ8N2YB4WJ6T0RA", "status": "incomplete", "cancel_at_period_end": false, "current_period_end": "string", "current_period_start": "string", "metadata": { "order_id": "8842", "channel": "shopify" }, "test_mode": false, "client_secret": { "setup_secret": "string", "payment_secret": "string" }, "proration_behavior": "always_invoice", "trial_start": "string", "trial_end": "string", "cancel_at": "2026-06-15T14:30:00Z", "canceled_at": "2026-06-15T14:30:00Z", "default_payment_method": "fpm_01J9XR8M3K7VZ8N2YB4WJ6T0RA", "backup_payment_method": "fpm_01J9XR8M3K7VZ8N2YB4WJ6T0RA", "discounts": [ { "discount_id": "fdi_01J9XR8M3K7VZ8N2YB4WJ6T0RA", "checkout_session": "fcs_01J9XR8M3K7VZ8N2YB4WJ6T0RA", "customer": "fcus_01J9XR8M3K7VZ8N2YB4WJ6T0RA", "subscription": "fsub_01J9XR8M3K7VZ8N2YB4WJ6T0RA", "invoice": "fin_01J9XR8M3K7VZ8N2YB4WJ6T0RA", "source": { "coupon": "fcoup_01J9XR8M3K7VZ8N2YB4WJ6T0RA", "type": "coupon" }, "promo_code": "fpromo_01J9XR8M3K7VZ8N2YB4WJ6T0RA", "test_mode": false, "end": "string", "start": "string" } ], "pause": { "paused_at": "2026-06-15T14:30:00Z", "resume_at": "2026-06-15T14:30:00Z", "billing_cycle_anchor": "unchanged", "proration_behavior": "always_invoice", "credit": "unused_time" } }