Skip to main content

Microsoft Dynamics 365 Business Central API Endpoints

Complete reference of the Microsoft Dynamics 365 Business Central API endpoints the iPaaS.com integration calls, grouped by entity, with authorization and base URL details.

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.com

  • Business 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.com

  • Base 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})/customers

Create a Customer (OData V4) (POST)

[Base URL]/ODataV4/Company('{CompanyName}')/CustomerCard

Update 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}')/CustomerCard

Update 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}')/ItemCard

Update 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}')/SalesOrders

Update 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}')/SalesOrderLines

Update 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.post

Poll 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-000000000000

Sales 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})/salesInvoiceLines

Get 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})/customerPaymentJournals

Get Payment Terms (GET)

[Base URL]/api/v2.0/companies({CompanyId})/paymentTerms

Create a Customer Payment (POST)

[Base URL]/api/v2.0/companies({CompanyId})/customerPayments

Get 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.post

Sales 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
Did this answer your question?