CheckingTwelve rules, R1 to R12, on every record

CYOP sits on top of the ERP you already run and checks purchase orders, receipts and invoices against each other. Every exception comes with evidence, a confidence score, the money at stake and a suggested fix.

Read-only. Nothing is written back to your ERP.

03Reading the exportMatching order, receipt and invoiceChecking twelve rulesFixed, and the mark clears

Sample findings
R2INV-65872-96 bills more than ordered on PO-10009696%722,487.72R1INV-44970-28 bills 22% above PO price on PO-10002894%129,334.17R10PO-100211 references RFQ-2025009 rev 1; current is rev 298%2,299,915.36R11PO-100088 issued 41 days after invoice INV-22739-8899%2,411,640.00R4INV-63031-302 appears to duplicate INV-53309-1482%2,486,359.92R3INV-47512-81 PO reference unknown (PO-985389)92%2,416,711.25R5INV-27987-108 terms 'Net 15' vs PO 'Net 60'97%23,632.12R8DC Hall 2: quantities drifted on 2 items93%664,000.00R6INV-39219-29 supplier is a different legal entity from the PO62%2,470,966.58R9DC Hall 5: spec changed on 1 quoted item85%441,000.00R2INV-96079-102 bills more than received on PO-10010288%959,763.18R7DC Hall 6: 2 BOM items not in RFQ-202501294%2,471,200.00R1INV-78122-300 bills 12% above PO price on PO-10030092%27,216.00

The problem

Procure-to-pay was never designed. It piled up.

  1. 01

    A merger brings a second ERP

    It never fully merges. Two AP inboxes key the same invoice. Two vendor records describe one supplier, and receiving works differently at each site.

  2. 02

    The person who knew leaves

    Why the terms were set that way, which buyer cuts the PO after the invoice arrives: none of it was written down, so nobody checks it.

  3. 03

    The fix is a one-off

    Consultants quote $2M and more to untangle one P2P setup, once. The report starts going stale the day it lands.

First-pass yield

APQC puts top-quartile teams at about 95% of invoices processed right the first time. Most teams can't say where they are. CYOP measures it on every run.

One engine

Every record, checked against the others. Not just the invoice against the PO.

An ERP checks each document on its own. CYOP reads them together, across six kinds of record and twelve rules. Hover a pair to see which rules compare them.

Which rules compare which records
ComparesRules
PO and invoiceR1 R2 R3 R5 R11 R12
Receipt and invoiceR2
Invoice and vendor masterR6
Invoice and earlier invoicesR4
RFQ and BOMR7 R8 R9
RFQ revision and POR10
The records CYOP checks against each otherPurchase orders, receipts, invoices, the vendor master, bills of materials and RFQs on one ring, with the twelve rules around them. A scanner sweeps the ring; each record lights as it is checked, with the rules that read it.POReceiptInvoiceVendorBOMRFQR1R2R3R4R5R6R7R8R9R10R11R12CheckingEvery recordR1 – R12

How it works

Watch it catch one.

One invoice against PO-100300, from keying it in to fixing it. The records are samples; the checks, the figures and the wording are the engine's own.

Step 1 of 5: Enter the invoice
  1. 01

    Enter the invoice

    AP keys a supplier invoice against PO-100300 the way they always do. Line 1: twelve 2U servers at 21,168.00 each.

  2. 02

    Save is held, not refused

    Before anything posts, CYOP checks the draft against every active rule. Three exceptions, 287,574.84 USD exposure, and a letter on each field they touch.

  3. 03

    Open the audit ledger

    Mark B: the invoice bills 12% above the PO price, 21,168.00 against 18,900.00. The ledger says why it is 92% sure, what to do and what probably caused it.

  4. 04

    Go to the field

    One click from the ledger to the unit price on line 1. The PO price is written under the cell, so nobody has to open the order.

  5. 05

    Fix it, and the mark clears

    Retype 18900. The draft is checked again as soon as typing pauses: mark B is gone, two exceptions left, exposure down to 232,874.41.

Three-way match

Closed, received in full, and 722,487.72 wrong.

In the ERP, PO-100096 looks finished. Nobody lines the order, the receipt and the invoice up line by line, so nobody sees 258 racks billed that were never ordered. Scroll to line them up.

Purchase orderClosed

PO-100096

PartRCK-42U
Ordered859
Unit price2,800.34
ReceiptReceived in full

PO-100096 · line 1

PartRCK-42U
Received859
Unit pricen/a
Supplier invoice

INV-65872-96

PartRCK-42U
Billed1,117
Unit price2,800.34
Quantity · 859 ordered = 859 received ≠ 1,117 billedUnit price · 2,800.34 = 2,800.34
Exception A

R2 · Critical · 96% confidence

INV-65872-96 bills 258 more racks than PO-100096 ordered or received

722,487.72USD at risk

Evidence

Every finding shows its work.

Confidence is worked out from the records, not guessed, and written in plain English on every finding. This is mark B from the walkthrough, word for word.

Anatomy of a finding
Exception B

R1 · High · Lines

INV-78122-300 bills 12% above PO price on PO-100300

27,216.00USD exposure

0%92% confidence
Why 92%
Exact PO reference found (PO-100300). Largest line variance 12.0% exceeds 2% tolerance. Vendor and line numbers match, so this is a price issue, not a mis-link.
Suggested fix
Reject INV-78122-300 or issue a PO change order on PO-100300 if the price increase was approved. Reference the PO line(s) flagged.
Likely root cause
Vendor price list changed after PO issue, or PO was cut from a stale quote. Check whether procurement re-quoted before cutting the PO.

Rules

Twelve rules. Each one says why.

Eleven run on an order export out of the box. R12 switches on when you map an invoice currency. Nothing is fixed for you: every finding is advice.

Every rule in detail
RuleChecksCatches
R1PO / InvoiceInvoice unit price above the PO price, beyond a 2% tolerance
R2PO / InvoiceQuantity billed beyond what was ordered or received (three-way match)
R3PO / InvoiceMissing or unknown PO reference, with the likely PO suggested by supplier and amount
R4PO / InvoiceSame invoice number, or same supplier, PO and amount within 30 days
R5PO / InvoiceInvoice payment terms differ from the PO
R6PO / InvoiceSupplier name on the invoice differs from the vendor master on the PO
R7RFQ / BOMAn item on the latest BOM that the RFQ never asked suppliers to quote
R8RFQ / BOMSame item, different quantity between the latest RFQ and the BOM
R9RFQ / BOMAn item quoted to one specification that the BOM now gives another
R10RFQ / BOMPO issued against an RFQ revision that has since been superseded
R11WorkflowPO created after the invoice it pays
R12PO / InvoiceInvoice currency differs from the PO currency, once an invoice currency field is mapped

Your data

Bring an export. See your own exceptions.

  1. 01

    Upload an export

    A CSV or Excel file straight out of the ERP. No connector, no project.

  2. 02

    Map the columns

    Most map themselves. Add the fields CYOP has no slot for, such as invoice currency, which switches on R12.

  3. 03

    Load and run

    Every active rule runs on your records. A rule whose fields are missing switches off and says why.

Column names CYOP maps on its own

PO_NUMBEROrder NoBUY_UNIT_PRICEPrice/CurrPAY_TERM_IDPayment TermsQTY_RCVDQty ReceivedSUPPLIER_INVOICE_NOInvoice NoINV_DATEInvoice DateINCOTERMSDelivery TermsMATERIALPart No
BUY_UNIT_MEASUoMCURRENCY_CODECurrencyPO_REFPO referenceQTY_INVOICEDQty InvoicedRECEIPT_DATEReceipt DateSUPPLIER_IDSupplierORDER_DATEOrder DateINVOICE_PRICEUnit Price

Principles

Built to be trusted by the people it checks.

Advises. Never auto-fixes.
Every finding is a suggestion with its evidence. People decide; CYOP changes nothing.
Read-only.
Data flows one way, into CYOP. A check before posting runs in a transaction and rolls back.
Shows its working.
Confidence is deterministic and explained in plain English. No black box.
Says when it can't check.
A rule without the fields it needs switches off and tells you, instead of flagging everything.

See what's sitting in your P2P data.

A 30-minute walkthrough on a sample of your own export. No ERP changes, no procurement cycle.

Read-only. CYOP never writes to your ERP.