Introduction
The SAP Concur v4 Bidirectional Integration connects your SAP Concur expense workflows to VAT4U using Concur's modern v4 API and an External Validator workflow step. When a report status changes Concur notifies VAT4U, and when the report reaches the External Validator step; VAT4U retrieves the report and its expenses, runs them through its OCR and Smart AI pipeline to recover VAT and check compliance, and then writes the results back onto the matching Concur expense entries before the report is approved and continues through your Concur workflow.
Why organizations use it
Automated VAT recovery on travel and expense spend, without re-keying data between systems.
Compliance visibility written directly onto the Concur entry, so downstream reviewers act on the same record they already work in.
Real-time processing triggered by the normal Concur submission workflow - no scheduled exports or manual file handling.
A single source of truth per data domain: Concur owns the expense facts; VAT4U owns the VAT and compliance results.
How VAT4U and SAP Concur interact
An employee submits an expense report in Concur.
The report reaches the External Validator workflow step bound to the VAT4U app.
Concur emits an event; VAT4U retrieves the report and expenses via the v4 API.
VAT4U imports and processes each expense (OCR, VAT calculation, compliance).
A VAT4U user pushes the results back to Concur - per expense or in a batch.
Once every expense is pushed, a user approves the report, which advances it past the External Validator step.
Benefits of bidirectional synchronization
Concur entries carry VAT4U's recoverable-VAT and compliance results.
VAT4U holds a complete, reconcilable VAT recovery dataset.
The hand-off is explicit and auditable: every push and approval is a deliberate user action, recorded per expense and per report.
Integration Overview
At a high level, a report flows through the following stages:
Two facts shape the entire workflow:
Processing is event-driven. Nothing happens until Concur signals that a report has reached the External Validator step.
Outbound actions are manual and granular. Push-back happens per expense, can be repeated while the report is open, and report approval is always a separate, explicit user action - never automatic.
Step 1 – Activate SAP Concur v4 Bidirectional Integration
Configuration steps
On the page Company Settings → Integrations → Concur integration locate the Activate Bidirectional Integration button and click on it. In opened modal configure:
Workflow step that triggers VAT4U - the step code of the External Validator step that hands reports to VAT4U.
Entity field - the field in the Concur report payload that identifies the legal entity (for example
OrgUnit1,Custom1,PolicyID).
Choose the activation level.
Leave Pushback data OFF for Inbound (Receive Only).
Toggle Pushback data ON for Full Bidirectional, then select which results to push back and map each to a Concur field.
Map Expense Types. Open Categories Mapping and assign a VAT4U category to every Concur Expense Type in use.
Map Legal Entities. Open Companies Mapping and assign a VAT4U company to every Concur Legal Entity that will appear in expense reports.
Expected outcome
The integration page shows a green Active status with the activation date. From this point on, any report that reaches the External Validator step is automatically retrieved into VAT4U.
System behavior after activation
VAT4U begins listening for events; no historical reports are back-filled - only reports that reach the step after activation are processed.
Expense Type Mapping and Legal Entities Mapping changes apply to reports ingested after the mapping is saved; already-ingested expenses keep their original category until re-categorized.
Switching Pushback data ON or OFF later takes effect immediately for newly ingested reports; reports already in progress are not retroactively pushed.
Step 2 – Create and Submit an Expense Report in SAP Concur
This step takes place entirely inside SAP Concur and is performed by the employee or their delegate. VAT4U is not involved until the report reaches the External Validator step.
Creating a report
The employee creates a new expense report, giving it a name and the report-header fields your Concur configuration requires (for example, business purpose, cost object / OrgUnit, and the entity field VAT4U is configured to read).
Adding expenses
The employee adds one or more expense entries to the report. Each entry has an Expense Type, amount, currency, transaction date, vendor/location, and (where applicable) an attached receipt image.
Completing required fields
Concur enforces its own required-field and audit rules. The employee resolves any exceptions Concur raises so the report can be submitted.
Submitting the report
The employee clicks Submit Report. The report enters your Concur approval workflow and progresses through its configured steps until it reaches the External Validator step bound to VAT4U.
What Happens Behind the Scenes
Report status changes. On submission, Concur advances the report through its workflow. When it reaches the External Validator step, the report becomes available to VAT4U.
Submission event generation. Reaching the External Validator step is the trigger Concur uses to emit the event VAT4U listens for.
Data availability through Concur APIs. Once the report is at the step, its header, entries, and receipts are retrievable through the Concur v4 API using the report's identifier - which is exactly what VAT4U does next.
VAT4U Expense Processing and Manual Pushback within the Report Approval Flow
Step 3 – SAP Concur Generates an Event
Event creation after submission
When the report reaches the External Validator step, Concur generates an event that signals "a report is ready for external validation." This is the hand-off point between the two systems.
Event payload concept
The event is a lightweight notification, not the full report. It carries the identifiers and context VAT4U needs to act - most importantly the report identifier and the workflow-step context - rather than the complete expense data. VAT4U treats the event as a trigger and then retrieves the authoritative data from the v4 API (Step 4). This keeps the notification small and ensures VAT4U always works from the current state of the report.
Why VAT4U listens for these events
Event-driven delivery means VAT4U processes each report the moment it becomes relevant, with no polling and no scheduled exports. It also guarantees VAT4U only touches reports that have explicitly reached the External Validator step - reports in workflows without the step are never picked up.
Event Flow
The user submits the report in Concur.
The report advances to the External Validator step.
SAP Concur generates an event and delivers it to VAT4U.
VAT4U records the event and begins retrieval and processing.
Step 4 – VAT4U Retrieves Reports and Expenses
Receiving the event
VAT4U accepts the event, validates it against the configured workflow-step code, and resolves which VAT4U company and legal entity the report belongs to (using the configured legal entity field). It then queues the retrieval work so the event can be acknowledged quickly and processing can proceed asynchronously.
Calling Concur APIs
Using the report identifier from the event, VAT4U calls the Concur v4 API to fetch:
Report-level data - header fields, employee, cost objects, currency, totals, and the workflow context.
Expense-level data - each expense entry with its Expense Type, amounts, currency, transaction date, vendor/location, and entry identifiers.
Receipt images - for each entry that has one, retrieved through the Receipts API.
Report-level vs. expense-level data
The integration deliberately tracks both levels:
The report is the unit of approval. Its overall state (importing, partially pushed, all pushed, approved) drives the approval workflow.
The expense is the unit of processing and push-back. Each expense is imported, processed, and pushed independently, and carries its own status and identifiers.
Required identifiers
VAT4U stores the Concur report ID and, for each expense, the Concur expense / report-entry ID and the receipt/image reference. These identifiers are what make precise, per-entry write-back possible later - VAT4U updates exactly the entry it imported, not a guessed match.
Step 5 – Import Expenses into VAT4U
Expense import process
For each retrieved expense, VAT4U creates a corresponding invoice/expense record and links it to the source Concur report and entry.
Mapping fields
During import, VAT4U maps the Concur Expense Type to the configured VAT4U category, and maps the report's entity field to the correct VAT4U legal entity. Amounts, currency, transaction date, and vendor/location are carried onto the VAT4U record.
Validation
If the Concur Legal Entity has no VAT4U Legal Entity (company) mapping, the expense cannot be imported automatically and is marked Failed to import (blocked). This state is recoverable.
Error handling
Failed to import - fix the Concur Legal Entity → VAT4U Legal Entity (company) mapping, then retry. The retry re-fetches the report/expense from Concur and re-runs the import.
Retries are available per expense and per report from the Concur Dashboard.
Imported Data
The amount, currency, type, date, vendor, and receipt are Concur-owned facts; the tax-related fields are produced by VAT4U in the next step.
Step 6 – Process Expenses in VAT4U
After import, each expense runs through VAT4U's processing pipeline:
OCR. The receipt image is read to extract invoice metadata - vendor name, vendor VAT ID, invoice number, invoice date, and amounts.
VAT analysis and recovery calculation. VAT4U derives the net/gross/VAT split per VAT rate and computes the recoverable (potential cashback) VAT amount based on the country of refund and the category rules.
Compliance checks. VAT4U evaluates the expense against compliance rules and assigns a compliance status and, where applicable, non-compliance reasons.
User review. A reviewer can open the expense in Data Entry, verify or correct the extracted fields, and confirm the result.
Why processing occurs at the expense level
VAT recovery and compliance are inherently per-expense determinations: each entry has its own category, country, amounts, and receipt, and therefore its own recoverable VAT and compliance outcome. Processing (and later push-back) at the expense level lets each entry succeed, fail, be corrected, and be pushed independently, without holding up the rest of the report.
Step 7 – Push Expense Data Back to SAP Concur
This is the outbound half of the integration. Push-back is deliberately user-triggered - VAT4U never sends data to Concur on its own. A user decides when each expense is pushed; approving the report is a separate action (Step 8).
What data is returned
Under Pushback data you choose which results to send and map each to a Concur field. Only fields that are enabled, mapped, and populated are sent - empty fields are omitted from the payload rather than written blank.
Push-back field | Source |
VAT amount | VAT4U VAT calculation |
Potential cashback amount | VAT4U (recoverable / deductible VAT) |
Compliance status | VAT4U compliance check |
Non-compliance reasons | VAT4U compliance check |
Single-expense push (Data Entry)
Open the expense in Data Entry and review/correct the extracted fields.
Click Validate & Push to Concur (the button reads Push to Concur again if the expense was pushed before).
A Push data to Concur confirmation window lists exactly which fields will be sent and flags any that are still empty (they will be skipped). Confirm with Push to Concur (or Push available data when some fields are missing).
Batch push (Manage Expenses)
Open Manage Expenses, filter or select the Concur-sourced expenses, and choose Batch actions → Push to Concur.
The action runs against your current scope - the rows you selected or every expense matching the active filters.
The results summary reports how many expenses were Queued, Skipped (not Concur-sourced, already pushed, or no edit permission), and Rejected (could not be queued - e.g., not yet imported), with the per-expense reasons.
Expense Processing Lifecycle
Every expense moves through the same lifecycle, and updates are performed per expense:
Imported - created in VAT4U from Concur.
Processed - OCR, VAT calculation, and compliance complete; push-back fields populated.
Pushback completed - the enabled, populated fields have been written onto the matching Concur entry.
The parent report moves through: imported → Partially pushed → All pushed - pending approval → Approved (or Approve failed, which is retryable).
What Happens Behind the Scenes
Concur API used. Each push issues
PATCH /expense/v4/reports/{reportId}/entries/{entryId}with only the enabled, populated push-back fields. VAT4U updates exactly the entry it imported, identified by the stored Concur expense / report-entry ID.Expense updates are independent. Each expense is pushed on its own. A failure on one entry does not affect the others.
Asynchronous and resilient. Pushes run as background jobs, so a slow or failing Concur call never errors the user's action. A push that Concur rejects leaves the expense in Push failed with the reason recorded; transient failures (network, 5xx, rate limits) are retried with exponential backoff. Failed pushes can be retried from Data Entry, the batch action, or the dashboard.
Repeatable, overwriting updates. An expense can be pushed again while its report is still open; each push overwrites the previous values on the Concur entry. This lets you push early with partial data and complete it later, or correct a value before the report is approved.
Audit trail. VAT4U records every status change per expense and per report (imported, pushed, push failed, approved, and so on), and which fields were sent on each push, so the synchronization history is reconstructable.
Step 8 – Report Approval After All Expenses Are Updated
Why report approval occurs only after all expenses are updated
Approval advances the report past the External Validator step, which closes the push-back window. Approving before every expense is pushed would strand the un-pushed expenses (their data could no longer be written). VAT4U therefore surfaces the report for approval only once all of its expenses have been pushed, and presents approval as a distinct, explicit action.
Validation checks
The report has reached All pushed - pending approval (every in-scope expense is in Pushed).
The connection is healthy and the report is still at the External Validator step.
Completion criteria
When every expense in a report has been pushed, the report appears on the Concur Dashboard → Pending pushback list as All pushed - pending approval, with an Approve report button.
Approval workflow
Clicking Approve report issues the Concur Approve workflow action against the External Validator step:
POST /expense/v4/reports/{reportId}/workflow-actions { "action": "Approve" }This runs as a background job. On success, the report becomes Approved in VAT4U and advances past the External Validator step in Concur. If the call fails, the report shows Approve failed and can be retried from the same list.
Important: VAT4U never approves a report on its own and never rejects a report. Approval is always a deliberate user action; rejection and any downstream handling of non-compliant expenses remain with your Concur reviewers, who act on the compliance data VAT4U wrote onto the entries.
Final Status
In SAP Concur:
The report is approved and continues through the remaining workflow steps.
Each expense entry carries the pushed VAT4U data (VAT amount, potential cashback, compliance status, non-compliance reasons) in the mapped fields.
In VAT4U:
Each expense is Pushed; the report is Approved.
Processing and synchronization are complete; the report drops off the Pending pushback work list.
The records remain as the reconcilable VAT recovery and compliance dataset. After approval, the push window is closed - later changes made directly in Concur are not tracked by VAT4U.

