ADP iHCM logoSAP Concur logo

Payroll to finance

ADP iHCM to SAP Concur integration: out-of-pocket expenses from Concur reimbursed through the ADP iHCM NL payroll run

With an integration between ADP iHCM and SAP Concur, expenses an employee paid out of pocket automatically come from Concur into ADP iHCM NL as a variable pay field, in the current period of their paygroup. After the payroll run KoppelHet reports the payment back to Concur, so the report shows as paid there.

What the integration does

Organisations that have travel and expenses claimed in SAP Concur and Dutch payroll at ADP iHCM want to reimburse out-of-pocket amounts with the salary. Without an integration a list goes from finance to payroll every period, and the employee never sees in Concur that their report has been paid.

  1. The employee claims in Concur and approval happens there.
  2. KoppelHet fetches the queued reports, records them in its own log and acknowledges receipt to Concur.
  3. Only lines the employee paid personally go to ADP iHCM NL, summed per expense type and per employee.
  4. If ADP accepts the batch, KoppelHet sends a successful posting confirmation to Concur; otherwise an error with ADP's message.
  5. After the payroll run KoppelHet reports the payment to Concur, with the payment date.
ADP iHCM → KoppelHet → SAP ConcurSOURCEADP iHCMTARGETSAP ConcurKoppelHetmapping · logging · monitoringADP iHCM → KoppelHet → SAP ConcurSOURCEADP iHCMTARGETSAP ConcurKoppelHetmapping · logging · monitoring
Out: Expense documents with lines and payment type from Concur · Employee and paygroup in ADP iHCM · Variable pay field per expense type · Posting and payment confirmation back to Concur
Back: Posting confirmation after acceptance by ADP · Payment confirmation after the payroll run

What to watch for with ADP iHCM and SAP Concur

  • Concur takes a report out of the queue as soon as receipt is acknowledged, and advises doing that straight after retrieval. KoppelHet first writes the report to its own log. If ADP then rejects the batch, the report is not lost, even though it is no longer in the Concur queue.
  • Concur gives the payment type per expense, and per journal line whether the employee or the company is the payer. A hotel on the corporate card has already been paid by the employer. KoppelHet only sends expenses the employee paid personally to ADP.
  • Through the Pay Data Input API ADP iHCM NL only accepts variable fields, and only fields enabled for the paygroup. An expense type from Concur without a V field in a paygroup becomes an alert to payroll, not an amount on an arbitrary field.
  • If the integration does not send exactly the paygroup's period dates, ADP accepts the amounts without linking them to a payroll run. KoppelHet reads the period per paygroup, because a monthly and a four-weekly group in the same environment have different dates.
  • A single wrong line makes the whole delivery fail at ADP. KoppelHet therefore builds one batch per paygroup and reports errors back per Concur report, so only the reports with the problem show as failed in Concur.
  • Besides the posting confirmation, Concur has a separate payment confirmation for expense reports; with the right status code the report shows as paid. KoppelHet only sends it after the ADP payroll run, so the employee sees in Concur when the money is really in their account.
  • A correction on an amount already at ADP goes as a difference, or as a replacement of the batch as long as ADP has not processed it. That is why KoppelHet stores, per Concur report, the ADP batch ID the amount went in.

How we build and run it

  • The integration runs on the KoppelHet platform, hosted in a data centre in the EU.
  • Every sync and every error is visible in the functional log; on an error your administrator is notified.
  • A change that cannot go through is not half-applied but queued for another attempt.
  • KoppelHet is ISO 27001 certified. Data travels encrypted and stays on the platform no longer than needed.
  • After go-live we manage the integration and adjust it when your process changes.
  • The integration fits next to your existing integration layer. Only the fields in the design are transferred; the platform keeps no register of its own.

Implementation, architecture and compliance

Implementation and price

This is not an app you switch on. We build the integration for your organisation on our platform, with building blocks we reuse on every project. So it is custom work that does not start from scratch.

A consultant prepares the intake and analyses both systems. We then record the mapping and exceptions field by field, test in the test or acceptance environment and go live at a moment you choose. Costs are a one-off amount for the setup and a monthly amount for platform, monitoring and support.

Price indication · Complex

Leave your work email and you see the price indication right away.

We only use your address to follow up on your question about this integration.

Frequently asked questions

Do corporate card expenses also go to ADP?

No. The employer has already paid those. Only what the employee paid personally comes back through the payroll run.

Does the employee see in Concur that payment has been made?

Yes. After the payroll run KoppelHet sends a payment confirmation, and Concur then marks the report as paid.

Does the integration also create Concur users from ADP?

Not in the first version. Concur has its own API for that, so it can be added later as an extension.

Technical details for IT

For those who want to know how it works under the hood: APIs, fields and sources used.

  • SAP Concur through the Financial Integration Service v4: GET /financialintegration/fi/v4/companies/transactiontypes/expense/transactions (docStatus READY, 25 per page by default), POST .../acknowledgements, POST .../postingconfirmations (overallPostingStatusCode, systemMessages) and POST .../paymentconfirmations (clearingReference with a unique paymentRef, clearingDate, processingStatusCode CP). Scope FISVC with a company-level access token. Read JSON fields by name; the order is not fixed.
  • ADP iHCM NL through the Pay Data Input API: pay-data-input.add (batch ID in events/data/output/payDataInput/itemId) and pay-data-input.replace, with payrollGroupCode, payeeID, payPeriodStartDate, payPeriodEndDate, earningCode, rate and earnedPayPeriodStartDate. Paygroup and payrollfilenumber through the Worker Management API; both canonicals in the Consumer Application Registry.

Which fields are transferred

The key fields. The full mapping is agreed per customer.

Field in ADP iHCMField in SAP ConcurNotes
employee.employeeIdpayeeIDEmployee number in iHCM (payrollfilenumber)
Paygroup uit de ADP worker-APIpayrollGroupCode
Soort uitgaveearningCodeLookup table per paygroup to a V field
entryApprovedAmount, alleen bij betaling door de medewerkerrateSummed per V field and employee
Lopende periode van de paygrouppayPeriodStartDate en payPeriodEndDate
Uitkomst van de aanleveringoverallPostingStatusCodesuccess or error, with systemMessages
Betaaldatum van de salarisrunclearingDate in de betaalbevestiging

Related

Which systems do you want to connect?

Tell us which systems you use and what should happen automatically. Together we define the smallest working solution, with a clear design and a quote before building.