Articles

Wholesale orders and Xero - what you actually need to connect

Xero has no sales order. Its selling side holds quotes, invoices and repeating invoice templates, and Xero has stated on its own product-ideas board that it has no plans to build a sales order acknowledgement, so a wholesale order reaches Xero as an invoice or it does not reach Xero at all. Wholesale Handler has no Xero integration and no public API - finalised invoice lines download as a CSV, one row per line item with the invoice-level fields repeated down that invoice's rows, which is the shape Xero's import template takes. What the two sides need in common is a customer named in Xero exactly as the file names them, an invoice number no Xero invoice already holds, a revenue account code and a tax rate name from Xero's own list. Wholesale ordering software without ERP integration covers why there is no connector.
Wednesday, 4 November 2026
Title card reading "Wholesale orders and Xero - what you actually need to connect" over a background of fresh produce crates

Xero has said it is not building a sales order

Xero's product-ideas board carries an idea titled "Sales Invoicing - Order acknowledgement", opened in May 2012 and still at status Submitted with 153 votes. Kelly Munro, a Community Manager at Xero, answered it on 9 May 2024: "Being open we don't have any plans for developing a Sales Order Acknowledgement atm." Her reply points at a branding theme instead - create one named for order acknowledgements, retitle the Quote template inside it, and apply that theme to an accepted quote. Commenters have pushed back on it every few months since - one in November 2025 naming the gap as the reason a migration onto Xero stalled, one in June 2026 asking for a button that copies a quote into an acknowledgement the way quote-to-purchase-order already does.

The API carries the same gap. Xero's Accounting API exposes Invoices, Quotes, RepeatingInvoices, CreditNotes, PurchaseOrders and Items, and nothing resembling a sales order, and Xero's own document types name a purchase order and a sales quote with no third entry between them. Purchase orders exist on the buying side only.

Xero removed the discussion forums from Xero Central on 22 June 2026, so the long-running order-acknowledgement discussions there are gone and the product-ideas board is the only place Xero's position is still stated.

A Xero quote is the closest document to a sales order

A quote in Xero is an offer of a price before the work rather than a demand for payment. It moves through five statuses - Draft, Sent, Accepted, Declined and Invoiced - the customer accepts or declines it with a single click and can leave a comment, and converting an accepted quote copies its contents into an invoice.

Retitling that quote through a branding theme changes the words on the page and nothing underneath them. The document still draws its number from the quote sequence rather than an order sequence, and on the Xero mobile app creating the invoice from a quote leaves the quote unmarked, so somebody marks it as invoiced by hand.

A repeating invoice bills the same lines every time

A repeating invoice in Xero is a template plus a schedule, and Xero can approve and email each invoice on that schedule. The lines are the template's lines. That fits a fixed monthly retainer rather than a wholesale week, where the quantities move with the order and a catch-weight line is not settled until the goods are on the scale. How to automatically invoice wholesale bakery customers covers raising invoices from the orders themselves.

An auto-approved invoice in a foreign currency needs an exchange rate for its transaction date, and cannot have that rate edited afterwards. In the United States, automatic sales tax is unavailable on repeating invoices, so the tax rate on the template is set by hand.

Xero's entry plan stops at 20 invoices a month

Only the entry plan carries a cap, and the plan names differ by market. In the United Kingdom that plan is Ignite, £18 a month after an introductory period, and it reads "Send quotes and 20 invoices". In the United States the same position is held by Early at US$27 a month, the US pricing page still carrying Xero's older plan names. Grow, Comprehensive and Ultimate in the UK, and Growing and Established in the US, state no invoice figure at all.

The cap counts approving as well as sending, and Xero's footnote states that transactions initiated by app partners may automatically contribute to it. One invoice per customer per month clears 20 at twenty accounts; invoicing the same twenty weekly passes it in the first week of the month.

The export is one row per line item

Wholesale Handler exports finalised invoice line items as a CSV. Each row is one line item, and the invoice-level fields - reference, date, customer, status, currency, notes - repeat on every row belonging to that invoice, which is how Xero and QuickBooks both read a multi-line invoice. The file opens with a UTF-8 byte order mark so Excel on Windows keeps accents, dates are ISO (2026-03-15), fields are escaped to RFC 4180, and amounts are bare decimals with the ISO currency code in a column of its own rather than a symbol glued to the figure.

The file is bounded by the period chosen, the columns picked and the invoice status.

  • The period. This month, last month, this quarter, last quarter, the last six months, or a custom range of up to 186 days.
  • The columns. You pick which columns to include and rename each heading to whatever your accounting package imports. The selection is stored against your business, so the next export comes out the same way.
  • The status. Only finalised money leaves - sent, paid, and customer-declared-paid invoices. A draft invoice and a disputed payment declaration stay out of the file.

The preview on the page is the export rather than a sample of it. The same query and the same column resolver produce both, your own column headings included, so what is on screen is what lands in the file.

Mapping the export onto Xero's import template

Xero's customer-invoice import template has nine required headings and matches a column by its heading text rather than its position, so renaming the headings in Wholesale Handler is most of the work.

*ContactName
In the Wholesale Handler export
Customer business name, or customer contact name
What you do
Rename the heading, and match the Xero contact's spelling exactly or the import creates a second contact
*InvoiceNumber
In the Wholesale Handler export
Invoice reference, INV-2026-003
What you do
Rename the heading - the reference is already unique across your business
*InvoiceDate
In the Wholesale Handler export
Invoice date
What you do
Rename the heading
*DueDate
In the Wholesale Handler export
Not a column
What you do
Add it in the spreadsheet, or set the terms in Xero before approving
*Description
In the Wholesale Handler export
Description
What you do
Rename the heading
*Quantity
In the Wholesale Handler export
Quantity
What you do
Rename the heading
*UnitAmount
In the Wholesale Handler export
Unit price
What you do
Rename the heading
*AccountCode
In the Wholesale Handler export
Not a column
What you do
Add one revenue code from your chart of accounts, the same value on every row
*TaxType
In the Wholesale Handler export
VAT rate (%) and VAT method
What you do
Replace with the tax rate name as Xero lists it - a name Xero does not recognise stops the import

Xero groups the rows sharing an invoice number into one invoice whatever order they arrive in. Imported invoices arrive as drafts, so a field the file could not carry is filled in before the invoice is approved.

Xero publishes no limit on how many rows one import file may hold. The guides that document the template put it around 500 and disagree over whether that counts rows or whole invoices, so splitting a wide export into several files is the safe assumption.

Limits on one export

  • 5,000 line items. Past that the export is refused with a message asking for a narrower range, rather than returning a slow download.
  • No column order of your own. Columns can be dropped and their headings renamed, but not moved, so the file comes out in Wholesale Handler's order and an import template keyed to column position needs a spreadsheet step in between. Choosing the export column order is on the roadmap.
  • Invoice line items only. Orders, customers and products have no export of their own yet.

Wholesale Handler pricing

Three plans, and the only difference between them is how many customers you trade with. Every feature is on all three, so nothing is held back on the free one.

  • Free - up to 3 customers, no card
  • Starter - up to 10 customers, US$29/month
  • Pro - up to 50 customers, US$109/month

Up to 500 products and unlimited orders and invoices on every plan. One fee for the whole business - no per-user charge, and no cut of what you sell. No contract, and cancel anytime.

Try Wholesale Handler now

No sign-up. No demo booking. Just try the demo and use it immediately with sample data.

Related articles