Sales Quote to Order Matching
Quote and PO extraction + SKU-level reconciliation — sales quote to order matching with six deterministic checks per document pair.
| # | SKU | Description | Qty | Unit Price | Amount |
|---|---|---|---|---|---|
| 1 | ACM-SRV-X1 | Acme Server X1 — 32-core rack unit | 10 | 1,85,000 | 18,50,000 |
The Problem
For a mid-market company running 50–200 customer purchase orders per month, sales quote to order matching is rarely a one-click operation — and the cost of getting it wrong compounds across billing, tax, and revenue recognition.
15–25 minutes per PO pair
A deal-desk analyst manually opens the quote PDF, locates the inbound customer PO, compares every line item — SKU, quantity, unit price — checks the PO date against the quote validity window, recomputes the GST-inclusive total, and only then keys the order into the ERP. Across 50 POs, that is two full working days before a single sales order is confirmed.
Four predictable exception classes
Price mismatch (customer PO carries a lower unit price than quoted), quantity mismatch (PO requests more units than the quote approved), expired-quote acceptance (PO arrives after the 30-day validity window), and SKU substitution (customer procurement replaces the quoted part with an unlisted SKU). Each class requires a different escalation path — yet most teams discover these only after an ERP sales order is already created.
Revenue recognition exposure at order-book level
Under Ind AS 115 (converged with IFRS 15), a contract with a customer requires that both parties have approved it and each party's rights and performance obligations are identifiable. Booking a sales order against a mismatched or expired quote puts the underlying contract approval in question — and can force a restatement of revenue recognised in the period. Under ASC 606-10-25-1, Step 1 of the five-step model requires contract identification, and a price or SKU discrepancy is direct evidence that contract terms are not yet agreed.
GST and credit note cascade
Raising a tax invoice on disputed price terms and later issuing a credit note under Section 34 of the CGST Act attracts scrutiny on whether the output tax adjustment was correctly reported in GSTR-1 and matched by the buyer in GSTR-2B — potentially delaying the buyer's ITC claim and straining the commercial relationship. A price_variance of ₹10,000 per unit across a 10-unit order is ₹1,00,000 in disputed revenue that propagates into the next filing period.
The manual order-confirmation lag for a batch of 50 POs at 15–25 minutes each, before a single sales order reaches the ERP. At scale, this delay cascades into deferred invoicing, distorted accounts-receivable projections, and missed cut-off dates under Section 12 of the CGST Act, which determines the tax point (time of supply) for the period.
Why It Matters: Regulatory Context
Quote-to-order matching sits at the intersection of Indian contract law, GST compliance, and international revenue recognition standards. Four regulatory anchors make structured validation non-optional for finance-controlled companies.
Acceptance must be absolute and unqualified
A customer PO that states a unit price of ₹1,75,000 against a quoted ₹1,85,000 is technically a counter-offer, not an acceptance. No binding contract exists until the seller acknowledges the revised terms. Treating that PO as a clean sales order without flagging the variance creates a contractual ambiguity that affects both payment-term enforceability and correct GST liability under Section 15 of the CGST Act.
Transaction value governs GST computation
The value of supply is the transaction value actually agreed between the parties. If the invoice is raised on the quoted price while the customer PO reflects a lower price, the two documents will not reconcile during a GST audit, exposing the supplier to scrutiny under Rule 36 of the CGST Rules. The Price Match check catches this delta before any tax invoice is raised under Section 31.
Contract identification as Step 1 of revenue recognition
Ind AS 115, converged with IFRS 15, requires that a contract be approved by both parties and that each party's rights and performance obligations be identifiable before revenue can be recognised. A SKU substitution or unresolved quantity excess means the performance obligation for the additional units has not been established — and recognising revenue on those units in the same period would be premature under the standard's variable consideration guidance.
Audit documentation of order acceptance evidence
SA 230 requires auditors to document the evidence underlying significant assertions, including the existence and completeness of sales orders. A structured quote-to-PO match record — with PASS/FAIL status per check and the specific values compared — satisfies this evidentiary standard directly and supports deal-desk override sign-off without additional reformatting of email-thread evidence.
What This Workflow Automates
Seven deterministic steps from quote PDF + customer PO PDF to a ready-to-book order record — in under 30 seconds per document pair.
Document ingestion & type classification
Accepts two PDFs dropped together and identifies each as a Quote or a Customer Po using registered document-type classifiers — no manual tagging required. The system routes each file to the correct extraction schema before any field extraction begins.
Quote field extraction
From the quote document, extracts quote_no, quote_date, validity_date, customer_name, line_item_sku, item_description, quantity, unit_price, subtotal, gst_amount, total, and payment_terms — 12 typed fields covering the complete commercial terms of the quotation.
Customer PO field extraction
From the customer PO, extracts po_number, po_date, vendor_name, ref_quote_no, line_item_sku, item_description, quantity, unit_price, total, and delivery_date — with ref_quote_no acting as the foreign key that links the PO back to its originating quote.
Quote reference & SKU match
Confirms that the PO's ref_quote_no corresponds to a quote present in the uploaded document set (Quote Reference Match), then checks that every PO line-item SKU appears on the referenced quote (SKU Match). A SKU present in the PO but absent from the quote — such as ACM-SRV-X9 against a quote listing only ACM-SRV-X1 — returns FAIL with the unrecognised SKU identified by name.
Price & quantity validation
Price Match computes the per-unit variance (PO unit price minus quoted unit price) and returns FAIL if any non-zero difference exceeds Re 1 — surfacing, for example, a ₹10,000 deficit (5.4%) per unit on a ₹1,75,000 PO against a ₹1,85,000 quote. Quantity Within Quote flags any PO quantity that exceeds the quoted volume, noting the surplus units and the percentage overage.
Quote validity check
Compares the PO date against the quote's validity_date. If the PO was raised after the validity window closed — as in the scenario where Acme Distribution's PO arrived 45 days after quote issue against a 30-day validity — returns FAIL with the specific expiry date and the number of days elapsed since expiry.
Total arithmetic check & order-book export
Recomputes the expected GST-inclusive total from the quote's subtotal and gst_amount (e.g., ₹18,50,000 + ₹3,33,000 = ₹21,83,000) and returns PASS or FAIL against the document-stated total, independent of any cross-document comparison. Pairs with all six checks passing are written to the order-book Excel export as Ready to Book; pairs with any FAIL go to the exception queue.
Edge Cases We Simulate
Five synthetic document pairs exercise every exception class seen in real-world deal-desk data. Each scenario produces a deterministic, auditor-verifiable outcome.
Price Mismatch
Quantity Mismatch
Expired Quote Acceptance
SKU Not on Quote
ACM-SRV-X9, whereas the referenced quote lists only ACM-SRV-X1. No price or quantity match is possible for the unrecognised SKU.Missing Quote Reference
ref_quote_no field is blank or unreadable — there is no document to compare against. This is the upstream failure that makes all six downstream checks not-performable.Sample Documents
Ten sample files — five quote-and-PO pairs — cover every exception class. Each file is a realistic, multi-page commercial instrument with a cover, parties, line-item schedule with GST summary, standard terms, and acceptance block. Every counterparty is an Acme Corp variant; each PO carries the quote number as its join key.
quote_clean.pdf + customer_po_clean.pdf
Baseline quotation QT-2026-0418 paired with PO AR-PO-99821 at matching SKU, 10 units, ₹1,85,000 unit price, within validity. Demonstrates clean extraction of 12 quote fields and 10 PO fields with all reconciliation checks returning PASS.
customer_po_price_mismatch.pdf
PO unit price ₹1,75,000 vs quoted ₹1,85,000. Demonstrates Price Match FAIL with the exact per-unit variance surfaced as the exception reason, routing to deal-desk hold before any ERP entry.
customer_po_quantity_mismatch.pdf
15 units on PO vs 10 units quoted. Demonstrates Quantity Within Quote FAIL with surplus count noted; incremental 5 units held pending revised quote or explicit sign-off per ASC 606-10-32-11 variable consideration guidance.
customer_po_expired_quote.pdf
PO raised 45 days after quote issue against a 30-day validity window. Demonstrates Quote Validity FAIL with precise expiry-date comparison and days-elapsed count surfaced as the exception reason.
Sample Results
Running the workflow against all five demo quote-and-PO pairs produced 10 document extractions — 12 structured fields per quote file and 10 structured fields per PO file. The Total Arithmetic check returned PASS on quote_clean.pdf (subtotal ₹18,50,000 + GST ₹3,33,000 = total ₹21,83,000, confirmed correct). The clean pair (QT-2026-0418 / AR-PO-99821) returned PASS on all six checks and was written to the order-book export as Ready to Book without any manual intervention.
The price-mismatch pair (QT-2026-0419 / AL-PO-44102) surfaced a ₹10,000 per-unit delta (5.4% below quoted price) in the Price Match check — the moment both PDFs were uploaded, before any ERP entry was attempted. The quantity-mismatch pair (QT-2026-0420 / AM-PO-71245) flagged a 5-unit surplus (50% above quoted volume) and correctly held the incremental units pending revised quote or sign-off, consistent with ASC 606-10-32-11 variable consideration guidance. The expired-quote pair (QT-2026-0388 / AD-PO-55890) surfaced a 15-day post-expiry window, with the exact validity_date and days elapsed recorded as the exception reason.
The most operationally significant exception class was the SKU-not-on-quote scenario: the workflow extracted SKU ACM-SRV-X9 from Acme Engineering's PO AE-PO-30217 while the referenced quote QT-2026-0421 carried only ACM-SRV-X1. This single-field mismatch correctly cascaded into five downstream checks being marked not-applicable — price, quantity, validity, total arithmetic, and quote reference cannot be meaningfully evaluated for a line item never quoted — blocking the entire PO from progressing rather than partially passing the recognisable fields. All five exception badges (“Price Dispute — Hold”, “Quantity Excess — Approval Required”, “Quote Expired — Re-issue Required”, “Unknown SKU — Quote Amendment Needed”, “Missing Quote Reference — Manual Lookup Required”) were reproduced deterministically across repeated runs with identical inputs.
Why Automation Wins Here
Replacing the manual quote-to-order comparison with this workflow reduces a 15–25 minute per-pair process to under 30 seconds of extraction and structured validation — with exception triage built into the output, not deferred to a separate review cycle.
Exception triage embedded at receipt
Instead of discovering a price discrepancy only after querying the ERP, the Price Match check returns a specific per-unit variance the moment the two PDFs are uploaded — routing the order directly to the exception queue before any ERP entry is made. This prevents the category of billing disputes that arise when a sales order is confirmed on the wrong price, reducing credit note cycles under Section 34 of the CGST Act.
Revenue recognition evidence, per order
Each run produces a structured order-book export with every extracted field and every check result. The file maps directly to the order-acceptance documentation a controller needs to support Ind AS 115 Step 1 (contract identification) or ASC 606-10-25-1, and it satisfies the evidentiary standard for deal-desk override sign-off under ICAI SA 230 without reformatting email-thread evidence.
Audit-ready order book, month-end ready
The five exception badges provide the status taxonomy for a month-end order-book review file without reformatting — making the document suitable for both internal audit workpapers and external auditor inquiry under SA 505 (External Confirmations) where confirmed order terms are in dispute. Exception overrides are recorded as separate events with user identity and timestamp.
Frequently Asked Questions
The questions deal-desk analysts and finance controllers ask most often before deploying purchase-order matching automation.
Upload two PDFs per deal — your outbound sales quote and the customer's purchase order that references it. Cadel classifies each file as a Quote or a Customer Po automatically, so you can drop them together. Each sample file is a realistic multi-page commercial instrument with a cover page, line-item schedule, GST summary, standard terms, and a signature block. No manual tagging or template configuration is required.
Six checks per quote–PO pair: Quote Reference Match (the PO's ref_quote_no matches a known quote), SKU Match (each PO line SKU exists on the quote), Price Match (PO unit price equals the quoted price within Re 1), Quantity Within Quote (PO quantity does not exceed the quoted volume), Quote Validity (PO date is on or before the quote's validity date), and Total Arithmetic (subtotal + GST = total). Every check is rule-based and deterministic — the same inputs always return the same PASS or FAIL with no probabilistic scoring.
Each failed check is surfaced in the Exceptions view with the specific rule that tripped and the values compared — for example a ₹10,000 per-unit price variance (5.4%) or a 5-unit quantity excess (50% above quoted volume). Price, quantity, and SKU failures route to a hold; a lapsed validity date blocks order creation until a fresh quote is uploaded. Exception overrides are recorded as separate events with user identity and timestamp, supporting ICAI SA 230 documentation requirements.
If the PO's ref_quote_no field is blank or unreadable, Quote Reference Match returns FAIL immediately and all downstream checks — SKU, price, quantity, validity, and total arithmetic — are marked not-performed, because there is no document to compare against. The order is placed in the exception queue with badge Missing Quote Reference — Manual Lookup Required. The deal-desk operator must manually link the PO to the correct quote number before the workflow can complete the match cycle.
The quote's gst_amount is extracted and the Total Arithmetic check verifies that subtotal + gst_amount = total before any tax invoice is raised under Section 31 of the CGST Act, 2017. The workflow does not independently re-derive the CGST/SGST/IGST split — confirm the applicable HSN code and GST rate in your ERP before issuing the final invoice. Any arithmetic inconsistency in the quote itself is surfaced as a Total Arithmetic FAIL before the PO comparison is run.
Cadel produces an Excel export of the matched order book — one row per PO line with PO number, quote number, SKU, quantity, unit price, total, exception type, and status badge. This file can be imported into Tally Prime using the standard Sales Order voucher import template, or into SAP S/4HANA via LSMW or a custom BAPI_SALESORDER_CREATEFROMDAT2 call. For NetSuite users, the export maps directly to the Sales Order CSV import format. No direct API connector is required for mid-market deployments.
Every upload creates an immutable, timestamped extraction record with filename, document type, and all extracted field values. Every reconciliation run logs the six check results — PASS, FAIL, or not-performed — with the specific values compared and the reason for any deviation. Exception overrides (e.g., a deal-desk approval on a price mismatch) are recorded as separate events with user identity and timestamp. The trail supports ICAI SA 230 (Audit Documentation) and exports as a PDF or JSON package for attachment to working papers or external auditor inquiry.
Not yet. Price Match compares numeric values directly without currency conversion; a PO amount in USD will produce a spurious FAIL if compared to an INR quote amount. For multi-currency scenarios, ensure the quote and PO are both denominated in the same currency before uploading, or upload a currency-converted version of the PO. Native multi-currency support with RBI reference rate conversion is on the Cadel product roadmap.