Infor CloudSuite and SAP Concur integration
Infor CloudSuite runs your manufacturing, distribution, and finance operations. SAP Concur handles travel, expenses, and vendor invoices. Connecting the two ensures expense reports and invoices flow from Concur into your Infor GL and AP system without manual re-entry. Employee reimbursements, vendor invoices processed in Concur, and purchase request obligations all post to the correct GL accounts and cost centers in Infor, keeping finance records current and audit trails intact.
What moves between them
Concur is the primary source for new financial records. Expense reports and processed invoices flow from SAP Concur into Infor CloudSuite via Concur's webhook event stream, which pushes notifications as reports are submitted or invoices are approved. ml-connector transforms each Concur financial document into Infor's GL and AP format, maps expense category codes to Infor GL accounts, and posts the entries so they appear in Infor's accounts payable and general ledger immediately. GL accounts and cost centers are validated against the Infor instance before posting to prevent misallocated entries.
How ml-connector handles it
ml-connector subscribes to Concur's public.concur.expense.report and public.concur.invoice.paymentrequest webhooks and receives push notifications as events occur. For each notification, ml-connector fetches the full financial integration document from Concur using the logged-in user's OAuth token, refreshing it as needed when the 1-hour lifetime expires. ml-connector then constructs an Infor BOD (Business Object Document) or REST payload with the GL entries and AP invoice details, transforms Concur's expense categories to Infor GL account codes, and posts the entry via ION using the Infor OAuth token, which is refreshed proactively before expiry to avoid failed writes. Concur's multi-datacenter routing is handled by extracting the geolocation from the OAuth token response on first auth and using the correct regional base URL for all subsequent calls. Infor's lack of native idempotency keys is bridged by tracking Concur transaction IDs in a dedup table, so a webhook retry does not create duplicate GL entries. Expense reports larger than typical AP invoice batches are broken into size-appropriate chunks to respect Infor's per-request payload limits.
A real-world example
A mid-sized professional services firm uses Infor CloudSuite for ERP and finance, and deploys SAP Concur for employee travel and expense claims across 150 staff. Before the integration, finance administrators exported expense reports from Concur each week, manually coded each report to the correct GL account and cost center based on the employee's department and project, and entered the totals into Infor AP. Month-end close involved reconciling Infor's AP expense accrual with Concur's approved expense register to catch data-entry errors. With Infor CloudSuite and SAP Concur connected, every approved expense report posts to Infor automatically on the same day, coded to the correct project cost center, and the AP accrual is always in sync with Concur. The manual re-keying step is eliminated, and finance closes the books with one less reconciliation task.
What you can do
- Post SAP Concur expense reports into Infor CloudSuite's general ledger and accounts payable automatically when reports are submitted or approved.
- Map Concur expense categories and cost allocations to Infor GL accounts and cost centers so expenses land on the correct financial dimension.
- Receive Concur webhook notifications for expense reports and invoices, avoiding the need for polling or scheduled batch exports.
- Handle Concur's multi-datacenter OAuth routing and Infor ION's tenant-specific endpoints, OAuth token refresh, and per-region base URLs transparently.
- Track Concur transaction IDs to prevent duplicate GL entries when webhooks are retried, with a full audit trail on every posted record.
Questions
- Does ml-connector support both Concur expense reports and invoices?
- Yes. ml-connector subscribes to both public.concur.expense.report and public.concur.invoice.paymentrequest topics on Concur's Event Subscription Service. Approved expense reports and processed invoices both trigger webhook notifications, which ml-connector transforms into Infor GL entries and AP invoices respectively. Each record type carries the full context needed to post to the correct Infor GL account and cost center.
- How does ml-connector handle Concur's multi-datacenter routing and Infor's tenant-specific base URLs?
- ml-connector extracts the geolocation from the OAuth token response on first authentication to Concur and uses the correct regional base URL (US, EMEA, or China) for all subsequent API calls to avoid routing errors. For Infor, the ION API Gateway base URL and tenant ID are provided by the customer in their .ionapi credentials file, so ml-connector accepts the full customer-specific URL and does not assume a shared base address. Both token refresh operations are handled proactively to prevent outages.
- What happens if a Concur webhook is retried and ml-connector receives the same expense report or invoice twice?
- ml-connector tracks each Concur transaction ID in a dedup table and checks every incoming event before posting to Infor. If the same transaction ID is received twice, ml-connector recognizes it as a retry, skips the duplicate post, and returns success to Concur so the retry does not turn into an audit trail of phantom entries. The audit log records the original post and the detected duplicate, so finance teams can see the full history.
Related integrations
More Infor CloudSuite integrations
Other systems that connect to SAP Concur
Connect Infor CloudSuite and SAP Concur
Free to use. Add your credentials, ping your real systems, and see if we fit.
Get started