See what the Microsoft Dynamics 365 Business Central integration can do →
This article lists the Microsoft Dynamics 365 Business Central API endpoints that the iPaaS.com integration calls, grouped by entity. Subscribers or their MiSP can use it as a reference for firewall allow-listing, OAuth scope configuration, troubleshooting, and understanding how data flows between iPaaS.com and Business Central. When Microsoft publishes a deprecation notice for the Business Central API, this inventory helps determine whether the integration is affected.
Portal Info
Microsoft sign-in / authorization portal:
https://login.microsoftonline.comBusiness Central web client:
https://businesscentral.dynamics.com
API Endpoints Intro
The integration calls the Microsoft Dynamics 365 Business Central REST API (v2.0). Business Central exposes two complementary surfaces that the integration uses together:
The standard API under
/api/v2.0/..., addressed by company id.The OData V4 surface under
/ODataV4/Company('{CompanyName}')/..., used for entities and operations not available on the standard API.
Both surfaces share the same host. The base URL is built from the Business Central API host, the Microsoft Entra (Azure AD) tenant id, and the Business Central environment name:
API host:
https://api.businesscentral.dynamics.comBase URL pattern:
https://api.businesscentral.dynamics.com/v2.0/{TenantId}/{Environment}
Throughout this article, [Base URL] stands for https://api.businesscentral.dynamics.com/v2.0/{TenantId}/{Environment}, where {TenantId} is your Microsoft Entra tenant id and {Environment} is your Business Central environment name (for example, Production or Sandbox). Replace {CompanyName} with your Business Central company name, and {CompanyId} with the company's GUID.
Table of Contents
Customer Endpoints
Get a Customer by Id (GET)
[Base URL]/api/v2.0/companies({CompanyId})/customers({CustomerId})Get a Customer by Number (GET)
[Base URL]/api/v2.0/companies({CompanyId})/customers?$filter=number eq '{CustomerNumber}'Get a Customer by Email (GET)
[Base URL]/api/v2.0/companies({CompanyId})/customers?$filter=email eq '{Email}'Get a Customer by Number (OData V4) (GET)
[Base URL]/ODataV4/Company('{CompanyName}')/CustomerCard('{CustomerNumber}')Create a Customer (POST)
[Base URL]/api/v2.0/companies({CompanyId})/customersCreate a Customer (OData V4) (POST)
[Base URL]/ODataV4/Company('{CompanyName}')/CustomerCardUpdate a Customer (PATCH)
[Base URL]/ODataV4/Company('{CompanyName}')/CustomerCard('{CustomerNumber}')Poll Customers by Last Modified Date (GET)
[Base URL]/api/v2.0/companies({CompanyId})/customers?$top={Limit}&$skip={Page * Limit}&$filter=type eq 'Person' and lastModifiedDateTime ge {LastModifiedDateTime}Customer Categories Endpoints
Get Customer Categories (GET)
[Base URL]/ODataV4/Company('{CompanyName}')/CustomerPriceGroups?$top={Limit}&$skip={Page * Limit}Company Endpoints
In Business Central, companies are represented as customer records, so company reads and writes use the customer and customer card resources, filtered or typed for companies.
Resolve Company Id by Name (GET)
[Base URL]/ODataV4/Company('{CompanyName}')Get a Company by Id (GET)
[Base URL]/api/v2.0/companies({CompanyId})/customers({CustomerId})Get a Company by Number (GET)
[Base URL]/api/v2.0/companies({CompanyId})/customers?$filter=number eq '{CompanyNumber}'Get a Company by Number (OData V4) (GET)
[Base URL]/ODataV4/Company('{CompanyName}')/CustomerCard('{CompanyNumber}')Create a Company (POST)
[Base URL]/ODataV4/Company('{CompanyName}')/CustomerCardUpdate a Company (PATCH)
[Base URL]/ODataV4/Company('{CompanyName}')/CustomerCard('{CompanyNumber}')Poll Companies by Last Modified Date (GET)
[Base URL]/api/v2.0/companies({CompanyId})/customers?$top={Limit}&$skip={Page * Limit}&$filter=type eq 'Company' and lastModifiedDateTime ge {LastModifiedDateTime}Contact Endpoints
Get a Contact by Id (GET)
[Base URL]/api/v2.0/companies({CompanyId})/contacts({ContactId})Get a Contact by Number (GET)
[Base URL]/api/v2.0/companies({CompanyId})/contacts?$filter=number eq '{ContactNumber}'Get Contacts for a Company (OData V4) (GET)
[Base URL]/ODataV4/Company('{CompanyName}')/contacts?$filter=Type eq 'Person' and CompanyNo eq '{CompanyNumber}'Poll Contacts by Last Modified Date (GET)
[Base URL]/api/v2.0/companies({CompanyId})/contacts?$top={Limit}&$skip={Page * Limit}&$filter=lastModifiedDateTime ge {LastModifiedDateTime}Poll Contacts by Last Modified Date (OData V4) (GET)
[Base URL]/ODataV4/Company('{CompanyName}')/contacts?$top={Limit}&$skip={Page * Limit}&$filter=type eq 'Person' and lastModifiedDateTime ge {LastModifiedDateTime}Location Endpoints
Get a Location by Id (GET)
[Base URL]/api/v2.0/companies({CompanyId})/locations({LocationId})Get a Location by Code (GET)
[Base URL]/api/v2.0/companies({CompanyId})/locations?$filter=code eq '{LocationCode}'Get a Location by Number (OData V4) (GET)
[Base URL]/ODataV4/Company('{CompanyName}')/locations('{LocationNumber}')Poll Locations by Last Modified Date (GET)
[Base URL]/api/v2.0/companies({CompanyId})/locations?$top={Limit}&$skip={Page * Limit}&$filter=lastModifiedDateTime gt {LastModifiedDateTime}Product Endpoints
Products are represented as items in Business Central.
Get a Product by Id (GET)
[Base URL]/api/v2.0/companies({CompanyId})/items({ItemId})Get a Product by Number (GET)
[Base URL]/api/v2.0/companies({CompanyId})/items?$filter=number eq '{ItemNumber}'Get a Product by Number (OData V4) (GET)
[Base URL]/ODataV4/Company('{CompanyName}')/ItemCard('{ItemNumber}')Get a Product by Number from Items (OData V4) (GET)
[Base URL]/ODataV4/Company('{CompanyName}')/Items?$filter=No eq '{ItemNumber}'Create a Product (OData V4) (POST)
[Base URL]/ODataV4/Company('{CompanyName}')/ItemCardUpdate a Product (PATCH)
[Base URL]/ODataV4/Company('{CompanyName}')/ItemCard('{ItemNumber}')Get Sales Prices by Item and Sales Code (OData V4) (GET)
[Base URL]/ODataV4/Company('{CompanyName}')/SalesPrices?$filter=Item_No eq '{ItemNumber}' and Sales_Code eq '{SalesCode}'Poll Products by Last Modified Date (GET)
[Base URL]/api/v2.0/companies({CompanyId})/items?$top={Limit}&$skip={Page * Limit}&$filter=lastModifiedDateTime gt {LastModifiedDateTime}Poll Products from Sales Prices (OData V4) (GET)
[Base URL]/ODataV4/Company('{CompanyName}')/SalesPrices?$top={Limit}&$skip={Page * Limit}&$filter=SystemModifiedAt gt {LastModifiedDateTime}Product Categories Endpoints
Get a Product Category by Code (OData V4) (GET)
[Base URL]/ODataV4/Company('{CompanyName}')/ItemCategories('{CategoryCode}')Poll Product Categories (OData V4) (GET)
[Base URL]/ODataV4/Company('{CompanyName}')/ItemCategories?$top={Limit}&$skip={Page * Limit}Product Inventory Endpoints
Get Inventory by Product Number (OData V4) (GET)
[Base URL]/ODataV4/Company('{CompanyName}')/itemsbylocation?$filter=No eq '{ItemNumber}'Get Inventory by Product Number and Location Code (OData V4) (GET)
[Base URL]/ODataV4/Company('{CompanyName}')/itemsbylocation?$filter=No eq '{ItemNumber}' and Location_Code eq '{LocationCode}'Poll Product Inventory by Last Modified Date (GET)
[Base URL]/api/v2.0/companies({CompanyId})/items?$top={Limit}&$skip={Page * Limit}&$filter=lastModifiedDateTime gt {LastModifiedDateTime}Sales Order Endpoints
Get a Sales Order by Id (GET)
[Base URL]/api/v2.0/companies({CompanyId})/salesOrders({SalesOrderId})Get a Sales Order by Number (GET)
[Base URL]/api/v2.0/companies({CompanyId})/salesOrders?$filter=number eq '{SalesOrderNumber}'Get a Sales Order by Number (OData V4) (GET)
[Base URL]/ODataV4/Company('{CompanyName}')/SalesOrders?$filter=No eq '{SalesOrderNumber}'Create a Sales Order (OData V4) (POST)
[Base URL]/ODataV4/Company('{CompanyName}')/SalesOrdersUpdate a Sales Order (OData V4) (PATCH)
[Base URL]/ODataV4/Company('{CompanyName}')/SalesOrders('Order','{SalesOrderNumber}')Delete a Sales Order (DELETE)
[Base URL]/api/v2.0/companies({CompanyId})/salesOrders({SalesOrderId})Poll Sales Orders by Last Modified Date (GET)
[Base URL]/api/v2.0/companies({CompanyId})/salesOrders?$filter=lastModifiedDateTime ge {LastModifiedDateTime}&$top={Limit}&$skip={Page * Limit}Sales Order Line Item Endpoints
Get Sales Order Line Items by Sales Order Id (GET)
[Base URL]/api/v2.0/companies({CompanyId})/salesOrderLines?$filter=documentid eq {SalesOrderId}Get a Sales Order Line Item by Number (OData V4) (GET)
[Base URL]/ODataV4/Company('{CompanyName}')/SalesOrderLines?$filter=No eq '{LineObjectNumber}' and Document_No eq '{DocumentNumber}'Create a Sales Order Line Item (OData V4) (POST)
[Base URL]/ODataV4/Company('{CompanyName}')/SalesOrderLinesUpdate a Sales Order Line Item (OData V4) (PATCH)
[Base URL]/ODataV4/Company('{CompanyName}')/SalesOrderLines(Document_Type='{DocumentType}', Document_No='{DocumentNumber}', Line_No={LineNumber})Sales Invoice Endpoints
Get a Sales Invoice by Id (GET)
[Base URL]/api/v2.0/companies({CompanyId})/salesInvoices({SalesInvoiceId})Get a Sales Invoice by Number (GET)
[Base URL]/api/v2.0/companies({CompanyId})/salesInvoices?$filter=number eq '{SalesInvoiceNumber}'Get a Sales Invoice by Number (OData V4) (GET)
[Base URL]/ODataV4/Company('{CompanyName}')/SalesInvoices?$filter=No eq '{SalesInvoiceNumber}'Get Sales Invoices by Order Number (OData V4) (GET)
[Base URL]/ODataV4/Company('{CompanyName}')/SalesInvoices?$filter=Order_No eq '{OrderNumber}'Get a Posted Sales Invoice by Id (GET)
[Base URL]/api/v2.0/companies({CompanyId})/salesInvoices({PostedInvoiceId})Post a Sales Invoice (POST)
[Base URL]/api/v2.0/companies({CompanyId})/salesInvoices({SalesInvoiceId})/Microsoft.NAV.postPoll Sales Invoices by Last Modified Date (GET)
[Base URL]/api/v2.0/companies({CompanyId})/salesInvoices?$top={Limit}&$skip={Page * Limit}&$filter=lastModifiedDateTime ge {LastModifiedDateTime} and orderId ne 00000000-0000-0000-0000-000000000000Sales Invoice Line Item Endpoints
Get Sales Invoice Line Items by Document Id (GET)
[Base URL]/api/v2.0/companies({CompanyId})/salesInvoiceLines?$filter=documentid eq {SalesInvoiceId}Get Sales Invoice Line Items by Invoice Id (GET)
[Base URL]/api/v2.0/companies({CompanyId})/salesInvoices({SalesInvoiceId})/salesInvoiceLinesGet a Sales Invoice Line Item by Id (GET)
[Base URL]/api/v2.0/companies({CompanyId})/salesInvoices({SalesInvoiceId})/salesInvoiceLines({LineId})Get a Sales Invoice Line Item by Number (OData V4) (GET)
[Base URL]/ODataV4/Company('{CompanyName}')/SalesInvoiceLines?$filter=No eq '{LineObjectNumber}' and Document_No eq '{DocumentNumber}'Customer Payment Endpoints
Get Customer Payment Journals (GET)
[Base URL]/api/v2.0/companies({CompanyId})/customerPaymentJournalsGet Payment Terms (GET)
[Base URL]/api/v2.0/companies({CompanyId})/paymentTermsCreate a Customer Payment (POST)
[Base URL]/api/v2.0/companies({CompanyId})/customerPaymentsGet a Customer Payment by Id (GET)
[Base URL]/api/v2.0/companies({CompanyId})/customerPayments/{CustomerPaymentId}Get Customer Payments by Journal (GET)
[Base URL]/api/v2.0/companies({CompanyId})/customerPayments?$filter=journalId eq {JournalId}Post a Payment Journal (POST)
[Base URL]/api/v2.0/companies({CompanyId})/journals({JournalId})/Microsoft.NAV.postSales Shipment Endpoints
Get Sales Shipments by Order Number (OData V4) (GET)
[Base URL]/ODataV4/Company('{CompanyName}')/SalesShipments?$filter=Order_No eq '{OrderNumber}'Get Sales Shipment Lines by Document Number (OData V4) (GET)
[Base URL]/ODataV4/Company('{CompanyName}')/SalesShipmentLines?$filter=Document_No eq '{ShipmentNumber}'Poll Sales Shipments by Last Modified Date (GET)
[Base URL]/api/v2.0/companies({CompanyId})/salesShipments?$top={Limit}&$skip={Page * Limit}&$filter=lastModifiedDateTime ge {LastModifiedDateTime}Poll Sales Shipments by Last Modified Date (OData V4) (GET)
[Base URL]/ODataV4/Company('{CompanyName}')/SalesShipments?$top={Limit}&$skip={Page * Limit}&$filter=lastModifiedDate ge {LastModifiedDateTime}Shipping Method Endpoints
Shipping methods are represented as shipping agents in Business Central.
Get a Shipping Method by Code (OData V4) (GET)
[Base URL]/ODataV4/Company('{CompanyName}')/ShippingAgents?$filter=Code eq '{Code}'Get All Shipping Methods (OData V4) (GET)
[Base URL]/ODataV4/Company('{CompanyName}')/ShippingAgents?$top={Limit}&$skip={Page * Limit}Authorization Endpoint
The integration authenticates with Microsoft Entra (Azure AD) using OAuth 2.0. Access tokens are requested from the Microsoft identity platform token endpoint for client-credentials, public-app, and refresh-token flows.
Authorization host:
https://login.microsoftonline.com
Get an Access Token (POST)
https://login.microsoftonline.com/{TenantId}/oauth2/v2.0/token