curl --request GET \
--url https://go.aiinsurance.io/api/v1/companies/{companyId}/financials/invoices \
--header 'Authorization: <api-key>'import requests
url = "https://go.aiinsurance.io/api/v1/companies/{companyId}/financials/invoices"
headers = {"Authorization": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: '<api-key>'}};
fetch('https://go.aiinsurance.io/api/v1/companies/{companyId}/financials/invoices', 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://go.aiinsurance.io/api/v1/companies/{companyId}/financials/invoices",
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: <api-key>"
],
]);
$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://go.aiinsurance.io/api/v1/companies/{companyId}/financials/invoices"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://go.aiinsurance.io/api/v1/companies/{companyId}/financials/invoices")
.header("Authorization", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://go.aiinsurance.io/api/v1/companies/{companyId}/financials/invoices")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"invoices": [
{
"id": "550e8400-e29b-41d4-a716-446655440700",
"transactionId": "INV-389538-455",
"invoiceNumber": "SL-2026-0412",
"categoryId": "550e8400-e29b-41d4-a716-446655440100",
"status": "partially_paid",
"linkedEvent": {
"id": "550e8400-e29b-41d4-a716-446655440200",
"displayName": "Claim #1042"
},
"linkedPolicy": null,
"linkedPayee": {
"id": "550e8400-e29b-41d4-a716-446655440210",
"entityType": "Organization",
"displayName": "Smith & Loeb LLP"
},
"incurredDate": "2026-06-01",
"dueDate": "2026-07-15",
"memo": "Legal defense",
"fieldData": null,
"lineItems": [
{
"lineItemId": "550e8400-e29b-41d4-a716-446655440300",
"lineItemTypeId": "550e8400-e29b-41d4-a716-446655440110",
"memo": null,
"amountCents": 10000
}
],
"totalAmountCents": 10000,
"amountPaidCents": 4000,
"balanceDueCents": 6000,
"draftAmountPaidCents": null,
"paidDate": null,
"lastPaymentDate": "2026-06-10",
"approved": true,
"approvedAt": "2026-06-10T09:00:00.000Z",
"approvalRequired": true,
"voidedAt": null,
"deletedAt": null,
"createdAt": "2026-06-01T10:30:00.000Z",
"updatedAt": "2026-06-10T09:00:00.000Z",
"headJournalId": "550e8400-e29b-41d4-a716-446655440900"
}
],
"nextCursor": "eyJ2IjoxLCJ1cGRhdGVkQXQiOiIyMDI2LTA2LTEwVDA5OjAwOjAwLjAwMFoiLCJpZCI6IjU1MGU4NDAwLWUyOWItNDFkNC1hNzE2LTQ0NjY1NTQ0MDcwMCJ9"
}List Invoices
Lists invoices: vendor and defense-counsel bills on claims, premium
invoices on policies, other expense or recovery transactions, and unlinked
invoices waiting to be attached. Filter by claim (linkedEvent), policy,
payee, status (such as owed, partially_paid, draft, or voided),
category, Invoice Number, Transaction ID, or incurred and due dates. Use
Get Invoice (getFinancialsInvoice) for one invoice with its payments, or
for a deleted one.
Returns the company’s invoices — global and entity-scoped lists in one
endpoint. All filters AND together; status is an OR within its column;
date bounds are inclusive; unlinked=true matches invoices with no event
AND no policy link (false applies no filter). Deleted invoices are
hidden (the detail read returns
them).
A voided invoice is listed with the balanceDueCents it had when it was
voided. To total what is still owed, leave out voided rows, or filter
status to owed and partially_paid.
Cursor-paginated: pass the previous page’s nextCursor back as cursor
until it is null. Rows are ordered by last update, newest first. Every
row carries headJournalId, so list-driven writes have their If-Match
watermark.
Required permission: invoice.view
curl --request GET \
--url https://go.aiinsurance.io/api/v1/companies/{companyId}/financials/invoices \
--header 'Authorization: <api-key>'import requests
url = "https://go.aiinsurance.io/api/v1/companies/{companyId}/financials/invoices"
headers = {"Authorization": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: '<api-key>'}};
fetch('https://go.aiinsurance.io/api/v1/companies/{companyId}/financials/invoices', 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://go.aiinsurance.io/api/v1/companies/{companyId}/financials/invoices",
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: <api-key>"
],
]);
$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://go.aiinsurance.io/api/v1/companies/{companyId}/financials/invoices"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://go.aiinsurance.io/api/v1/companies/{companyId}/financials/invoices")
.header("Authorization", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://go.aiinsurance.io/api/v1/companies/{companyId}/financials/invoices")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"invoices": [
{
"id": "550e8400-e29b-41d4-a716-446655440700",
"transactionId": "INV-389538-455",
"invoiceNumber": "SL-2026-0412",
"categoryId": "550e8400-e29b-41d4-a716-446655440100",
"status": "partially_paid",
"linkedEvent": {
"id": "550e8400-e29b-41d4-a716-446655440200",
"displayName": "Claim #1042"
},
"linkedPolicy": null,
"linkedPayee": {
"id": "550e8400-e29b-41d4-a716-446655440210",
"entityType": "Organization",
"displayName": "Smith & Loeb LLP"
},
"incurredDate": "2026-06-01",
"dueDate": "2026-07-15",
"memo": "Legal defense",
"fieldData": null,
"lineItems": [
{
"lineItemId": "550e8400-e29b-41d4-a716-446655440300",
"lineItemTypeId": "550e8400-e29b-41d4-a716-446655440110",
"memo": null,
"amountCents": 10000
}
],
"totalAmountCents": 10000,
"amountPaidCents": 4000,
"balanceDueCents": 6000,
"draftAmountPaidCents": null,
"paidDate": null,
"lastPaymentDate": "2026-06-10",
"approved": true,
"approvedAt": "2026-06-10T09:00:00.000Z",
"approvalRequired": true,
"voidedAt": null,
"deletedAt": null,
"createdAt": "2026-06-01T10:30:00.000Z",
"updatedAt": "2026-06-10T09:00:00.000Z",
"headJournalId": "550e8400-e29b-41d4-a716-446655440900"
}
],
"nextCursor": "eyJ2IjoxLCJ1cGRhdGVkQXQiOiIyMDI2LTA2LTEwVDA5OjAwOjAwLjAwMFoiLCJpZCI6IjU1MGU4NDAwLWUyOWItNDFkNC1hNzE2LTQ0NjY1NTQ0MDcwMCJ9"
}