Generate invoices, packing slips, and accounting
A sales order produces three kinds of paperwork: the invoice you send the customer, the packing slip that travels with the shipment, and the accounting transaction that carries the sale into your books. This guide covers generating each one from an order.
SKU.io has no separate "invoice" object you open and edit. An invoice is a PDF you generate on demand from the order, paired with the order's accounting transaction — the double-entry record that syncs to your accounting software. Reprinting the PDF never changes the numbers; the numbers live on the order and its accounting transaction. For the full explanation of how line revenue, discounts, and tax become that transaction, see How order financials flow to accounting.
Before you begin
| Requirement | Detail |
|---|---|
| Print permission | You need the Print sales orders permission to see the Export menu on an order — the source of the invoice PDF and single-order packing slips. |
| Update permission | You need the Update sales orders permission to generate the accounting transaction, recalculate financials, and bulk-print packing slips. |
| PDF templates configured | The invoice and the Print Packing Slip (New) renderer each render from a template set under Settings → PDF Templates — without one, that export is rejected with a message telling you to configure it. The Legacy / Jasper packing slip renderer uses its own built-in layout instead, so it doesn't need a PDF template. |
| The order has line items | You can't export an invoice or packing slip for an order with no lines. |
| Open the order | Go to Orders → Sales Orders and open the order. The examples below use SO-DOCS-0001 (customer Blue Bottle Retail, store Main Store). |
Download an invoice PDF
Generate a customer-facing invoice as a PDF you can save, print, or attach to an email.
- Open the sales order.
- In the header, click Export.
- Click Download PDF Invoice.
What you'll see: SKU.io renders the invoice and opens it as a PDF named after the order — SO-DOCS-0001.pdf. The document reflects the order's current lines, discounts, charges, and totals, so it always matches what's on screen.
Two conditions block the render, each with a clear message:
- The order has no line items — add at least one line first. See Manage order lines.
- No sales order PDF template is configured — set one up under Settings → PDF Templates, then try again.
To send the invoice straight to the customer rather than downloading it, use the email action instead. You can email a single order or many at once, optionally attaching the document. See Bulk actions on the sales orders list.
Print a packing slip for one order
A packing slip lists what's in the box for the warehouse and the customer. Print it straight from the order's Export menu.
- Open the sales order and click Export.
- Choose a renderer:
- Print Packing Slip (New) — the current renderer, and the one to use by default. It builds the slip from your configured packing slip template under Settings → PDF Templates, and reports "No packing slip template configured" if none is set.
- Print Packing Slip (Legacy / Jasper) — a fallback that uses the older JasperReports engine. Reach for it only if a slip doesn't render correctly with the new renderer.
What you'll see: the packing slip opens as a PDF named after the order. The two renderers draw from different templates, so the slips can look different: the New renderer uses your configured packing slip template, while the Legacy / Jasper renderer uses a separate built-in layout — your store's custom Jasper layout, or SKU.io's default packing slip layout when no custom one is set. Because of that, the Legacy renderer doesn't require a configured PDF template and won't be blocked when one is missing.
For an order that started at the point of sale, the Export menu adds a Print POS Receipt option. See Sell at the point of sale (POS).
Packing slips can also be printed per shipment from the Fulfillment tab as you ship, so a multi-warehouse order gives you one slip per box. See Fulfill a sales order.
Print packing slips for many orders at once
When you're picking a batch, print every order's packing slip together from the list.
- Go to Orders → Sales Orders.
- Select the orders you want to print. The bulk action bar appears above the table.
- Click Print Packing Slips (New) (or Print Packing Slips (Legacy / Jasper) to use the older engine).
- Confirm in the Print Packing Slips dialog — it asks "Print packing slips for N sales orders?". Click Print.
What you'll see: the run starts as a background job. Because it can span many orders, SKU.io tracks it in the job tray and combines the individual slips into a single PDF you can open when it finishes. If some orders can't be rendered, the job reports how many succeeded and how many failed — check the tray for details.
Bulk-printing stamps each order's packing slip printed date. That date powers the Packing Slip Printed column and filter (under the Fulfillment group) on the list, so you can tell at a glance which orders have already been picked and printed. See List columns and filters.
Generate the accounting transaction
The accounting transaction is the order's entry in your books — revenue, tax, shipping, and cost lines mapped to their nominal codes — and it's what syncs to your accounting software. Generate or regenerate it from the order's Accounting tab.
- Open the sales order and select the Accounting tab.
- If no transaction exists yet, the tab shows No Accounting Transaction. Click Generate Accounting Transaction.
What you'll see: SKU.io builds the transaction from the order's current financial lines and confirms with "Accounting transaction generated." The tab then shows the transaction's reference, date, and total, plus a Related Accounting Transactions section listing any sales credits raised against the order.
Once a transaction exists, two small icon buttons appear in the top-right of the transaction card. Neither has a text label — hover each one to read its tooltip:
| Control | Tooltip | What it does |
|---|---|---|
| Refresh icon (a page with a circular arrow) | Rebuild transaction | Rebuilds the transaction from the order's current financial lines, so edits to prices, discounts, or charges are picked up. It doesn't merely re-read the saved figures — it recomputes them. |
| Sync icon (two circular arrows) | Sync to accounting | Queues the transaction to push to your connected accounting integration. This icon appears only when an accounting integration is connected. |
Cancelling an order or reverting it to draft deletes its accounting transaction — the tab then shows a banner, "Accounting transaction was deleted. You can generate a new one below." Regenerate it here once the order is settled again. See Close, cancel, archive, and delete orders.
Recalculate the order's financials
If line prices, discounts, or charges changed and the profit figures look stale, rebuild them from the Profit tab.
- Open the sales order and select the Profit tab.
- Click RECALCULATE FINANCIALS.
What you'll see: SKU.io recomputes the order's per-line revenue, discount, tax, and cost figures and refreshes the profit breakdown. Use the PROFORMA / ACCOUNTING toggle at the top of the tab to switch between the projected (proforma) view and the figures behind the posted accounting transaction.
If you've edited the order since the transaction was last built, recalculate financials first, then regenerate the accounting transaction so both reflect the same numbers.