Sales
The Sales module lets you record individual sales transactions against your stock. Each sale deducts the sold quantities from the relevant locations and creates a full audit trail in Stock Movements.
Recording a Sale
Open Sales from the sidebar and click New sale. Fill in the sale header, then add one or more line items.
If any line would take a location’s stock level negative, Kitted will warn you before saving and list the shortfall for each affected item. You can choose to proceed anyway (for pre-orders or other edge cases) or cancel and adjust the quantities.
Header Fields
| Field | Notes |
|---|---|
| Customer name | Optional. Displayed on the detail page and included in CSV exports. |
| Payment method | Cash, Card, Bank transfer, or Other. |
| Notes | Optional free-text note for the transaction. |
Line Items
Each line represents one stock item being sold from a specific location.
| Field | Notes |
|---|---|
| Item | The stock item being sold. |
| Location | Which location to deduct from. The location picker is filtered to locations that hold stock for the selected item. |
| Quantity | How many units are being sold. |
| Unit price | Selling price per unit in your configured currency. Defaults to the item’s sale price if one is set, but can be overridden per line. |
You can add as many lines as needed using the Add line button. A line is included in the submission only if an item, location, and quantity are all filled in - partially filled lines are ignored.
The Line total (quantity × unit price) is calculated per line, and the Sale total is the sum of all line totals.
On save, Kitted:
- Creates the sale record with the calculated total.
- For each line, deducts the quantity from the chosen location’s stock level.
- Posts a
salemovement for each line (reason:"Sale to <customer>"or"Sale"if no customer name was given).
If stock is insufficient for any line, a confirmation prompt lists the shortfalls. Confirming proceeds with the sale; cancelling returns you to the form to adjust quantities.
Sale List
The sales list shows all transactions in reverse chronological order. Use the From / To date filters to narrow the list to a date range. Each row shows the sale ID, date, customer name, number of lines, and total value.
Click any row to open the sale detail page.
Sale Detail Page
The detail page shows the full header (date, customer, payment method, notes, total) and a line-by-line breakdown:
| Column | Description |
|---|---|
| Item | Stock item name and SKU. |
| Location | Where the stock was deducted from. |
| Quantity | Units sold. |
| Unit price | Price per unit at the time of the sale. |
| Line total | Quantity × unit price. |
Exporting a Sale
Click ↓ Export CSV on the detail page to download a CSV of that sale. The file contains one row per line item and includes: Sale ID, Date, Customer, Payment Method, Notes, Item, SKU, Location, Quantity, Unit Price, Line Total, and Sale Total.
Bulk CSV Export
On the sales list page, click Export CSV to download all sales within the currently active date filter. The format is identical to the single-sale export, with one row per line item across all matching sales. Use this for external reporting or accounting integrations.
Returns
You can record a return against any sale, whether it was fulfilled partially or in full. Returns can be recorded in multiple instalments - Kitted tracks the remaining returnable quantity per line.
Recording a Return
Open the sale detail page and click Record return in the top-right action bar.
A modal opens with one row for each line on the original sale:
| Column | Description |
|---|---|
| Item | Stock item name. |
| SKU | Item SKU, if set. |
| Sold | Quantity on the original sale line. |
| Remaining | Quantity still eligible to be returned (sold minus any previously returned quantity). Lines where this is 0 are disabled. |
| Qty to return | Enter the quantity being returned. Must be greater than 0 and no more than the remaining amount. Leave blank to skip that line. |
| Return to | Location the stock will be credited back to. Defaults to the location it was originally sold from, but can be changed to any active location. |
An optional Notes field at the bottom lets you record a reason (e.g. Damaged in transit, Customer changed mind).
At least one line must have a quantity entered before the form can be submitted.
What Happens on Save
For each line in the return, Kitted:
- Credits the returned quantity back to the chosen location’s stock level.
- Posts a sale return movement (reason:
Return against sale #<id>) in Stock Movements.
Viewing Return History
All returns recorded against a sale appear in a Returns section below the lines table on the sale detail page. Each return shows its ID, date, optional notes, and a line-by-line breakdown of what was returned and to which location.
Partial Returns
You do not have to return the full quantity in one go. If a customer initially returns two of five units, record a return for two. If they later return a third unit, click Record return again - the Remaining column will reflect the two already processed, and only allow up to three more.