Transactions
Settle authorized payment transaction
Settles (captures) the most recent authorized payment on an order paid with Bread or Affirm. Identify the order with order_id or order_token; amount and currency_code default to the order’s total and currency. On success the order is marked paid and the new settle payment is returned. Returns 404 when the order or an authorized payment cannot be found, and 422 when neither identifier is sent, the payment’s integration cannot be settled, or the provider rejects the settlement. Requires a company admin Bearer token with the transactions.update permission.
POST
/
api
/
v202506
/
payments
/
settle
Settle authorized payment transaction
curl --request POST \
--url https://api.fluid.app/api/v202506/payments/settle \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"order_token": "fo_19dskrgidi2agx2glqpmks",
"amount": 54.99,
"currency_code": "USD"
}
'import requests
url = "https://api.fluid.app/api/v202506/payments/settle"
payload = {
"order_token": "fo_19dskrgidi2agx2glqpmks",
"amount": 54.99,
"currency_code": "USD"
}
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({order_token: 'fo_19dskrgidi2agx2glqpmks', amount: 54.99, currency_code: 'USD'})
};
fetch('https://api.fluid.app/api/v202506/payments/settle', 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/payments/settle",
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([
'order_token' => 'fo_19dskrgidi2agx2glqpmks',
'amount' => 54.99,
'currency_code' => 'USD'
]),
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/payments/settle"
payload := strings.NewReader("{\n \"order_token\": \"fo_19dskrgidi2agx2glqpmks\",\n \"amount\": 54.99,\n \"currency_code\": \"USD\"\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/payments/settle")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"order_token\": \"fo_19dskrgidi2agx2glqpmks\",\n \"amount\": 54.99,\n \"currency_code\": \"USD\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.fluid.app/api/v202506/payments/settle")
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 \"order_token\": \"fo_19dskrgidi2agx2glqpmks\",\n \"amount\": 54.99,\n \"currency_code\": \"USD\"\n}"
response = http.request(request)
puts response.read_body{
"payment": {
"id": 5521104,
"slug": "fpi_6pc0tr4yk2mh8wz1qn5dxe",
"action": "settle",
"status": "success",
"company_id": 1405,
"company_name": "Dunder Mifflin Paper Company",
"customer_id": 48213,
"customer_name": "Holly Flax",
"cart_id": 881204,
"subscription_id": null,
"card_id": null,
"parent_id": 5520988,
"amount": "54.99",
"currency_code": "USD",
"country_code": "US",
"integration_class": "Bread",
"adapter_class": null,
"transaction_id": "9b1e4c27-3a5f-4d08-8e6b-2c7f1a9d5e34",
"refunded_amount": "0.0",
"last_refunded_at": null,
"voided_at": null,
"created_at": "2026-09-30T14:15:21.604Z",
"updated_at": "2026-09-30T14:15:22.011Z",
"response_status": null,
"response_message": null,
"decline_class": null,
"processing_fee": null,
"platform_fee": null,
"fee_status": null,
"invoice_id": null,
"cart_token": "ct_7RkPz3WfLq9TnX2bVh5cJd",
"latency": "0.84 seconds",
"order_source": "web",
"test_transaction": false,
"card_display": null,
"wallet_type": null,
"payment_account": {
"id": 318,
"uuid": "pa_4tzq8k1m6wbx0rj7c2vnd9hy5slpe3fa",
"name": "Bread",
"display_name": "Pay over time with Bread",
"reporting_name": "Dunder Mifflin Bread Pay",
"integration_class": "Bread",
"adapter_class": null
},
"am_authorization": null
},
"meta": {
"request_id": "c0a8012e-7f3b-4d6a-9e21-5b8d4f2a6c17",
"timestamp": "2026-09-30T14:15: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
}
}
}{
"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
}
}
}Authorizations
Bearer authentication header of the form Bearer <token>, where <token> is your auth token.
Body
application/json
⌘I
Settle authorized payment transaction
curl --request POST \
--url https://api.fluid.app/api/v202506/payments/settle \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"order_token": "fo_19dskrgidi2agx2glqpmks",
"amount": 54.99,
"currency_code": "USD"
}
'import requests
url = "https://api.fluid.app/api/v202506/payments/settle"
payload = {
"order_token": "fo_19dskrgidi2agx2glqpmks",
"amount": 54.99,
"currency_code": "USD"
}
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({order_token: 'fo_19dskrgidi2agx2glqpmks', amount: 54.99, currency_code: 'USD'})
};
fetch('https://api.fluid.app/api/v202506/payments/settle', 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/payments/settle",
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([
'order_token' => 'fo_19dskrgidi2agx2glqpmks',
'amount' => 54.99,
'currency_code' => 'USD'
]),
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/payments/settle"
payload := strings.NewReader("{\n \"order_token\": \"fo_19dskrgidi2agx2glqpmks\",\n \"amount\": 54.99,\n \"currency_code\": \"USD\"\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/payments/settle")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"order_token\": \"fo_19dskrgidi2agx2glqpmks\",\n \"amount\": 54.99,\n \"currency_code\": \"USD\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.fluid.app/api/v202506/payments/settle")
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 \"order_token\": \"fo_19dskrgidi2agx2glqpmks\",\n \"amount\": 54.99,\n \"currency_code\": \"USD\"\n}"
response = http.request(request)
puts response.read_body{
"payment": {
"id": 5521104,
"slug": "fpi_6pc0tr4yk2mh8wz1qn5dxe",
"action": "settle",
"status": "success",
"company_id": 1405,
"company_name": "Dunder Mifflin Paper Company",
"customer_id": 48213,
"customer_name": "Holly Flax",
"cart_id": 881204,
"subscription_id": null,
"card_id": null,
"parent_id": 5520988,
"amount": "54.99",
"currency_code": "USD",
"country_code": "US",
"integration_class": "Bread",
"adapter_class": null,
"transaction_id": "9b1e4c27-3a5f-4d08-8e6b-2c7f1a9d5e34",
"refunded_amount": "0.0",
"last_refunded_at": null,
"voided_at": null,
"created_at": "2026-09-30T14:15:21.604Z",
"updated_at": "2026-09-30T14:15:22.011Z",
"response_status": null,
"response_message": null,
"decline_class": null,
"processing_fee": null,
"platform_fee": null,
"fee_status": null,
"invoice_id": null,
"cart_token": "ct_7RkPz3WfLq9TnX2bVh5cJd",
"latency": "0.84 seconds",
"order_source": "web",
"test_transaction": false,
"card_display": null,
"wallet_type": null,
"payment_account": {
"id": 318,
"uuid": "pa_4tzq8k1m6wbx0rj7c2vnd9hy5slpe3fa",
"name": "Bread",
"display_name": "Pay over time with Bread",
"reporting_name": "Dunder Mifflin Bread Pay",
"integration_class": "Bread",
"adapter_class": null
},
"am_authorization": null
},
"meta": {
"request_id": "c0a8012e-7f3b-4d6a-9e21-5b8d4f2a6c17",
"timestamp": "2026-09-30T14:15: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
}
}
}{
"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
}
}
}