curl --request POST \
--url https://go.aiinsurance.io/api/v1/companies/{companyId}/financials/config/import \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"documentVersion": 2,
"eventFinancials": {
"invoiceTypes": []
},
"policyFinancials": {
"invoiceTypes": [],
"lineItemTypes": [],
"classifications": []
},
"reporting": {
"exportSurfaces": [],
"invoiceTypeOverrides": []
}
}
'import requests
url = "https://go.aiinsurance.io/api/v1/companies/{companyId}/financials/config/import"
payload = {
"documentVersion": 2,
"eventFinancials": { "invoiceTypes": [] },
"policyFinancials": {
"invoiceTypes": [],
"lineItemTypes": [],
"classifications": []
},
"reporting": {
"exportSurfaces": [],
"invoiceTypeOverrides": []
}
}
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({
documentVersion: 2,
eventFinancials: {invoiceTypes: []},
policyFinancials: {invoiceTypes: [], lineItemTypes: [], classifications: []},
reporting: {exportSurfaces: [], invoiceTypeOverrides: []}
})
};
fetch('https://go.aiinsurance.io/api/v1/companies/{companyId}/financials/config/import', 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/config/import",
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([
'documentVersion' => 2,
'eventFinancials' => [
'invoiceTypes' => [
]
],
'policyFinancials' => [
'invoiceTypes' => [
],
'lineItemTypes' => [
],
'classifications' => [
]
],
'reporting' => [
'exportSurfaces' => [
],
'invoiceTypeOverrides' => [
]
]
]),
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://go.aiinsurance.io/api/v1/companies/{companyId}/financials/config/import"
payload := strings.NewReader("{\n \"documentVersion\": 2,\n \"eventFinancials\": {\n \"invoiceTypes\": []\n },\n \"policyFinancials\": {\n \"invoiceTypes\": [],\n \"lineItemTypes\": [],\n \"classifications\": []\n },\n \"reporting\": {\n \"exportSurfaces\": [],\n \"invoiceTypeOverrides\": []\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://go.aiinsurance.io/api/v1/companies/{companyId}/financials/config/import")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"documentVersion\": 2,\n \"eventFinancials\": {\n \"invoiceTypes\": []\n },\n \"policyFinancials\": {\n \"invoiceTypes\": [],\n \"lineItemTypes\": [],\n \"classifications\": []\n },\n \"reporting\": {\n \"exportSurfaces\": [],\n \"invoiceTypeOverrides\": []\n }\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://go.aiinsurance.io/api/v1/companies/{companyId}/financials/config/import")
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 \"documentVersion\": 2,\n \"eventFinancials\": {\n \"invoiceTypes\": []\n },\n \"policyFinancials\": {\n \"invoiceTypes\": [],\n \"lineItemTypes\": [],\n \"classifications\": []\n },\n \"reporting\": {\n \"exportSurfaces\": [],\n \"invoiceTypeOverrides\": []\n }\n}"
response = http.request(request)
puts response.read_body{
"dryRun": false,
"changes": {
"eventInvoiceTypesCreated": [],
"policyInvoiceTypesCreated": [],
"lineItemTypesCreated": [],
"classificationsCreated": [],
"deprecatedRowsCreated": [],
"reportingFrameConfigUpdated": false
},
"skipped": {
"existingNaturalKeys": [],
"deprecatedNaturalKeys": []
}
}Import Financials Configuration
Requires documentVersion 2; version 1 is explicitly refused. Policy line items live in policyFinancials.lineItemTypes with allowedOn associations, outside invoiceTypes. Each item has one immutable direction across its carriers. Import refuses ambiguous existing identities or direction mismatches.
Additively creates missing invoice types, line-item types, and classifications through the application settings actions. Existing natural keys are unchanged, and a key held only by a deprecated row is not resurrected. Reporting frames are replaced only when the normalized document differs.
policyFinancials.paymentDefaults supplies company-wide starting installment
count, payment period, relative first due date, weekend send handling, owed lead
days, and endorsement handling. The first due date can use today or the
transaction effective date plus a nonnegative calendar-day offset. It is created only when absent
and no pre-existing policy invoice type has explicit legacy presets. Each
policy invoice type’s optional payeeDefaults supplies a pure policy formula
and allowed party kinds. Set its expression to null to disable automatic
selection while retaining the allowed kinds. Setting payeeDefaults itself to
null clears both settings, allowing all kinds with no automatic selection. These
settings are provisioned only when unconfigured on an active type without
pre-existing explicit legacy presets. Imports preserve existing edited and
explicitly cleared defaults and do not rewrite saved payment plans.
?dryRun=true validates the document and reports proposed vocabulary,
reporting, and default provisioning changes without persisting Financials
configuration changes. The optional changes.paymentDefaultsCreated and
changes.payeeDefaultsCreated fields describe defaults provisioned during an
applied import or proposed for provisioning during a dry run. No other query
controls are accepted.
Required permission: financials.import
curl --request POST \
--url https://go.aiinsurance.io/api/v1/companies/{companyId}/financials/config/import \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"documentVersion": 2,
"eventFinancials": {
"invoiceTypes": []
},
"policyFinancials": {
"invoiceTypes": [],
"lineItemTypes": [],
"classifications": []
},
"reporting": {
"exportSurfaces": [],
"invoiceTypeOverrides": []
}
}
'import requests
url = "https://go.aiinsurance.io/api/v1/companies/{companyId}/financials/config/import"
payload = {
"documentVersion": 2,
"eventFinancials": { "invoiceTypes": [] },
"policyFinancials": {
"invoiceTypes": [],
"lineItemTypes": [],
"classifications": []
},
"reporting": {
"exportSurfaces": [],
"invoiceTypeOverrides": []
}
}
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({
documentVersion: 2,
eventFinancials: {invoiceTypes: []},
policyFinancials: {invoiceTypes: [], lineItemTypes: [], classifications: []},
reporting: {exportSurfaces: [], invoiceTypeOverrides: []}
})
};
fetch('https://go.aiinsurance.io/api/v1/companies/{companyId}/financials/config/import', 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/config/import",
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([
'documentVersion' => 2,
'eventFinancials' => [
'invoiceTypes' => [
]
],
'policyFinancials' => [
'invoiceTypes' => [
],
'lineItemTypes' => [
],
'classifications' => [
]
],
'reporting' => [
'exportSurfaces' => [
],
'invoiceTypeOverrides' => [
]
]
]),
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://go.aiinsurance.io/api/v1/companies/{companyId}/financials/config/import"
payload := strings.NewReader("{\n \"documentVersion\": 2,\n \"eventFinancials\": {\n \"invoiceTypes\": []\n },\n \"policyFinancials\": {\n \"invoiceTypes\": [],\n \"lineItemTypes\": [],\n \"classifications\": []\n },\n \"reporting\": {\n \"exportSurfaces\": [],\n \"invoiceTypeOverrides\": []\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://go.aiinsurance.io/api/v1/companies/{companyId}/financials/config/import")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"documentVersion\": 2,\n \"eventFinancials\": {\n \"invoiceTypes\": []\n },\n \"policyFinancials\": {\n \"invoiceTypes\": [],\n \"lineItemTypes\": [],\n \"classifications\": []\n },\n \"reporting\": {\n \"exportSurfaces\": [],\n \"invoiceTypeOverrides\": []\n }\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://go.aiinsurance.io/api/v1/companies/{companyId}/financials/config/import")
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 \"documentVersion\": 2,\n \"eventFinancials\": {\n \"invoiceTypes\": []\n },\n \"policyFinancials\": {\n \"invoiceTypes\": [],\n \"lineItemTypes\": [],\n \"classifications\": []\n },\n \"reporting\": {\n \"exportSurfaces\": [],\n \"invoiceTypeOverrides\": []\n }\n}"
response = http.request(request)
puts response.read_body{
"dryRun": false,
"changes": {
"eventInvoiceTypesCreated": [],
"policyInvoiceTypesCreated": [],
"lineItemTypesCreated": [],
"classificationsCreated": [],
"deprecatedRowsCreated": [],
"reportingFrameConfigUpdated": false
},
"skipped": {
"existingNaturalKeys": [],
"deprecatedNaturalKeys": []
}
}Authorizations
User-principal OAuth 2.0 Bearer authentication. Send a user-scoped Auth0 access token (audience = the app API audience) as Authorization: Bearer <jwt>. The request resolves to the user's identity and is authorized by their Role on the {companyId} in the path — the same role-based permissions the web app enforces. This is the path the MCP connector uses to act on a user's behalf; endpoints that accept it list both BearerAuth and ApiKeyAuth.
Path Parameters
Company identifier
Query Parameters
Report the validated import plan without applying it.
true 