canonical: https://jentic.com/apis/dynamics.com/dynamics-365-business-central

# Dynamics 365 Business Central

The Dynamics 365 Business Central API exposes the standard financial and sales records of a Business Central company over REST. It reads and writes customers, vendors, items, sales invoices, sales orders, quotes, and credit memos, posts journals and customer payments, and manages dimensions, currencies, payment terms, and tax groups. It also returns financial statements such as the balance sheet, cash flow statement, and aged accounts receivable and payable, so an application can run accounting and order-to-cash workflows without the Business Central client.

## For AI agents

Read and write Business Central financial and sales records for a company: customers, vendors, items, sales invoices, orders, quotes, journals, and payments, plus financial statements like the balance sheet and aged receivables. Every path is scoped to a company id.

## Scope

Does not handle payroll runs, warehouse logistics, or CRM marketing campaigns. Use for Business Central financial, sales, and master-data records within a company only.

## Capabilities

- Read and create customers, vendors, and inventory items within a company
- Create and post sales invoices, sales orders, quotes, and credit memos
- Record journals, journal lines, and customer payments
- Retrieve financial statements such as the balance sheet, cash flow statement, and aged receivables
- Set up dimensions, payment terms, currencies, and tax groups
- Read general ledger entries and attachments for a company

## Use cases

### Agent-driven bookkeeping

An AI agent connected through Jentic can keep a Business Central company's books moving: create a customer, raise and post a sales invoice, and record the payment when it arrives. Because every record is scoped to a company id in the path, the agent works within one company's ledgers and returns the posted invoice and payment so the operator has a confirmation trail.

Example prompt: Create a customer in a company, raise a sales invoice for it, and record a customer payment against that invoice.

### Financial reporting

The API returns standard Business Central financial statements, including the balance sheet, cash flow statement, retained earnings, and aged accounts receivable and payable. A reporting agent can pull these statements for a company and summarize the figures, turning a month-end review into a scripted read rather than an export from the Business Central client.

Example prompt: Retrieve the balance sheet and aged accounts receivable for a company and summarize the top overdue balances.

### Order-to-cash automation

Business Central models the full order-to-cash flow as sales quotes, sales orders, and sales invoices with their line items. An agent can create a sales quote, convert its contents into a sales order, and raise the resulting invoice, keeping the documents linked to the same customer within one company.

Example prompt: Create a sales quote for a customer, create the matching sales order, and raise a sales invoice for it.

### Master-data synchronization

Customers, vendors, and items are the master data behind every transaction, and the API reads and writes all three per company. A sync agent can keep a company's customer and item lists aligned with an external system, creating or updating records so downstream invoicing and ordering use consistent data.

Example prompt: List the customers in a company, create any missing ones from an external list, and update item records that have changed.

## Key endpoints

| Method | Path | Description |
| --- | --- | --- |
| GET | `/companies` | Returns a list of companies |
| GET | `/companies({company_id})/customers` | Returns a list of customers |
| POST | `/companies({company_id})/customers` | Create a customer |
| GET | `/companies({company_id})/salesInvoices` | Returns a list of sales invoices |
| POST | `/companies({company_id})/salesInvoices` | Create a sales invoice |
| GET | `/companies({company_id})/items` | Returns a list of items |
| POST | `/companies({company_id})/items` | Create an item |
| GET | `/companies({company_id})/vendors` | Returns a list of vendors |

## Key resources

- **Customers & Vendors** — Read and write customer and vendor records, financial details, and payments per company
- **Sales Documents** — Create and post sales invoices, orders, quotes, and credit memos with their line items
- **Items** — Read and write inventory items, categories, units of measure, and item pictures
- **Journals & Ledger** — Post journals and journal lines and read general ledger entries
- **Financial Statements** — Retrieve the balance sheet, cash flow statement, retained earnings, and aged receivables and payables
- **Setup Data** — Manage dimensions, payment terms, currencies, tax groups, and shipment methods

## AI readiness

This API is usable in Jentic One now. Its AI-readiness score against Jentic's framework shows where it stands today and where improvements would make it even easier for agents to use.

- **Score:** 50 / 100
- **Maturity:** Foundational
- **Dimensions:**
  - Foundational Compliance: 66 / 100
  - Developer Experience & Jentic Compatibility: 56 / 100
  - AI-Readiness & Agent Experience: 55 / 100
  - Agent Usability: 43 / 100
  - Security: 35 / 100
  - AI Discoverability: 54 / 100
- **View full report:** https://jentic.com/apis/dynamics.com/dynamics-365-business-central/scorecard
- **How the score is calculated:** https://docs.jentic.com/reference/api-readiness-framework/overview/
- **More about the dimensions:** https://docs.jentic.com/reference/api-readiness-framework/specification/#dimensional-model-overview

### Score it yourself

Every API in the directory is allowlisted, so you can re-score it with no key required.

- **Score your own API:** https://jentic.com/scorecard.md
- **Scoring CLI agent skill:** https://github.com/jentic/jentic-api-scorecard/blob/main/skills/jentic-api-scorecard/SKILL.md

```sh
npx @jentic/api-scorecard-cli score <openapi-url>
```

## Why Jentic

- **Setup:** Wiring Business Central by hand means registering an app in Microsoft's identity platform, running the oauth2 flow for the right resource scope, and learning its OData company-scoped URL shape across hundreds of endpoints. Through Jentic you install once, import Business Central from the API Directory, store the credential once, and your agent calls it.
- **Permission scoping:** Business Central puts the company id in the URL path, so a rule can pin your agent to one company and the endpoints you pick. You choose the operations it may call, so write operations such as posting invoices or deleting records are not included unless you add them.
- **Credential handling:** Your Business Central oauth2 token is stored once, encrypted, by your own Jentic One instance and injected at execution time. It never enters the agent's prompt, logs, or context.
- **Discovery method:** Agents search Jentic by intent such as 'create a sales invoice' or 'get the balance sheet', and Jentic returns the matching Business Central operation with its input schema so the agent calls the right endpoint without scanning the full OData surface.

## Related APIs

- **Xero Accounting** — Xero is a cloud accounting platform covering invoices, bills, and ledgers like Business Central
- **Sage** — Sage provides accounting and financial management comparable to Business Central's financials
- **Invoice Ninja** — Invoice Ninja handles standalone invoicing and payments that can feed Business Central's ledgers
- **Zoho Inventory** — Zoho Inventory manages stock and order fulfillment alongside Business Central's item and sales records

## FAQ

### What authentication does the Dynamics 365 Business Central API use?

The Business Central API authenticates with oauth2 against Microsoft's identity platform, per its OpenAPI spec, using the Business Central resource scope so the token can read and write financial data. You obtain the token from the Microsoft login endpoint and send it as a bearer token. Through Jentic the token is stored encrypted by your own Jentic One instance and injected at call time, so it never reaches the agent's context.

### Is there a Dynamics 365 Business Central MCP server?

You don't need an MCP server to give your agent the Business Central API. Jentic connects it directly from the API Directory: import Business Central, store your oauth2 credential once, and your agent calls its operations. Because the API exposes hundreds of per-company endpoints, Jentic discovers the right operation on demand rather than loading every definition into the agent's context.

### Can I limit what my agent is allowed to do with the Dynamics 365 Business Central API?

Yes. Write a rule that pins your agent to one company's id in the path and allows only the read operations, such as listing customers and reading the balance sheet, so it can report figures but cannot post invoices or delete records, and every call it makes is logged. Because the company id is part of the URL, the agent's reach is confined to the company you name.

### Can I post a sales invoice with the Dynamics 365 Business Central API?

Yes. The sales invoice endpoints create invoices and their line items under a company, alongside sales orders, quotes, and credit memos. An agent can raise an invoice for a customer and record the payment against it using the customer payment endpoints, keeping the documents linked within the same company.

### What are the rate limits for the Dynamics 365 Business Central API?

This OpenAPI spec does not state numeric rate limits; Business Central enforces request limits per environment and tenant set by Microsoft. Check the Microsoft Dynamics 365 Business Central API documentation for the current throttling limits before running high-volume syncs.

### How do I create an invoice with the Dynamics 365 Business Central API through Jentic?

Install Jentic One, import Business Central from the API Directory, and store your oauth2 credential once. Your agent then searches by intent, for example 'create a sales invoice', and Jentic returns the matching operation with its input schema and the company id it needs. To run it on your own infrastructure, install Jentic One from its GitHub repo.
