Blog · 16 October 2026 · 7 min read

Supplier invoices on a Shopify purchase order: unpaid, due, overdue

How Restock Ops tracks the supplier invoice on each Shopify purchase order: status, due date, invoice total vs PO total, overdue banner and Unpaid filter.

The purchase order is only half of the paperwork. A few days after the goods ship, or sometimes with them, an invoice arrives, and from then on there are two documents about the same stock: what you asked for and what you are being charged. Shopify has no place to keep the second one. Its transfers track quantities moving between locations and nothing about money, so the invoice ends up in an inbox, a shared drive or a spreadsheet, and the question of whether supplier X has been paid for the September order gets answered by searching email.

Restock Ops keeps the invoice on the purchase order it belongs to. Every PO has a small Invoice section with four fields, a status that flips on its own at the right moment, and an overdue state that surfaces in the list, the detail page and the CSV export. This post explains each piece and the habits that make it useful, with one honest note about what it does not do yet.

What lives on the supplier record

Before the PO, the supplier. Each supplier in Restock Ops carries a currency, a lead time in days, a Payment terms (days) field and a Minimum order value, plus a free-text Notes field. Payment terms are what the supplier has agreed with you, 30 for net 30, 60 for net 60, and the supplier list shows them in a Terms column as Net 30 or Net 60 so you can see at a glance who gives you two months and who wants paying on receipt.

Minimum order value is the floor the supplier will accept, in the supplier's currency. Right now it is a reference field: Restock Ops stores it and shows it on the supplier page, and does not stop you raising a PO beneath it. The Notes field is the one that follows you around, because its contents are shown when you build a PO for that supplier. If a supplier has a quirk about invoices, pays attention only to their own SKU, or wants the PO number quoted on the remittance, write it there and it appears exactly when you need it.

The four invoice fields on a PO

Open any purchase order and the Invoice section sits in the header, next to the destination and notes. It has four fields.

FieldWhat it holdsNotes
Invoice numberThe supplier's reference for the invoiceFree text. Shows in the CSV export so finance can match it.
StatusNo invoice, Unpaid or PaidNo invoice until the PO is ordered. Switching to Paid stamps a Paid on date.
Due dateWhen payment is dueA date field. Use the supplier's payment terms to pick it.
Invoice totalThe amount on the invoiceUntil you type one, the field shows the PO total as a hint for comparison.

Why Invoice total and PO total are separate

It would be simpler to assume the invoice equals the PO. It almost never does. Suppliers add freight, round tax differently, substitute a line, short-ship a size or apply the discount tier you earned last quarter. Restock Ops keeps the PO total as the sum of the lines you ordered, in the supplier's currency, and lets the invoice total be whatever the supplier printed. When the invoice field is empty the PO total is shown beneath it as a hint, so the comparison is right there as you type: PO total 1,840.00, invoice says 1,912.50, and the 72.50 is a question for the supplier before anyone pays.

The header, including the invoice fields, stays editable until the PO is closed or cancelled, so you can fill the invoice number in when the invoice arrives, which is usually after ordering and sometimes after receiving. Once the PO is closed the fields lock along with everything else.

What happens at Mark as ordered

The status does one thing on its own. When you mark a PO as ordered, the confirmation dialog tells you that the lines are frozen and that the invoice is marked unpaid, and if you already set a due date it quotes it: The invoice is marked unpaid (due 15 November 2026). Behind that sentence, a status of No invoice becomes Unpaid. A status you set by hand, Paid for a pro forma invoice you settled up front for instance, is left alone.

The reasoning is that an ordered PO is a commitment. Whether or not a piece of paper has arrived yet, you owe the supplier for it, and a PO that is ordered but shows no invoice state is how payments get missed. Unpaid from the moment of ordering means the PO list tells the truth about outstanding money even for suppliers who are slow to invoice.

Overdue: where it shows up

An invoice is overdue when its status is Unpaid and its due date is in the past. That is the whole rule, and it surfaces in three places.

  • On the PO itself, a critical banner at the top: Invoice overdue since 15 November 2026. You cannot open the PO without seeing it.
  • In the purchase order list, the row carries an Overdue badge with the due date, so a scan down the list finds the problem ones without opening anything.
  • In the list filters, Unpaid invoices shows every PO with an unpaid invoice, overdue or not. Sort by due date and the top of the list is this week's payment run.

Getting it into the accounts

The PO list export and the single PO export both include the invoice columns: Invoice number, Invoice status and Invoice due, alongside supplier, currency, status, totals and dates. The column by column reference is in the CSV export post, including formulas for ageing unpaid invoices by due date. A filter on Invoice status equals UNPAID and a DAYS() against today gives a creditors ageing report from a tool that was never meant to be an accounts package, which is fine, because the point is to hand the list to whoever runs the accounts package with the PO numbers already attached.

A workflow that takes thirty seconds per PO

  1. When you create the PO, set the due date from the supplier's terms: order date plus their Net days. The Terms column on the supplier list is there to remind you.
  2. Mark as ordered. The invoice becomes Unpaid automatically; nothing else to do.
  3. When the invoice arrives, type the invoice number and the invoice total. If the total disagrees with the PO total shown underneath, raise it with the supplier now, while the PO is still open and the lines are in front of you.
  4. Receive the goods. Receiving is described in destination locations and receiving and has nothing to do with the invoice state, deliberately: goods can arrive before you pay and you can pay before they arrive.
  5. On payment day, filter the list by Unpaid invoices, pay the ones due, and set each to Paid. The Paid on date is stamped for you.
  6. Close the PO when both sides are done: stock received and invoice paid.

The honest note

The supplier's Payment terms field does not yet fill in the due date on a new PO for you. It is shown so you can do the sum, and the sum is easy, but it is still a sum. Pre-filling the due date from order date plus terms when a PO is marked ordered is on our list, and the fields are already shaped for it; until then, set the date by hand and the overdue logic works exactly the same.

Everything else here is in the app today. If you have been keeping a separate list of which supplier has been paid for what, you can stop: the purchase order already knows what you ordered, and now it knows whether you have paid for it.

FAQ

Does marking a PO as ordered set the invoice due date?

No. It sets the invoice status to Unpaid if it was No invoice, and leaves the due date as whatever you entered. Set the due date from the supplier's payment terms when you create the PO, and the overdue banner and badge will trigger from it once the date passes.

What counts as overdue?

A purchase order whose invoice status is Unpaid and whose due date is earlier than today. A PO with status No invoice, for instance a draft that has not been ordered, is never overdue even if the due date has passed, and a Paid invoice is never overdue regardless of date.

Can I record a partial payment?

Not as a separate amount. The status is No invoice, Unpaid or Paid, and the invoice total is a single figure. For a deposit and balance arrangement, most merchants keep the status Unpaid until the balance clears and note the deposit in the PO notes, which are exported alongside the invoice columns.

Does the invoice total change the PO total or the landed cost?

No. The PO total is always the sum of the ordered lines, and receiving uses the line costs. The invoice total is kept separately so you can see where the two disagree. If the supplier's price genuinely changed, edit the line cost on the PO while it is still editable so the cost that reaches Shopify is the one you actually paid.

Try it on your store. Restock Ops adds purchase orders with partial receiving, supplier notes, cost history, barcode labels, scanner stocktakes and a reorder report on top of Shopify inventory. From $19/month, 14-day free trial.

Install on Shopify Watch the demo

Sources