Disable a gateway for one country
Removes one country from the gateway’s coverage, leaving the rest of its
list untouched. Removing a country the gateway does not serve is a no-op
that returns 200. Every removal is recorded on the gateway’s audit
trail with the acting admin, or the merchant when an API key made the
call.
On this operation a droplet token receives 403 and a JWT needs root
admin or an explicit gateways.update or apm.update role grant; the
gateway create and update operations keep their own authorization.
Returns 404 for an unknown gateway or a country the company has not
enabled, and 422 when the country code is not a two-letter ISO 3166-1
code.
curl --request DELETE \
--url https://api.fluid.app/api/payment/v2026-04/gateways/{id}/countries/{country_code} \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.fluid.app/api/payment/v2026-04/gateways/{id}/countries/{country_code}"
headers = {"Authorization": "Bearer <token>"}
response = requests.delete(url, headers=headers)
print(response.text)const options = {method: 'DELETE', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.fluid.app/api/payment/v2026-04/gateways/{id}/countries/{country_code}', 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.fluid.app/api/payment/v2026-04/gateways/{id}/countries/{country_code}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "DELETE",
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://api.fluid.app/api/payment/v2026-04/gateways/{id}/countries/{country_code}"
req, _ := http.NewRequest("DELETE", 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.delete("https://api.fluid.app/api/payment/v2026-04/gateways/{id}/countries/{country_code}")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.fluid.app/api/payment/v2026-04/gateways/{id}/countries/{country_code}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Delete.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"data": {
"id": "stripe-usd",
"name": "Stripe (USD)",
"integration_type": "CreditCard",
"mode": "live",
"supported_sources": [
"visa",
"master",
"american_express",
"discover",
"jcb",
"diners_club",
"maestro",
"unionpay"
],
"country_codes": [
"US"
],
"settings": {},
"created_at": "2026-09-14T15:22:08Z",
"updated_at": "2026-09-21T13:10:42Z"
},
"meta": {
"request_id": "0192a3f4-5162-7e7f-9081-9c0d1e2f3a45",
"timestamp": "2026-09-21T13:10:42Z"
}
}{
"message": "<string>",
"meta": {
"request_id": "<string>",
"timestamp": "2023-11-07T05:31:56Z"
},
"status": "<string>"
}{
"message": "<string>",
"meta": {
"request_id": "<string>",
"timestamp": "2023-11-07T05:31:56Z"
}
}{
"status": "error",
"message": "<string>",
"meta": {
"request_id": "<string>",
"timestamp": "2023-11-07T05:31:56Z"
},
"errors": "<string>"
}{
"status": "error",
"message": "<string>",
"meta": {
"request_id": "<string>",
"timestamp": "2023-11-07T05:31:56Z"
},
"errors": "<string>"
}Authorizations
Merchant API key (fp_live_* for live, fp_test_* for sandbox) or an
admin-tier JWT (company admin or root admin). Non-admin JWTs are
rejected with 403; live API keys additionally require the merchant's
API access to be enabled.
A company admin, company token or partner token also needs the role
grant for the action, or gets 403: gateways.view, .create,
.update or .delete (or the matching apm.* grant) for gateway
configuration, transactions.update for purchase, authorize, verify,
capture, void and credit, and transactions.view to read transactions.
API keys, root admins and droplet tokens are not checked against roles.
Path Parameters
Gateway slug, UUID, or ID
ISO 3166-1 alpha-2 code of the country to disable.
2^[A-Za-z]{2}$curl --request DELETE \
--url https://api.fluid.app/api/payment/v2026-04/gateways/{id}/countries/{country_code} \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.fluid.app/api/payment/v2026-04/gateways/{id}/countries/{country_code}"
headers = {"Authorization": "Bearer <token>"}
response = requests.delete(url, headers=headers)
print(response.text)const options = {method: 'DELETE', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.fluid.app/api/payment/v2026-04/gateways/{id}/countries/{country_code}', 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.fluid.app/api/payment/v2026-04/gateways/{id}/countries/{country_code}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "DELETE",
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://api.fluid.app/api/payment/v2026-04/gateways/{id}/countries/{country_code}"
req, _ := http.NewRequest("DELETE", 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.delete("https://api.fluid.app/api/payment/v2026-04/gateways/{id}/countries/{country_code}")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.fluid.app/api/payment/v2026-04/gateways/{id}/countries/{country_code}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Delete.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"data": {
"id": "stripe-usd",
"name": "Stripe (USD)",
"integration_type": "CreditCard",
"mode": "live",
"supported_sources": [
"visa",
"master",
"american_express",
"discover",
"jcb",
"diners_club",
"maestro",
"unionpay"
],
"country_codes": [
"US"
],
"settings": {},
"created_at": "2026-09-14T15:22:08Z",
"updated_at": "2026-09-21T13:10:42Z"
},
"meta": {
"request_id": "0192a3f4-5162-7e7f-9081-9c0d1e2f3a45",
"timestamp": "2026-09-21T13:10:42Z"
}
}{
"message": "<string>",
"meta": {
"request_id": "<string>",
"timestamp": "2023-11-07T05:31:56Z"
},
"status": "<string>"
}{
"message": "<string>",
"meta": {
"request_id": "<string>",
"timestamp": "2023-11-07T05:31:56Z"
}
}{
"status": "error",
"message": "<string>",
"meta": {
"request_id": "<string>",
"timestamp": "2023-11-07T05:31:56Z"
},
"errors": "<string>"
}{
"status": "error",
"message": "<string>",
"meta": {
"request_id": "<string>",
"timestamp": "2023-11-07T05:31:56Z"
},
"errors": "<string>"
}