Ask a simple sounding question. Are we paying more than we agreed, and if so with whom. Answering it requires the order to know what was agreed, the receipt to know what arrived, the voucher to know what was charged, and the supplier record to know which arrangement applies.

Four sources, one question, and in most organisations a week of somebody's time. The data was never the obstacle.

Order Intent
Receipt Reality
Invoice Charged
Supplier Context
Live Join
No Warehouse
Sourced Findings

What Each Source Knows, and What It Does Not

Being precise about this explains why single source procurement reporting is so consistently unsatisfying. Each one is authoritative about one thing and silent about the rest.

Purchase order: What you intended to buy, from whom, at what price and by when. Says nothing about what happened.
Receipt: What physically arrived and when. The only honest source for delivery performance and the basis of accrual.
Voucher: What the supplier charged. Frequently differs from both the order and the receipt.
Supplier record: Who they are, what arrangement applies, and the accumulated relationship history.
ChatFin connects to JD Edwards and your wider ERP stack as the AI layer on top

The Questions That Need the Join

These are the questions procurement and finance both want answered and neither gets quickly, because each spans several sources.

Are we paying what we agreed: Order price against invoiced price, by supplier and item, aggregated rather than case by case.
Is this supplier reliable: Promised date against actual receipt, weighted by revision history.
What is our accrual exposure: Received and not yet vouchered, valued and aged.
Where is spend fragmenting: Total activity with one supplier across companies, sites and categories.

The Warehouse Route and Its Costs

The conventional answer is to copy all four sources into a warehouse and analyse there. It works, it is well understood, and it carries three costs that are easy to underestimate at the start.

Latency means every answer is as old as the last load, which is fine for trend analysis and wrong for anything operational. A second copy of your commercial data needs its own security and access design. And the pipeline becomes a permanent maintenance obligation that breaks when a field changes.

Latency: Answers reflect the last load, which is inadequate for an operational question about an order today.
Second perimeter: Supplier and pricing data duplicated outside the ERP, requiring its own access controls.
Maintenance: Pipelines break when structures change, usually silently and usually at the worst moment.
No path to action: You can analyse but not execute, so every finding still requires someone to go and do it in the ERP.
Traditional tooling compared with ChatFin

Joining Live Instead

Reading the four sources live through supported interfaces removes each of those costs. The data reflects the position now, no second copy exists, nothing has to be maintained, and the same connection that read the data can execute the resulting action.

The trade off is that heavy analytical passes over long histories should still go to a replica, because running them against production is inconsiderate. The practical answer is to split by purpose.

Operational reads live: Anything someone will act on today, including open orders and current exposure.
Analytical passes on a replica: Multi year trend work where a few hours of latency is irrelevant.
Aggregate at source: Sums and groupings computed by the query rather than pulled and processed.
State the source: Every answer says whether it came from live or replica and when it was read.

Getting the Join Right

The join itself has traps that produce confidently wrong numbers, and they are the reason spreadsheet based attempts so often disagree with each other.

The receiver file distinguishes receipt records from voucher records by match type, so counting without filtering double counts immediately. Orders can be partially received and partially vouchered across periods. And one invoice can span several orders, so a naive join multiplies rows.

Match type filtering: Receipts and vouchers live in the same structure and must be separated.
Partial quantities: Orders received and vouchered in instalments across periods.
Many to many: One invoice against several orders and one order across several invoices.
Cancelled and closed lines: Excluded correctly, or open commitment is overstated.
ChatFin compared with generic AI agents

What Becomes Possible

With the four joined and current, procurement analysis stops being an annual project and becomes an ordinary question anybody can ask.

The forward view is the part most teams have never had: what is committed, what is arriving, what will be invoiced, and what that means for cash and for the accrual, available on any day.

Full procure to pay view: One line from requisition through order, receipt, voucher and payment.
Forward commitment: Ordered and not received, received and not vouchered, quantified continuously.
Supplier scorecard from evidence: Delivery, price and accuracy from transactions rather than from a survey.
Exception detection: Anything that broke the expected sequence, surfaced the day it happened.

"The order is intent. The receipt is reality. The invoice is what you were charged. Answering anything useful needs all three."

Unified finance and operations view built on the existing ERP

How ChatFin Handles It

ChatFin reads purchase order, receipt, voucher and supplier data live from JD Edwards through supported interfaces, handles the match type and partial quantity traps correctly, and returns the specific lines behind every figure.

Because the same connection can execute, a finding does not stop at the report. Where the answer is a chase, a correction or a draft order, the agent assembles it and routes it for approval.

ChatFin platform integrations across ERP systems

Join the Four Sources, Live

ChatFin combines JD Edwards purchase order, receipt, voucher and supplier data without an extract, handles the join correctly, returns the underlying lines with every finding, and can carry a finding into a drafted action.

The insight was always in the join. That is why nobody had time to produce it.

Book a Demo

Frequently Asked Questions

Why does procurement analysis need all four data sources?

Because each is authoritative about one thing and silent about the rest. The purchase order records what you intended to buy and at what price. The receipt records what physically arrived and when, which is the only honest basis for delivery performance and accrual. The voucher records what you were charged, which often differs from both. The supplier record supplies the arrangement and relationship context.

Should we build a warehouse for this?

Only for heavy multi year trend work. Copying all four sources out adds latency so every answer is as old as the last load, creates a second copy of commercial data needing its own access controls, and becomes a pipeline that breaks when structures change. It also leaves you unable to act on findings. Split by purpose: operational questions read live, long history analysis runs on a replica.

What makes the join technically tricky?

Three traps that produce confidently wrong numbers. Receipt records and voucher records share the same receiver structure and are distinguished by match type, so counting without filtering double counts. Orders are frequently received and vouchered in instalments across periods. And one invoice can span several orders while one order can span several invoices, so a naive join multiplies rows.

Related Articles