Serialized items track individual serial numbers from receiving through sale. Other flags cover services with no stock, EBT eligibility, age-restricted products, recurring charges, series packages, sales limits, expiration dates and zero-profit items.
Most items are simple: a quantity on a shelf. But some products need more — a phone you must track by serial number, a repair fee with no stock at all, a bottle of wine that requires an ID check, produce that expires. PHP Point Of Sale handles these with item-level flags you set in Inventory when creating the item, plus a few store-wide settings in Store Config.
Serialized items
Check Item has Serial Number on the item's Item Info tab and PHP Point Of Sale tracks each physical unit by its serial. To flag many items at once, select them in the item list and use the bulk Edit screen, which offers Change All To Serialized / Change All To Unserialized.
Manage an item's serial numbers
Open the item's Inventory tab and click the Serial Numbers button (it appears only on serialized items). Each serial number row holds:
- Serial Number — the serial itself.
- Add to Inventory — check it and this serial counts as a unit of stock in its own right, with its own Cost Price and Selling Price — so a big-ticket unit can carry the exact cost you paid for it.
- Variations — ties the serial to a specific variation of the item, or None.
- Location — the location holding this serial, or All.
- Sale ID / Receiving ID — filled in automatically once the serial is sold or received, linking the serial to its transactions.
Click Add Serial Number for new rows and Save when done.
Serials through the pipeline
- Receiving — record the serial numbers that arrive on each receiving line, along with their received cost.
- Selling — a serialized item on a sale shows a Serial Number line. If serials are on file for your location, the cashier picks from a dropdown (or chooses New Serial Number to type one); with none on file, the cashier types or scans the serial directly. Serial numbers are also part of the item lookup order, so scanning a known serial can pull up the item.
- Returning — by default a returned serial goes back into the available pool.
Store-wide serial settings
Three settings in Store Config → Application Settings change the default behavior (all default off):
- Do NOT delete serial number when selling — keep the serial on file after it sells instead of removing it.
- Do NOT add serial back to item when doing a return — a returned serial is not re-added to the pool, useful when returned units go to inspection rather than straight back on the shelf.
- Always use received cost price for serial numbers — the sale uses the cost recorded when that exact serial was received, so profit on big-ticket goods reflects what that unit actually cost you.
Serial reports
Two reports close the loop, both under Reports: the Serial Numbers Sold Report shows which serials left with which sales and customers, and Serial Number History traces everything that happened to a single serial — essential for warranty claims and recalls. See running reports.
Service items
Check Is Service on the Item Info tab for anything you sell that is not a physical thing — labor, repairs, delivery fees, classes. Service items ring up, tax and report like any other item, but the app never tracks their inventory: the default quantity, reorder level and replenish level fields disappear from the form. If most of your catalog is services, enable Default New Items as service items in Store Config → Items so new items start with the flag on. Service items are the usual line items on work orders and invoices.
EBT-eligible items
Enable Enable EBT payments in Store Config → Payment Types, and an Is EBT Item checkbox appears on every item and item kit. Flag the products that qualify and the register knows which lines an EBT tender can cover — keeping you compliant without the cashier memorizing eligibility rules. See payment types, tips and split payments.
Age-restricted items
Turn on Verify age for products in Store Config → Items. Three companion settings control how verification works store-wide:
- Default age to verify — prefills the required age on newly flagged items.
- Age verification strict date format check — requires the cashier to enter the customer's birth date in a strict format rather than just confirming.
- Require Drivers license scan for age verification — verification must come from scanning the customer's driver's license.
Then, on each restricted item (or kit), check Requires Age Verification and set the Required Age. The register requires verification before the sale can proceed.
Recurring charges and series packages
Two item types power memberships and packages:
- Recurring-charge items — an Is Recurring Charge option appears on the item's Pricing tab when your card processor supports stored payments or customer store accounts are enabled. It adds a Startup Cost, a Prorated option for mid-cycle signups, and a billing Interval: weekly, monthly on a day of the month, monthly on a day of the week, yearly on a date, or yearly on a month and weekday.
- Series packages — check Sold in a series on the Item Info tab and set the Series Quantity (number of uses, e.g. 5 haircuts) and the Number of days series must be used within (e.g. 365). Each visit redeems one use.
Both are covered in depth, including how customers are charged and how uses are redeemed, in series, packages and recurring charges.
Sales limits
Limited Sales Quantity (on the item's Inventory tab, on each variation, on item kits, and per location on the Locations tab) caps how many units can go on a single sale. When the cashier exceeds it, the register blocks the line with a "quantity has exceeded the limited sales quantity" error. Use it for rationed releases and one-per-customer promotions. A blank or zero value means no limit.
Zero-profit items
Check Item is non profit sale (Zero profit) on the Pricing tab and the item reports zero profit no matter its price — right for pass-through charges like bottle deposits or charity add-ons that should never inflate your margins. Kits have the same flag.
Item expiration
For perishables and anything date-sensitive, PHP Point Of Sale tracks expiration through receivings:
- On the item's Inventory tab, set Days to expiration — how many days after arrival the item usually expires. Store Config → Items has a Default days to expire when creating items setting to prefill it on new items.
- When you receive the item, each line gets an Expire Date defaulted to today plus that many days. Click the date on the receiving line to change it for that batch, or keep the default. (A Store Config option can show the expire date on every receiving line even for items without the field set.)
- Expiration dates are recorded per received batch. To see what is going bad, run the Expiring Items Report under Reports (inventory reports group): pick a date range and it lists each item, the quantity expiring and the date it expires on. See inventory and purchasing reports.
Where to start
Start with the products where mistakes are expensive: serialize anything with a warranty, age-restrict anything the law requires, and flag EBT eligibility before your first EBT customer reaches the counter — not after. The rest can be added item by item as the need appears.
Common questions
Why don't I see the Serial Numbers button on my item? The item is not marked as serialized. Check Item has Serial Number on the Item Info tab, save, and the button appears on the Inventory tab.
Do I have to pre-enter serial numbers before selling? No. Enter them as stock arrives via receivings (recommended), pre-load them on the item's Serial Numbers page, or let the cashier type the serial at the moment of sale with New Serial Number.
What happens to a serial number when the unit is sold? By default it is removed from the item's available serials, and the sale ID is recorded against it. Turn on Do NOT delete serial number when selling in Store Config → Application Settings to keep serials on file after selling.
A customer returned a serialized item — is the serial available again? By default yes, the serial rejoins the pool. If returned units should go to inspection first, enable Do NOT add serial back to item when doing a return.
Can each serial have its own cost? Yes — record the cost when receiving, and enable Always use received cost price for serial numbers so the sale's profit uses that exact unit's cost. On the Serial Numbers page, a serial with Add to Inventory checked also carries its own cost and selling price.
How do I find out which items expire this month? Run the Expiring Items Report with the month as the date range. It requires that the items have Days to expiration set and that stock was received while it was set.
Why is there no expiration date on my receiving line? The item's Days to expiration field was empty when the line was added. Set it on the item's Inventory tab; a Store Config option can also force the expire date field to show on all receivings.
How do I limit customers to two units each of a hot release? Set Limited Sales Quantity to 2 on the item (or the specific variation). The register refuses to sell more than two on one sale.
Comments
0 comments
Please sign in to leave a comment.