Points
Create a new points ledger entry
Create a new points ledger entry for a customer. metadata.transaction_type, when given, must be one of order_redemption, order_refund, order_refund_deduction, redemption_rollback, renewal_redemption_rollback, adjustment or charge; order_credit is reserved for order earnings, and any other value is refused with 422. Whatever it names, the entry is recorded as an adjustment with no price, and the name stays in metadata.
POST
/
api
/
v202506
/
customers
/
{customer_id}
/
points_ledgers
Create a new points ledger entry
curl --request POST \
--url https://api.fluid.app/api/v202506/customers/{customer_id}/points_ledgers \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"points_ledger": {
"amount": 250,
"idempotency_key": "goodwill-credit-30517-2026-09-14",
"metadata": {
"transaction_type": "adjustment",
"reason": "Goodwill credit for delayed paper shipment"
}
}
}
'import requests
url = "https://api.fluid.app/api/v202506/customers/{customer_id}/points_ledgers"
payload = { "points_ledger": {
"amount": 250,
"idempotency_key": "goodwill-credit-30517-2026-09-14",
"metadata": {
"transaction_type": "adjustment",
"reason": "Goodwill credit for delayed paper shipment"
}
} }
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
points_ledger: {
amount: 250,
idempotency_key: 'goodwill-credit-30517-2026-09-14',
metadata: {
transaction_type: 'adjustment',
reason: 'Goodwill credit for delayed paper shipment'
}
}
})
};
fetch('https://api.fluid.app/api/v202506/customers/{customer_id}/points_ledgers', 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/v202506/customers/{customer_id}/points_ledgers",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'points_ledger' => [
'amount' => 250,
'idempotency_key' => 'goodwill-credit-30517-2026-09-14',
'metadata' => [
'transaction_type' => 'adjustment',
'reason' => 'Goodwill credit for delayed paper shipment'
]
]
]),
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/v202506/customers/{customer_id}/points_ledgers"
payload := strings.NewReader("{\n \"points_ledger\": {\n \"amount\": 250,\n \"idempotency_key\": \"goodwill-credit-30517-2026-09-14\",\n \"metadata\": {\n \"transaction_type\": \"adjustment\",\n \"reason\": \"Goodwill credit for delayed paper shipment\"\n }\n }\n}")
req, _ := http.NewRequest("POST", 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.post("https://api.fluid.app/api/v202506/customers/{customer_id}/points_ledgers")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"points_ledger\": {\n \"amount\": 250,\n \"idempotency_key\": \"goodwill-credit-30517-2026-09-14\",\n \"metadata\": {\n \"transaction_type\": \"adjustment\",\n \"reason\": \"Goodwill credit for delayed paper shipment\"\n }\n }\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.fluid.app/api/v202506/customers/{customer_id}/points_ledgers")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"points_ledger\": {\n \"amount\": 250,\n \"idempotency_key\": \"goodwill-credit-30517-2026-09-14\",\n \"metadata\": {\n \"transaction_type\": \"adjustment\",\n \"reason\": \"Goodwill credit for delayed paper shipment\"\n }\n }\n}"
response = http.request(request)
puts response.read_body{
"points_ledger": {
"id": 48213,
"amount": 250,
"metadata": {
"transaction_type": "adjustment",
"reason": "Goodwill credit for delayed paper shipment"
},
"customer_id": 30517,
"company_id": 1405,
"created_at": "2026-09-14T16:05:22Z",
"updated_at": "2026-09-14T16:05:22Z",
"total_balance": 1250
},
"meta": {
"request_id": "8c2f4e71-3b9a-4d6e-a1f5-7e0b9c3d2a48",
"timestamp": "2026-09-14T16:05:22Z"
}
}{
"message": "<string>",
"error": "<string>",
"error_message": "<string>",
"errors": "<string>",
"meta": {
"request_id": "<string>",
"timestamp": "2023-11-07T05:31:56Z",
"pagination": {
"cursor": "<string>",
"limit": 123,
"prev_cursor": "<string>",
"next_cursor": "<string>",
"total_count": 123
}
}
}{
"error_message": "<string>",
"errors": "<string>",
"meta": {
"request_id": "<string>",
"timestamp": "2023-11-07T05:31:56Z",
"pagination": {
"cursor": "<string>",
"limit": 123,
"prev_cursor": "<string>",
"next_cursor": "<string>",
"total_count": 123
}
}
}Authorizations
⌘I
Create a new points ledger entry
curl --request POST \
--url https://api.fluid.app/api/v202506/customers/{customer_id}/points_ledgers \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"points_ledger": {
"amount": 250,
"idempotency_key": "goodwill-credit-30517-2026-09-14",
"metadata": {
"transaction_type": "adjustment",
"reason": "Goodwill credit for delayed paper shipment"
}
}
}
'import requests
url = "https://api.fluid.app/api/v202506/customers/{customer_id}/points_ledgers"
payload = { "points_ledger": {
"amount": 250,
"idempotency_key": "goodwill-credit-30517-2026-09-14",
"metadata": {
"transaction_type": "adjustment",
"reason": "Goodwill credit for delayed paper shipment"
}
} }
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
points_ledger: {
amount: 250,
idempotency_key: 'goodwill-credit-30517-2026-09-14',
metadata: {
transaction_type: 'adjustment',
reason: 'Goodwill credit for delayed paper shipment'
}
}
})
};
fetch('https://api.fluid.app/api/v202506/customers/{customer_id}/points_ledgers', 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/v202506/customers/{customer_id}/points_ledgers",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'points_ledger' => [
'amount' => 250,
'idempotency_key' => 'goodwill-credit-30517-2026-09-14',
'metadata' => [
'transaction_type' => 'adjustment',
'reason' => 'Goodwill credit for delayed paper shipment'
]
]
]),
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/v202506/customers/{customer_id}/points_ledgers"
payload := strings.NewReader("{\n \"points_ledger\": {\n \"amount\": 250,\n \"idempotency_key\": \"goodwill-credit-30517-2026-09-14\",\n \"metadata\": {\n \"transaction_type\": \"adjustment\",\n \"reason\": \"Goodwill credit for delayed paper shipment\"\n }\n }\n}")
req, _ := http.NewRequest("POST", 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.post("https://api.fluid.app/api/v202506/customers/{customer_id}/points_ledgers")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"points_ledger\": {\n \"amount\": 250,\n \"idempotency_key\": \"goodwill-credit-30517-2026-09-14\",\n \"metadata\": {\n \"transaction_type\": \"adjustment\",\n \"reason\": \"Goodwill credit for delayed paper shipment\"\n }\n }\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.fluid.app/api/v202506/customers/{customer_id}/points_ledgers")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"points_ledger\": {\n \"amount\": 250,\n \"idempotency_key\": \"goodwill-credit-30517-2026-09-14\",\n \"metadata\": {\n \"transaction_type\": \"adjustment\",\n \"reason\": \"Goodwill credit for delayed paper shipment\"\n }\n }\n}"
response = http.request(request)
puts response.read_body{
"points_ledger": {
"id": 48213,
"amount": 250,
"metadata": {
"transaction_type": "adjustment",
"reason": "Goodwill credit for delayed paper shipment"
},
"customer_id": 30517,
"company_id": 1405,
"created_at": "2026-09-14T16:05:22Z",
"updated_at": "2026-09-14T16:05:22Z",
"total_balance": 1250
},
"meta": {
"request_id": "8c2f4e71-3b9a-4d6e-a1f5-7e0b9c3d2a48",
"timestamp": "2026-09-14T16:05:22Z"
}
}{
"message": "<string>",
"error": "<string>",
"error_message": "<string>",
"errors": "<string>",
"meta": {
"request_id": "<string>",
"timestamp": "2023-11-07T05:31:56Z",
"pagination": {
"cursor": "<string>",
"limit": 123,
"prev_cursor": "<string>",
"next_cursor": "<string>",
"total_count": 123
}
}
}{
"error_message": "<string>",
"errors": "<string>",
"meta": {
"request_id": "<string>",
"timestamp": "2023-11-07T05:31:56Z",
"pagination": {
"cursor": "<string>",
"limit": 123,
"prev_cursor": "<string>",
"next_cursor": "<string>",
"total_count": 123
}
}
}