Skip to content

Connect to Business Central

Connect PlaidCloud to Business Central’s standard OData v2.0 REST API to pull accounts, ledger entries, customers, vendors, items, and journals with no OData to hand-write, and post general journal lines back. This guide covers the connection, the import step, and the post step.

You need, in Azure AD and Business Central:

  • An Entra ID (Azure AD) app registration for PlaidCloud with a client secret, granted API permissions to Business Central (Dynamics 365 Business Central > API.ReadWrite.All or the narrower permission your admin issues).
  • Your Azure AD tenant ID.
  • The Business Central environment name PlaidCloud should call (for example Production or a sandbox environment).
  • The company PlaidCloud reads and posts against — Business Central scopes both entity reads and journal posts to one company at a time.
  1. Open Tools > Connections and click New Connection.

  2. Choose Business Central from the menu.

  3. Fill in the fields:

    Field Value
    Name A friendly name, e.g. BC Prod.
    Client ID The Entra app registration’s application (client) ID.
    Client Secret The app registration’s client secret.
    Tenant ID Your Azure AD tenant ID.
    Environment The Business Central environment name, e.g. Production.
    Company The Business Central company ID to read and post against.
  4. Click Create.

  1. Add an Import Business Central Entity step to a workflow.

  2. Set Business Central Connection to your connection, Entity Type to accounts, and Target Table to a scratch table.

  3. Run the step (see Running one step in a workflow).

A populated target table confirms the tenant, credentials, environment, and company are all correct. An error names the problem — a bad client secret, a missing API permission grant, or a wrong environment/company.

  1. Add an Import Business Central Entity step and set Business Central Connection and Target Table.

  2. Set Entity Type to the record you want: accounts, generalLedgerEntries, customers, vendors, items, or journals.

  3. Add Filters{field, operator, value} rows ANDed into the request’s $filter, checked against the entity’s own queryable-field allowlist. Leave blank to pull the whole entity.

  4. Run the step and check the target table.

The Business Central Post step posts lines into an existing general journal batch and then posts that batch.

  1. Build a header table — one row per journal_id — with the Business Central journal batch name your lines post into, plus document_number, posting_date, and a currency label.

  2. Build a lines table — one or more rows per journal_id — with a signed amount (positive for a debit, negative for a credit), account_id or account_number, account_type, and description.

  3. Add a Business Central Post step, set Business Central Connection, Environment, Header Table, Lines Table, and a Result Table.

  4. Leave Validate Only checked and run the step — PlaidCloud builds and checks every journal without posting anything.

  5. Review the result table (one row per journal_id: journal_id, external_id, internal_id, status, message). Fix any error row and re-validate.

  6. Uncheck Validate Only and run again to post for real. Leave Continue On Error checked unless you want a batch to stop dead on its first failed journal.

Business Central’s Microsoft.NAV.post action posts the whole journal batch, not just the lines PlaidCloud just created — so before calling it, PlaidCloud reads the batch back and refuses to post (recording an error, nothing posted) if it holds any line not stamped with this request’s document number. That guard exists specifically so a stray line left behind by an earlier partial failure never gets swept into the GL by an unrelated later post to the same batch.

Capability Limits — Read Before Posting Live

Section titled “Capability Limits — Read Before Posting Live”