Sales Order Exception Handling Before ERP Entry

An order that cannot go into the ERP without a decision must never be lost, half-entered or silently corrected. Handle it with a fixed list of exception types and a rule for each, hold only the lines that need a decision where your process allows it, set thresholds you can defend, show the reviewer the exact place in the source document, and log who decided what. This guide gives the taxonomy, a worked order with accepted and held lines, the review screen, the audit log and three indicators to run it by.

Published
Sources checked
Reading time
9 min
Written by
Mirage Metrics team

Scope: B2B orders received by email, PDF, spreadsheet or scanned form, in manufacturing and industrial distribution, before entry into any ERP. It covers the decisions around entry, not how to set up automatic order entry, which the related articles cover.

Decision snapshot

Best suited to
Order desk and customer service managers, operations leads and ERP owners at manufacturers and distributors who receive orders in many formats.
Inputs needed
The inbound mailbox, the customer master with delivery addresses, the item master with units and conversions, customer cross-references, price lists and contracts, stock availability, and each customer's order rules.
What can be automated
Reading orders in any format, classifying what is not an order, matching customers and items, converting units with defined conversions, checking quantities, prices and availability against rules, detecting duplicates, entering clean lines, routing exceptions with their evidence.
What requires human approval
Choosing between candidate items, confirming inferred units and outlier quantities, accepting price differences, adding a delivery address, creating a customer, and changing the rules.
When this approach is insufficient
When master data is unreliable (duplicate customers, missing conversions, stale prices): exceptions then measure data quality, and fixing the data comes first. Also when most orders are negotiated case by case rather than placed against agreed terms.

The exception taxonomy, with a rule for each

A closed list of exception types is what makes handling consistent between people and measurable over time. Each type has a detection signal, a rule, an owner, and an answer to one question: can the rest of the order proceed?

Order exception types, how each shows up, the rule to apply, who decides, and whether the rest of the order can proceed
ExceptionHow it shows upRuleWho decidesRest of the order proceeds?
Unknown customerSender or bill-to not found in the customer master, or matches severalMatch on exact identifiers first (account number, VAT or tax ID), then on address; never create a customer automaticallyOrder desk; credit control for a new accountNo: the whole order waits
Ambiguous productDescription or customer reference maps to more than one SKU, or to noneUse the customer's own item cross-reference first; if still ambiguous, propose candidates, never pick oneOrder deskYes, if your process allows split entry
Unit of measureQuantity with no unit, or a unit the item is not sold inConvert only with the item's defined conversions; infer a unit only when the price on the order points to exactly one, and flag the inferenceOrder deskYes, flagged
QuantityFar outside the customer's history for that item, or not a multiple of the pack sizeCompare with the customer's own history and pack rules; hold outliers above a factor you setOrder desk, with sales if largeYes, if your process allows split entry
PricePrice on the order differs from the price list or contract beyond a toleranceNever enter the customer's price silently; hold for a sales decisionSales or pricingDepends on your policy
AvailabilityItem not available on the requested dateApply the customer's rule: partial shipment, backorder or substitution, as agreed with that customerOrder desk, with supply planningYes: enter and notify
AddressShip-to not among the customer's registered delivery addressesHold; confirm with the customer through a known contact before adding an addressOrder desk; credit control if the risk policy says soNo: affects every line
DuplicateSame purchase order number, or the same lines, already receivedCompare PO number, customer, lines and dates; a resend is linked, not enteredAutomatic, with a log entryNo: nothing entered
Not an orderDelivery confirmation, stock query, quote request, the company's own purchase orderClassify and route to the right queue, with a log entryAutomatic, reviewableNothing to enter
Order exception types, how each shows up, the rule to apply, who decides, and whether the rest of the order can proceed

Units of measure

Customers write units their own way ("CS", "carton", "x6", no unit at all). Map each customer's spelling to the item's units in the ERP through defined conversions, kept per customer. The item master decides what a unit means for your product, not the customer's document.

Line holds and order holds

Some exceptions concern one line; others concern the whole order. Treat them differently:

  • Order-level: unknown customer, unregistered delivery address, duplicate. Nothing is entered until they are resolved, because every line depends on them.
  • Line-level: ambiguous item, unit, quantity, price, availability. If your customers and ERP process allow it, enter the clean lines and hold the rest, and tell the customer which lines are pending.
  • Per-customer switch: some customers want one delivery per order. Record that preference in the customer's rules, so the split never surprises them.

Worked example: one order, six lines

Illustrative example, invented figures: a PDF order from a food distributor's customer

Assumptions, all invented. The customer is known and the ship-to is one of its registered addresses. This customer accepts split entry, with backordered lines shipped when complete. Price tolerance is 2 percent. Prices are in euros.

One order, six lines: what was read, what was proposed, the reason, and the status (invented)
LineOn the orderProposedReasonStatus
1Butter 82% block 10 kg, x 12BT-8210, 12 casesExact customer cross-reference, price matchesEntered
2UHT whole milk 1 L, 66MK-1001, 66 cartons (inferred)No unit on the order. Order price 1.05 matches the carton price (1.05), not the case of 6 (6.10). Unit inferred and flaggedEntered, confirm unit
3Cream 35% 5 L, x 8CR-3505B (bag) or CR-3505P (5 x 1 L pack)?Two items match the description; the customer has bought bothHeld: choose item
4Emmental block, 400EM-2000, 400 kg?Customer's last 20 orders for this item: 30 to 50 kg. Ten times the usual quantityHeld: confirm quantity
5Goat cheese log 1 kg, x 20 at 3.20GC-1010, 20 unitsOrder price 3.20, contract price 3.45, outside the toleranceHeld: sales decision
6Plain yogurt 125 g, x 24 packsYG-0125, 24 packsAvailable two days after the requested date; customer rule: ship when completeEntered, date notified
One order, six lines: what was read, what was proposed, the reason, and the status (invented)

Three lines go into the ERP, two of them with a flag the reviewer confirms after entry. Three are held, each with a single, specific question. Twelve minutes later the customer resends the same PDF: same PO number, same lines. It is recognised as a duplicate, linked to the first order in the log, and nothing is entered twice.

Confidence levels and thresholds

Extraction tools produce confidence scores. A score is only useful once you have checked it against your own orders; until then, define confidence by rules you can explain to an auditor. A simple scheme per field:

Two confidence classes per field: when a value can be used as is, and when it goes to review
FieldUse as is whenSend to review when
CustomerExact match on account number or tax IDAnything else
ItemExact match through the customer's cross-referenceDescription match only, or several candidates
UnitStated on the order and valid for the itemMissing, or inferred from price
QuantityWithin the customer's history band for the itemOutside the band you set
PriceWithin tolerance of the price list or contractOutside tolerance
Requested dateParsed unambiguously (for example, an ISO date or a spelled month)Ambiguous formats such as 03/04
Two confidence classes per field: when a value can be used as is, and when it goes to review

Make the thresholds configurable per field and per customer, and change them one at a time, with the pilot data in front of you. A customer with a clean, stable format can earn looser rules; a new customer starts strict.

The review screen

The reviewer's screen decides whether exceptions are resolved in seconds or in minutes. It should show, for each held line:

  • The source document open at the page, with the region the value came from highlighted
  • The value read, the value proposed, and the master data candidates side by side
  • The exception type and the rule that raised it, in plain words
  • The customer's history for that item: last quantities, units and prices
  • One-click actions: accept, choose a candidate, correct, reject, escalate, with a mandatory reason for corrections
  • What happens next: entered now, or sent back to the customer with a question

Evidence from the source document

Every value in the ERP should be traceable to where it came from. Keep the original email and attachments unchanged, record a hash of each file, and for each extracted value store the page and region. When a customer disputes a delivery three weeks later, the answer is one click away, not a search through the mailbox.

Human validation and the audit log

Fields of an order exception audit log
FieldContent
Order and lineInternal ID, customer PO number, line number
SourceEmail ID, attachment name, page and region the value came from, file hash
ExceptionType from the fixed list, the rule that raised it, the values compared
ProposalWhat the system proposed, with its confidence class
DecisionAccepted, corrected (old and new value), rejected, escalated
Who and whenUser, timestamp, time from exception to decision
ERP resultOrder number created, or the error returned by the ERP
Fields of an order exception audit log

Review the log weekly, grouped by exception type and by customer. A correction made often is a rule to change or a cross-reference to add, not a reason for more reviewers.

Never lose an order silently

The worst failure is not a wrong line; it is an order nobody knows was received. Build the process so that it is impossible:

  • Every inbound email and attachment receives an ID when it arrives.
  • Each ID must reach a terminal status: entered, held with a reason, not an order (with its class), or rejected with a reason.
  • A daily count reconciles inbox to statuses. The balance must be zero.
  • Anything without a terminal status after a delay you set alerts a named person.
  • A line that cannot be read never fails the whole order and never disappears: it becomes an exception with a diagnosis.
  • Processed emails are tagged in the mailbox, so the team can see at a glance what the system has handled.

A parallel pilot

  1. Choose a set of customers that represents your formats, including the difficult ones.
  2. Let the team enter orders as usual. The system processes the same orders on the side and writes nothing to the ERP.
  3. Each day, compare the system's result with what the team entered, line by line, and classify every difference: system error, team error, or genuine ambiguity.
  4. Tune rules and cross-references from those differences, and re-measure.
  5. Move to live entry for clean lines only when the errors-after-validation figure for automatic lines meets the threshold you set, and keep review on everything else.

Three indicators, defined

Define the indicators before the pilot, and publish the definitions with the numbers. A rate without its definition cannot be compared with anything.

Order exception indicators and how to compute them
IndicatorDefinitionNote
Orders without interventionOrders entered with no human action on any line, divided by all real orders received in the periodCount orders, not lines; exclude items classified as not an order
Errors after validationLines corrected after ERP entry (amendments, credit notes or returns caused by entry), divided by lines entered; report separately for lines entered automatically and lines a person validatedThe number that shows whether automation or review is the weak point
Time to resolutionTime from exception raised to decision, as a median and a 90th percentile, by exception typeThe median hides the orders that wait a day
Order exception indicators and how to compute them

Questions to ask a vendor

Questions to ask an order automation vendor, and what a good answer looks like
QuestionA good answer
Which exception types do you detect, and can we add our own rules?A fixed list you can see and change, not a single confidence score
Can clean lines be entered while others are held?Line-level handling, switchable per customer
What exactly makes an order go through with no review?Documented conditions per field, that you can tighten
How does a reviewer see the source of each value?The document opened at the right page and region
What happens to a document that fails to parse?It lands in a queue with a reason; it never disappears
How do you prove no order was lost?A daily count from inbox to ERP, with every item accounted for
What is logged, where, for how long, and can we export it?A decision log you own
How do you handle a change in our price list or catalogue?Master data synchronised from the ERP, not copied once
What figures can you show from a real deployment, and how were they measured?Named deployment, date, definitions; not a generic automation rate
Questions to ask an order automation vendor, and what a good answer looks like

Where Mirage fits

Mirage built the email-to-ERP order pipeline at Biodéal, a distributor of organic dairy products whose customers order by email in their own formats, with orders created in SAP Business One. The case study describes the exception handling this guide recommends: anything that is not an order is rejected, units are inferred from the price and flagged for confirmation, a line that cannot be read goes out as an alert with a diagnosis instead of failing the order, and processed emails are tagged. Its published figures, which describe that deployment only: 2,943 orders processed automatically since launch on July 22, 2025, a median of 48 seconds from email to order ready, 113 customers, about 7 percent of orders flagged for a human check, 12,993 order lines entered automatically, and zero lines lost silently, by design.

Questions readers ask

What is an order exception?

Any order, or order line, that cannot be entered into the ERP without a human decision because a value is missing, ambiguous or conflicts with master data: an unknown customer, an item that matches two products, a quantity with no unit, a price outside tolerance, an unavailable item, a new delivery address, or a duplicate.

Should the clean lines of an order be entered while others are held?

Often yes, because holding a whole order for one ambiguous line delays everything else. It depends on your customers and your ERP process: some customers want one delivery, some ERPs make amendments costly. Make it a rule per customer, and never split when the exception concerns the customer, the address or a duplicate, which affect every line.

What confidence threshold should we use for automatic entry?

A model's confidence score is not a probability of being right until you have measured it on your own orders. Start with conditions that do not depend on a score, such as exact matches against master data, send everything else to review, and loosen the rules one field at a time as a parallel pilot shows where they are safe.

How do we make sure no order gets lost?

Count every inbound email and attachment, and give each one a terminal status: entered, held with a reason, classified as not an order, or rejected with a reason. Reconcile the count daily. Anything without a status after a delay you set raises an alert to a named person.

What share of orders can be processed without a person?

It depends on your customers' formats, your master data and your rules, so any general figure is marketing. Measure it on your own orders in a parallel pilot. For reference, the one Mirage deployment with published figures, Biodéal, reports that about 7 percent of orders are flagged for a human check; that describes that distributor, not a benchmark.

Sources and scope

Checked on . Scope: order handling before ERP entry. The method, tables and example are Mirage's own, with invented figures; the Biodéal figures are quoted from its case study.

Related on this site

Run your own orders through the rules

Send us a week of real orders, including the awkward ones. We will return each order with its lines entered, held or classified, the reason for every exception and the evidence behind it, so you can compare it with what your team did.

Prefer to talk it through? Book a call

We use your email to reply to you and, now and then, to tell you about Mirage. You can opt out at any time. Privacy policy