Troubleshooting

AreaSymptomCheck / fix
Login"Invalid email or password"Caps lock and email address. The account locks after 5 failures for 15 minutes; an admin can unlock it under Users
LoginNo password reset emailCheck spam. Email may not be configured; an admin can reset the password under Users
Login2FA code rejectedSet the phone time to automatic
SessionSigned outIdle timeout (Settings → Security). Password changes sign out other devices
Session"Security token expired" (419)Refresh the page; the form was open too long
CameraCamera does not startHTTPS required; allow camera permission (see docs/mobile-scanning.md); close other camera apps
CameraBarcode not readUse the Light button, hold 10–20 cm away, avoid glare; type the code manually
ScannerWrong charactersMatch the scanner keyboard language to the device
ScannerGS1 batch/expiry missingEnable FNC1→GS or AIM IDs on the scanner
Scan"Not recognised"Check the working warehouse; add the barcode to the product (alternate barcodes)
PrintingLabels misalignedPrint dialog: correct paper/label size, margins None, scale 100%, no headers/footers
PrintingWant silent printingBrowsers cannot print silently; see docs/barcode-and-printers.md
CSVErrors on importDownload the error report; see docs/csv-import.md
CSVGarbled accentsSave as CSV UTF-8
DatabaseError page with reference codeCheck credentials in config/config.php and the hPanel MySQL status; see storage/logs for the reference
EmailTest email failsHost, port and encryption (587/TLS or 465/SSL), credentials, From address; check the email log
DataNot refreshingTab hidden pauses polling; press refresh; check the offline banner
PWAOld version showingPress "Update now", or close all tabs and reopen
PWAInstall option missingHTTPS plus Chrome/Edge, or Safari "Add to Home Screen"
Permissions403 "You do not have permission"Role lacks the action, or the warehouse is not assigned
Stock"Insufficient stock"Stock is reserved for orders or held in another status/bin; check Inventory → Stock
StockExpired batch cannot be dispatchedBy design. Write it off with an adjustment (Expired stock write-off)
BackupBackup failsDisk space and the PHP time limit; see docs/backup-restore.md
RestoreRestore failed part-wayRestore the automatic pre-restore backup listed under Backups
CronScheduled reports not sentCron job path and command; Email & Schedules shows the last cron run

Logs: storage/logs/app-YYYY-MM.log (via hPanel File Manager; not web-accessible). Errors shown to users carry a reference code that matches the log entry.