ml-connector
Microsoft Dynamics 365 F&OChargebee

Microsoft Dynamics 365 F&O and Chargebee integration

Microsoft Dynamics 365 F&O runs financials and accounts receivable. Chargebee runs subscription billing and revenue collection. Connecting the two moves recurring billing activity into the system of record without re-keying. Paid invoices, recorded payments, and credit notes from Chargebee post into the D365 F&O ledger against the right customer accounts and financial dimensions, and the customer list stays aligned across both sides. ml-connector handles the very different APIs on each system and moves the data on the cadence you set.

How Microsoft Dynamics 365 F&O works

Microsoft Dynamics 365 F&O exposes its data through OData v4 (REST and JSON) at a tenant-specific host such as contoso.operations.dynamics.com, with no shared base URL. Relevant entities include CustomersV3 and CustomerDefinitions, customer payment journal lines, main accounts, general journal entries, and financial dimensions. Every call carries an OAuth2 bearer token obtained from Microsoft Entra ID using the client credentials flow against the environment scope. For outbound push it uses the Business Events framework, which dispatches lightweight JSON stubs carrying a ControlNumber for deduplication rather than full record data, so a follow-up OData read is required.

How Chargebee works

Chargebee is a subscription billing platform, not an ERP, so it has no vendor, purchase order, or GL account objects. It exposes customers, subscriptions, invoices, credit notes, transactions, payment sources, and items through a REST API at site.chargebee.com slash api slash v2, selecting the US, EU, or AU base URL by region. Authentication is HTTP Basic auth with the API key as the username and an empty password, with no OAuth or token exchange. Chargebee pushes billing events by webhook with no HMAC signature header, so the documented pattern is to refetch each event by id before acting on it.

What moves between them

The main flow runs from Chargebee into Microsoft Dynamics 365 F&O. After each billing cycle, ml-connector reads paid Chargebee invoices, recorded transactions, and credit notes and posts the resulting receivable entries into the D365 F&O customer payment journals and ledger, each mapped to the matching customer account and financial dimensions. Customer records are aligned so a Chargebee customer maps to a D365 F&O customer account, created or updated as needed. D365 F&O is the financial system of record, so ml-connector reads billing results from Chargebee and does not write invoices or subscription changes back into Chargebee.

How ml-connector handles it

ml-connector stores both credential sets encrypted. On the Chargebee side it sends the API key as HTTP Basic auth with the mandatory trailing colon and derives the correct regional base URL from the configured region, since an EU or AU site key fails against the US host. On the D365 F&O side it accepts the full tenant host per customer, requests an Entra ID bearer token through the client credentials flow, and refreshes that token when a call returns 401. Chargebee webhooks such as payment_succeeded, invoice_generated, and credit_note_created trigger the work, and because there is no HMAC signature ml-connector refetches each event by id before acting; a scheduled offset-paged poll backfills anything a webhook missed. D365 F&O Business Events arrive as stubs, so the handler follows the ControlNumber back to OData for full detail. Customer accounts and financial dimensions are mapped first, so every receivable entry references a customer and dimension string that already exists in D365 F&O, formatted per the integrating-applications dimension setup. Both sides return HTTP 429 with Retry-After under load, so ml-connector backs off and retries with jitter, and every record carries a full audit trail and can be replayed if a downstream call fails.

A real-world example

A mid-sized SaaS company with a few hundred recurring customers runs Chargebee for subscription billing and Microsoft Dynamics 365 F&O for corporate finance. Before the integration, the finance team exported paid invoices and payment reports from Chargebee each month and re-entered the receivable totals into D365 F&O by hand, then spent the first days of close reconciling subscription revenue against the customer accounts in the ledger. With the two systems connected, each cycle's paid invoices, payments, and credit notes post into D365 F&O automatically against the correct customer accounts and dimensions, and customer changes keep both sides aligned. Month-end close starts with subscription receivables already booked, and the manual re-keying step is gone.

What you can do

  • Post paid Chargebee invoices, payments, and credit notes into the Microsoft Dynamics 365 F&O receivable ledger after each billing cycle.
  • Keep customer records aligned so each Chargebee customer maps to a D365 F&O customer account.
  • Map Chargebee billing results to D365 F&O customer accounts and financial dimensions so entries land on valid accounts.
  • Authenticate Chargebee with API-key Basic auth and D365 F&O with the Entra ID OAuth2 client credentials flow.
  • Trigger on Chargebee webhooks with event refetch, backfill by scheduled poll, and retry with a full audit trail on every record.

Questions

Which direction does data move between Microsoft Dynamics 365 F&O and Chargebee?
The main flow is Chargebee into Microsoft Dynamics 365 F&O. Paid invoices, payments, and credit notes move from Chargebee into the D365 F&O receivable ledger, while customer records are aligned across both sides. D365 F&O is the financial system of record, so ml-connector reads billing results from Chargebee and does not write invoices or subscription changes back into it.
How does the integration secure Chargebee webhooks without an HMAC signature?
Chargebee does not send an HMAC signature header on its webhooks. Following the documented pattern, ml-connector refetches each event by its id through the Chargebee events API before acting, rather than trusting the pushed payload. A scheduled offset-paged poll also backfills any event a webhook delivery missed.
How does the integration handle the two different authentication methods?
ml-connector stores both credential sets encrypted and bridges them on every call. Chargebee uses HTTP Basic auth with the API key as the username and an empty password, with the regional base URL derived from the configured region. Microsoft Dynamics 365 F&O uses an OAuth2 bearer token from Microsoft Entra ID via the client credentials flow, refreshed automatically when a call returns 401.

Related integrations

Connect Microsoft Dynamics 365 F&O and Chargebee

Free to use. Add your credentials, ping your real systems, and see if we fit.

Get started