Billing
Show the company's plan and credits
The authenticated company’s plan, its credit balance and what of it can be spent, the credits each kind of usage has drawn this month, and the price of more. Every company reads its credits; the plan and the plans on offer are null and empty when platform billing does not invoice the company. Reading changes nothing.
GET
/
api
/
settings
/
billing
/
credits
Show the company's plan and credits
curl --request GET \
--url https://api.fluid.app/api/settings/billing/credits \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.fluid.app/api/settings/billing/credits"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.fluid.app/api/settings/billing/credits', 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/credits",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
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/settings/billing/credits"
req, _ := http.NewRequest("GET", 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.get("https://api.fluid.app/api/settings/billing/credits")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.fluid.app/api/settings/billing/credits")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"credits": {
"balance_cents": 184250,
"spendable_cents": 184250,
"expired_cents": 0,
"held_cents": 0,
"pending": {
"card": {
"amount_cents": 0,
"credit_cents": 0
},
"us_bank_account": {
"amount_cents": 0,
"credit_cents": 0
}
},
"drawn_cents": 0,
"pace": null,
"expiries": [
{
"at": "2027-09-12T16:20:05Z",
"cents": 110000
}
],
"next_expiry": {
"at": "2027-09-12T16:20:05Z",
"cents": 110000
},
"low_balance_cents": 2000,
"funded_categories": [
"ai"
],
"plan": {
"key": "growth",
"name": "Growth",
"monthly_price_cents": 1500000,
"bonus_percent": 10,
"included_credits": 16500,
"billing_interval": "monthly",
"monthly_charge_cents": 1500000
},
"plans": [
{
"monthly_price_cents": 250000,
"bonus_percent": 0,
"included_credits": 2500
},
{
"monthly_price_cents": 1000000,
"bonus_percent": 10,
"included_credits": 11000
},
{
"monthly_price_cents": 2500000,
"bonus_percent": 20,
"included_credits": 30000
},
{
"monthly_price_cents": 5000000,
"bonus_percent": 30,
"included_credits": 65000
}
],
"credit_bonus_mode": "always",
"usage": {
"period_start": "2026-09-01T00:00:00Z",
"orders": 70012,
"ai": 18400,
"hosting": null,
"media": null,
"studios": null
},
"orders_percent": "1.45",
"rollover_months": 3,
"annual_discount_percent": 10,
"top_up_cents": 100,
"min_purchase_cents": 10000,
"max_purchase_cents": 1000000,
"discounts": [
{
"min_cents": 10000,
"percent_off": 0
},
{
"min_cents": 50000,
"percent_off": 5
},
{
"min_cents": 100000,
"percent_off": 10
},
{
"min_cents": 250000,
"percent_off": 15
},
{
"min_cents": 500000,
"percent_off": 20
},
{
"min_cents": 1000000,
"percent_off": 30
}
],
"purchasable": true,
"purchase_terms": {
"version": "2026-09-26",
"text": "Usage credits are prepaid. One credit pays for one US dollar of Fluid usage. Credits you buy, and any bonus credits on them, expire one year after the purchase date. Credits are not refundable and cannot move between companies, except where Fluid refunds unused purchased credits to the payment method that paid for them. If a payment is refunded, returned, or disputed, the credits it paid for, and their bonus share, are taken back, even when that makes the balance negative."
}
},
"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"
}
}Authorizations
Bearer token authentication
Response
Success
The credits section of the billing page.
The company's credits: its plan, what its usage has drawn this month, and what more cost. One credit is one dollar, and every kind of usage draws on one balance. Priced but not billed or for sale yet.
Show child attributes
Show child attributes
⌘I
Show the company's plan and credits
curl --request GET \
--url https://api.fluid.app/api/settings/billing/credits \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.fluid.app/api/settings/billing/credits"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.fluid.app/api/settings/billing/credits', 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/credits",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
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/settings/billing/credits"
req, _ := http.NewRequest("GET", 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.get("https://api.fluid.app/api/settings/billing/credits")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.fluid.app/api/settings/billing/credits")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"credits": {
"balance_cents": 184250,
"spendable_cents": 184250,
"expired_cents": 0,
"held_cents": 0,
"pending": {
"card": {
"amount_cents": 0,
"credit_cents": 0
},
"us_bank_account": {
"amount_cents": 0,
"credit_cents": 0
}
},
"drawn_cents": 0,
"pace": null,
"expiries": [
{
"at": "2027-09-12T16:20:05Z",
"cents": 110000
}
],
"next_expiry": {
"at": "2027-09-12T16:20:05Z",
"cents": 110000
},
"low_balance_cents": 2000,
"funded_categories": [
"ai"
],
"plan": {
"key": "growth",
"name": "Growth",
"monthly_price_cents": 1500000,
"bonus_percent": 10,
"included_credits": 16500,
"billing_interval": "monthly",
"monthly_charge_cents": 1500000
},
"plans": [
{
"monthly_price_cents": 250000,
"bonus_percent": 0,
"included_credits": 2500
},
{
"monthly_price_cents": 1000000,
"bonus_percent": 10,
"included_credits": 11000
},
{
"monthly_price_cents": 2500000,
"bonus_percent": 20,
"included_credits": 30000
},
{
"monthly_price_cents": 5000000,
"bonus_percent": 30,
"included_credits": 65000
}
],
"credit_bonus_mode": "always",
"usage": {
"period_start": "2026-09-01T00:00:00Z",
"orders": 70012,
"ai": 18400,
"hosting": null,
"media": null,
"studios": null
},
"orders_percent": "1.45",
"rollover_months": 3,
"annual_discount_percent": 10,
"top_up_cents": 100,
"min_purchase_cents": 10000,
"max_purchase_cents": 1000000,
"discounts": [
{
"min_cents": 10000,
"percent_off": 0
},
{
"min_cents": 50000,
"percent_off": 5
},
{
"min_cents": 100000,
"percent_off": 10
},
{
"min_cents": 250000,
"percent_off": 15
},
{
"min_cents": 500000,
"percent_off": 20
},
{
"min_cents": 1000000,
"percent_off": 30
}
],
"purchasable": true,
"purchase_terms": {
"version": "2026-09-26",
"text": "Usage credits are prepaid. One credit pays for one US dollar of Fluid usage. Credits you buy, and any bonus credits on them, expire one year after the purchase date. Credits are not refundable and cannot move between companies, except where Fluid refunds unused purchased credits to the payment method that paid for them. If a payment is refunded, returned, or disputed, the credits it paid for, and their bonus share, are taken back, even when that makes the balance negative."
}
},
"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"
}
}