A reserve keeps part of a store's sales back for a time to cover refunds and disputes. Reserve plans, holds and releases are read-only views of the reserves on the store's account, the same routes, lists and fields for every store. A hold is released on its release date, or earlier when Fluveo's operators release it; a hold made on its own, with no sale, stays until Fluveo releases it. A change can also come as a reserve.* event (see Events). The balance's risk_reserved shows what the reserve holds. A store whose reserve follows no plan has an empty plans list.
Send every request to https://api.fluveo.com/v1 with your secret key as a Bearer token. This page lists only what Fluveo serves; the OpenAPI file holds the same operations.
Lists the amounts held back under the store's reserve plans, newest first. Filters: reserve_plan, is_releasable, currency, source_charge, reserve_release#
GET/v1/reserve/holdsrak_reserve_read
A Fluveo extension, listed under Fluveo extensions: not part of API version 2026-05-27.dahlia. Its objects are the reserve objects of the store's account.
Only holds in this currency.
Cursor: the id of the first object of the current page, to get the previous page. Do not send it with starting_after.
true for holds that may be released now, false for the others.
How many objects to return, from 1 to 100. Default 10.
Only the holds of this reserve plan.
Only the holds this reserve release released money from.
Only the holds taken from this charge (ch_...).
Cursor: the id of the last object of the previous page, to get the next page. Do not send it with ending_before.
Optional. The only version Fluveo serves is 2026-05-27.dahlia; any other value is refused with a 400. Every answer names that version in its own Fluveo-Version header, except the refusals Fluveo gives before it reads the request (no key, an unknown key, an unknown URL, a body that is not a form) and a file's bytes, which name no version and no Request-Id.
One of:
2026-05-27.dahlia.
curl https://api.fluveo.com/v1/reserve/holds \
-H "Authorization: Bearer sk_test_..."const response = await fetch("https://api.fluveo.com/v1/reserve/holds", {
method: "GET",
headers: {
"Authorization": "Bearer sk_test_...",
},
});
console.log(await response.json());import requests
response = requests.get(
"https://api.fluveo.com/v1/reserve/holds",
headers={"Authorization": "Bearer sk_test_..."},
)
print(response.json())<?php
$ch = curl_init("https://api.fluveo.com/v1/reserve/holds");
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer sk_test_...",
],
]);
echo curl_exec($ch);Lists the reserve plans on the store's account. Filter: status#
GET/v1/reserve/plansrak_reserve_read
A Fluveo extension, listed under Fluveo extensions: not part of API version 2026-05-27.dahlia. Its objects are the reserve objects of the store's account.
Cursor: the id of the first object of the current page, to get the previous page. Do not send it with starting_after.
How many objects to return, from 1 to 100. Default 10.
Cursor: the id of the last object of the previous page, to get the next page. Do not send it with ending_before.
Filter by status.
Optional. The only version Fluveo serves is 2026-05-27.dahlia; any other value is refused with a 400. Every answer names that version in its own Fluveo-Version header, except the refusals Fluveo gives before it reads the request (no key, an unknown key, an unknown URL, a body that is not a form) and a file's bytes, which name no version and no Request-Id.
One of:
2026-05-27.dahlia.
curl https://api.fluveo.com/v1/reserve/plans \
-H "Authorization: Bearer sk_test_..."const response = await fetch("https://api.fluveo.com/v1/reserve/plans", {
method: "GET",
headers: {
"Authorization": "Bearer sk_test_...",
},
});
console.log(await response.json());import requests
response = requests.get(
"https://api.fluveo.com/v1/reserve/plans",
headers={"Authorization": "Bearer sk_test_..."},
)
print(response.json())<?php
$ch = curl_init("https://api.fluveo.com/v1/reserve/plans");
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer sk_test_...",
],
]);
echo curl_exec($ch);Lists the releases of the store's reserve holds, newest first. Filters: reserve_hold, reserve_plan, currency#
GET/v1/reserve/releasesrak_reserve_read
A Fluveo extension, listed under Fluveo extensions: not part of API version 2026-05-27.dahlia. Its objects are the reserve objects of the store's account.
Only releases in this currency.
Cursor: the id of the first object of the current page, to get the previous page. Do not send it with starting_after.
How many objects to return, from 1 to 100. Default 10.
Only the releases of this reserve hold.
Only the releases of this reserve plan's holds.
Cursor: the id of the last object of the previous page, to get the next page. Do not send it with ending_before.
Optional. The only version Fluveo serves is 2026-05-27.dahlia; any other value is refused with a 400. Every answer names that version in its own Fluveo-Version header, except the refusals Fluveo gives before it reads the request (no key, an unknown key, an unknown URL, a body that is not a form) and a file's bytes, which name no version and no Request-Id.
One of:
2026-05-27.dahlia.
curl https://api.fluveo.com/v1/reserve/releases \
-H "Authorization: Bearer sk_test_..."const response = await fetch("https://api.fluveo.com/v1/reserve/releases", {
method: "GET",
headers: {
"Authorization": "Bearer sk_test_...",
},
});
console.log(await response.json());import requests
response = requests.get(
"https://api.fluveo.com/v1/reserve/releases",
headers={"Authorization": "Bearer sk_test_..."},
)
print(response.json())<?php
$ch = curl_init("https://api.fluveo.com/v1/reserve/releases");
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer sk_test_...",
],
]);
echo curl_exec($ch);Retrieves one reserve hold. Expand: reserve_plan, source_charge#
GET/v1/reserve/holds/{id}rak_reserve_read
A Fluveo extension, listed under Fluveo extensions: not part of API version 2026-05-27.dahlia. It is the retrieve half of the list and shows the object exactly as its list row.
The reserve hold's id.
Optional. The only version Fluveo serves is 2026-05-27.dahlia; any other value is refused with a 400. Every answer names that version in its own Fluveo-Version header, except the refusals Fluveo gives before it reads the request (no key, an unknown key, an unknown URL, a body that is not a form) and a file's bytes, which name no version and no Request-Id.
One of:
2026-05-27.dahlia.
curl https://api.fluveo.com/v1/reserve/holds/reshold_123 \
-H "Authorization: Bearer sk_test_..."const response = await fetch("https://api.fluveo.com/v1/reserve/holds/reshold_123", {
method: "GET",
headers: {
"Authorization": "Bearer sk_test_...",
},
});
console.log(await response.json());import requests
response = requests.get(
"https://api.fluveo.com/v1/reserve/holds/reshold_123",
headers={"Authorization": "Bearer sk_test_..."},
)
print(response.json())<?php
$ch = curl_init("https://api.fluveo.com/v1/reserve/holds/reshold_123");
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer sk_test_...",
],
]);
echo curl_exec($ch);Retrieves one reserve plan of the store's account#
GET/v1/reserve/plans/{id}rak_reserve_read
A Fluveo extension, listed under Fluveo extensions: not part of API version 2026-05-27.dahlia. It is the retrieve half of the list and shows the object exactly as its list row.
The reserve plan's id.
Optional. The only version Fluveo serves is 2026-05-27.dahlia; any other value is refused with a 400. Every answer names that version in its own Fluveo-Version header, except the refusals Fluveo gives before it reads the request (no key, an unknown key, an unknown URL, a body that is not a form) and a file's bytes, which name no version and no Request-Id.
One of:
2026-05-27.dahlia.
curl https://api.fluveo.com/v1/reserve/plans/resplan_123 \
-H "Authorization: Bearer sk_test_..."const response = await fetch("https://api.fluveo.com/v1/reserve/plans/resplan_123", {
method: "GET",
headers: {
"Authorization": "Bearer sk_test_...",
},
});
console.log(await response.json());import requests
response = requests.get(
"https://api.fluveo.com/v1/reserve/plans/resplan_123",
headers={"Authorization": "Bearer sk_test_..."},
)
print(response.json())<?php
$ch = curl_init("https://api.fluveo.com/v1/reserve/plans/resplan_123");
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer sk_test_...",
],
]);
echo curl_exec($ch);Retrieves one reserve release. Expand: reserve_plan, reserve_hold#
GET/v1/reserve/releases/{id}rak_reserve_read
A Fluveo extension, listed under Fluveo extensions: not part of API version 2026-05-27.dahlia. It is the retrieve half of the list and shows the object exactly as its list row.
The reserve release's id.
Optional. The only version Fluveo serves is 2026-05-27.dahlia; any other value is refused with a 400. Every answer names that version in its own Fluveo-Version header, except the refusals Fluveo gives before it reads the request (no key, an unknown key, an unknown URL, a body that is not a form) and a file's bytes, which name no version and no Request-Id.
One of:
2026-05-27.dahlia.
curl https://api.fluveo.com/v1/reserve/releases/resrel_123 \
-H "Authorization: Bearer sk_test_..."const response = await fetch("https://api.fluveo.com/v1/reserve/releases/resrel_123", {
method: "GET",
headers: {
"Authorization": "Bearer sk_test_...",
},
});
console.log(await response.json());import requests
response = requests.get(
"https://api.fluveo.com/v1/reserve/releases/resrel_123",
headers={"Authorization": "Bearer sk_test_..."},
)
print(response.json())<?php
$ch = curl_init("https://api.fluveo.com/v1/reserve/releases/resrel_123");
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer sk_test_...",
],
]);
echo curl_exec($ch);