Integration · SAP

Invoice OCR for SAP, without ABAP development.

Core Invoice reads supplier bills and posts them straight into SAP S/4HANA or ECC as parked vendor invoices — FB60 for non-PO bills, MIRO for PO-referenced ones — using the standard OData services your Basis team has likely already enabled.

Why SAP's built-in OCR isn't enough

SAP offers Document Information Extraction as part of SAP Business Technology Platform, and bundles a similar capability inside SAP Concur Invoice. Both are SAP-specific, expensive per document, and require BTP entitlements your team may not own. They also tend to miss line-item granularity on multi-line bills — exactly the case where AP keying actually costs you time.

Core Invoice extracts:

  • Supplier identity (name, tax ID, address)
  • Header metadata (number, date, currency, payment terms)
  • Every line: description, quantity, unit price, line total
  • Taxes per line and per invoice (rate, base, amount)
  • Totals (subtotal, total tax, grand total)
  • PO reference numbers — if the vendor printed them on the bill

Output is a structured JSON payload you can post into API_SUPPLIERINVOICE_PROCESS_SRV directly, or hand off to Core Invoice's connector for a one-step push.

FB60 vs MIRO — Core Invoice picks the right path

SAP separates non-PO invoices (FI module, transaction FB60) from PO-referenced ones (MM module, transaction MIRO). Posting the wrong shape is a common source of "your bill is in SAP but reconciliation is broken" pain.

Core Invoice extracts any PO number printed on the supplier bill and cross-references your open POs. If a match is found within tolerance, the bill posts as MIRO with the PO reference. If no PO matches, the bill posts as FB60 against the vendor's default G/L account.

Connection setup

  1. Provision a communication user. In SAP S/4HANA Cloud: Communication Management → Maintain Communication Users. On-prem: SU01 with the standard RFC roles.
  2. Activate the OData service. Either API_SUPPLIERINVOICE_PROCESS_SRV (S/4HANA) or the equivalent on ECC via the SAP Gateway.
  3. Generate OAuth 2.0 client credentials (S/4HANA Cloud) or use Basic auth over HTTPS (on-prem).
  4. Add the connection in Core Invoice with the tenant URL, communication system ID, client / company code, and credentials.
  5. Click Test — a successful response includes the SAP system ID and client.

No ABAP development is required for the standard path. If your company code requires custom validations beyond the OData service, Core Invoice can route through a customer-side ABAP wrapper exposed as an HTTPS endpoint.

What lands in SAP

  • Document status: parked (FB60) or saved as completed (MIRO with a 3-way match pass).
  • Document type: KR for FI vendor invoices, RE for MM gross invoice receipts. Configurable per connection.
  • Tax mapping: extracted tax rate is mapped to the SAP tax code via the connection's mapping table — a one-time configuration per company code.
  • Vendor matching: by tax ID (preferred) or by name against LFA1. Unmatched vendors are flagged in review.
  • Payment terms: extracted Net 30 / 2/10 Net 30 / etc., mapped to your SAP payment term keys.

3-way matching against open POs

For PO-referenced bills, Core Invoice reconciles each invoice line against the open EKKO / EKPO purchase order line:

  • Quantity against the goods receipt (MIGO) — default tolerance 0%
  • Unit price against the PO net price — default tolerance 5%
  • Unit of measure drift is a hard fail

Mismatches flag the document and can either warn or block based on your tolerance policy — the same tolerance keys SAP uses in OMR6.

Multi-company-code and multi-currency

Each SAP company code in Core Invoice maps to its own ERP connection so credentials, tax mappings, and default G/L accounts stay isolated. Multi-currency bills post with the document currency and a configured exchange rate type — typically M (mid rate) — sourced from TCURR.

Security and audit

OAuth client secrets and Basic auth passwords are encrypted with Fernet server-side and never logged or returned in any API response. Every push to SAP is logged with the AP user who flipped the bill to "reviewed", the timestamp, and the SAP document number returned — ready for SOX / SOC 2 evidence.

Try it on a real SAP test client

Sign in, point Core Invoice at your SAP DEV or QA tenant, and watch a vendor bill land as a parked FB60 — typically in under 15 seconds.

Start free with SAP How the OCR works