Every API here is available over the APIs.io API and to AI agents over MCP.
{
"openapi": "3.0.1",
"info": {
"title": "Financial Integration",
"description": "\nv2 of the Common Financial Package API supporting ECI Financials.\n\n## Authentication\nPass an access token in the HTTP Authorization header of each request. For example:\n\n```Authorization: Bearer [token]```\n\nAccess tokens are obtained from the Authentication API. See the <a href='https://integrations.ecimanufacturing.com/authenticate.html'>Authentication API token endpoint</a> for more information.\n",
"contact": {
"name": "ECI Integration Team",
"url": "https://www.ecisolutions.com/support/"
},
"version": "v2"
},
"paths": {
"/api/v2/features": {
"get": {
"tags": [
"Features"
],
"summary": "Get the features of the Financial Package",
"description": "<h2>Get the features of the Financial Package</h2>",
"responses": {
"200": {
"description": "Success",
"content": {
"text/plain": {
"schema": {
"$ref": "#/components/schemas/FinancialPackageFeatures"
}
},
"application/json": {
"schema": {
"$ref": "#/components/schemas/FinancialPackageFeatures"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/FinancialPackageFeatures"
}
}
}
},
"202": {
"description": "Accepted",
"content": {
"text/plain": {
"schema": {
"$ref": "#/components/schemas/AsyncAcceptedResponse"
}
},
"application/json": {
"schema": {
"$ref": "#/components/schemas/AsyncAcceptedResponse"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/AsyncAcceptedResponse"
}
}
}
}
}
}
},
"/api/v2/general-journal-entries": {
"post": {
"tags": [
"General"
],
"summary": "Create (or update) general journal entry.",
"description": "<h2>Create (or update) general journal entry</h2>\n **TripleTex** The upsert parameter is not supported. A new general journal entry is always created\n **AfasSB** The upsert parameter is not supported. A new general journal entry is always created\n **Sage 50 UK** The upsert parameter is not supported. A new general journal entry is always created",
"parameters": [
{
"name": "upsert",
"in": "query",
"description": "When an unique **Id is provided**, the record is **looked up by Id**.<br> When the **record is found** by the Id, it is **updated**.<br> When the **record is not found** and **upsert is not set**, an **error** is returned.<br> When the **record is found** and **upsert is set**, it **continues** as described below.<br><br> When an unique **Id is not provided** and **upsert is not set**, a new record is **inserted**.<br> When an unique **Id is not provided** and **upsert is set**, a record is **looked up by natural key**.<br> When the **record is found** by natural key, it is **updated**.<br> When the **record is not found** by natural key, a new record is **inserted**.",
"schema": {
"type": "boolean"
}
}
],
"requestBody": {
"content": {
"application/json-patch+json": {
"schema": {
"allOf": [
{
"$ref": "#/components/schemas/GeneralJournalEntry"
}
],
"description": "Represents a GL Journal to be saved to or existing in the financial system.\r\n* Id: Unique id of the journal. Provide when updating the record. \r\n + ECI Financials: JournalEntry.Id\r\n + Xero: ManualJournal.ManualJournalID\r\n + TripleTex: n/a\r\n + AccountView: JournalEntry.Id\r\n + PowerOfficeGo: JournalEntry.Id\r\n + AfasSB: n/a\r\n + Sage50Uk: n/a\r\n + Adsolut: n/a"
}
},
"application/json": {
"schema": {
"allOf": [
{
"$ref": "#/components/schemas/GeneralJournalEntry"
}
],
"description": "Represents a GL Journal to be saved to or existing in the financial system.\r\n* Id: Unique id of the journal. Provide when updating the record. \r\n + ECI Financials: JournalEntry.Id\r\n + Xero: ManualJournal.ManualJournalID\r\n + TripleTex: n/a\r\n + AccountView: JournalEntry.Id\r\n + PowerOfficeGo: JournalEntry.Id\r\n + AfasSB: n/a\r\n + Sage50Uk: n/a\r\n + Adsolut: n/a"
}
},
"text/json": {
"schema": {
"allOf": [
{
"$ref": "#/components/schemas/GeneralJournalEntry"
}
],
"description": "Represents a GL Journal to be saved to or existing in the financial system.\r\n* Id: Unique id of the journal. Provide when updating the record. \r\n + ECI Financials: JournalEntry.Id\r\n + Xero: ManualJournal.ManualJournalID\r\n + TripleTex: n/a\r\n + AccountView: JournalEntry.Id\r\n + PowerOfficeGo: JournalEntry.Id\r\n + AfasSB: n/a\r\n + Sage50Uk: n/a\r\n + Adsolut: n/a"
}
},
"application/*+json": {
"schema": {
"allOf": [
{
"$ref": "#/components/schemas/GeneralJournalEntry"
}
],
"description": "Represents a GL Journal to be saved to or existing in the financial system.\r\n* Id: Unique id of the journal. Provide when updating the record. \r\n + ECI Financials: JournalEntry.Id\r\n + Xero: ManualJournal.ManualJournalID\r\n + TripleTex: n/a\r\n + AccountView: JournalEntry.Id\r\n + PowerOfficeGo: JournalEntry.Id\r\n + AfasSB: n/a\r\n + Sage50Uk: n/a\r\n + Adsolut: n/a"
}
}
}
},
"responses": {
"200": {
"description": "Success",
"content": {
"text/plain": {
"schema": {
"$ref": "#/components/schemas/GeneralJournalEntry"
}
},
"application/json": {
"schema": {
"$ref": "#/components/schemas/GeneralJournalEntry"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/GeneralJournalEntry"
}
}
}
},
"202": {
"description": "Accepted",
"content": {
"text/plain": {
"schema": {
"$ref": "#/components/schemas/AsyncAcceptedResponse"
}
},
"application/json": {
"schema": {
"$ref": "#/components/schemas/AsyncAcceptedResponse"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/AsyncAcceptedResponse"
}
}
}
},
"400": {
"description": "Bad Request",
"content": {
"text/plain": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
},
"application/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"409": {
"description": "Conflict",
"content": {
"text/plain": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
},
"application/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"429": {
"description": "Too Many Requests",
"content": {
"text/plain": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
},
"application/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"500": {
"description": "Server Error",
"content": {
"text/plain": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
},
"application/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"501": {
"description": "Server Error",
"content": {
"text/plain": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
},
"application/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
}
}
}
},
"/api/v2/tax-codes": {
"get": {
"tags": [
"General"
],
"summary": "Get a list of tax codes.",
"description": "<h2>Get a list of tax codes.</h2>",
"responses": {
"200": {
"description": "Success",
"content": {
"text/plain": {
"schema": {
"$ref": "#/components/schemas/TaxCode"
}
},
"application/json": {
"schema": {
"$ref": "#/components/schemas/TaxCode"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/TaxCode"
}
}
}
},
"202": {
"description": "Accepted",
"content": {
"text/plain": {
"schema": {
"$ref": "#/components/schemas/AsyncAcceptedResponse"
}
},
"application/json": {
"schema": {
"$ref": "#/components/schemas/AsyncAcceptedResponse"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/AsyncAcceptedResponse"
}
}
}
},
"429": {
"description": "Too Many Requests",
"content": {
"text/plain": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
},
"application/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"500": {
"description": "Server Error",
"content": {
"text/plain": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
},
"application/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"501": {
"description": "Server Error",
"content": {
"text/plain": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
},
"application/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
}
}
}
},
"/api/v2/bills": {
"post": {
"tags": [
"Purchase"
],
"summary": "Create (or update) a bill.",
"description": "<h2>Create (or update) a bill.</h2>\n **TripleTex** The upsert parameter is not supported. A new bill is always created\n **Sage 50 UK** The upsert parameter is not supported. A new bill is always created",
"parameters": [
{
"name": "upsert",
"in": "query",
"description": "When an unique **Id is provided**, the record is **looked up by Id**.<br> When the **record is found** by the Id, it is **updated**.<br> When the **record is not found** and **upsert is not set**, an **error** is returned.<br> When the **record is found** and **upsert is set**, it **continues** as described below.<br><br> When an unique **Id is not provided** and **upsert is not set**, a new record is **inserted**.<br> When an unique **Id is not provided** and **upsert is set**, a record is **looked up by natural key**.<br> When the **record is found** by natural key, it is **updated**.<br> When the **record is not found** by natural key, a new record is **inserted**.",
"schema": {
"type": "boolean"
}
}
],
"requestBody": {
"content": {
"application/json-patch+json": {
"schema": {
"allOf": [
{
"$ref": "#/components/schemas/Bill"
}
],
"description": "Represents a supplier Bill to be saved to the financial system."
}
},
"application/json": {
"schema": {
"allOf": [
{
"$ref": "#/components/schemas/Bill"
}
],
"description": "Represents a supplier Bill to be saved to the financial system."
}
},
"text/json": {
"schema": {
"allOf": [
{
"$ref": "#/components/schemas/Bill"
}
],
"description": "Represents a supplier Bill to be saved to the financial system."
}
},
"application/*+json": {
"schema": {
"allOf": [
{
"$ref": "#/components/schemas/Bill"
}
],
"description": "Represents a supplier Bill to be saved to the financial system."
}
}
}
},
"responses": {
"200": {
"description": "Success",
"content": {
"text/plain": {
"schema": {
"$ref": "#/components/schemas/Bill"
}
},
"application/json": {
"schema": {
"$ref": "#/components/schemas/Bill"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Bill"
}
}
}
},
"202": {
"description": "Accepted",
"content": {
"text/plain": {
"schema": {
"$ref": "#/components/schemas/AsyncAcceptedResponse"
}
},
"application/json": {
"schema": {
"$ref": "#/components/schemas/AsyncAcceptedResponse"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/AsyncAcceptedResponse"
}
}
}
},
"400": {
"description": "Bad Request",
"content": {
"text/plain": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
},
"application/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"409": {
"description": "Conflict",
"content": {
"text/plain": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
},
"application/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"429": {
"description": "Too Many Requests",
"content": {
"text/plain": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
},
"application/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"500": {
"description": "Server Error",
"content": {
"text/plain": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
},
"application/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"501": {
"description": "Server Error",
"content": {
"text/plain": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
},
"application/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
}
}
}
},
"/api/v2/bills/{billId}/attachments": {
"post": {
"tags": [
"Purchase"
],
"summary": "Upload a single file and attach to a bill.",
"description": "<h2> Upload a single file and attach to a bill.</h2>",
"parameters": [
{
"name": "billId",
"in": "path",
"description": "The id of the bill to add attachment to.",
"required": true,
"schema": {
"type": "string"
}
}
],
"requestBody": {
"content": {
"multipart/form-data": {
"schema": {
"type": "object",
"properties": {
"file": {
"type": "string",
"format": "binary"
}
}
},
"encoding": {
"file": {
"style": "form"
}
}
}
}
},
"responses": {
"200": {
"description": "Success",
"content": {
"text/plain": {
"schema": {
"$ref": "#/components/schemas/Attachment"
}
},
"application/json": {
"schema": {
"$ref": "#/components/schemas/Attachment"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Attachment"
}
}
}
},
"202": {
"description": "Accepted",
"content": {
"text/plain": {
"schema": {
"$ref": "#/components/schemas/AsyncAcceptedResponse"
}
},
"application/json": {
"schema": {
"$ref": "#/components/schemas/AsyncAcceptedResponse"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/AsyncAcceptedResponse"
}
}
}
},
"400": {
"description": "Bad Request",
"content": {
"text/plain": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
},
"application/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"404": {
"description": "Not Found",
"content": {
"text/plain": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
},
"application/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"429": {
"description": "Too Many Requests",
"content": {
"text/plain": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
},
"application/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"500": {
"description": "Server Error",
"content": {
"text/plain": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
},
"application/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"501": {
"description": "Server Error",
"content": {
"text/plain": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
},
"application/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
}
}
}
},
"/api/v2/paymentblockstatus": {
"post": {
"tags": [
"Purchase"
],
"summary": "Update the payment block status of a bill.",
"description": "<h2>Update the payment block status of a bill.</h2>",
"requestBody": {
"content": {
"application/json-patch+json": {
"schema": {
"allOf": [
{
"$ref": "#/components/schemas/PaymentBlockStatus"
}
],
"description": "<h2>The payable state.</h2>\r\nAt least docNumber or billId should be filled, to be able to lookup the bill."
}
},
"application/json": {
"schema": {
"allOf": [
{
"$ref": "#/components/schemas/PaymentBlockStatus"
}
],
"description": "<h2>The payable state.</h2>\r\nAt least docNumber or billId should be filled, to be able to lookup the bill."
}
},
"text/json": {
"schema": {
"allOf": [
{
"$ref": "#/components/schemas/PaymentBlockStatus"
}
],
"description": "<h2>The payable state.</h2>\r\nAt least docNumber or billId should be filled, to be able to lookup the bill."
}
},
"application/*+json": {
"schema": {
"allOf": [
{
"$ref": "#/components/schemas/PaymentBlockStatus"
}
],
"description": "<h2>The payable state.</h2>\r\nAt least docNumber or billId should be filled, to be able to lookup the bill."
}
}
}
},
"responses": {
"200": {
"description": "Success",
"content": {
"text/plain": {
"schema": {
"$ref": "#/components/schemas/PaymentBlockStatus"
}
},
"application/json": {
"schema": {
"$ref": "#/components/schemas/PaymentBlockStatus"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/PaymentBlockStatus"
}
}
}
},
"202": {
"description": "Accepted",
"content": {
"text/plain": {
"schema": {
"$ref": "#/components/schemas/AsyncAcceptedResponse"
}
},
"application/json": {
"schema": {
"$ref": "#/components/schemas/AsyncAcceptedResponse"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/AsyncAcceptedResponse"
}
}
}
},
"400": {
"description": "Bad Request",
"content": {
"text/plain": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
},
"application/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"404": {
"description": "Not Found",
"content": {
"text/plain": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
},
"application/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"429": {
"description": "Too Many Requests",
"content": {
"text/plain": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
},
"application/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"500": {
"description": "Server Error",
"content": {
"text/plain": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
},
"application/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
},
"501": {
"description": "Server Error",
"content": {
"text/plain": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
},
"application/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
}
}
}
},
"/api/v2/purchase-journal-entries": {
"post": {
"tags": [
"Purchase"
],
"summary": "Create (or update) a purchase journal entry.",
"description": "<h2>Create (or update) a purchase journal entry.</h2>\n **TripleTex** The upsert parameter is not supported. A new purchase journal entry is always created\n **AfasSB** The upsert parameter is not supported. A new purchase journal entry is always created\n **Sage 50 UK** The upsert parameter is not supported. A new purchase journal entry is always created",
"parameters": [
{
"name": "upsert",
"in": "query",
"description": "When an unique **Id is provided**, the record is **looked up by Id**.<br> When the **record is found** by the Id, it is **updated**.<br> When the **record is not found** and **upsert is not set**, an **error** is returned.<br> When the **record is found** and **upsert is set**, it **continues** as described below.<br><br> When an unique **Id is not provided** and **upsert is not set**, a new record is **inserted**.<br> When an unique **Id is not provided** and **upsert is set**, a record is **looked up by natural key**.<br> When the **record is found** by natural key, it is
# --- truncated at 32 KB (216 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/eci-solutions/refs/heads/main/openapi/eci-solutions-financial-v2-openapi.json