Skip to content

Non Stock and Trade In Applet

The register of units that sit outside the inventory ledger: trade-in units taken from customers at the till, and non-stock items you still want to track one serial at a time, each with a running balance per location. Most records are not typed in here — they are created when a document with a trade-in line is finalised and reduced again when the unit is sold — and a unit typed in by hand without a serial number can never be matched by a document. Manual transaction lines are a record only; they never move the balance.

Your job, and the screen for it

The jobScreen or tabRead
Look up a trade-in or non-stock unit and its historyNSTI Stock listing › row › Details and Txn Line tabsNSTI Stock listing
Take a used unit in against a sale — trade-in units are created by the document, not typed in hereA trade-in line on an NSTI-type item, with its serial, on a ringgit POS cash bill in POS General; cashiers need this applet’s read permissionLifecycle and effects; Feature visibility / permissions
Change a unit’s stock balance — a manual transaction line is a record only and never moves itA document carrying the serial: a trade-in line adds, a sale removes, a sales credit note brings it backTxn Line — Add Transaction
Load existing units from a spreadsheet — they arrive as DRAFT with no balance, and after a failure you re-upload only the failed rowsImport NSTI; each row’s result on the Checking tabImport NSTI
Stop units with real value being deleted — Delete shows even on a FINAL unit still in stockSettings › Field Settings: STOCK_HIDE_DELETE_BUTTONApplet settings
Set up an NSTI-type item and each company’s default NSTI GL code, and have support subscribe the two NSTI runsDoc Item Maintenance; the company’s default GL codes; supportBefore you can use it

Overview

The Non Stock and Trade In applet (NSTI) is the register of items that sit outside the normal inventory ledger: trade-in units taken from customers (a used phone accepted against a new one at the POS) and non-stock items you still want to track one unit at a time. Each record in the listing is one unit — one serial number at one location — with its purchase and sale prices, category, GL code and a running quantity balance. The applet also maintains the NSTI categories and offers a CSV import.

It is opened by the store or inventory team that receives and resells trade-ins, and by finance for the GL side. Most NSTI records are not typed in here: they are created by BigLedger when a POS cash bill or sales document with a trade-in line is finalised, and they are reduced again when the unit is sold. This applet is where you look them up, correct their values and details (though not their Financial Item, which the edit panel never saves), finalise them and attach documents.

NSTI stock is not inventory stock. An NSTI unit lives in its own register, not in the inventory ledger. It appears in Stock Availability (which shows both side by side) but not in the historical stock balance report, and its value is closed at month end through the separate COGS_NSTI / STOCK_BALANCE_NSTI default GL codes. The item itself is an ordinary doc item whose Transaction Type is NSTI (Doc Item Maintenance).

Where it fits

DirectionApplet / documentWhy
UpstreamDoc Item MaintenanceThe Financial Item on every NSTI record; only items with transaction type NSTI are picked up when documents are finalised
UpstreamOrganisationCompany, branch and location on each record; the balance is kept per location
UpstreamChart of AccountThe company default GL code NSTI (filled in automatically if missing — see Before you can use it for why to set it yourself), COGS_NSTI and STOCK_BALANCE_NSTI for month-end closing
UpstreamTax ConfigurationSST/GST and WHT codes on manually added transaction lines
UpstreamEmployee MaintenanceThe optional Employee (person in charge) on a record
UpstreamPOS General, Sales Invoice, Sales Credit Note and any other generic documentFINAL documents with serialised NSTI item lines create the transaction lines that create or move NSTI units (trade-in lines add, sales lines remove, credit notes add back)
DownstreamStock AvailabilityShows NSTI balances alongside inventory balances
DownstreamMonth-end closing in Chart of Account / Financial ReportPosts the NSTI closing-stock journal from the closing-stock record
DownstreamSales documentsBigLedger refuses to sell an NSTI serial that has no balance at the line’s location

Modules: Inventory, Sales, Financial Accounting.

Screens and menus

Left menu:

MenuWhat it is for
NSTI StockListing, create and edit of NSTI units with their transaction lines and attachments
NSTI CategoryFlat list of categories — code, name, description, status
Import NSTICSV upload into a staging list, with a listing of past uploads

Gear (Settings) menu: System Configuration › Field Settings, Default Selection; the shared frame adds Server Side Permissions (Permission Wizard, Permission Set, User Permission, Role Permission), Integration › Triggers (webhooks) and Developer Tools. Feature Visibility exists but has no menu entry. Personalization lists Field Settings (the link does nothing) and Default Selection.

Applet Settings page listing Field Settings, Default Selection, Permission Wizard, Permission Set, User Permission, Role Permission, Release Notes and Audit Trail
Settings. Field Settings holds the column-hide and lock toggles described under Configuration; the Teams panel is the shared Manage Team Access screen.

NSTI Stock listing

Columns: NSTI Code, NSTI Name, Type (TRADE_IN / NON_STOCK), Serial Number, Category, Branch, Location, Amount (purchase price incl. tax), Stock Balance, Posting Status (DRAFT / FINAL), Status, Created Date (the purchase date), Updated Date. Keyword search plus column filters. + opens the create panel; clicking a row opens the edit panel.

Create panel

One Details tab (see Fields). Pressing + first creates a temporary record so that the unit already has an identity; SAVE then makes it active. A SCAN button next to Serial Number opens the camera barcode reader.

Edit panel

Tabs Details, Txn Line, Attachment (or three stacked panels when Vertical Orientation is on). Header buttons SAVE and FINAL; a Delete button below the tabs (two clicks — the first arms it, the second sends the delete). Delete is not covered by the FINAL lock: it shows on a FINAL unit that is still in stock, and removing that unit takes it out of the balance lookup and Stock Availability with no journal behind it. The only control is STOCK_HIDE_DELETE_BUTTON; switch it on where units carry real value.

  • Details — the create fields, plus read-only Purchase Date, Purchase Price, Sales Date, Sales Price (filled from documents) and editable Current Value and Current For Sale Price. Financial Item can be re-picked here, but SAVE and FINAL do not send the new choice, so the unit keeps the item it was created with.
  • Txn Line — the unit’s transaction history: Txn Doc No, Txn Date, Doc Short Code, Txn Type (ACQUISITION / DISPOSAL / ADJUSTMENT), Qty, Unit Price, SST/VAT/GST, WHT, Txn Amount; filter by keyword and document type. Add Transaction creates a manual line; lines that came from a document are read-only.
  • Attachment — files attached to the unit: Attachment Name, Details, file.

NSTI Category

Listing: Category Code, Category Name, Creation Date, Updated Date, Status. Create: Code, Name, Description, Status. Edit adds Delete (two-click). There is no parent category — the list is flat.

Import NSTI

Listing: File Name, File Size, Format, Status, Process Status (PROCESSING / DONE / FAILED), User Error Message, Created Date, Updated Date, Created by. Create: drag-and-drop or Upload File, ADD, and a Sample Format link that downloads MasterData_Upload_Nsti_Stock.csv. Opening a row shows the parsed staging rows (Code, Name, Type, Category Code …) and a Delete.

The import changed on 2026-10-05, and the change has reached you. The backend this page is checked against and the applet build being served both carry it, so the import now does what this section says; a build older than that only filled the staging list and read the columns by position. Today the file’s columns are read by their header names, and a header missing any template column fails the whole file with a message naming the missing columns. Each row is then checked: CODE, NAME, TYPE (NON_STOCK or TRADE_IN), the financial item, company, branch, location, currency, PURCHASE_DATE and PURCHASE_PRICE_INCL_TAX are required, the codes must exist, and a CODE already used by a unit that is not deleted is refused. A unit is created from every valid row, as DRAFT with no stock balance. If any row is bad, the file ends FAILED with Import failed: N row(s) have errors. See Checking tab for details. in the listing’s User Error Message column, and the Checking tab shows each row as Validated / Processed with its own Error Message — but the valid rows were created anyway, so re-uploading the corrected file fails those as duplicate codes. Upload only the rows that failed.
Upload Nsti File panel with a drag-and-drop zone, Upload File button, ADD button and a Sample Format link
Import NSTI. Sample Format downloads the CSV template; ADD uploads the file and queues the import run.

Configuration

Before you can use it

  • A doc item of transaction type NSTI in Doc Item Maintenance. The Financial Item picker on the NSTI record lists every ACTIVE doc item, but documents only act on lines whose item is of type NSTI. Pick a non-NSTI item and documents never move the unit.
  • Company, branch and location in Organisation — all three are mandatory on the record, and each must be a real one.
  • Company default GL code NSTI in Chart of Account › Companies › Default GL Codes — optional, but set it deliberately for every company. If a company has no NSTI link when a document creates or updates a unit, BigLedger first looks for any GL code whose code is Trade-In — in any chart of accounts, belonging to any company — and links that one; only if there is none does it create a GL code named “Non-Stock and Trade-In” and link it. That search never finds the code it creates, so in a group each company without a link gets a new one, or all of them end up on another company’s Trade-In account. COGS_NSTI and STOCK_BALANCE_NSTI are needed only for the month-end closing-stock journal.
  • Background runs. Documents create NSTI transaction lines, and those lines move unit balances, only if the two NSTI runs are subscribed to the document-finalise chain on your tenant. Neither is an applet setting; ask support when FINAL documents leave no trace here.
  • Server-side permissions — TNT_API_NON_STOCK_TRADE_IN_HDR_{CREATE,READ,UPDATE,DELETE} (or _OWNER / _ADMIN), the same set with _TXN_LINE_, _CATEGORY_, _ATTACHMENT_ and for the import files.

Applet settings

Settings are applet-local: Field Settings is this applet’s own screen (four panels: Stock Settings, Category Settings, Import File Settings, Vertical UI Setting), not the shared document-applet one. Every control starts unset, so all hides are off, records lock at FINAL and the layout is horizontal until someone saves the screen. Anyone with access to the Settings menu can change them; they apply tenant-wide.

SettingWhat it controlsDefaultEffect when changed
STOCK_HIDE_NSTI_CODE, STOCK_HIDE_NSTI_NAME, STOCK_HIDE_CATEGORY, STOCK_HIDE_LOCATION, STOCK_HIDE_STOCK_BALANCE, STOCK_HIDE_POSTING_STATUS, STOCK_HIDE_STATUSHide the matching column of the NSTI Stock listingOffOn: the column disappears and cannot be re-enabled from the Columns panel
STOCK_HIDE_DELETE_BUTTONHides the Delete button on the edit panelOffOn: units cannot be deleted from the UI
ALLOW_EDIT_TXN_LINE_AFTER_FINALWhether a FINAL record can still be saved, re-finalised, and have transaction lines added, edited or deletedOff — FINAL locks the record, except for the unit’s own Delete (see Edit panel)On: SAVE, FINAL, Add Transaction and line Save / Delete stay enabled after FINAL. Lines created by documents stay read-only regardless
CATEGORY_HIDE_CATEGORY_CODE, CATEGORY_HIDE_CATEGORY_NAME, CATEGORY_HIDE_CREATION_DATE, CATEGORY_HIDE_UPDATED_DATE, CATEGORY_HIDE_STATUSHide the matching column of the NSTI Category listingOffAs above
IMPORT_FILE_HIDE_FILE_NAME, …_FILE_SIZE, …_FORMAT, …_STATUS, …_PROCESS_STATUS, …_USER_ERROR_MESSAGE, …_CREATED_DATE, …_UPDATED_DATE, …_CREATED_BYHide the matching column of the Import NSTI listingOffAs above
VERTICAL_ORIENTATION (labelled ENABLE VERTICAL ORIENTATION)Stacks listing and detail panels vertically instead of side by sideOffOn: every container switches to the stacked layout; the edit form shows expansion panels instead of tabs
EXPAND_MAIN_DETAILS, EXPAND_TXN_LINE, EXPAND_ATTACHMENTWhich panels of the edit form open expanded in the stacked layoutOffOn: that panel starts expanded. No effect in the tabbed layout

Those 27 keys are declared, rendered, saved and read. Also on the screen or in the model, but short of it:

  • The hide company listing switch — rendered and saved, but the listing has no Company column and nothing reads the key.
  • The API upload switch — declared and saved but has no toggle here and no reader.
  • Read without a control: STOCK_HIDE_TYPE, STOCK_HIDE_BRANCH, STOCK_HIDE_SN, STOCK_HIDE_AMOUNT, STOCK_HIDE_PURCHASE_DATE, STOCK_HIDE_UPDATED_DATE (listing columns Type, Branch, Serial Number, Amount, Created Date, Updated Date) and DEFAULT_TOGGLE_COLUMN / DEFAULT_ORIENTATION. They can be set only by support writing the applet’s settings directly.
  • Default Selection (Default Branch, Default Location): the screen is not wired up, so choosing a value throws an error; nothing in this applet reads DEFAULT_BRANCH / DEFAULT_LOCATION. Personalization › Default Selection is the same screen. PRINTABLE is declared only.

Document behaviour settings

Not applicable in the document sense — this is master data with its own posting status. What FINAL does is described under Lifecycle and effects: it is a field that the applet’s own buttons honour; BigLedger does not post anything on it.

Settings in other applets that control this applet

SettingWhere it is setEffect here
Company default GL codes NSTI, COGS_NSTI, STOCK_BALANCE_NSTIChart of Account › Companies › Default GL CodesGL code stamped on units created by documents (auto-created if missing); accounts for the month-end NSTI closing-stock journal
SHOW_NSTI_STOCK_VALUE and the closing-stock record’s NSTI values (manual / system, “select NSTI manual”)Chart of Account › Settings › General Settings, Closing Stock BalanceWhether the NSTI tab appears on the closing-stock record and which value the month-end journal uses
SHOW_TRADE_IN, TRADE_IN_BASIC_ITEMPOS General Field SettingsWhether cashiers can add trade-in lines — the main source of TRADE_IN units
Subscription of the two NSTI runs to the document-finalise chainTenant job configuration (support)Whether FINAL documents create and post NSTI transaction lines at all

Feature visibility / permissions

  • Client-side permissions: none are defined for this applet, and the applet checks no SHOW_* codes. Feature Visibility is the shared Manage Team Access screen only; the HIDE_* settings cannot be reopened per role.
  • Server-side permissions: the Permission Set / User / Role routes are the shared containers; each NSTI screen checks its own TNT_API_NON_STOCK_TRADE_IN_* code with the tenant owner / admin roles as fallback. The POS till’s trade-in list is served by this applet’s read permission too: a cashier role without it sees an empty trade-in list at the counter, with no error, as if no units existed — grant the read code to every cashier role that takes trade-ins.

Fields

NSTI Stock — Details

NSTI Name (mandatory, up to 255 characters) is free text; a unit created by a document takes the document line’s item name. The unit also has a Description field (optional, up to 255), but neither panel shows it: the create form sends it empty and the edit panel has no box for it, and the import file has no column for it. The rows below are the fields that do something you cannot see from the form.

FieldRequiredNotes / validation
NSTI Status—Read-only. DRAFT on create; the edit form shows DRAFT / FINAL but the control is disabled — use the FINAL button
NSTI CodeNoMax 255. Blank → a random code (upper-cased) generated in the browser and checked against the codes already loaded; BigLedger has no uniqueness check on the code
TypeYesNon Stock (NON_STOCK) / Trade In (TRADE_IN). Trade In is saved as FINAL at once and every later Save re-sends FINAL; Non Stock is saved as DRAFT
Financial ItemYesAny ACTIVE doc item; must exist. Should be an NSTI-type item (see above). Choose it right the first time: the edit panel lets you re-pick it, but the change is never sent, so a unit on the wrong item has to be deleted and made again
CategoryYesThe picker lists ACTIVE NSTI categories only, shown as code | name. The unit points at the category itself, not at its code, so renaming a category’s code later carries every unit with it
EmployeeNoThe person in charge, kept as a note — nothing in BigLedger routes or restricts a unit by it. The drop-down opens listing financial items rather than employees until you type part of a name in its search box, so type before you pick; on the edit panel an already-chosen employee can look blank for the same reason
CurrencyYesFilled with the company’s own currency the moment you choose the company; the list offers every currency. Documents in a foreign currency create and move no units at all (see Lifecycle), so a unit you give a foreign currency here will never be matched by a document
GL CodeNoMust exist if set; documents overwrite it with the company NSTI code when they update the unit. It is a label on the unit: the journal never reads it, and NSTI lines post to the line, header, item-company or company-default NSTI code (see Journal)
Warranty ExpiryNoA date kept on the record and nothing more: no reminder fires, and neither a sale nor a return checks it. Whoever accepts a warranty claim on a resold unit looks the date up here before agreeing
Serial NumberNo on the formCamera SCAN available. Units created by documents always have one, and the balance key is item + serial + location — a unit without a serial can never be matched by a document. The box shows capitals but stores exactly what you typed, and the match is exact, so type the serial the way the sales document will carry it
Purchase Date / Purchase Price / Sales Date / Sales Price—Read-only on the edit form; the create form sets the purchase date to now and every price to 0
Current Value / Current For Sale PriceNoEdit form only, and read by nothing else: the till does not price a resale from Current For Sale Price, and Stock Availability values units from their purchase price. Setting a resale price is the person pricing the shelf; record it here if you want it on file, and put it on the item’s price list if you want the till to use it

Txn Line — Add Transaction

FieldRequiredNotes
Transactions TypeYesAcquisition / Disposal / Adjustment — a label on the line and nothing more. A manual Disposal does not take the unit out of stock and a manual Acquisition does not add one (see below); on a document line the type is set from the document’s quantity sign instead
Quantity BaseYesDefault 1
Unit Price Net (Exclusive of tax)Yes≥ 0, two decimals; the form recomputes net amount from quantity × price
SST / WHTYes, bothThe SST list offers only input (purchase-side) tax codes. Both boxes must hold a real code before Add lights up — the blank first entry in the SST list does not count, and the WHT list has no blank entry at all — so a company with no withholding-tax code set up in Tax Configuration cannot add a manual line
Txn AmountYes≥ 0, two decimals. Worked out for you as net amount + SST − WHT whenever you change quantity, price or a tax code; type a Txn Amount yourself and the form works backwards to the unit price and both tax amounts instead

A manual line is stored against the unit with no document; BigLedger validates that anything it references exists and does not change the unit’s Stock Balance — only the balance run does that, and it runs for document-generated lines only (see below).

Attachment

Attachment Name, Details, one file.

NSTI Category

Category Name (mandatory) is what the unit form’s Category picker shows after the code; Description (optional) stays on the category’s own form and appears in no listing.

FieldRequiredNotes
Category CodeYesUpper-cased when saved, on create and on edit; no uniqueness check. It can be changed later without touching a single unit, because units point at the category rather than at its code

Import NSTI — CSV columns

CODE, NAME, TYPE, FINANCIAL_ITEM_CODE, CATEGORY_CODE, COMPANY_CODE, BRANCH_CODE, LOCATION_CODE, EMPLOYEE_NAME, CURRENCY, GL_CODE, WARRANTY_EXPIRY, SERIAL_NUMBER, PURCHASE_DATE, PURCHASE_PRICE_INCL_TAX, SALES_DATE, SALES_PRICE_INCL_TAX, CURRENT_VALUE_INCL_TAX, CURRENT_FOR_SALES_PRICE_INCL_TAX. The first row is the header and its names are what the import reads: the columns may be in any order, and a header missing any of the nineteen fails the whole file with a message naming the missing ones (builds before 2026-10-05 read by position and ignored the names). Values are trimmed; UTF-8 with or without BOM. Dates must look like 2026-03-14 10:30:00.000 +0800; a date or a number that does not parse fails its row, with the reason written on the row for the Checking tab — it is no longer stored empty.

Lifecycle and effects

This is a master-data applet with its own register — no server document type, no amount or quantity sign of its own, no journal from this applet, no open-queue rows. The posting status on a unit is set by the applet’s FINAL / SAVE buttons through an ordinary update; BigLedger validates the record and stores it — it posts nothing and does not lock anything on the server. The lock is enforced only by the applet’s buttons and reopened by ALLOW_EDIT_TXN_LINE_AFTER_FINAL.

What the applet writes

WhatHow
UnitTemporary record on +, updated on Save / Final; Delete removes the unit record only — its transaction lines and attachments are left behind
Manual transaction lineCreated, edited and deleted from the Txn Line tab — no balance update
AttachmentCreated and deleted from the Attachment tab
CategoryCreated, edited and deleted from the NSTI Category menu; delete is refused while any unit uses the category
ImportThe upload queues an import run that writes one staging row per CSV line, then a second run that validates each row and creates a DRAFT unit with no stock balance from every valid row. Process Status ends DONE when every row passed, otherwise FAILED with the failed-row count in User Error Message and each failed row’s reason on the Checking tab — the valid rows are created either way

How documents create and move units (the real lifecycle)

  1. A generic document is finalised. The finalise chain fans out to the tenant’s subscribed runs; the NSTI transaction-line run picks the document up. It does nothing when the document has already been processed for trade-in, or when the document is in a foreign currency.
  2. For every stock line with a non-zero quantity whose item is of type NSTI and which carries serial numbers, it writes one transaction line per serial with quantity 1, the document’s quantity sign (forced to +1 for a Sales Credit Note) and the line’s amounts, prices and taxes; the transaction type is ACQUISITION for +1, DISPOSAL for −1, ADJUSTMENT for 0. On a Stock Adjustment the quantity is instead +1 or −1 with the direction of the line, and that sets the type. Lines without serial numbers create nothing. Stock-in-transit counter-lines are added for transfer-type documents.
  3. Each new line is handed to the balance run: the unit is looked up by item + serial number + location (all three mandatory). If it exists, its Stock Balance moves by the line quantity in the sign’s direction and an invalid GL link is repaired; if not, a unit is created with type TRADE_IN, posting status FINAL, a code from the running number, the line’s item name, currency, company / branch / location, purchase date and price (line amount ÷ quantity), the serial, a balance of 1, and the company NSTI GL code (filled in if missing — see Before you can use it) plus subledger. The balance is 1 whatever the line’s sign: a disposal line for a serial that has no unit at that location creates one at +1 instead of failing. A Stock Adjustment is the exception: a minus adjustment of such a serial creates the unit at −1. That happens when the sale skipped the stock check, which ignores a line with neither a delivery location nor a store, while the transaction line falls back to the header’s store or the branch’s default location. Give every sales line of an NSTI item its location.
  4. Support can re-run steps 1-3 for one sale or receipt through a developer endpoint. It skips anything already marked as processed for trade-in, so it repairs only what the first run never touched (see Troubleshooting).

Signs of the trade-in document types: Purchase Trade In — quantity +1, amount −1 (the POS trade-in line: the unit comes in, the customer’s bill goes down); Sales Trade In — quantity −1, amount +1. A normal sales line (Cash Bill, Sales Invoice, quantity −1) on an NSTI serial disposes of the unit; a sales credit note brings it back.

Journal. NSTI lines are posted by the document’s own posting, not by this applet: a stock line whose item is NSTI (or whose document type is either trade-in type) posts under transaction code NSTI, and the GL is resolved as line GL → header GL → the item’s company link with code NSTI → company default NSTI. Month end: the closing-stock run posts the NSTI closing-stock value between COGS_NSTI and STOCK_BALANCE_NSTI.

Stock check on sale. When BigLedger validates stock for a document, every NSTI serial on a line must have a balance of at least 1 at the line’s location (delivery location, else the line’s store), otherwise the document is rejected with “There’s not enough stock for NSTI item <code>, serial number <sn>”. A line with neither a delivery location nor a store is skipped by this check.

Server-side validation that stops a save: on a unit, the company, branch, location, category, GL code, subledger, item and any linked purchase / sales document must exist if set, and the audit fields must be present. Transaction lines and categories are checked the same way. There is no uniqueness check on unit code, serial number or category code.

What it only reads. Stock Availability shows NSTI units (grouped by company, location and item; the cost it shows is the group’s total purchase price incl. tax divided by the group’s total balance, and units already sold stay in that total at balance 0, so once some units of a group are sold and some remain, the figure is higher than the price paid for the units still on hand) alongside inventory balances for items of type NSTI. The historical stock balance report does not include NSTI units.

Related applets

  • Doc Item Maintenance — creates the NSTI-type items that the record’s Financial Item should point at; only those are recognised when documents are finalised.
  • POS General — trade-in lines on a cash bill are the main way TRADE_IN units are created; selling the unit later disposes of it.
  • Sales Invoice, Sales Credit Note — dispose of and restore NSTI serials; the credit note’s quantity sign is forced to +1 for NSTI lines.
  • Stock Availability — the only stock report that shows NSTI balances; Stock Balance and Stock Report show inventory only.
  • Chart of Account — company default GL codes NSTI, COGS_NSTI, STOCK_BALANCE_NSTI and the closing-stock record’s NSTI value; Financial Report — where the month-end NSTI closing journal lands.
  • Organisation — company, branch and location; the location is part of the unit’s identity.
  • Tax Configuration — tax and WHT codes on manual transaction lines.
  • Employee Maintenance — the optional person in charge on a unit.

Troubleshooting

SymptomCauseFix
SAVE stays grey on the create panelA mandatory field is empty — Name, Type, Financial Item, Category, Company, Branch, Location, CurrencyFill them; Code, Employee, GL Code, Warranty Expiry and Serial Number are optional
SAVE / FINAL grey on the edit panel although every field is filledThe unit is FINAL and ALLOW_EDIT_TXN_LINE_AFTER_FINAL is off. Trade-in units are FINAL from creationTurn the setting on in Settings › Field Settings, or leave the unit as it is
Add Transaction / line Save / Delete disabledSame lock; lines that came from a document are always read-onlyAs above; document lines are corrected by correcting the document
“Auto-generated NSTI Code already exists! Click save again!”The random code collided with an existing onePress SAVE again, or type a code
A FINAL POS bill with a trade-in line created no NSTI unit(a) the item is not of transaction type NSTI; (b) the line has no serial number — nothing is created without serials; (c) the document is in a foreign currency; (d) the NSTI runs are not subscribed for the tenant; (e) the document was already processed for trade-in (a clone or an earlier run)Check the item type and serial; ask support to subscribe the two runs and to re-post the document. They are two separate subscriptions: if only the first runs, the lines appear on the unit’s Txn Line tab but no balance moves, the bill is marked processed, and a re-post then skips it — that case needs support to repair the units by hand
Sale rejected with There’s not enough stock for NSTI item …, serial number …The serial has no unit with a balance of at least 1 at the line’s location — it was never received, was received at another location, or has already been soldSell from the location that holds it, or receive the unit through a document with a trade-in line at that location. A unit created on this screen does not help: the create form has no quantity, so the unit starts with no balance and the sale is still refused
A unit shows Stock Balance 0 although a manual Acquisition line was addedManual transaction lines never update the balance; only document-generated lines doSet the quantity through a document (trade-in line) or accept that manual lines are a record only
Two units for the same serialThe balance key is item + serial + location; the same serial received at two locations is two units, and units typed in by hand without a serial never matchKeep one location per serial; always fill Serial Number on hand-made units
Import shows DONE and the new units carry Stock Balance 0Expected: the import creates the units as DRAFT with no balance; only a document gives a unit a quantityReceive the units through a document (a trade-in line), or keep them as a record only
Import shows FAILED — Import failed: N row(s) have errors — and some of the units were still createdRows are validated one by one, and a valid row becomes a unit even when another row fails; the file’s status reports the failuresOpen the file and read the Checking tab: each row shows Validated, Processed and its Error Message — a missing mandatory field, a code that does not exist, or a CODE already in use. Re-upload a file containing only the failed rows; re-uploading the whole file refuses the created ones as duplicate codes
Sample Format does nothingBuilds before May 2026 had the download stubbed; current builds download the template and report an error if the template file is missing on the serverUpdate the applet; if the error persists, the server-side template file is missing — ask support
Changed a unit’s Financial Item, pressed SAVE, and it is back to the old itemThe edit panel does not send a changed Financial Item — the unit keeps the item it was created withCreate a new unit on the right item with the same serial and location, then delete the wrong one (delete its lines and attachments first; the unit’s delete leaves them behind)
Posting Status blank in the listing after SAVE on a Non Stock unitAs read in the applet’s source, SAVE on the edit panel sends a Non Stock unit without its posting status, and the update replaces the whole record; Trade In units are unaffected because SAVE re-sends FINAL for themPress FINAL when the unit is ready rather than relying on SAVE to keep DRAFT; a blank status is not treated as FINAL, so the unit stays editable
Add stays grey on a new transaction line although the amounts are filledSST and WHT both need a real code, and there is no blank WHT choicePick an input SST code and a WHT code; if the WHT list is empty, set one up in Tax Configuration first
The Employee drop-down lists item codes and namesThe list is filled with financial items until you type in its search boxType part of the employee’s name, then pick
SAVE or FINAL on a unit fails with a race-condition errorA sale or receipt moved the unit after you opened it; the update is refused rather than overwriting the newer balanceClose the unit, open it again and repeat the change
Category Delete failsUnits still reference the categoryRe-categorise the units first, or set the category INACTIVE
Category Update enabled without changesCosmetic—
Trade-in units missing from Stock Balance / historical stock reportsThey are not inventory; only Stock Availability shows the NSTI registerUse Stock Availability or this listing
Default Selection does nothing / console error on choosing a branchThe screen is not wired up and nothing in this applet reads DEFAULT_BRANCH / DEFAULT_LOCATIONNothing to configure; see Applet settings
Deleted unit’s lines still show in searches / API queriesDelete removes the unit record onlyDelete the lines and attachments from their own tabs first, or leave them

Related documentation

Last updated on