ml-connector
SAP Business OneSAP Concur

SAP Business One and SAP Concur integration

SAP Business One runs on-premise finance and procurement. SAP Concur handles travel and expense management in the cloud. When you connect them, expense reports and invoice payment requests from Concur flow into SAP Business One as journal entries, allocated to the correct vendors and cost centers from your chart of accounts. ml-connector manages the very different authentication schemes and regional Concur endpoints so the data flows cleanly on a schedule you set.

How SAP Business One works

SAP Business One exposes vendors, invoices, purchase orders, journal entries, chart of accounts, cost dimensions, and items through OData v4 REST at a customer-specific Service Layer URL (default ports 50000 or 50001). Authentication uses a session token from a Login endpoint that expires after 30 minutes of inactivity, with OAuth 2.0 available in version 10.0 FP 2305 and later if configured. Webhooks are supported from version 10.0 FP 2602 onward if server-side activation is in place, but polling is the default and most common approach.

How SAP Concur works

SAP Concur publishes REST APIs for expense reports, payment request invoices, purchase orders, and employees. Every call requires OAuth 2.0 client credentials configured at app registration time, with an access token lifetime of one hour and refresh tokens valid for six months. Concur's infrastructure spans three datacenters with geolocation determined by the OAuth token response, so all API calls must route to the correct regional base URL. The Event Subscription Service supports webhooks with at-least-once delivery and mutual TLS, limited to five active subscriptions per app.

What moves between them

Concur expense reports and payment request invoices flow into SAP Business One on a scheduled basis. ml-connector reads Concur financial integration documents tagged as expense or invoice, maps them to vendors and cost centers in the SAP Business One chart of accounts, and posts them as journal entries. The sync is one-way from Concur into SAP Business One, with no writes back to Concur, ensuring that the cloud expense system remains the source of truth for report status and approval chains.

How ml-connector handles it

ml-connector stores Concur OAuth credentials and refreshes the access token when a call returns 401; it detects the datacenter from the initial token response and routes all subsequent calls to the correct regional endpoint. On the SAP Business One side, it maintains a persistent session to avoid the five-second cold-start cost of each login, and checks for duplicate journal entries by DocNum before retrying a failed post. Expense amounts are mapped to the matching vendor in SAP Business One, and cost center fields become Dimension allocations on the journal entry. Because SAP Business One offers webhooks only in recent versions and many deployments run older on-premise instances, ml-connector defaults to polling the Concur API on a schedule aligned to your expense approval cycle. Session tokens expire after 30 minutes of inactivity, so ml-connector reuses authenticated sessions and re-authenticates only when necessary. The integration also handles Concur's regional datacenter requirements and respects SAP Business One's OData page-size defaults and session timeout behavior.

A real-world example

A mid-sized consulting firm runs SAP Business One on-premise for accounting and vendor management, and uses SAP Concur for employee travel and expense reports. Before the integration, finance staff manually exported approved expense reports from Concur each week and created corresponding entries in the general ledger, then matched vendor names and cost allocations by hand. With the two systems connected, each approved expense report automatically becomes a journal entry in SAP Business One, mapped to the correct vendor and cost center, so the books are reconciled instantly. Month-end close is faster because the expense accounts already tie out.

What you can do

  • Read approved Concur expense reports and payment request invoices and post them as journal entries in SAP Business One's general ledger.
  • Map Concur expense and invoice vendor records to SAP Business One vendors and cost centers automatically.
  • Maintain persistent sessions on SAP Business One to avoid authentication overhead on every request.
  • Rotate Concur OAuth access tokens automatically and route API calls to the correct regional Concur datacenter based on token geolocation.
  • Poll Concur on a flexible schedule aligned to your approval cycle, with duplicate detection and audit trails on every journal entry.

Questions

How does ml-connector handle SAP Concur's multi-region endpoints?
ml-connector detects the customer's datacenter from the OAuth token response and routes all subsequent API calls to the matching regional base URL (US, EMEA, or China). This ensures compliance with data residency requirements and avoids cross-region latency penalties.
Why does the integration poll instead of using Concur webhooks?
SAP Business One on-premise instances often run older versions without webhook support, and even recent versions require administrator activation. ml-connector defaults to polling the Concur API on a schedule you control, avoiding the need for server-side SAP Business One configuration changes.
How are expenses matched to vendors and cost centers in SAP Business One?
ml-connector reads the vendor name and cost center data from each Concur expense report, looks up the matching vendor in SAP Business One's BusinessPartners list, and allocates the journal entry to the correct Dimension record. If a vendor or cost center is missing, the record is marked for review and the integration logs the mismatch in the audit trail.

Related integrations

Connect SAP Business One and SAP Concur

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

Get started