"Who owes me money right now?" is the simplest question a wholesale seller asks, and Shopify makes it surprisingly hard to answer in one place. The trap is not the orders you can see — it is the ones that live somewhere else. This guide covers how to pull a complete who-owes-me list, whether or not you use B2B Companies.
Money owed to you on net terms usually arrives in Shopify in one of two shapes:
A complete answer to "who owes me" has to include both. Most spreadsheets and quick filters only catch the first.
Here is the part people miss. A draft order only becomes a real order once it is marked as pending payment (or paid). Until then, an invoice you have already sent sits under Orders → Drafts, not in the Orders list you just filtered.
If you invoice non-Company customers this way, this second list can be as big as the first — and skipping it is why a total pulled from Orders alone always feels too low.
A flat list of unpaid orders is not yet an answer. Group it:
Now "who owes me money" has a real answer: this customer, this much, this overdue.
Wholesale customers often pay by bank transfer or cheque, which leaves the Shopify order reading "pending." Reconcile those first, so your who-owes-me list does not include people who paid you last week. Chasing a customer who already paid is the fastest way to damage a good account.
If an order or draft never had a payment term attached, "overdue" is your inference, not a fact Shopify recorded. It is fairer — and it collects just as well — to open with a gentle "is this one still open on your side?" than a hard past-due notice.
Disclosure — this is my app. Pulling both lists and aging them every week got old, so I built a small, read-only Shopify app that does the aging for you: Basis Receivables.
It reads your B2B companies, orders and payment terms and shows one who-owes-me report: orders on a B2B Company's account are grouped per company, worst first, and aged into current / 1-30 / 31-60 / 61-90 / 90+ days. Crucially, it also ages the unpaid orders you created from draft orders, each listed under its order number (the app does not show customer names on these rows), so wholesale customers who are not set up as B2B Companies are included, not missed. A draft still sitting under Drafts is not an order yet. Unless you have given the app access to draft orders, it cannot see such a draft, so complete it first: in the draft, choose "Payment due later" and a term, then "Create order". A draft the app does list is one whose invoice you sent, marked "Draft invoice (not yet an order)". An order with no Shopify payment term is aged from its order date and marked Can't verify, and the reminder it drafts on the paid plans reads as a payment query, not a past-due notice. It is read-only — no write access, so it cannot change an order, a price or a customer — and it keeps no database: it stores no order or customer record. The free tier shows the full report for up to five companies and five unpaid invoices outside Companies; drafted reminders come with the paid plans.
Filter Orders by payment status Pending (and Partially paid if you take deposits), then also check Orders → Drafts for invoices you have sent but not converted. The Orders filter alone misses draft-order invoices.
No. You can invoice any wholesale customer from a draft order without a Company. Those draft-order invoices are receivables too — and the ones most often left out.
A draft becomes a real order only when it is marked pending or paid. Sent-but-unpaid draft invoices live under Drafts, not Orders, so an Orders filter will not list them.