Purchase orders
Purchase orders turn approved invoice lines into supplier orders and keep what you paid for blanks on the job for profitability.
Printful is print-on-demand: those lines ship to the client. Enable Test fulfill orders on Integrations, assign artwork on each invoice line, then Create PO and submit a Printful draft (you confirm the print file before Printful charges).
Printful fetches the print file from a public HTTPS URL. Cloudinary URLs are already public. R2 files are served from /api/public/artwork-file (no login; only artwork objects, not email attachments). Localhost cannot be fetched by Printful, so local submits still use a short-lived signed R2 URL. Do not make the whole R2 bucket public in Cloudflare — that would also expose other order files. After submit, open the Printful order in their dashboard to review the mockup and costs. Order costs are calculated asynchronously — we poll until Printful marks them done and store subtotal/shipping/total on the PO.
Bundle a cart (free shipping)
S&S and SanMar typically need about $200 on one PO for free freight. Purchase Orders → Build cart (/shop/purchase-orders) lists untagged S&S / SanMar invoice lines from the last 2 months (lines already on a draft or submitted PO are hidden).
Select lines across jobs, watch the running total vs. the free-shipping target, then Create purchase order. S&S and SanMar still submit as separate POs (one cart can create both). The target amount is set under Settings → Orders Settings.
On an order Purchase Order tab you can also add untagged lines from other recent orders into the current draft.
From an order
Purchase Order tab, or Create PO on the Invoice tab when eligible supplier lines exist.
Wizard (S&S / SanMar / Printful lines):
- Line items — confirm styles, quantities, warehouse (S&S)
- Shipping — ship-to, method, notification emails, notes
- Review & submit — live submit talks to the supplier
Keep PO test mode on under Settings → Integrations until a test PO has succeeded.
You can also link historical supplier purchases to the order (bottom of the Purchase Order tab) so margin uses actual blank cost. Suggested matches only include supplier lines whose SKU is on this invoice.
Shop-wide list
Purchase Orders in the sidebar.
- Sync from suppliers
- Orders tab — filter by provider (All / S&S / SanMar / Printful), status, search. Expand a row for Items and Tracking. Draft vs submitted. Link back to the Custom Designer order.
- Build cart tab — pick untagged catalog lines across jobs to hit the free-shipping minimum.
- Products tab — how often you buy a style (group by style+color, style, or SKU): times ordered, quantity, spend.
What this is not
There is no generic “email a PO to any vendor” workflow for non-catalog items. Local Items still belong on the invoice; buying those blanks is outside this wizard unless they came from S&S, SanMar, or Printful.