Cancel an unfinished bank setup
Cancel the specified setup owned by the authenticated company. The server uses the setup’s original Stripe mode and confirms provider cancellation before releasing it. This never removes the active billing instrument or changes collection settings. A retry for an already canceled setup succeeds.
curl --request DELETE \
--url https://api.fluid.app/api/settings/billing/instrument-setup \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"instrument_setup_id": 5822
}
'import requests
url = "https://api.fluid.app/api/settings/billing/instrument-setup"
payload = { "instrument_setup_id": 5822 }
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.delete(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'DELETE',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({instrument_setup_id: 5822})
};
fetch('https://api.fluid.app/api/settings/billing/instrument-setup', 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/settings/billing/instrument-setup",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "DELETE",
CURLOPT_POSTFIELDS => json_encode([
'instrument_setup_id' => 5822
]),
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.fluid.app/api/settings/billing/instrument-setup"
payload := strings.NewReader("{\n \"instrument_setup_id\": 5822\n}")
req, _ := http.NewRequest("DELETE", 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.delete("https://api.fluid.app/api/settings/billing/instrument-setup")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"instrument_setup_id\": 5822\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.fluid.app/api/settings/billing/instrument-setup")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Delete.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"instrument_setup_id\": 5822\n}"
response = http.request(request)
puts response.read_body{
"instrument_setup": {
"id": 5822,
"instrument_type": "us_bank_account",
"status": "canceled",
"provider": "stripe",
"billing_email": "angela.martin@dundermifflin.com",
"authorization_version": "fluid-ach-v1",
"authorization_accepted_at": "2026-09-29T21:14:07Z",
"failure_code": null,
"created_at": "2026-09-29T21:14:07Z"
},
"authorization": {
"version": "fluid-ach-v1",
"digest": "b624e6f9fe13a72526ed0cde8e2dbb492933a7bbb528ba98aa3eaef9269f0fc1"
},
"authorizations": {
"us_bank_account": {
"version": "fluid-ach-v1",
"digest": "b624e6f9fe13a72526ed0cde8e2dbb492933a7bbb528ba98aa3eaef9269f0fc1"
},
"card": {
"version": "fluid-card-v1",
"digest": "28454951345cf4fe2b43b180fa751686d63bc996cf02b96542ee917267e43857"
}
},
"allowed_instrument_types": [
"us_bank_account",
"card"
],
"publishable_key": "pk_live_51Nf3kQHx8Zr2VbTmY4cPq7WdLs0aE6uJ9gKtR1oBnXhCzMvDw",
"authorized_bank_account_ids": [
3187
],
"saved_cards": [
{
"id": 5610,
"brand": "visa",
"last4": "4242",
"exp_month": 11,
"exp_year": 2028
}
],
"status": 200,
"meta": {
"request_uuid": "7c2e9a41-3b8d-4f62-a1c5-9d0e6f2b8a37",
"timestamp": "2026-09-30T14:05:11Z"
}
}{
"message": "<string>",
"error": "<string>",
"error_message": "<string>",
"errors": "<string>",
"meta": {
"request_id": "<string>",
"timestamp": "2023-11-07T05:31:56Z"
}
}{
"message": "<string>",
"error": "<string>",
"error_message": "<string>",
"errors": "<string>",
"meta": {
"request_id": "<string>",
"timestamp": "2023-11-07T05:31:56Z"
}
}{
"message": "<string>",
"error": "<string>",
"error_message": "<string>",
"errors": "<string>",
"meta": {
"request_id": "<string>",
"timestamp": "2023-11-07T05:31:56Z"
}
}{
"message": "<string>",
"error": "<string>",
"error_message": "<string>",
"errors": "<string>",
"meta": {
"request_id": "<string>",
"timestamp": "2023-11-07T05:31:56Z"
}
}{
"message": "<string>",
"error": "<string>",
"error_message": "<string>",
"errors": "<string>",
"meta": {
"request_id": "<string>",
"timestamp": "2023-11-07T05:31:56Z"
}
}Authorizations
Bearer token authentication
Body
The unfinished setup to cancel, not the current payment instrument.
x >= 142
Response
Cancellation confirmed; current instrument is unchanged.
Show child attributes
Show child attributes
Show child attributes
Show child attributes
The approved agreement for each rail offered, by version and fingerprint. Every company is offered every rail with an approved agreement.
Show child attributes
Show child attributes
The rails this company can set up now, which is every rail with an approved agreement.
us_bank_account, card Saved company bank accounts whose earlier ACH authorization still applies. Switching debits onto one of these needs no new acceptance.
x >= 1Saved cards other than the one in use, newest first. Their earlier card authorization still applies, so switching onto one needs no new acceptance. The expiry is the one recorded at setup; the switch asks Stripe whether the card can still be charged.
Show child attributes
Show child attributes
Show child attributes
Show child attributes
curl --request DELETE \
--url https://api.fluid.app/api/settings/billing/instrument-setup \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"instrument_setup_id": 5822
}
'import requests
url = "https://api.fluid.app/api/settings/billing/instrument-setup"
payload = { "instrument_setup_id": 5822 }
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.delete(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'DELETE',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({instrument_setup_id: 5822})
};
fetch('https://api.fluid.app/api/settings/billing/instrument-setup', 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/settings/billing/instrument-setup",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "DELETE",
CURLOPT_POSTFIELDS => json_encode([
'instrument_setup_id' => 5822
]),
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.fluid.app/api/settings/billing/instrument-setup"
payload := strings.NewReader("{\n \"instrument_setup_id\": 5822\n}")
req, _ := http.NewRequest("DELETE", 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.delete("https://api.fluid.app/api/settings/billing/instrument-setup")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"instrument_setup_id\": 5822\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.fluid.app/api/settings/billing/instrument-setup")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Delete.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"instrument_setup_id\": 5822\n}"
response = http.request(request)
puts response.read_body{
"instrument_setup": {
"id": 5822,
"instrument_type": "us_bank_account",
"status": "canceled",
"provider": "stripe",
"billing_email": "angela.martin@dundermifflin.com",
"authorization_version": "fluid-ach-v1",
"authorization_accepted_at": "2026-09-29T21:14:07Z",
"failure_code": null,
"created_at": "2026-09-29T21:14:07Z"
},
"authorization": {
"version": "fluid-ach-v1",
"digest": "b624e6f9fe13a72526ed0cde8e2dbb492933a7bbb528ba98aa3eaef9269f0fc1"
},
"authorizations": {
"us_bank_account": {
"version": "fluid-ach-v1",
"digest": "b624e6f9fe13a72526ed0cde8e2dbb492933a7bbb528ba98aa3eaef9269f0fc1"
},
"card": {
"version": "fluid-card-v1",
"digest": "28454951345cf4fe2b43b180fa751686d63bc996cf02b96542ee917267e43857"
}
},
"allowed_instrument_types": [
"us_bank_account",
"card"
],
"publishable_key": "pk_live_51Nf3kQHx8Zr2VbTmY4cPq7WdLs0aE6uJ9gKtR1oBnXhCzMvDw",
"authorized_bank_account_ids": [
3187
],
"saved_cards": [
{
"id": 5610,
"brand": "visa",
"last4": "4242",
"exp_month": 11,
"exp_year": 2028
}
],
"status": 200,
"meta": {
"request_uuid": "7c2e9a41-3b8d-4f62-a1c5-9d0e6f2b8a37",
"timestamp": "2026-09-30T14:05:11Z"
}
}{
"message": "<string>",
"error": "<string>",
"error_message": "<string>",
"errors": "<string>",
"meta": {
"request_id": "<string>",
"timestamp": "2023-11-07T05:31:56Z"
}
}{
"message": "<string>",
"error": "<string>",
"error_message": "<string>",
"errors": "<string>",
"meta": {
"request_id": "<string>",
"timestamp": "2023-11-07T05:31:56Z"
}
}{
"message": "<string>",
"error": "<string>",
"error_message": "<string>",
"errors": "<string>",
"meta": {
"request_id": "<string>",
"timestamp": "2023-11-07T05:31:56Z"
}
}{
"message": "<string>",
"error": "<string>",
"error_message": "<string>",
"errors": "<string>",
"meta": {
"request_id": "<string>",
"timestamp": "2023-11-07T05:31:56Z"
}
}{
"message": "<string>",
"error": "<string>",
"error_message": "<string>",
"errors": "<string>",
"meta": {
"request_id": "<string>",
"timestamp": "2023-11-07T05:31:56Z"
}
}