Alfred Purchase Orders

Purchase Orders

Manage your entire purchasing workflow — from creating purchase orders to tracking deliveries. Upload POs from CSV files or use AI to extract line items from any document format. Send POs directly to your supplier via Alfred (no PDF attachment hunting), let them confirm / reject / request changes on a private review page, and have everything route back into the same PO record. Capture the order-level charges that unit price leaves out — shipping, customs, other fees, and supplier discounts — and Alfred allocates each across the line items to give you a true landed cost per unit, which you can publish straight to Shopify as the product's cost per item. Supplier management — catalogs, costs, lead times, contacts — lives under Configurations › Suppliers (see the Suppliers guide).

Key Concepts

PO Statuses

Purchase orders flow through statuses: Draft → Submitted OR Pending Supplier Review → Confirmed → In Transit → Received → Cancelled. Each status update is tracked with timestamps. POs in any active status (Submitted / Pending Supplier Review / Confirmed / In Transit) are factored into inventory forecasts as inbound stock.

Send to Supplier (email)

From any draft, submitted, or pending-review PO, the Send to supplier action emails the PO directly to your supplier via Alfred. The Preview step renders exactly what the supplier will see before you commit. The PO flips to Pending Supplier Review and the supplier gets a private link to review, confirm, request changes, or reject — no PDF attachment to dig out of email threads. Reply-To is set to your account email so supplier replies (and status update notifications when they act) route directly to you, not to a no-reply void.

Supplier Review Page

The link in the email opens a private, branded review page (hosted on alfredcommerce.com, no Shopify login required). The supplier sees: your business letterhead, ship-to address, full line items with SKU/qty/unit cost, totals, and your personal note. They can: Confirm the order (PO auto-flips to Confirmed and you get a notification email), Request Changes with per-line revisions (quantity, unit cost, supplier SKU, remove line) and a freeform note, Reject the PO, OR just download a CSV/PDF copy for their records. Optionally they can include an estimated ship date that flows back to your PO.

Negotiating revisions

If the supplier requests changes, you'll get an email with their proposed revisions and notes. On the PO detail page in Alfred, a warning-toned panel shows each line revision (qty / unit cost / supplier SKU / remove) side-by-side with the original values. Two terminal actions: Accept all & confirm (applies every revision, flips to Confirmed, notifies the supplier with a link to the final PO), or Counter-revise & re-send (edit the PO in-app, click Re-send to start another round). The negotiation is capped at 3 cycles to keep things bounded — after that you must Accept or Cancel.

Smart Import (AI)

Upload any file — CSV, PDF, Excel, or image of a PO — and AI automatically extracts supplier info, line items, costs, and dates. Review and confirm the extracted data before creating the PO.

Additional costs & credits

A purchase order's real cost isn't just the unit price. The Additional costs & credits card on every PO captures four order-level amounts — Shipping, Customs, Other fees, and Discounts & credits — and spreads each one across the line items so you can see what a unit actually costs you. Enter every amount as a positive number, including discounts: Discounts & credits is its own bucket that subtracts, so a $200 supplier discount goes in that field as 200, not as -200 in a cost field. Each bucket is allocated independently and you choose how: Weight-based (a line's share = unit weight × quantity ÷ the PO's total weight — best for freight, where a heavy item genuinely costs more to ship), Value-based (share = quantity × unit cost ÷ the PO's total value — best for duties and percentage discounts that scale with spend), or Unit-based (share = quantity ÷ the PO's total units — every unit takes an equal slice regardless of size or price). Defaults: Shipping is Weight-based, Customs is Value-based, Other fees is Unit-based, and Discounts & credits is Value-based. Change any of them per PO.

Landed cost per unit

Landed cost is what one unit actually costs you once the order-level charges are spread across it: unit cost + shipping share + customs share + other fees share − discounts & credits share, where each share is that line's allocated amount divided by its quantity. It never goes below $0. Configure landed cost lets you decide which of the four buckets feed that number — all four are included by default. Excluding a bucket doesn't delete it: the amount stays on the PO and stays allocated, it just stops counting toward the per-unit landed figure. That's useful when you want a charge in your records but not in the cost you judge margin against. Landed cost is recalculated whenever anything behind it moves — editing an amount, changing an allocation method, or a quantity change (including accepting an over-receipt). A quantity change shifts the allocation basis for every line on the PO, not just the one you edited.

Export label file (barcodes & labels)

Print barcode or shelf labels for the products on a purchase order using your existing label app. The Export label file action downloads a CSV that popular barcode-label apps — like BarcodeMan or CTS (Multi Label Barcodes) — import to print one label per unit. Alfred matches each product by SKU or barcode against your synced Shopify catalog, so the file carries the product identity and the label app pulls the live details to print. It's available three ways: from a PO's Export menu (all ordered items), from a receiving session's summary (just the units you received), and from a specific shipment. Before you export, the modal accounts for every product — including any that are missing a SKU or barcode — so you know exactly what will and won't get a label. A product that has a SKU but no barcode is included, but it won't carry a scannable barcode until you add one to the product in Shopify.

How to Use

1

Create a Purchase Order

Click 'Create PO' and choose your method: manual entry, CSV upload, AI Smart Import, or from a Purchase Plan. Add line items with SKU, quantity, and cost. Assign a supplier and set the expected delivery date.

2

Send the PO to your supplier

Open the PO detail page and click the primary Send to supplier action (envelope icon). The modal pre-fills the recipient from your supplier's email, CCs your account email, and drafts a subject + body. Click Preview to see the exact email the supplier will receive — including your business letterhead, full line items, totals, and review CTA. Click Send when it looks right. The PO flips to Pending Supplier Review, you get the review link as a CC, and any supplier action (Confirm / Request Changes / Reject) will email you back. If the supplier doesn't respond, you can manually re-send from the More actions menu — the previous link is automatically invalidated.

3

Review supplier revisions

If the supplier requests changes, the PO detail page shows a warning-toned panel above the line items with every proposed change (line, field, from → to, supplier note). You can: Accept all & confirm (applies every change, finalizes the PO, supplier gets a confirmation email with a link to the final approved PO for their records), or Counter-revise & re-send (edit the PO in-app, then click Re-send — the modal pre-fills with your last subject/body so you don't have to retype). The negotiation is capped at 3 cycles.

4

Upload an Existing PO

Click 'Upload Existing PO' and choose CSV Template (structured format) or Smart Import (any file). For CSV, map your columns to the required fields — a SKU or a Barcode column, plus quantity. For Smart Import, upload your file and review the AI-extracted data. Alfred matches each line to your Shopify catalog by SKU or barcode, so products that use barcodes (and have no SKU) import fine, and every row is accounted for as matched, not-in-catalog, or skipped.

5

Add costs & credits to a PO

Open the PO and expand Additional costs & credits. Enter what you were charged — Shipping, Customs, Other fees — and any supplier discount under Discounts & credits. All four take positive numbers; the discount bucket subtracts on its own, so you never type a negative. Next to each amount, choose how it should be spread: Weight-based, Value-based, or Unit-based. As soon as an amount is in, the Estimated landed costs table shows each line's allocated share and its Landed/Unit figure, so you can sanity-check the split before you save. If a line shows a $0 share of a weight-based charge, that product has no weight set in Shopify.

6

Publish landed cost to Shopify

In the Estimated landed costs table, the Landed/Unit column is Alfred's computed cost for one unit of that product. Click any row to publish that figure to Shopify as the product's Cost per item — the field Shopify uses for its own margin and profit reporting. The row shows the product's current Shopify cost next to the computed one first, so you're deliberately overwriting rather than doing it blind. Once the PO has moved past Draft, Bulk manage lets you review and publish several lines in one pass. Publishing is always your call — Alfred never writes a cost back to Shopify on its own.

Tips & Best Practices

  • Use Smart Import for supplier invoices and PO confirmations in any format — AI handles the field mapping.
  • Link POs to purchase plans for traceability — you can track which plan generated each order.
  • Set estimated delivery dates on POs so the forecast engine accounts for when stock will arrive.
  • When using Send to supplier, always use the Preview step before clicking Send — the email is sent immediately and the prior link is auto-revoked on each new send.
  • Set your business entity (legal name + mailing address) on the PO before sending — it becomes the letterhead the supplier sees, so an unbranded shop subdomain doesn't show up where your company name should.
  • Re-sends pre-fill from the last send (To / CC / Reply-To / Subject / body note) — when you counter-revise, you only need to tweak what changed.
  • Print labels straight from receiving: after counting a receive session, use Export label file on the session summary to get a label file for exactly the units you received — one label per unit — then import it into your barcode app.
  • No SKUs? No problem — both the CSV upload and the label export match products by barcode too, so a barcode-only catalog works end to end.
  • Enter every additional cost as a positive number — including discounts. A supplier discount belongs in Discounts & credits, not as a negative in a cost field; Alfred rejects negative amounts on save.
  • Weight-based allocation needs product weights in Shopify. If a PO has no weights at all, Shipping quietly falls back to Unit-based so the charge still lands somewhere — but the other three buckets don't fall back, so a Weight-based customs charge on a weightless PO allocates nothing. Use Value-based or Unit-based when your weights aren't set.
  • If only some lines have weights, only those lines take a share of a weight-based charge — the rest get $0. Scan the Estimated landed costs table for $0 shares before you trust the numbers.
  • Additional costs are OFF by default on anything your supplier sees (the PDF and the supplier review page). Turn one on only if you genuinely want them to see it — a negotiated discount usually isn't something to hand back to the supplier.

Frequently Asked Questions