ml-connector
SAP Business OneDeel

SAP Business One and Deel integration

SAP Business One runs financial operations and supply chain for small-to-midsize manufacturers and distributors. Deel runs global payroll and HRIS. Connecting the two keeps your workforce and your general ledger aligned. Payroll cost journals from Deel post into SAP Business One's general ledger automatically after each pay cycle, allocated to the correct profit centers and departments, without re-keying. Worker changes in Deel keep SAP Business One headcount in sync.

How SAP Business One works

SAP Business One exposes invoices, purchase orders, general ledger accounts, profit centers, dimensions, items, business partners, incoming and outgoing payments, and journal entries through OData v4 REST at a customer-specific Service Layer endpoint (https://<customer-server>:<port>/b1s/v2/). Authentication uses session tokens via a 30-minute inactivity timeout or OAuth 2.0 where configured. Each customer provides their own base URL since there is no global shared endpoint. Webhooks are supported in v10.0 FP 2602+ but require server-side activation and manual SAP admin setup, so polling with UpdateDate filters is the default pattern.

How Deel works

Deel exposes contracts, employees, invoices, worker invoices, payslips, payroll inputs, and onboarding data through REST JSON over HTTPS at https://api.letsdeel.com/rest/v2 (production) or a sandbox URL. Authentication uses API tokens (organization or personal scopes) or OAuth2 with 30-day access token expiry and 90-day single-use refresh tokens. Both token types and OAuth2 calls require API token or Authorization header and x-client-id header. Idempotency-Key headers (UUID v4, 24-hour TTL) are supported on POST and PATCH to prevent duplicates. Webhooks are available for real-time contract, employee, and termination events with HMAC-SHA256 signature verification. Deel is HRIS and payroll only; it does not expose vendor masters, purchase orders, or items.

What moves between them

The main flow is Deel into SAP Business One. After each payroll run, ml-connector reads Deel payroll invoices and worker cost data, then posts labor cost journals into SAP Business One's general ledger, mapped to the matching SAP Business One profit centers and departments. Worker records, onboarding status, and terminations flow the same direction so SAP Business One headcount reflects Deel employees. Employee dimensions and cost allocations are aligned in both directions so payroll expenses land on valid SAP Business One accounts. Deel invoices and payroll data are read-mostly, so ml-connector primarily reads from Deel to keep SAP Business One current.

How ml-connector handles it

ml-connector stores both credential sets encrypted and refreshes Deel OAuth2 tokens when they reach 25 days of age, before expiry, to prevent outages. For SAP Business One, it accepts the full customer-specific Service Layer base URL and authenticates using session tokens, reusing the same session to avoid the cold-start cost and the 30-minute timeout. It maps Deel worker identities and cost centers to SAP Business One dimensions and profit centers first, so every payroll journal line references a GL account and profit center that already exists. Because SAP Business One webhooks require manual admin activation and most deployments run polling, ml-connector polls Deel (which supports real-time webhooks) and SAP Business One on a schedule tied to your payroll calendar. It handles OData query syntax ($expand, $filter with UpdateDate) and pagination ($top/$skip), retries on network and rate-limit errors with exponential backoff, and deduplicates using Deel's Idempotency-Key header. Every record carries a full audit trail and can be replayed if a downstream call fails.

A real-world example

A mid-sized e-commerce and logistics company runs SAP Business One for order fulfillment, procurement, and month-end close, and uses Deel for payroll across 40 contractors and employees in five countries. Before the integration, the finance team received payroll cost reports from Deel and manually re-entered labor expense lines into SAP Business One's general ledger each pay period, a process that took two hours and often introduced rounding or cost center allocation errors. With SAP Business One and Deel connected, each payroll cycle's labor costs flow directly into the general ledger with the correct cost center for each contractor's assignment, the monthly close process is compressed by hours, and the ledger is always reconciled with the source data.

What you can do

  • Post Deel payroll cost journals into SAP Business One's general ledger after each pay cycle, allocated to the correct profit centers.
  • Keep SAP Business One headcount and employee dimensions aligned with Deel contracts, onboarding, terminations, and status changes.
  • Map Deel workers and cost allocations to SAP Business One business partners, dimensions, and profit centers so labor expenses land on valid accounts.
  • Authenticate Deel with API tokens or OAuth2 refresh lifecycle, and SAP Business One with session tokens reused across requests to minimize cold-start overhead.
  • Poll both systems on a schedule tied to your payroll calendar, with Idempotency-Key deduplication, exponential backoff retries, and a full audit trail on every record.

Questions

Which direction does data move between SAP Business One and Deel?
The main flow is Deel into SAP Business One. Payroll cost journals, worker records, and employee changes move from Deel into SAP Business One's general ledger and dimension tables. Deel invoices and payslip data are read by ml-connector to supply cost allocations and employee context. SAP Business One profit centers and accounts are read to validate that payroll expenses map to valid dimensions before posting.
How does ml-connector handle SAP Business One's session token timeout and customer-specific URLs?
ml-connector accepts the full Service Layer base URL per customer and reuses session tokens across multiple requests within the 30-minute inactivity window to avoid the cold-start penalty. When a session expires, it logs in again using the stored credentials and continues. This pattern is essential because each SAP Business One customer runs their own Service Layer instance; there is no shared global endpoint.
What happens if a payroll run arrives before SAP Business One profit centers are set up?
ml-connector maps Deel cost centers to SAP Business One profit centers before posting any journal entries. If a profit center or GL account does not exist, ml-connector marks the record for review, surfaces the mapping gap in the audit trail, and pauses the flow for that worker until the dimension is created. This prevents incorrect postings and keeps the ledger clean.

Related integrations

Connect SAP Business One and Deel

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

Get started