Yes, for printed delivery notes from regular suppliers. An AI model can read a photo or PDF, extract supplier, PO number, item codes and quantities, and post a goods receipt to your stock system. But stock should update automatically only when every line matches an open purchase order and the physical count; shortages, substitutions and handwritten changes should wait for a person.
The reading is the easy part. The hard parts are matching the supplier's codes to yours, handling units (a "box" of 50 against your "each") and remembering that a delivery note records what the supplier says it sent, not what arrived. Automations that skip the count at goods-in put the supplier's mistakes straight into your stock figures, where they surface weeks later as a stockout nobody can explain.
What AI reads well on a delivery note, and what it doesn't
| Part of the note | How well current models read it | What to do about it |
|---|---|---|
| Printed table of lines, codes and quantities | Well, from a flat, sharp photo or PDF | Automate |
| Supplier name, note number, date, PO reference | Well, if printed | Automate; hold if the PO reference is missing |
| Batch or lot numbers | Mostly, but 0/O and 1/I get confused | Check against a pattern (e.g. two letters, six digits) |
| Handwritten amendments ("8 rec'd", crossed-out figures) | Patchy | Always a person |
| Carbon copies, crumpled or shadowed photos | Poorly | Rescan, or type |
| Multi-page notes | Well if all pages are in one file | Scan as one document, not separate photos |
Modern AI models read documents far better than older text-recognition software, because they understand layout and context rather than just characters. The difference is explained in AI document extraction versus traditional OCR. But "far better" still isn't "always", which is why the posting rules further down matter more than the choice of model.
Why the delivery note can't be your only source of truth
Stock should change only when three things agree: what you ordered (the purchase order), what the supplier says it sent (the delivery note) and what your staff counted on the bench. Here's an illustrative set of lines where they don't:
| Item | PO | Delivery note | Counted | What should happen |
|---|---|---|---|---|
| M8 hex bolts, zinc | 2,000 | 2,000 | 2,000 | Post automatically |
| Bearing 6204-2RS | 100 | 100 | 96 | Post 96; raise a shortage with the supplier |
| Shaft seal 25x40x7 | 50 | 30, "balance to follow" | 30 | Post 30; leave 20 open on the PO |
| Bronze bush 20mm | 40 | 40 of "20mm bush, sintered" | 40 | Hold: possible substitution |
An automation that trusted the note alone would have booked four extra bearings and missed a substituted part. The count doesn't have to be slow: for small deliveries, staff confirm "count matches note" with a tap; only differences need typing. Running a stocktake faster with AI and a phone scanner covers quick counting methods that also work at goods-in.
The mapping table that does most of the work
Suppliers use their own codes, descriptions and units. Your stock system uses yours. The link between them is a mapping table, and building it is the biggest single job in this project. An illustrative extract for a manufacturer of spare parts:
| Supplier | Supplier code | Supplier unit | Your SKU | Units per supplier unit |
|---|---|---|---|---|
| Fastener supplier | HB-M8-30-Z | Box | FAS-0831 | 200 |
| Bearing distributor | 6204-2RS-C3 | Each | BRG-6204 | 1 |
| Seal supplier | OS254007 | Pack | SEA-2540 | 10 |
| Steel stockholder | EN8-BAR-40 | Metre | RM-EN8-40 | 1 (metres) |
The conversion column prevents the classic error: the note says "10 boxes" and the automation books 10 bolts instead of 2,000. Start the table from your last three months of purchase orders, which already pair supplier codes with your items, and let the automation add unknown codes to a "needs mapping" list rather than guessing. An AI model can suggest matches for unknown codes from the descriptions, which speeds things up, but a person confirms each new mapping once, and from then on it's a lookup.
How the pipeline fits together
- Capture. Goods-in photographs the note flat and in good light, or saves the PDF if the supplier emails one. Microsoft Lens has been retired, so use the scan feature in the OneDrive mobile app or Google Drive's scanner, which straighten and crop pages and save them to a watched folder.
- Extraction. An AI step reads the file and returns structured fields (see the prompt below). This can run in Zapier, Make or n8n with your own model key, or in a document-processing tool.
- Matching. A lookup finds the open purchase order, maps each line through the table and compares quantities with the PO and the count. This is plain logic, not AI.
- Posting. Lines that pass the rules are posted as a goods receipt through your stock system's API or a CSV import. In Shopify, for example, received stock is recorded on the purchase order in the admin (Products, then Purchase orders, then Receive inventory) with accepted and rejected quantities, per Shopify's help page on receiving inventory.
- Exceptions. Everything else lands in a queue with the photo, the extracted lines and the reason, for a person to resolve.
For the extraction step, a prompt along these lines works with most current models:
Read this delivery note. Return JSON only with: supplier_name,
delivery_note_number, date (YYYY-MM-DD), po_number (null if absent),
lines: [{supplier_code, description, quantity, unit, batch}],
handwriting_present (true/false), handwriting_text,
pages_seen, confidence_notes.
Copy codes and numbers exactly as printed. If a value is unclear,
use null and explain in confidence_notes. Do not guess.
An illustrative result for a two-line note:
{"supplier_name": "Bearing distributor", "delivery_note_number": "DN-448210",
"date": "2026-09-22", "po_number": "PO-3187",
"lines": [
{"supplier_code": "6204-2RS-C3", "description": "Deep groove bearing", "quantity": 100, "unit": "EA", "batch": "BX220917"},
{"supplier_code": "6205-2RS-C3", "description": "Deep groove bearing", "quantity": 50, "unit": "EA", "batch": null}],
"handwriting_present": true, "handwriting_text": "only 96 rec'd",
"pages_seen": 1, "confidence_notes": "Batch on line 2 obscured by stamp"}
What you'd check: the handwriting note refers to line 1 but the JSON doesn't say so, which is exactly why handwriting sends the whole note to a person. And the null batch on line 2 is correct behaviour: a model that invented a plausible batch number would be much more dangerous than one that admits it can't read it.
Rules for when stock updates without a person
| Situation | Action |
|---|---|
| PO found, every line mapped, note equals count, within PO quantity, no handwriting | Post automatically |
| Part delivery clearly marked, count matches note | Post received quantity; leave balance open on the PO |
| Count differs from note | Hold; post the count after a person confirms; log a supplier discrepancy |
| Unknown supplier code or unit | Hold; add to "needs mapping" |
| No PO number, or PO already fully received | Hold; possible duplicate or wrong delivery |
| Delivery note number already processed | Reject as duplicate scan |
| Handwriting, damage noted or confidence notes present | Hold for a person |
What the person sees in the exceptions queue decides how fast they can clear it. A useful entry has the photo, the extracted lines and a one-line reason, with the likely action pre-filled. An illustrative entry:
HOLD: DN-448210, bearing distributor, PO-3187. Reason: handwriting present ("only 96 rec'd") and count differs on line 1 (note 100, counted 96). Suggested: post 96 of BRG-6204, post 50 of BRG-6205, log a shortage of 4 against the supplier. [Approve] [Edit] [Reject]
Most holds then take under a minute. If people regularly have to open the stock system to work out what to do, add the missing context to the entry.
Start stricter than this: for the first month, hold everything and let a person approve each posting with one click. Once a month of approvals shows the automatic path would have been right, switch it on. Adding human approval steps to AI automations shows how to build the one-click approval.
Worked example: 35 deliveries a week at a spare-parts manufacturer
An illustrative manufacturer of spare parts for packaging machinery receives about 35 deliveries a week (roughly 150 a month) from around 40 suppliers: bar stock, bearings, seals, fasteners and bought-in electrical parts. Its goods-in clerk used to key each note into the stock system and check it against the PO: about 10 minutes a note, or nearly six hours a week. Stock accuracy at quarterly counts was poor, and nobody tracked supplier shortages.
The build, on an automation platform with an AI step, took about 25 hours spread over a month: 12 of them on the mapping table (about 900 supplier codes from past POs), 6 on the automation, and 7 on testing. Running costs were small. Each note uses a handful of automation tasks (more for long notes), which fitted within an entry-level paid tier. AI costs depend on the model and how many tokens a page image uses, which varies by model and resolution; on an assumption of about 3,000 input tokens and 400 output tokens per note, Claude Sonnet 5 ($2 and $10 per million) costs about a cent a note, and OpenAI's gpt-5.6-luna ($0.20 and $1.20) about a tenth of a cent. At 150 notes a month, that's under $2 either way.
| Measure | Before | Month 1 | Month 3 (illustrative) |
|---|---|---|---|
| Clerk time on goods-in paperwork per week | 5.8 hours | 3.5 hours | 1.8 hours |
| Notes needing a person | All | All (approval mode) | About 1 in 5 |
| Supplier discrepancies logged | Not tracked | 11 | 7 |
| Items off at the quarterly count | 38 SKUs | n/a | 12 SKUs |
The exception rate fell mainly because the "needs mapping" list shrank as new codes were confirmed. Across a month, the clerk's time fell by about four hours a week, roughly 17 hours a month, which paid back the 25-hour build in under two months. The discrepancy log turned out to be a bonus: two suppliers accounted for most of the shortages, which gave the buyer something concrete to raise with them.
Tests to run before you trust it
Build a test set of 30 past delivery notes whose correct entries you know, including awkward ones: a part delivery, a note with handwriting, a two-page note, a photo taken at an angle and a supplier with odd units. Run them through and score every field, not just "did it work". Failures to expect, and how they show up:
- Unit errors: "10" booked where 10 boxes of 200 arrived. Shows up as a stock figure 1% of what's on the shelf. Fix with the conversion column and a rule that every supplier unit must be mapped.
- Character confusion in batch numbers: "BX22O917" with a letter O. Shows up when a quality recall can't find the batch. Fix with a pattern check.
- Duplicate scans: two people photograph the same note. Shows up as double stock. Fix by rejecting any delivery note number already processed.
- Missing PO numbers: some suppliers print them only on the invoice. Shows up as a pile of held notes from the same supplier. Fix by asking the supplier to print it, or by matching on supplier plus items plus open POs, with a person confirming.
- Rolled-up lines: a note lists "fixings kit" that your PO split into six items. Shows up as a permanent mapping exception. Fix with a one-to-many mapping row.
Aim for every field correct on at least 28 of the 30 before switching on even approval mode, and for the misses to be caught by a rule rather than slipping through. If handwritten goods-in forms are part of your process too, turning handwritten forms into spreadsheet data with AI covers the extra checks handwriting needs.
When a supplier's own data beats reading the paper
AI is the answer for paper and PDFs you can't avoid. For your biggest suppliers, ask first whether they can send the delivery details electronically. Many distributors can email an advance shipping notice (a file listing what's on the lorry, often sent the evening before) or a CSV of each delivery, and some print barcodes on each line that a phone scanner can read. Structured data like that is exact, needs no extraction and costs nothing per note.
An illustrative wholesaler receiving 60-line pallets from three large suppliers took this route: those three sent delivery files that were imported directly and checked against the count, while AI handled the remaining 30 smaller suppliers' paperwork. The three large suppliers covered nearly half the lines received, so the AI pipeline had much less to do and far fewer long, dense notes to read. It's worth one email to each of your top five suppliers before you design anything.
An off-the-shelf feature or a build of your own?
Before building anything, ask your stock or accounting system's vendor four questions: Can it capture delivery notes itself, or only supplier invoices? Can it receive against individual PO lines, including part deliveries? Does it have an API or a CSV import for goods receipts? And can it flag a receipt that differs from the PO? Many systems handle supplier invoices well and delivery notes barely at all, because invoices drive payments and get more attention from vendors.
A wholesaler whose stock lives in Shopify, for instance, can record receipts on purchase orders in the admin since Shopify's Stocky app stopped working on 31 August 2026; a custom automation would feed those receipts rather than replace them. A manufacturer on a small ERP might find a CSV import is the only route in, which works fine for a daily batch. If invoices are your bigger pain, matching supplier invoices to purchase orders automatically uses the same matching logic, and many businesses build both together. The broader picture of turning scans into data is in AI document processing.
How to tell it's working after a month
- Cycle counts: count 20 fast-moving SKUs that the automation has posted. If they match, the chain from note to stock works.
- Exception rate: the share of notes needing a person should fall as the mapping table fills. If it doesn't, look at which rule triggers most.
- Time at goods-in: ask the clerk, and time a few deliveries. The saving should be visible within weeks.
- Discrepancy log: shortages and substitutions per supplier. A log that stays empty probably means counts aren't being done.
If those four look right, you have what the question asked for: delivery notes that update stock automatically, with a person looking only at the ones that deserve it.
Delivery notes and AI: other questions
Can AI read handwritten changes on a delivery note?
Often, but not reliably enough to post stock on its own. Current models read neat handwriting such as '8 rec'd' or a crossed-out quantity reasonably well, and misread rushed scrawl, carbon copies and notes written over printed text. Treat any handwriting as a trigger for human review: the AI's job is to spot that an amendment exists and show it to someone, not to decide what it says.
Does it work with delivery notes in other languages?
Mostly, yes. The large models read common languages well, and item codes and numbers are language-neutral anyway. The weak spot is product descriptions and unit words, where a translated 'carton' or 'pack' may map to the wrong unit. Rely on supplier item codes and your mapping table rather than descriptions, and test a sample of each foreign-language supplier's notes before automating them.
Do staff still need to sign the delivery note?
Keep whatever signing or checking your suppliers and carriers require, because a signed note is often your evidence in a shortage or damage claim. Better still, have staff note shortages or damage on the paper before signing, then photograph it. The photo becomes the record the AI reads, so an amendment written at the door flows straight into the exceptions queue.
Further reads
- How to Automate Purchase Orders and Supplier Emails With AI — Clean purchase orders make delivery-note matching far easier.
- How to Use AI to Set Reorder Points and Prevent Stockouts — Accurate goods-in data is what reorder points depend on.
- AI Supplier Management: Track Prices, Lead Times, and Risk — Turn the discrepancy log into supplier performance tracking.
- How to Sync Stock Across Shopify, Amazon and eBay Automatically — Where received stock goes next if you sell online.
- How to Use Shopify Sidekick to Run Your Store Faster — Shopify's own assistant for purchase orders and reorders.
- AI Inventory Forecasting for Small Businesses: How It Works — What better stock data lets you forecast.
- How to Forecast Covers and Cut Food Waste With AI — A step-by-step covers forecast a small restaurant can build in a spreadsheet with AI help, turned into prep quantities and checked against a daily waste log.
- Where AI Actually Saves Time in a Small Restaurant — A task-by-task look at a small restaurant's admin week: where AI cuts real minutes, where it only moves them, and where it adds work.
- Does AI Stock Ordering Pay Off for an Independent Pharmacy? — The payback sum for AI stock ordering in a single-site pharmacy, the traps that inflate vendor claims, and a 30-day shadow test.
- Can AI Read Emailed Orders Into a Wholesaler's System? — When AI can reliably turn emailed orders into sales orders for a wholesaler, what it depends on, and three different wholesalers' answers.
- AI Workflow Automation Examples: 20 Processes to Automate First — Twenty processes ranked by a 25-point score, from inbox sorting to credit packs, each with a worked example, rough costs and what to watch.
- Why AI Stock Forecasts Go Wrong: 8 Mistakes Small Businesses Make — The eight ways small businesses feed AI stock forecasts bad history or misread the output, each with a worked example and a fix you can apply this week.
- Can AI Sort and File Incoming Documents for Your Business? — When AI can sort and file your incoming paperwork, what it costs in the software you run, and the review pile that stops misfiles.
- AI Tools and AI Development: The Complete 2026 Guide — the AI hub, including every tutorial in the AI-for-business series.
Sources: Shopify help pages on purchase orders and receiving inventory; facts sheet (Microsoft Lens retirement, Shopify Stocky shutdown, API token prices, automation platform pricing). The business, volumes and test results are illustrative.