Microsoft Dynamics 365 F&O and Deel integration
Microsoft Dynamics 365 F&O runs finance, procurement, and the general ledger. Deel runs global payroll, contractor management, and HR across many countries. Connecting the two brings Deel's workforce spend into the ledger without re-keying. Contractor invoices and Deel billing invoices post into Dynamics as vendor invoices or general journal lines, allocated to the right financial dimensions, and worker cost data stays aligned with the accounts that carry it. ml-connector handles the very different APIs on each side and moves the data on a schedule you control.
What moves between them
The main flow runs from Deel into Microsoft Dynamics 365 F&O. ml-connector reads Deel contractor invoices and billing invoices and creates vendor invoice headers and lines in Dynamics, or posts them as general journal lines, each mapped to the matching main account and financial dimension. Worker profiles and contract changes from Deel HRIS keep the cost-center and dimension references on those postings current, so labor spend lands on valid accounts. Reference data such as Deel teams and cost centers is aligned against Dynamics financial dimensions before any invoice is written. Posted general journal entries are read-only in Dynamics and Deel invoices are read on the connector side, so ml-connector does not write financial entries back into Deel.
How ml-connector handles it
ml-connector stores both credential sets encrypted. For Dynamics it requests a Bearer token from the Entra ID token endpoint with the client id, client secret, and the environment scope, then refreshes it when an OData call returns 401, since client-credentials tokens expire after about an hour and carry no refresh token. It accepts the full tenant host per customer because Dynamics publishes no shared base URL. For Deel it sends the Bearer organization token on every request. Deel webhooks for contract.created and hris.employee events are verified by recomputing the HMAC-SHA256 over the literal string POST plus the raw request body before anything is processed. Because Dynamics business events carry only a ControlNumber and stub fields, ml-connector treats Deel as the trigger and reads the full invoice from Deel, then writes to Dynamics. Vendor invoice headers are created before their lines, and only before posting, since posted invoices are read-only over OData. Financial dimensions are passed as the formatted display string Dynamics expects, so the dimension format must be configured first. Dynamics returns HTTP 429 with a Retry-After header under service protection limits and Deel returns 429 with Retry-After when throttled, so ml-connector backs off and retries on both sides. Every write to Dynamics uses the natural key plus an idempotency guard so a replayed Deel event does not create a duplicate invoice.
A real-world example
A mid-sized software company of around three hundred people runs Microsoft Dynamics 365 F&O for finance and uses Deel to engage contractors and run payroll across a dozen countries. Before the integration, the accounting team exported contractor invoices and the monthly Deel billing statement, then re-keyed each line into Dynamics as a vendor invoice and guessed at the cost center for every engineer. Month-end close stalled while they reconciled Deel charges against the labor accounts in the ledger. With Microsoft Dynamics 365 F&O and Deel connected, each new Deel contractor invoice posts into Dynamics automatically as a vendor invoice on the correct main account and financial dimension, and worker changes keep the dimension mapping current. The re-keying step is gone and close starts from labor accounts that already reconcile.
What you can do
- Post Deel contractor invoices and billing invoices into Microsoft Dynamics 365 F&O as vendor invoices or general journal lines.
- Map Deel teams and cost centers to Dynamics financial dimensions so workforce spend lands on valid accounts.
- Keep Dynamics dimension and cost references aligned with Deel hires, terminations, and contract changes from HRIS.
- Bridge the Deel Bearer organization token and the Entra ID client-credentials token, refreshing each before it expires.
- Verify Deel HMAC-SHA256 webhooks to react to new invoices and workers, with scheduled OData polling as a backfill.
Questions
- Which direction does data move between Microsoft Dynamics 365 F&O and Deel?
- The main flow is Deel into Dynamics. Contractor invoices, billing invoices, and worker cost data move from Deel into Dynamics as vendor invoices, journal lines, and dimension references. Posted Dynamics journal entries are read-only over OData and Deel invoices are read on the connector side, so ml-connector does not write financial entries back into Deel.
- Can Deel send purchase orders or a vendor master into Dynamics?
- No. Deel is an HRIS and payroll platform with no purchase order, vendor master, or item entities. What it provides is contractor and billing invoice data, worker profiles, and payroll cost detail, and ml-connector maps that into Dynamics as vendor invoices and general journal lines against the right main accounts and financial dimensions.
- How does the integration handle webhooks and the Dynamics tenant-specific URL?
- ml-connector accepts the full Dynamics environment host per customer because there is no shared base URL, and authenticates with the Entra ID client-credentials flow. Deel webhooks are verified by recomputing the HMAC-SHA256 signature over the raw request body before processing, and because Dynamics business events carry only identifiers, the connector reads the full invoice from Deel and runs a scheduled OData poll to backfill anything a webhook missed.
Related integrations
More Microsoft Dynamics 365 F&O integrations
Other systems that connect to Deel
Connect Microsoft Dynamics 365 F&O and Deel
Free to use. Add your credentials, ping your real systems, and see if we fit.
Get started