curl --request GET \
--url https://go.aiinsurance.io/api/v1/companies/{companyId}/quotes/{quoteId}/invoicing \
--header 'Authorization: <api-key>'import requests
url = "https://go.aiinsurance.io/api/v1/companies/{companyId}/quotes/{quoteId}/invoicing"
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}/quotes/{quoteId}/invoicing', 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}/quotes/{quoteId}/invoicing",
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}/quotes/{quoteId}/invoicing"
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}/quotes/{quoteId}/invoicing")
.header("Authorization", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://go.aiinsurance.io/api/v1/companies/{companyId}/quotes/{quoteId}/invoicing")
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{
"quoteId": "550e8400-e29b-41d4-a716-446655440002",
"settings": {
"schedule": {
"paymentPeriod": "upfront",
"installmentCount": 1,
"firstDueDate": "2026-01-01",
"owedLeadTimeDays": 30,
"avoidWeekendSends": false,
"downPayment": null
},
"payees": [],
"endorsementHandling": {
"mode": "void",
"status": "scheduled"
}
},
"settingsSource": "company-defaults",
"plan": null
}Get Quote Invoicing
Quote door. A quote owns its invoices: the settings and the plan saved on it are what binding the quote uses. This reads both and changes nothing.
settings are what generating
from this quote would use now. Until the quote has settings of its own they
are the company’s payment defaults, applied to this quote
(settingsSource: "company-defaults"): the first due date counts from the
transaction’s effective date. settings have the shape
Replace Quote Invoice Settings
takes, so you can change a field and send them back. payees lists only
payees chosen on the quote; Quote invoicing
explains how the others are found. plan is the plan saved on the quote,
or null.
Two cases read differently from what generating uses. A company whose
payment defaults are still set per invoice type schedules each type on its
own until the quote has settings; schedule shows the first type’s. A
setting saved in the app’s Billing step that the API cannot state, such as
a half-typed number, reads as the company default; generating refuses
until you replace the settings.
Every quote type works the same way: new business, renewal, endorsement,
cancellation and reinstatement. A bound or cancelled quote can still be
read. With policy invoicing disabled, this returns
403 finv2-policy-invoicing-disabled.
Required permission: quote.view
curl --request GET \
--url https://go.aiinsurance.io/api/v1/companies/{companyId}/quotes/{quoteId}/invoicing \
--header 'Authorization: <api-key>'import requests
url = "https://go.aiinsurance.io/api/v1/companies/{companyId}/quotes/{quoteId}/invoicing"
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}/quotes/{quoteId}/invoicing', 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}/quotes/{quoteId}/invoicing",
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}/quotes/{quoteId}/invoicing"
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}/quotes/{quoteId}/invoicing")
.header("Authorization", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://go.aiinsurance.io/api/v1/companies/{companyId}/quotes/{quoteId}/invoicing")
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{
"quoteId": "550e8400-e29b-41d4-a716-446655440002",
"settings": {
"schedule": {
"paymentPeriod": "upfront",
"installmentCount": 1,
"firstDueDate": "2026-01-01",
"owedLeadTimeDays": 30,
"avoidWeekendSends": false,
"downPayment": null
},
"payees": [],
"endorsementHandling": {
"mode": "void",
"status": "scheduled"
}
},
"settingsSource": "company-defaults",
"plan": null
}Authorizations
API key authentication. Send your raw API key as the Authorization header value with NO scheme prefix — Authorization: YOUR-API-KEY. Do NOT prefix it with Bearer or ApiKey, and do not use an X-API-Key header; those are not accepted.
Path Parameters
Company identifier
Quote identifier
Response
The quote's invoice settings and plan.
A quote's invoicing: the settings it generates invoices from and the plan saved on it. Binding the quote uses them. Every quote invoicing endpoint returns this.
The settings a quote generates its invoices from. A PUT sends every field and replaces them all. A GET returns the same shape, so you can change a field of a GET's settings and send the object back.
Show child attributes
Show child attributes
Where settings come from. quote once the quote has settings of its own: saved with Replace Quote Invoice Settings, kept by Generate Quote Invoices, or saved in the app's Billing step. A plan attached without settings counts too, because its schedule is what settings shows. company-defaults while nothing on the quote sets them: settings are the company's payment defaults, applied to this quote.
quote, company-defaults The plan saved on the quote, or null when it holds none.
- Option 1
- Option 2
Show child attributes
Show child attributes
