Most guides that rank for this question show you how to print an invoice. That is the easy part. The hard part is lining up what Printify charged you against what Shopify says you sold — and discovering that the two lists were never built to agree. This walks the actual reconciliation, with a worked profit example the other pages skip.
Where the two records live and why they disagree
Your Shopify orders are the revenue side: one row per checkout, timestamped when the customer paid. Your Printify invoices are the cost side: one line per item Printify produced, timestamped when the item entered production and Printify charged your card.
Those are two different clocks. A customer can buy on Monday; Printify may not charge you until Tuesday when the order is routed to a print provider. So a Printify invoice dated in one week routinely contains orders that Shopify booked in the previous week. This is the same class of timing mismatch that also breaks ad-platform reporting — the broader pattern is worth understanding because it recurs across every tool a print-on-demand store connects.
The join key most people miss
Every Printify order carries two identifiers: Printify's own order ID and the external order number pulled from your sales channel — the Shopify order name, like #1017. On the invoice and in the Printify order list, that external number is the field that ties a supplier charge back to a specific Shopify sale. Match on it, not on dates or amounts, because dates drift and amounts rarely line up one-to-one.
Why the order counts will not match
If you have 100 Shopify orders in a week, you will almost never see exactly 100 Printify line items on that week's invoices. Here is where the extras and gaps come from.
- Batching. Printify issues charges as items go to production, grouped into invoices, not as a clean daily total. One invoice can span several days of Shopify orders.
- Split fulfillment. A single Shopify order with two products from two print providers becomes two Printify orders — two cost lines for one sale.
- Reprints and replacements. If a mug arrives cracked, Printify may charge you for a reprint. That cost line has no matching new Shopify order at all.
- Shipping charged per item. Printify bills a shipping fee per production order that your Shopify order total does not itemize the same way.
- Timing at the boundary. Orders near the end of a period land on the next invoice, so a period-to-period comparison is always slightly out of phase.
The takeaway: reconcile on trailing windows, matched by order number, and treat reprints and shipping as their own cost buckets. Do not try to force a day's Shopify sales to equal a day's Printify charges — they measure different events.
The number that actually matters: per-order profit
Matching invoices is a means to an end. The end is knowing, for each sale, what you keep after the supplier, the payment processor, and the ad that drove the click. Shopify's own reports do not do this for you out of the box — the platform separates gross, net, and total sales, but fees and supplier costs live outside the sales report entirely (Shopify Help — Finances report).
Print-on-demand makes this harder because the cost side moves. Both Printify and Printful adjust prices through the year, sometimes on single SKUs and sometimes across a whole catalog, so a cost you recorded in spring is likely wrong by fall (SAL Accounting). That is exactly why the invoice — the real amount charged — is the source of truth for COGS, not a number you typed into a spreadsheet once.
A worked example
Say you sell a printed mug on Shopify for $24.99, shipping included in the price. Here is one order, reconciled against its Printify invoice line and the Shopify payout.
The Printify invoice for that order shows a blank mug at $7.66 plus $4.75 shipping, so your supplier cost is:
7.66 + 4.75 = 12.41
Shopify Payments takes a processing fee on the $24.99. On the US Basic plan that is about 2.9% plus 30 cents per transaction (Webgility):
(24.99 × 0.029) + 0.30 = 0.72 + 0.30 = 1.02
Now the ad. Say the mug came from a Meta campaign and your blended cost to acquire that order was $6.00. Your true per-order profit is:
24.99 − 12.41 − 1.02 − 6.00 = 5.56
So a $24.99 sale nets you $5.56, not the $17.33 you might assume if you only subtracted the mug cost. Miss the shipping line on the invoice, or the processing fee, or the ad spend, and you overstate profit by three to four dollars on every order — enough to make a "winning" product quietly unprofitable.
Where refunds and chargebacks break the tie
Refunds only lower the Shopify side and your payout — Printify still charged you to produce the item. A refunded order means you paid the full supplier cost and collected nothing, so its per-order profit is deeply negative and must be reconciled as a loss, not dropped from the count. A disputed order adds a chargeback fee of roughly $15 in the US on top (Webgility). Neither the ad platforms nor a naive sales report reflect these; only invoice-plus-payout matching does.
A repeatable monthly workflow
You can do this by hand at low volume:
- Export the month's Shopify orders (order number, total, refunds).
- Export or open the month's Printify invoices and pull each line's external order number and cost.
- Join the two lists on order number. Flag Printify lines with no Shopify match (reprints) and Shopify orders with no Printify line yet (in production, not billed).
- Add the Shopify processing fee per order and allocate ad spend.
- Close the month — do not carry unmatched lines forward silently.
The manual path works until it doesn't. As soon as you run split providers, reprints, and paid ads across several hundred orders a month, the join becomes a part-time job, and the ad-attribution piece gets genuinely thorny — platform-reported conversions do not equal Shopify orders, for structural reasons that no spreadsheet fixes. If you allocate ad cost by trusting Meta's own view-through conversion counts, you will over-credit the ad and understate your true acquisition cost per order.
Letting the join happen automatically
This is the gap PodVector is built for. It connects Shopify, Meta Ads, Google Ads, Printify, and Printful, then computes true per-order profit — the supplier invoice line, the processing fee, and the ad spend already joined to each order, so you are not exporting three CSVs and matching by hand.
It is not a dashboard you have to read. Victor, its AI operator, analyzes your connected data and can act on it Shopify-side with your approval — for example flagging a product whose real margin has gone negative after a Printify price change, or surfacing the orders where reprints ate your profit. Victor reads your ad data to reason about acquisition cost but does not touch your ad account; the moves he executes are on the Shopify side. When you are ready to see per-order profit without the spreadsheet, start with a free PodVector account.
Getting the invoice-to-order match right is the foundation; attributing the ad half of each order's cost correctly is the next layer, and it is worth learning how multi-touch attribution tools change the acquisition-cost number you plug into the profit math above.
FAQs
Where do I find my Printify invoices?
Printify invoices live in your Printify account settings, where you can also set the format and frequency. Each invoice lists the items Printify produced, their costs, shipping, and — critically for matching — the external order number from your Shopify store next to Printify's own order ID.
Why does my Printify invoice have more lines than my Shopify order count?
Usually split fulfillment and reprints. One Shopify order using two print providers becomes two Printify lines, and any reprint or replacement is a Printify charge with no matching new Shopify sale. Match on the store order number and flag the extras as their own cost bucket.
Can I just use Shopify's cost-per-item field instead of the invoices?
You can, but it drifts. Shopify's per-product cost is a static number you enter, while Printify and Printful change catalog prices through the year (SAL Accounting). The invoice reflects what you were actually charged, so it is the accurate COGS source; the cost-per-item field is a rough estimate at best.
Why doesn't my Shopify payout match my sales after subtracting Printify costs?
Because a payout is a batch of balance transactions — captured charges minus processing fees, refunds, and chargebacks that cleared in that period — not a day's sales minus supplier cost. Reconcile the payout against Shopify balance transactions, and reconcile Printify costs against orders separately; they are two different reconciliations.
Does matching invoices to orders tell me my real profit?
It gives you the supplier and fee side of profit. To get true per-order profit you also need the ad cost that drove each order, and platform-reported ad numbers overstate their own contribution, so you cannot simply trust Meta's conversion count. Joining invoice cost, processing fee, and correctly attributed ad spend to each order is what produces an honest per-order margin.