How to turn a buyer's emailed purchase order into a Shopify B2B draft order
Your wholesale buyers don't log in to order. They email a purchase order: a PDF from their purchasing system, a spreadsheet, a photo of a printed form, or a few lines typed into the email. Someone then retypes it into Shopify. This guide shows how to do that right by hand, what Shopify can't automate, and how to have each PO read and turned into a draft order for you.
The short answer
- A buyer's purchase order becomes a draft order for their company location. Choosing the location applies that account's catalog prices and payment terms automatically.
- Shopify doesn't read emailed POs. Shopify Flow has no trigger for an incoming email, so a person or an app has to read the PO.
- There are three routes: retype each PO, move buyers to your B2B store, or forward POs to an app that reads them and creates the draft.
- Automate with proof, not trust. Each line read from a document should be checked against that document's own text before an order exists. Scans and photos should always be checked by a person.
- No Plus needed. Companies, net terms, draft order invoices and PO numbers are on every Shopify plan.
Disclosure: Nexus Logic Systems makes The Usual, the app used as the example in the step-by-step section. Every statement about Shopify links to Shopify's own pages, read on 10 October 2026.
On this page
What a buyer's purchase order becomes in Shopify
For your buyer, the document is a purchase order. For you, it is a sales order waiting to be entered. In Shopify B2B it becomes a draft order for a company location, which you then send as an invoice or place on the account's payment terms.
That is a different thing from Shopify's own Purchase orders feature, which records what you buy from your suppliers. If the two are getting mixed up in your searches, read purchase orders in Shopify B2B, explained.
A buyer's PO almost always carries the same fields. Each one has a place in Shopify:
| On the PO | In Shopify | Watch out for |
|---|---|---|
| PO number | The draft order's PO number field | The same number arriving twice, or a revision ("REV 2") of an earlier PO |
| Buyer and ship-to | The company and its company location; the person is a company contact | Choosing the person but not the location loses the account's prices and terms |
| Item code | A variant's SKU or barcode | Buyers' own codes, codes inside longer codes, retyping errors |
| Quantity and unit | The line's quantity, in the variant's unit | "6 CS" (cases) entered as 6 single items |
| Unit price | Comes from the location's catalog; the PO's price is a check | A buyer working from an old price list |
| Delivery date | A note or custom attribute on the order | A date already passed; 01/02 read as January or February |
| Payment terms | The location's terms apply automatically (Net 7 to 90, or due on fulfillment) | Fixed-date terms can only be set on an individual draft |
Shopify behaviour from the Help Center pages listed under Sources, read on 10 October 2026.
Entering a purchase order by hand, properly
This is how most wholesale stores start. Done carefully, it takes a few minutes per PO and gets the account's own prices and terms right. These steps follow Shopify's Help Center page on B2B draft orders:
- Go to Orders › Drafts › Create order.
- Select the B2B customer, then the company location. This is the step that matters. Once the location is set, Shopify applies that company's prices, payment terms and checkout options.
- Add the products by searching each SKU on the PO, and enter each quantity in the unit the variant is sold in.
- Enter the PO number in the PO number section, exactly as the buyer wrote it.
- Choose how they pay. Select Payment due later and a term (the location's terms are used automatically if it has them), or click Send invoice to email a payment link.
- Check before you create. Compare your total with the PO's subtotal, and search your orders for the same PO number before placing it.
Where manual entry goes wrong
- The person, not the location. A draft for the contact alone is priced like a retail order, with no payment terms.
- Codes retyped wrong. One transposed digit orders a different product that also exists.
- The same PO twice. Buyers resend a PO when they haven't heard back, or a colleague forwards it again.
- A revision treated as a new order. "PO 4471 REV 2" replaces PO 4471. It doesn't add to it.
- Cases and singles. "6 CS" on the PO is not 6 units in your store unless the variant is a case.
- Nobody checked stock or the account. An out-of-stock line, or an account with overdue invoices, is noticed after the order is placed.
What Shopify can't do by itself
Shopify has every piece needed to hold a B2B order: companies, locations, catalogs, payment terms, PO numbers and draft order invoices. On the B2B features by plan page, all of these are on Basic, Grow, Advanced and Plus. What it doesn't have is a way to read a purchase order that arrives by email.
- Shopify Flow can't start from an email. Its trigger reference lists 83 triggers, from Draft order created to Scheduled time. None of them fires on an incoming email or an attachment (checked 10 October 2026).
- Flow can create a draft order once it knows the lines. Its Send Admin API request action can run most Admin API mutations, which is how developers create a draft order with
draftOrderCreate. That works for orders you know in advance, like a weekly standing order (see recurring B2B orders), not for a PDF nobody has read. - Shopify's own B2B store can take the order instead. Quick order lists, easy reorders and checkout to draft are on every plan. If your buyers will order online, that is the cheapest route.
Many buyers won't. One merchant described their wholesale accounts to the Shopify Community this way:
“They prefer to just email, text or call us.”
A B2B merchant, Shopify Community, 17 June 2024
Buyers at larger accounts often can't use your store even if they want to. Their purchase order comes out of their own ERP or purchasing system, and that system emails a PDF.
Three ways to handle purchase orders that arrive by email
Retype each PO
Free and flexible. Accuracy depends on who is typing, and each PO takes a few minutes plus checking.
Fine for a handful of POs a week.Move buyers to your B2B store
Buyers order through your storefront with their own prices and terms. No reading needed, but you can't make every buyer do it.
Best when buyers agree to it.Forward POs to an app
An app reads the PO, matches the lines, prices them for the account and creates the draft. You check what it flags.
Best when POs keep coming by email.Option 3 is only as good as its checks. An app that reads a PDF and creates an order without proving each line is moving your typing errors to a machine that makes different ones. The checks a PO reader should run explains what to require before trusting one. The apps that do this today are compared in Shopify apps that turn purchase orders into draft orders.
Automatic purchase order to draft order, step by step
Here is how it works in The Usual, which we build. The same stages apply to any tool worth using, so you can use this list to judge others.
- Your store gets its own purchase-order address. It is shown on the app's Purchase orders page with a copy button. Forward POs to it, or set a rule in Gmail or Outlook that forwards your buyers' emails automatically.
- The PO is read, usually within a minute. CSV and Excel files are read by code, without AI, from their column headings. PDFs, photos and orders written in the email's text are read by an AI model that only transcribes: values as written, and nothing filled in when it can't be read.
- Every line is proved against the document. For a PDF with a text layer and for the email text, code checks each line independently of the AI: its text is in the document, its item code stands on its own, its price and total are on that line, and its quantity can be told apart from the line's other numbers. Lines that fail are held for you.
- The account is found. In order of trust: the sender's address, when the email passed DMARC and belongs to a Shopify customer with a role on exactly one company location; the original sender of a forwarded email; the names on the PO; or you choose.
- Each line is matched to a product. First the codes this company used before, then SKU, then barcode, then the product's name. A name match is made only when exactly one active product fits every word and size, and it is always shown as "Matched by name — check it" until you confirm it once.
- It is priced and checked by Shopify for that account. Prices come from the location's catalog. It also checks stock, overdue invoices, your minimum order, a PO number already received or already on an order, the same file sent twice, a revision, and a delivery date already passed.
- The draft is created, or the PO waits for you. When nothing could make the order wrong (no unmatched or unproved line, a settled account, no possible duplicate or revision, not a scan or photo), the Shopify draft order is created by itself, with the PO number, the delivery date and the location's shipping address. Warnings that don't change what was ordered, such as a short item or a price that differs from the PO, are shown with it. Otherwise the PO waits on the Purchase orders page with each reason written out, and you get an email.
- Optionally, it is placed on payment terms. On paid plans you can let fully checked POs become orders on the account's terms. That happens only when the sender is verified, every line was matched by its code and proved by the document, nothing is held, and the account has payment terms.
Which purchase-order files can be read
Buyers send whatever their system produces. What can be read, and how far it can be trusted, depends on the file:
| What the buyer sends | How it is read | Can lines be proved? |
|---|---|---|
| PDF from a system (with text) | AI transcribes; code proves each line against the PDF's text | Yes, line by line |
| Excel (.xlsx) or CSV | Code, no AI: the header row is found by its column names | Yes, read exactly |
| Order written in the email | AI transcribes; code proves each line against the email text | Yes, line by line |
| Scanned PDF (no text layer) | AI reads the page image | No: every line is checked by you |
| Photo of the page (JPEG, PNG, WebP, GIF) | AI reads the photo; up to 7.5 MB, at least 500 px on its short side | No: every line is marked "Photo: check it" |
| Word, old .xls, HEIC | Not read; the reason is shown, asking for PDF, JPEG or PNG | Not applicable |
A PDF with a text layer is the best format a buyer can send, because every number on it can be checked by code. If a buyer sends phone photos every week, ask whether their system can export a PDF.
Before you switch automatic entry on
Most failed automations fail on setup, not on reading. Five things make the difference:
- Every buyer is a company with a location. The location carries the catalog prices and payment terms, so a draft without it is wrong however well the PO was read.
- Every variant has a SKU, and ideally a barcode. Codes are the strongest match there is.
- Buyers are company contacts with their real email addresses. That is what lets a PO be tied to its account from the sender alone.
- Payment terms are set on each location that buys on terms. Without them, a PO can't be placed on terms by anyone.
- Test with your own past POs before trusting anything. Send five from your best customers, one scan, one revision and one duplicate, and see what is caught. The ten-document test lists what to send.
Frequently asked questions
Can Shopify turn a PDF purchase order into an order by itself?
No. Shopify's Help Center describes creating a B2B draft order by hand, and Shopify Flow has no trigger that fires on an incoming email (none of its 83 triggers, checked on 10 October 2026). Reading a PO and creating the draft needs a person or an app that reads purchase orders.
Can Shopify Flow create a draft order from a customer's email?
Flow can create draft orders: its Send Admin API request action can run most Admin API mutations, and developers use it to call draftOrderCreate. What it can't do is start from an email or read an attachment, because none of its triggers is an incoming email. Flow works for orders you already know in advance, such as a weekly standing order, not for POs that arrive in an inbox.
How do I make a draft order use the buyer's wholesale prices and net terms?
Create the draft for the company location, not for the person alone. Shopify's Help Center says that once a B2B customer and company location are selected, “the prices, payment terms, and checkout options automatically reflect the settings for that company.” If the location already has payment terms, the draft uses them.
Where does the buyer's PO number go in Shopify?
In the draft order's PO number section (click the edit icon, enter the number, click Done). PO numbers are a B2B feature on every Shopify plan: Basic, Grow, Advanced and Plus. Keep the buyer's number exactly as written, because their accounts team matches your invoice to it.
Do I need Shopify Plus to take B2B purchase orders?
No. According to Shopify's B2B features by plan, companies, company locations, net terms, draft order to invoice, PO numbers and Shopify Flow with B2B objects are available on Basic, Grow, Advanced and Plus. Deposits, partial payments and direct company catalogs are Plus-only.
What happens when a buyer uses their own item codes instead of my SKUs?
The line can't be matched by SKU. Match it to the right product once and keep that mapping for the buyer's company. In The Usual, the code (or, for a line without one, the buyer's own name for the product) is remembered for that company, so the next PO with that code is matched without asking.
Can a photo of a printed purchase order be read?
Yes, by an AI model, but nothing read from a photo can be checked against a text layer, because a photo has none. A careful tool reads it and then asks a person to check every line. The Usual reads JPEG, PNG, WebP and GIF photos up to 7.5 MB and holds the PO with every line marked “Photo: check it”.
How much does it cost to automate purchase-order entry?
It depends on the tool and volume. For The Usual: the Free plan reads 5 purchase orders a month, Starter is $39/month for 100, Growth $99/month for 500 and Scale $199/month for 2,000, billed through Shopify. Other apps charge per order; see the comparison guide for their published prices.
Sources
- Shopify Help Center: Creating B2B orders using draft orders
- Shopify Help Center: Shopify B2B features by plan
- Shopify Help Center: Payment terms
- Shopify Help Center: Shopify Flow triggers
- Shopify Help Center: Flow, Send Admin API request action
- Shopify Community: B2B order processing without a wholesale area (June 2024)
- The Usual on the Shopify App Store