Functional Overview
The Vendor Statement Reconciliation feature extends the Rossum-Coupa integration by automatically verifying vendor statements against live data in Coupa. Instead of manually checking which invoices have been paid, disputed, or received, Rossum performs an AI-driven lookup for every line item on a statement and provides a clear reconciliation status. This solution significantly reduces manual effort and improves financial accuracy by identifying discrepancies in real-time.
At a glance
Ingestion: Statements are sent to a dedicated Rossum queue alongside standard invoices and credit notes.
AI Extraction: Rossum identifies the document type as a
statementand extracts header data (Supplier, Total Amount, …) and line items (Invoice Numbers, Dates, Amounts) using AI.Coupa Matching: Every line item is matched against the Coupa instance using the Invoice Number and Supplier Number.
Status Evaluation: Rossum applies business logic to determine the "health" of each invoice and generates a human-readable Evaluation Result.
Output: A reconciled table is generated (XLSX sheet), which can be exported or emailed directly back to the supplier to resolve issues.
Extraction schema
The Supplier Statement Reconciliation feature uses a predefined document extraction schema (see subpage for details). This schema is designed based on experience with various Statement documents.
Rossum’s extraction schema is open and can be customized based on customer needs. Any schema modification must be analyzed, and appropriate adjustments to the logic must be designed and implemented.
Data Replication
A key part of the solution is the use of master data from Coupa. Rossum replicates objects from Coupa via API, using them in logic and validation.
The Supplier Statement Reconciliation logic replicates and uses data from the following Coupa objects:
Coupa object name (API endpoint) * | CIB default MDH dataset name ** | Comment |
|---|---|---|
Account Types (/account_types) | account_types_statements_test | The Account Types object in Coupa holds information about entities and is often referred to as the Chart of Accounts. Used in the Customer Matching logic. The data is replicated every 2 hours (new and updated). |
Suppliers (/suppliers) | suppliers_statements_test | Used in the Supplier matching logic. The data is replicated every day (new and updated). |
Invoices (/invoices) | invoices_test | Main dataset for the reconciliation of the invoices extracted from the Statement document. The data is replicated every 15 minutes (new and updated). |
Core Business Logic & Validation Rules
Reconciliation: Every invoice or credit note extracted from the statement is matched against invoices replicated from Coupa, and the result is used in the reconciliation logic.
Extraction Consistency: The system validates that the sum of all lines matches the Total Amount at the header level.
Balance Integrity: For every line, the logic verifies that the total amount equals the balance due plus the amount paid
(Total Amount = Balance Due + Amount Paid).Duplicate Logic: he system identifies cases where multiple records exist for the same supplier and total amount, pushes those invoice numbers into a list, and alerts the user if any are found.
Payment Scheduling: If an invoice is approved but not yet paid, the system calculates the next payment date based on the customer’s specified payment schedule.
Evaluation Result Matrix (Reconciliation logic)
Based on the Coupa match, each line is assigned one of the following statuses. The logic below represents a baseline solution that will be subject to customisation based on the customer’s needs.
Coupa Status | Paid? | Evaluation Result Message |
|---|---|---|
Not Found | N/A | The invoice was not found in our systems. Please send it again. |
Approved | False | The invoice was approved and will be paid based on standard payment schedule (see payment date column in the schema specification sub-page). |
Approved | True | The invoice was approved and paid. |
Draft | N/A | The invoice is being processed by our AP team. It will be paid soon. |
Disputed | N/A | The invoice is disputed. Dispute reasons are: {dispute_reason} |
Pending Receipt | N/A | We are waiting for the goods to be received. The invoice will be approved and paid afterwards. |
Voided | N/A | The invoice was rejected as invalid. Please ask for details in a separate email or resend the corrected invoice |