curl -sS -X POST "$FLUIDE_BASE_URL/api/v1/bills/string/disburse" \ -H "Authorization: Bearer $FLUIDE_ACCESS_TOKEN" \ -H "X-Fluide-Api-Key: $FLUIDE_API_KEY" \ -H "X-Fluide-Client-Id: fluide-developer" \ -H "X-Workspace-Id: $FLUIDE_WORKSPACE_ID" \ -H "X-Acting-Company-Id: $FLUIDE_COMPANY_ID"const baseUrl = process.env.FLUIDE_BASE_URL; const response = await fetch(`${baseUrl}/api/v1/bills/string/disburse`, { method: 'POST', headers: { Authorization: `Bearer ${process.env.FLUIDE_ACCESS_TOKEN}`, 'X-Fluide-Api-Key': process.env.FLUIDE_API_KEY, 'X-Fluide-Client-Id': 'fluide-developer', 'X-Workspace-Id': process.env.FLUIDE_WORKSPACE_ID, 'X-Acting-Company-Id': process.env.FLUIDE_COMPANY_ID, },
}); if (!response.ok) throw new Error(`HTTP ${response.status}: ${await response.text()}`);
console.log(await response.json());import os
import requests base_url = os.environ["FLUIDE_BASE_URL"]
headers = { "Authorization": f"Bearer {os.environ['FLUIDE_ACCESS_TOKEN']}", "X-Fluide-Api-Key": os.environ["FLUIDE_API_KEY"], "X-Fluide-Client-Id": "fluide-developer", "X-Workspace-Id": os.environ["FLUIDE_WORKSPACE_ID"], "X-Acting-Company-Id": os.environ["FLUIDE_COMPANY_ID"],
} response = requests.post( f"{base_url}/api/v1/bills/string/disburse", headers=headers, timeout=30,
)
response.raise_for_status()
print(response.json())import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse; String baseUrl = System.getenv("FLUIDE_BASE_URL");
HttpClient client = HttpClient.newHttpClient();
HttpRequest.Builder builder = HttpRequest.newBuilder() .uri(URI.create(baseUrl + "/api/v1/bills/string/disburse")) .header("Authorization", "Bearer " + System.getenv("FLUIDE_ACCESS_TOKEN")) .header("X-Fluide-Api-Key", System.getenv("FLUIDE_API_KEY")) .header("X-Fluide-Client-Id", "fluide-developer") .header("X-Workspace-Id", System.getenv("FLUIDE_WORKSPACE_ID")) .header("X-Acting-Company-Id", System.getenv("FLUIDE_COMPANY_ID")) .POST(HttpRequest.BodyPublishers.noBody()) .build();
HttpResponse<String> response = client.send(builder.build(), HttpResponse.BodyHandlers.ofString());
if (response.statusCode() >= 400) throw new RuntimeException("HTTP " + response.statusCode() + ": " + response.body());
System.out.println(response.body());<?php
$baseUrl = getenv("FLUIDE_BASE_URL");
$ch = curl_init($baseUrl . "/api/v1/bills/string/disburse");
curl_setopt_array($ch, [ CURLOPT_RETURNTRANSFER => true, CURLOPT_CUSTOMREQUEST => 'POST', CURLOPT_HTTPHEADER => [ 'Authorization: Bearer ' . getenv('FLUIDE_ACCESS_TOKEN'), 'X-Fluide-Api-Key: ' . getenv('FLUIDE_API_KEY'), 'X-Fluide-Client-Id: fluide-developer', 'X-Workspace-Id: ' . getenv('FLUIDE_WORKSPACE_ID'), 'X-Acting-Company-Id: ' . getenv('FLUIDE_COMPANY_ID'), ],
]);
$response = curl_exec($ch);
if ($response === false) throw new RuntimeException(curl_error($ch));
$status = curl_getinfo($ch, CURLINFO_HTTP_CODE);
if ($status >= 400) throw new RuntimeException("HTTP $status: $response");
echo $response;{
"organizationId": "<string>",
"companyId": "<string>",
"billNumber": "<string>",
"vendorId": "<string>",
"projectId": "<string>",
"clientId": "<string>",
"issueDate": "2023-11-07T05:31:56Z",
"dueDate": "2023-11-07T05:31:56Z",
"subtotal": 123,
"taxAmount": 123,
"total": 123,
"currency": "<string>",
"status": "DRAFT",
"settlementStatus": "UNPAID",
"amountPaid": 123,
"balanceDue": 123,
"approvedAt": "2023-11-07T05:31:56Z",
"approvedBy": "<string>",
"rejectedAt": "2023-11-07T05:31:56Z",
"rejectedBy": "<string>",
"rejectionReason": "<string>",
"postedAt": "2023-11-07T05:31:56Z",
"postedBy": "<string>",
"postedJournalEntryId": "<string>",
"scheduledPaymentDate": "2023-11-07T05:31:56Z",
"notes": "<string>",
"sourceDocumentIds": [
"<string>"
],
"approvalPercent": 123,
"approvalRequiredPercent": 123,
"lineItems": [
{
"billId": "<string>",
"bill": "<unknown>",
"lineNumber": 123,
"description": "<string>",
"quantity": 123,
"unitPrice": 123,
"discountAmount": 123,
"taxAmount": 123,
"lineTotal": 123,
"glAccountId": "<string>",
"taxCodeId": "<string>",
"id": "<string>",
"createdAt": "2023-11-07T05:31:56Z",
"updatedAt": "2023-11-07T05:31:56Z",
"deletedAt": "2023-11-07T05:31:56Z"
}
],
"allocations": [
{
"billId": "<string>",
"bill": "<unknown>",
"fluidePayTransactionId": "<string>",
"paymentSource": "FLUIDEPAY",
"externalReference": "<string>",
"evidenceDocumentIds": [
"<string>"
],
"allocatedAmount": 123,
"currency": "<string>",
"allocatedAt": "2023-11-07T05:31:56Z",
"allocatedBy": "<string>",
"memo": "<string>",
"id": "<string>",
"createdAt": "2023-11-07T05:31:56Z",
"updatedAt": "2023-11-07T05:31:56Z",
"deletedAt": "2023-11-07T05:31:56Z"
}
],
"id": "<string>",
"createdAt": "2023-11-07T05:31:56Z",
"updatedAt": "2023-11-07T05:31:56Z",
"disbursement": {
"billId": "<string>",
"bill": "<unknown>",
"status": "INITIATED",
"provider": "<string>",
"reference": "<string>",
"providerReference": "<string>",
"providerReceiptUrl": "<string>",
"attemptCount": 123,
"lastAttemptAt": "2023-11-07T05:31:56Z",
"request": {},
"response": {},
"errorMessage": "<string>",
"id": "<string>",
"createdAt": "2023-11-07T05:31:56Z",
"updatedAt": "2023-11-07T05:31:56Z",
"deletedAt": "2023-11-07T05:31:56Z"
},
"deletedAt": "2023-11-07T05:31:56Z"
}Disburse a scheduled/approved bill via FluidePay (settles the bill)
curl -sS -X POST "$FLUIDE_BASE_URL/api/v1/bills/string/disburse" \ -H "Authorization: Bearer $FLUIDE_ACCESS_TOKEN" \ -H "X-Fluide-Api-Key: $FLUIDE_API_KEY" \ -H "X-Fluide-Client-Id: fluide-developer" \ -H "X-Workspace-Id: $FLUIDE_WORKSPACE_ID" \ -H "X-Acting-Company-Id: $FLUIDE_COMPANY_ID"const baseUrl = process.env.FLUIDE_BASE_URL; const response = await fetch(`${baseUrl}/api/v1/bills/string/disburse`, { method: 'POST', headers: { Authorization: `Bearer ${process.env.FLUIDE_ACCESS_TOKEN}`, 'X-Fluide-Api-Key': process.env.FLUIDE_API_KEY, 'X-Fluide-Client-Id': 'fluide-developer', 'X-Workspace-Id': process.env.FLUIDE_WORKSPACE_ID, 'X-Acting-Company-Id': process.env.FLUIDE_COMPANY_ID, },
}); if (!response.ok) throw new Error(`HTTP ${response.status}: ${await response.text()}`);
console.log(await response.json());import os
import requests base_url = os.environ["FLUIDE_BASE_URL"]
headers = { "Authorization": f"Bearer {os.environ['FLUIDE_ACCESS_TOKEN']}", "X-Fluide-Api-Key": os.environ["FLUIDE_API_KEY"], "X-Fluide-Client-Id": "fluide-developer", "X-Workspace-Id": os.environ["FLUIDE_WORKSPACE_ID"], "X-Acting-Company-Id": os.environ["FLUIDE_COMPANY_ID"],
} response = requests.post( f"{base_url}/api/v1/bills/string/disburse", headers=headers, timeout=30,
)
response.raise_for_status()
print(response.json())import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse; String baseUrl = System.getenv("FLUIDE_BASE_URL");
HttpClient client = HttpClient.newHttpClient();
HttpRequest.Builder builder = HttpRequest.newBuilder() .uri(URI.create(baseUrl + "/api/v1/bills/string/disburse")) .header("Authorization", "Bearer " + System.getenv("FLUIDE_ACCESS_TOKEN")) .header("X-Fluide-Api-Key", System.getenv("FLUIDE_API_KEY")) .header("X-Fluide-Client-Id", "fluide-developer") .header("X-Workspace-Id", System.getenv("FLUIDE_WORKSPACE_ID")) .header("X-Acting-Company-Id", System.getenv("FLUIDE_COMPANY_ID")) .POST(HttpRequest.BodyPublishers.noBody()) .build();
HttpResponse<String> response = client.send(builder.build(), HttpResponse.BodyHandlers.ofString());
if (response.statusCode() >= 400) throw new RuntimeException("HTTP " + response.statusCode() + ": " + response.body());
System.out.println(response.body());<?php
$baseUrl = getenv("FLUIDE_BASE_URL");
$ch = curl_init($baseUrl . "/api/v1/bills/string/disburse");
curl_setopt_array($ch, [ CURLOPT_RETURNTRANSFER => true, CURLOPT_CUSTOMREQUEST => 'POST', CURLOPT_HTTPHEADER => [ 'Authorization: Bearer ' . getenv('FLUIDE_ACCESS_TOKEN'), 'X-Fluide-Api-Key: ' . getenv('FLUIDE_API_KEY'), 'X-Fluide-Client-Id: fluide-developer', 'X-Workspace-Id: ' . getenv('FLUIDE_WORKSPACE_ID'), 'X-Acting-Company-Id: ' . getenv('FLUIDE_COMPANY_ID'), ],
]);
$response = curl_exec($ch);
if ($response === false) throw new RuntimeException(curl_error($ch));
$status = curl_getinfo($ch, CURLINFO_HTTP_CODE);
if ($status >= 400) throw new RuntimeException("HTTP $status: $response");
echo $response;{
"organizationId": "<string>",
"companyId": "<string>",
"billNumber": "<string>",
"vendorId": "<string>",
"projectId": "<string>",
"clientId": "<string>",
"issueDate": "2023-11-07T05:31:56Z",
"dueDate": "2023-11-07T05:31:56Z",
"subtotal": 123,
"taxAmount": 123,
"total": 123,
"currency": "<string>",
"status": "DRAFT",
"settlementStatus": "UNPAID",
"amountPaid": 123,
"balanceDue": 123,
"approvedAt": "2023-11-07T05:31:56Z",
"approvedBy": "<string>",
"rejectedAt": "2023-11-07T05:31:56Z",
"rejectedBy": "<string>",
"rejectionReason": "<string>",
"postedAt": "2023-11-07T05:31:56Z",
"postedBy": "<string>",
"postedJournalEntryId": "<string>",
"scheduledPaymentDate": "2023-11-07T05:31:56Z",
"notes": "<string>",
"sourceDocumentIds": [
"<string>"
],
"approvalPercent": 123,
"approvalRequiredPercent": 123,
"lineItems": [
{
"billId": "<string>",
"bill": "<unknown>",
"lineNumber": 123,
"description": "<string>",
"quantity": 123,
"unitPrice": 123,
"discountAmount": 123,
"taxAmount": 123,
"lineTotal": 123,
"glAccountId": "<string>",
"taxCodeId": "<string>",
"id": "<string>",
"createdAt": "2023-11-07T05:31:56Z",
"updatedAt": "2023-11-07T05:31:56Z",
"deletedAt": "2023-11-07T05:31:56Z"
}
],
"allocations": [
{
"billId": "<string>",
"bill": "<unknown>",
"fluidePayTransactionId": "<string>",
"paymentSource": "FLUIDEPAY",
"externalReference": "<string>",
"evidenceDocumentIds": [
"<string>"
],
"allocatedAmount": 123,
"currency": "<string>",
"allocatedAt": "2023-11-07T05:31:56Z",
"allocatedBy": "<string>",
"memo": "<string>",
"id": "<string>",
"createdAt": "2023-11-07T05:31:56Z",
"updatedAt": "2023-11-07T05:31:56Z",
"deletedAt": "2023-11-07T05:31:56Z"
}
],
"id": "<string>",
"createdAt": "2023-11-07T05:31:56Z",
"updatedAt": "2023-11-07T05:31:56Z",
"disbursement": {
"billId": "<string>",
"bill": "<unknown>",
"status": "INITIATED",
"provider": "<string>",
"reference": "<string>",
"providerReference": "<string>",
"providerReceiptUrl": "<string>",
"attemptCount": 123,
"lastAttemptAt": "2023-11-07T05:31:56Z",
"request": {},
"response": {},
"errorMessage": "<string>",
"id": "<string>",
"createdAt": "2023-11-07T05:31:56Z",
"updatedAt": "2023-11-07T05:31:56Z",
"deletedAt": "2023-11-07T05:31:56Z"
},
"deletedAt": "2023-11-07T05:31:56Z"
}Authorizations
Access token JWT. Use as Authorization: Bearer . In the API playground, paste the JWT only.
Developer API key (fl_dev_...). Required on every API call with a machine access token.
First-party client audience. Must match the fluide_client_id claim on the JWT. Use fluide-developer for Connect.
Headers
Partner / ISV only: UUID of the workspace that owns the client company. Required together with X-Acting-Company-Id when scoping product APIs to a merchant. See /getting-started/multi-tenancy.
Partner / ISV only: UUID of the client company to act on. Must belong to the workspace in X-Workspace-Id.
Path Parameters
Response
Project accounting dimension (optional).
Client / sub-ledger dimension (optional).
DRAFT, RECEIVED, UNDER_REVIEW, APPROVED, REJECTED, SCHEDULED, PENDING_PAYMENT, PAID, VOID UNPAID, PARTIALLY_PAID, PAID Accounting posting moment. After posting, financial values are immutable; changes require reversals/adjustments.
Approval progress for policy-based approvals (0-100).
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes