Billing
Set where the company's invoices are sent
Nominates the address Fluid emails this company’s invoices to. Sending null or an empty string clears the nomination and returns the company to its longest-standing administrator. Everything else on the billing page is set by Fluid and cannot be changed here.
PATCH
/
api
/
settings
/
billing
Set where the company's invoices are sent
curl --request PATCH \
--url https://api.fluid.app/api/settings/billing \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"billing_email": "angela.martin@dundermifflin.com"
}
'import requests
url = "https://api.fluid.app/api/settings/billing"
payload = { "billing_email": "angela.martin@dundermifflin.com" }
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({billing_email: 'angela.martin@dundermifflin.com'})
};
fetch('https://api.fluid.app/api/settings/billing', 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",
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([
'billing_email' => 'angela.martin@dundermifflin.com'
]),
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"
payload := strings.NewReader("{\n \"billing_email\": \"angela.martin@dundermifflin.com\"\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.fluid.app/api/settings/billing")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"billing_email\": \"angela.martin@dundermifflin.com\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.fluid.app/api/settings/billing")
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 \"billing_email\": \"angela.martin@dundermifflin.com\"\n}"
response = http.request(request)
puts response.read_body{
"billing": {
"invoicing": true,
"upcoming": {
"total_cents": 18420,
"scheduled_at": "2026-10-01T06:00:00Z",
"groups": [
{
"label": "Payments",
"amount_cents": 12870,
"entries": [
{
"product_code": "txn_fee",
"description": "Transaction fee",
"quantity": "429.0",
"unit": "transaction",
"amount_cents": 12870
}
]
},
{
"label": "Mist",
"amount_cents": 5550,
"entries": [
{
"product_code": "mist_ai",
"description": "Mist AI usage",
"quantity": "5550.0",
"unit": "unit",
"amount_cents": 5550
}
]
}
]
},
"invoices": [
{
"number": "FLB-1405-2026-0008",
"period_start": "2026-08-01T00:00:00Z",
"period_end": "2026-09-01T00:00:00Z",
"total_cents": 21630,
"owed_cents": 21630,
"collected_at_source_cents": 0,
"paid_with_credits_cents": 0,
"status": "finalized",
"paid_cents": 21630,
"balance_cents": 0,
"processing_cents": 0,
"groups": [
{
"label": "Payments",
"amount_cents": 21630,
"entries": [
{
"product_code": "txn_fee",
"description": "Transaction fee",
"quantity": "721.0",
"unit": "transaction",
"amount_cents": 21630
}
]
}
]
}
],
"billing_email": "angela.martin@dundermifflin.com",
"payment_method": {
"status": "usable",
"method": "auto_debit",
"bank": "PNC Bank",
"mask": "••••6789",
"bank_account_id": 3187,
"instrument_type": "us_bank_account",
"display": {
"bank_name": "PNC Bank",
"last4": "6789"
}
},
"transaction_rates": {
"reset_period": "monthly_calendar",
"accumulated_cents": 4829150,
"minimum_volume_cents": null,
"tiers": [
{
"threshold_cents": 0,
"rate_percent": "2.9",
"fixed_cents": 30,
"current": true
},
{
"threshold_cents": 10000000,
"rate_percent": "2.5",
"fixed_cents": 30,
"current": false
}
]
},
"pull_schedule": {
"frequency": "weekly",
"next_pull_at": "2026-10-01T06:00:00Z"
}
},
"status": 200,
"meta": {
"request_id": "f3b8c2d1-6a4e-4f7b-9c1d-2e5a8b7c4d90",
"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"
}
}Authorizations
Bearer token authentication
Body
application/json
Address to send this company's invoices to, or null to clear it.
Response
Success
The merchant billing page.
Everything the merchant billing page renders. Every company reads it. When invoicing is false, platform billing is left out: the upcoming charge is zero with no groups and no scheduled date, there are no invoices, transaction_rates is null, and the pull schedule is null.
Show child attributes
Show child attributes
⌘I
Set where the company's invoices are sent
curl --request PATCH \
--url https://api.fluid.app/api/settings/billing \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"billing_email": "angela.martin@dundermifflin.com"
}
'import requests
url = "https://api.fluid.app/api/settings/billing"
payload = { "billing_email": "angela.martin@dundermifflin.com" }
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({billing_email: 'angela.martin@dundermifflin.com'})
};
fetch('https://api.fluid.app/api/settings/billing', 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",
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([
'billing_email' => 'angela.martin@dundermifflin.com'
]),
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"
payload := strings.NewReader("{\n \"billing_email\": \"angela.martin@dundermifflin.com\"\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.fluid.app/api/settings/billing")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"billing_email\": \"angela.martin@dundermifflin.com\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.fluid.app/api/settings/billing")
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 \"billing_email\": \"angela.martin@dundermifflin.com\"\n}"
response = http.request(request)
puts response.read_body{
"billing": {
"invoicing": true,
"upcoming": {
"total_cents": 18420,
"scheduled_at": "2026-10-01T06:00:00Z",
"groups": [
{
"label": "Payments",
"amount_cents": 12870,
"entries": [
{
"product_code": "txn_fee",
"description": "Transaction fee",
"quantity": "429.0",
"unit": "transaction",
"amount_cents": 12870
}
]
},
{
"label": "Mist",
"amount_cents": 5550,
"entries": [
{
"product_code": "mist_ai",
"description": "Mist AI usage",
"quantity": "5550.0",
"unit": "unit",
"amount_cents": 5550
}
]
}
]
},
"invoices": [
{
"number": "FLB-1405-2026-0008",
"period_start": "2026-08-01T00:00:00Z",
"period_end": "2026-09-01T00:00:00Z",
"total_cents": 21630,
"owed_cents": 21630,
"collected_at_source_cents": 0,
"paid_with_credits_cents": 0,
"status": "finalized",
"paid_cents": 21630,
"balance_cents": 0,
"processing_cents": 0,
"groups": [
{
"label": "Payments",
"amount_cents": 21630,
"entries": [
{
"product_code": "txn_fee",
"description": "Transaction fee",
"quantity": "721.0",
"unit": "transaction",
"amount_cents": 21630
}
]
}
]
}
],
"billing_email": "angela.martin@dundermifflin.com",
"payment_method": {
"status": "usable",
"method": "auto_debit",
"bank": "PNC Bank",
"mask": "••••6789",
"bank_account_id": 3187,
"instrument_type": "us_bank_account",
"display": {
"bank_name": "PNC Bank",
"last4": "6789"
}
},
"transaction_rates": {
"reset_period": "monthly_calendar",
"accumulated_cents": 4829150,
"minimum_volume_cents": null,
"tiers": [
{
"threshold_cents": 0,
"rate_percent": "2.9",
"fixed_cents": 30,
"current": true
},
{
"threshold_cents": 10000000,
"rate_percent": "2.5",
"fixed_cents": 30,
"current": false
}
]
},
"pull_schedule": {
"frequency": "weekly",
"next_pull_at": "2026-10-01T06:00:00Z"
}
},
"status": 200,
"meta": {
"request_id": "f3b8c2d1-6a4e-4f7b-9c1d-2e5a8b7c4d90",
"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"
}
}