We converted to Shopify Purchase Orders since the Stocky sunset, but the current PO workflow stops short of accounts-payable management. We built a working prototype that extends Shopify’s existing Purchase Orders with supplier payment terms, invoice/ship/expected dates, payment due dates, payment tracking and partial payments, supplier credits and applying credits to future POs, multi-currency handling, and CSV export.
The key value is that all of this remains tied directly to Shopify’s native Purchase Orders rather than requiring merchants to maintain a separate AP system.
While we’ve been able to prototype this as an app, our preference would be for these capabilities to become part of Shopify’s native Purchase Order functionality. Maintaining a separate app means hosting the application and storing data that would ideally live directly alongside the PO data in Shopify (mimicking Stocky).
I’d be happy to share the working prototype, code, and more detail on the workflow with the Shopify product team if this is an area you’re exploring. I think there’s an opportunity to make Purchase Orders significantly more useful as an end-to-end purchasing and accounts-payable tool for merchants.
Right now, Shopify purchase orders can currently capture per-order payment terms and supplier currency, while shipment and expected-arrival details are handled through linked inventory transfers. The invoice, partial-payment, overdue, and reusable supplier-credit workflow you’ve built is still a fair gap to mention, though.
Could you share a short demo and confirm how the prototype currently links to the native PO data? It would also help to know which two or three pieces are most important in day-to-day use. No need to share private code or store data publicly. I’d like to capture the distinction between the existing PO API request and the broader AP workflow you’re proposing. I can’t confirm anything in terms of implementation or timelines, but I can definitely pass this on as a feature request at the very least.
Thanks for your response. We’re using Shopify’s existing per-PO payment terms, supplier currency, and linked transfers for shipment/expected-arrival information where those are already supported.
The prototype pulls the native PO data through Shopify’s currently unstable Inventory Purchase Order API and uses the Shopify PO ID to associate the additional AP records, so the native PO remains the center of the workflow. We’ve also been experimenting with metafields/metaobjects on the linked transfer to keep that supplemental data within Shopify rather than in an external database (since we only have the capability to edit transfers at the moment), but there are workflow automation gaps:
Supplier credits: recording credits against the original PO and keeping them available until refunded or applied to a future PO.
AP overview: what we owe, to who, and when, with balances/statuses and CSV export.
Ideally, the key AP information would surface directly within the native Purchase order details panel alongside the existing terms and currency, rather than living in a separate app. Payments and credits could have their own history/detail views, but the PO’s current financial status should be visible at a glance with the PO and in the PO dashboard. I’ve attached a rough example of how we envision that fitting into the existing UI.
The request is really to extend the native PO lifecycle from Draft > Ordered > Shipped > Received > Financially Settled, with the Purchase Order remaining the main touchpoint throughout.
Happy to share a short demo using test data showing the full workflow from invoice > partial payment > supplier credit > remaining balance > paid.
@Alan_G I did a bit more troubleshooting with the update, and I think this could get us much closer.
If Transfer metafields were available in Analytics, we could store the missing AP information on the linked Transfer: invoice number/date, payment due date, amount paid, balance due, payment status, supplier credits, etc. and then build the outstanding/overdue AP reporting directly in Shopify.
Even better would be the ability to add metafields directly to Purchase Orders and track, store, and report that AP information in place. That would keep the PO as the main point through, rather than using the linked Transfer as the workaround.
Hey @Alex_Suhadolnik - thanks for the extra detail and for digging into the analytics update.
Just confirming what I’m seeing on our end: the new inventory_purchase_orders and inventory_transfers data sources are focused on cost, quantity, supplier, and transfer status reporting, so AP/payment info isn’t part of that surface right now. On the metafield side, ShopifyQL currently supports metafields on products, variants, customers, and orders only, so transfer metafields won’t show up as dimensions or filters yet. And the InventoryPurchaseOrder object in the unstable API is still pretty thin - no metafields, payment terms, or linked transfer fields on it at the moment. So I definitely get why the transfer-metafield workaround feels like a detour.
One thing that might help in the meantime: the inventory_transfers report exposes purchase_order_id and purchase_order_name, so you can export that and join it against the AP records your app holds by PO ID. Not super ideal, but it should get you an outstanding/overdue view without waiting on anything new.
I’ve logged this as three separate asks so nothing gets lost: native payment/credit tracking on POs, metafield support on purchase orders, and transfer metafields being queryable in analytics. I can’t confirm anything on implementation or timelines, but the field gaps on the PO API in particular are useful feedback right now.
If you’re still up for it, a short demo with test data would be great - a link here or a DM both work - let me know if you’d like me to set that up!