Purchase orders end to end: order, receive, finalise

The life of a Landara purchase order: placing it, what Shopify sees, the provisional cost written when the goods arrive, what Finalise does before and after receipt, and how the supplier bill reaches Xero.

Updated 23 September 2026

A purchase order in Landara is two things at once. It is your commitment to a supplier, which Shopify shows as incoming stock, and it is the place where the cost of that stock begins. Shopify keeps counting the units; Landara attaches a cost to them the day they arrive, corrects it when the supplier is paid or invoiced, and puts the bill in your books. This page walks the whole path in order. Payments have their own page, Supplier payments: every way a payment reaches your books, and the foreign-currency rule is in Deposits, balances and exchange rates.

The statuses, in order

StatusWhat it meansWhat you can still change
DraftBeing written. Nothing has been told to Shopify or XeroEverything
Pending approvalSubmitted, waiting for an approver (only when approval is switched on under Settings, Defaults)Nothing until it is approved or rejected
OrderedPlaced. Shopify shows the lines as incoming; pre-sell lines are on saleHeader and lines, until the first receipt
Partially receivedSome units have arrived. Each receipt wrote a provisional costQuantities and prices are locked; receive more, pay, finalise
ReceivedEvery unit is in. Set automatically by the receipt that completes the orderPay, finalise, add freight, close
ClosedDeliberately finished, including an order closed shortNothing
CancelledCalled off before anything arrived. Refused once anything has been received; close is the exit thenNothing

Currency is locked from the first payment, because every payment carries a rate in that currency. Lines are locked from the first receipt, because the receipt was measured against them.

Placing the order

  1. Lines. Each line is a Shopify SKU, a quantity and a unit price in the order's currency. If the supplier calls the product something else, put their code in the supplier code column: Landara remembers it as a supplier SKU on the product, so the next scanned invoice from that supplier matches the line without you lining anything up. A SKU Shopify does not know yet can still be ordered: the line is flagged not in Shopify, nothing is sent for it, and the other lines go on the transfer as normal. Create in Shopify on the On Shopify card makes it as a draft product, titled from the line's description, and puts its units on the transfer in the same step. Finish the listing in Shopify whenever you like.

  2. Account and tax code per line, shown only when Xero or QuickBooks is connected. The default is labelled with what it actually is (your Products mapping, or the code remembered for this SKU with this supplier). A line on an order in a currency other than your books' defaults to your no-tax purchase code, because an overseas supplier's goods are not a taxable supply: the tax arrives at the border on the customs bill. Only a line you change is remembered for next time, so a default never masquerades as a decision.

  3. Submit. If approval is switched on and the order is over your threshold, an approver other than the submitter decides. Otherwise the order goes straight to ordered. The moment it is ordered Landara creates a supplier transfer in Shopify so the units show as incoming, and releases any pre-sell lines for sale. That half is described in Pre-sell and incoming stock.

Where the goods land, and when that can change

Every order has a destination: the Shopify location the stock is coming to. It is what Shopify is told when the transfer is created, it is where the units show as incoming, and it is where Landara holds the cost of them once they arrive.

Before anything is received, you can change it. Realising a container is going to the warehouse rather than the shop is an ordinary correction, and nothing has moved yet.

Once anything has been received, Landara refuses to change it, on purpose. Those units are not an expected delivery any more, they are stock sitting at that location in your store, and Shopify is what counts your stock. Landara will not say they are somewhere they are not.

To move them, use Shopify's Transfers feature. Landara notices the transfer and moves the cost with the goods: the units keep their original receipt date, so they stay in the right place in the first-in-first-out queue, and nothing is treated as a sale or as new stock.

Editing the quantity down at one location and up at another is not a transfer. Shopify reports those as two unrelated changes, so Landara reads them as stock lost in one place and found in another, and the cost does not follow. Use Transfers, or record the move in Landara yourself. There is more on both in Move stock between locations.

An order goes to one location. If part of a delivery is going somewhere else, raise a second order for that location.

Nothing received yet: send the order to Xero

While nothing has arrived there is nothing to invoice, so the button on the order reads Send PO to Xero. Xero receives an approved purchase order carrying the order's number, its lines with the account and tax code from the order, dated the order, with delivery on the expected date and the order's exchange rate if it has one. No cost is written and no bill is created. The button then reads In Xero as PO-….

Your bookkeeper can copy that purchase order to a bill in Xero when the supplier's invoice arrives, and pay it there. Landara finds a bill raised that way and adopts it the next time the order is opened; see the payments page for how the match works and how to link a bill by hand.

If you would rather scan the supplier's invoice into Landara, Upload supplier invoice on the order takes it, links the shipment it creates back to the order and checks it against the lines. That path is the three-way match below.

Receiving, and the provisional badge

Receive goods records what physically arrived: all outstanding units in one go, or a part delivery. Over-delivery is allowed and flagged with a reason, never refused, because a supplier shipping 105 of 100 is a real event. In Shopify the received units move from incoming to available on the transfer; pre-sell units were already available.

Each received line also gets a cost layer at the order price, dated the day of the receipt. That is the layer marked provisional, in violet, wherever it appears:

  • on the order, against each line, as "provisional at" the unit cost;
  • on Cost layers, with a provisional badge and a link back to the order;
  • on the valuation page as "received, not yet invoiced";
  • on the COGS report, at month end, as the "Received, not yet invoiced" notice with the accrual to post.

The provisional layer exists so that sales are costed from the day the stock lands rather than waiting for the invoice. Under FIFO a sale draws from the oldest layer, and a sale with no layer to draw from stays uncosted, which is honest but not useful once the goods are on the shelf. What accountants call this gap, and how the month-end accrual handles it, is in Goods received before the invoice.

A provisional layer cannot be edited by hand on the Cost layers page. It is derived from the order, so the row sends you back to the order instead. It is corrected in place, keeping its quantity and date, by whichever of these happens first:

  • Finalise on the order (below);
  • costing the supplier's scanned invoice on the linked shipment;
  • automatically, when the bill is already in the books. If the bill was published or adopted before the goods arrived, the receipt costs the order itself; if the bill is paid in full afterwards, the order is re-costed at what was paid. The order's history records each one with the rate and the reason.

On a foreign-currency order the receipt needs an exchange rate, and the card suggests one from what is already on file: the rate typed on the receipt, else the order's rate, else the most recent payment's rate. Money already paid keeps its own rate; the unpaid remainder converts at the receipt-date rate; the two are blended over the order. If the order was sent to Xero as a purchase order, Xero's day rate on it is taken as the order's rate, and the card says so. With nothing on file at all the receipt asks for a rate. "Use today's rate" fills it from a live feed, labelled as looked up: that figure is interbank mid-market, so it carries no bank margin and no statement supports it. Typing the rate from your own bank is better where you have it, and either way the stock is re-costed at what you actually paid once the payments settle.

A line with no unit price writes no layer, and the order's history says so. An absent layer reads as uncosted; a zero-cost layer would read as a costed sale of nothing.

Finalise, once the goods are in

Once anything has been received the button reads Finalise, and it does three things in one step:

  1. The order's own lines become the supplier invoice. There is no document to scan, no variance to review and no freight to allocate, so the cost is written immediately and the provisional layers are corrected in place. You stay on the order; there is no shipment to visit.

  2. The bill goes to Xero, approved. It is raised to the supplier for the order's lines at the agreed prices, with the account and tax code from each line, the order number as its reference, dated the last receipt, with a link back to Landara. It is approved rather than draft so that payments can be applied to it in the same step. If the order was sent to Xero as a purchase order earlier, that purchase order is marked billed once every invoice on the order has its bill, and the order shows Billed in Xero beside its number.

  3. Every payment already sent to Xero is applied to the bill. Each one is paid from your Supplier deposits account, in the bill's currency, at the rate on the day it was paid. Supplier deposits comes back to zero by exactly what the deposits cost, and Xero books any currency difference itself.

The cost. An order in your books' currency costs at the order prices. A foreign-currency order that has been paid in full costs at exactly what left your bank, in total, so the stock is worth what you paid for it. A partly paid order costs at the receipt's blended rate. An unpaid order with no rate on file and Xero connected takes the rate Xero applied to the bill on the day, and the order's header says so. Only with no accounting platform connected does Finalise ask you for a rate.

Finalise is one-shot. Afterwards the button reads Finalised · bill …, and the way to change the cost is Add freight. If the Products account or a tax code is unmapped, the cost is still written but no bill is created; the message names the missing slot, and pressing Finalise again after mapping it publishes the bill without redoing the cost.

If the bill already exists in Xero, because your bookkeeper raised it from the purchase order Landara sent, Finalise costs the order and applies any unapplied payments, and sends nothing new to Xero. The button's hover text says so.

Add freight

Add freight is the one door from the order to its shipment. Before finalising, it creates the shipment uncosted so the freight, duty and other charges go on before the cost step, and opens it. After finalising, it opens the same shipment; add the charges and calculate there, and the layers are re-valued with the landed cost. A shipment with only the supplier's lines and no charges calculates without complaint.

The scanned-invoice path and the three-way match

If you upload the supplier's invoice instead of finalising from the order's lines, the shipment it creates is linked to the order and the match card compares three figures per line: ordered, received and invoiced. Before any calculation the scanned lines are the invoice, so an approver sees "11 at 222.99 against 10 at 222" before anything is costed.

A difference blocks Calculate until someone acknowledges it from the order, with a note that stays on the record, or amends the order to match the invoice (allowed only while nothing has been received). Then the shipment is costed as any other, the provisional layers are corrected in place, and the bill is published from the shipment as a draft with the order number as its reference. The invoice stage on the order and on the Purchases list walks none, scanned, variance, costed, billed, in that order.

The allocation of freight and duty across the lines is the same as for any shipment: Landed cost end to end.

An order invoiced in parts, or on someone else's invoice

Real orders rarely map one to one onto invoices, and Landara does not need them to.

  • Several invoices for one order. A supplier who ships half now and half later sends two invoices. Each is its own record under Supplier invoices on the order, with its own bill and its own shipment. Add invoice on the order makes one from what is not yet invoiced, and never lets the invoices add up to more than was ordered. Invoices made from the order are numbered after it: PO-0160, then PO-0160-2.
  • One invoice for several orders. A supplier consolidating your orders quotes every order number; the invoice is linked to each one. See One supplier invoice, several purchase orders.
  • Invoices you scan are linked for you. A scanned invoice that quotes an open order's number or reference is linked to it automatically, whether it is the first invoice on its shipment or not. When the scan could not tell, set the orders on the invoice yourself.
  • Receiving from the invoice. Costing an invoice never marks the order received by itself, because the goods may still be at sea. When they are in, Receive on the invoice, from the shipment or the order, records exactly the units that invoice covers. Receive goods from a supplier invoice covers short shipments too.
  • No order at all? If you ordered by email and only have the invoice, create the purchase order from the invoice.

Things that look wrong and are not

  • The order says received but the layer still says provisional. No bill exists yet, so nothing has fixed the cost. Press Finalise on the order, or upload the supplier's invoice; the Cost layers page's link on the provisional row goes to the same place. Once a bill is in the books the cost is written by itself.
  • Finalise a second time answers "already finalised" and names the bill. Use Add freight to change the cost.
  • Goods arriving after Finalise. An order finalised while part-received already has its bill for the whole order, at the ordered quantities. When the rest arrives, receive it on the order as usual: Shopify moves the units to available, Landara costs them to the bill at once, and nothing more is needed in Xero. If the rest never comes and you close the order short, adjust the bill in Xero yourself; Landara does not change a bill that is already there.
  • An order you raised in Xero does not appear in Landara. Purchase orders travel one way: Landara raises them and sends them to Xero, never the other way round. An order in Xero is a note to your accountant; an order in Landara is what tells Shopify stock is coming and attaches a cost to it when it lands, which needs SKUs, a destination and quantities Xero does not hold. Landara reads a Xero purchase order only when it raised that one itself, to take its exchange rate and to mark it billed. If goods arrived without a Landara order, upload the supplier's invoice instead: the order is made from the invoice, already received, and costed the same way.
  • A line cannot be removed after ordering. Shopify has been told about it. Change its quantity instead; the transfer follows.
  • Cancel is refused. Something has been received, so cancelling would orphan the record of real stock. Close the order short instead; the unreceived units are taken off the Shopify transfer.
  • The receipt wrote no layer for a SKU and the history says "already costed by the invoice". The invoice was costed before the goods arrived, so the layers already exist from the shipment. The stock enters the ledger once either way.
  • The order shows a Shopify sync failure. The order itself went through; only the Shopify half did not. Fix the cause the message names and use Retry sync. Retrying never repeats what already succeeded. An order that needs attention wears an amber Shopify to fix badge beside its stage badges, on the Purchases list and at the top of the order, so nobody has to open Shopify to find out.
  • Shopify's transfer says "Shop location doesn't fulfill this variant". The variant was not stocked at the destination location. Landara now stocks it there before the line goes on the transfer, and flags the line not stocked at destination if Shopify refuses, with the reason. Retry sync asks again.

Related

Related articles

5.0 from 4 reviews on the Shopify App Store
“Landara has made it much easier to keep track of my actual product costs. I really like that it takes things like shipping and duties into account instead of just showing the basic cost. Simple app, easy to use, and I’m already getting a much clearer idea of my real margins.”
Panther Products
Verified review on the Shopify App Store
“I installed Landara because I was getting tired of guessing what my inventory was actually costing me. What I liked most was being able to see the product cost together with things like shipping and duties, I've been trying to keep a closer eye on my margins, so having those costs in one place has made things much easier for me. It didn't take me long to get setup either, which was a nice bonus.”
Linssan Inc
Verified review on the Shopify App Store
“I honestly didn’t expect Landara to make this part of my store that much easier. I installed it mainly to get a better handle on my actual product costs, and I was pleasantly surprised by how everything comes together. I’m still exploring it, but so far it’s been really useful and I’m impressed with how it works.”
BLIS FULL SKIN
Verified review on the Shopify App Store
“I've just started using Landara, and so far I'm impressed with how it handles landed costs. I especially like being able to account for things like freight and duty instead of treating the supplier price as the whole cost. Still exploring the app, but it already looks like it could save me a lot of spreadsheet work.”
Tollpatsch Stoffe und Handmade
Verified review on the Shopify App Store
Read the reviews on the Shopify App Store

Know your true costs

Landara extracts your documents and costs every order automatically. Start free.