Trade Counter
Fast, keyboard-driven register built for lumber and building supply yards.
Final
Product Team
About this flow
Designed for building supply, lumber, and trade counters, Trade Counter provides a high-density, keyboard-first register tailored for contractor workflows. It handles unit-based selling, fractional quantities, separate customer pricing, and distinct fulfillment and payment lifecycles while rendering customer invoices and yard pick tickets from a single shared order model.
What it can do
Keyboard-First Entry
Single omnibox automatically classifies barcodes, SKUs, and text descriptions with arrow key fall-through to navigate lines.
Unit & Fractional Quantities
Enforces variant-specific unit precisions like linear feet or board feet and verifies quantities before adding to the cart.
Dual-Axis Ticket Lifecycle
Tracks payment and fulfillment as separate operational states to cleanly handle will-call staging and yard pickups.
Invoices and Yard Pick Tickets
Generates contractor invoices with pricing alongside price-free yard pick tickets from the same document data.
Integrated Explain Mode
Contextual help docks on the side and updates as users tab or hover over trade-specific controls.
Screenshots
Tags
Version history
- v1.6.0Current
The counter now has a light screen instead of a dark one. Everything is in the same place; it just reads better under yard lighting, and the big total is easier to see. Three new settings for quotes, all in the design panel — no need to ask anyone to change the app: - How long a quote holds its price. Thirty days to start with. The counter can still change it on any individual quote. - The line printed at the bottom of every quote. Put your own terms there in your own words, or clear it to print nothing. - Whether your logo goes on quotes, on quotes and shelf tags, or neither. It uses the logo from your brand settings, so nothing shows until one is uploaded. Nothing else about how the till works has changed.
- v1.5.1
Housekeeping — no behaviour change. - Removed the temporary draft/parked-order probe, its nav entry and its registration. It answered its question without needing a device: a parked order does hold its captured prices on recall, but parking is tied to a company setting the app can neither read nor control, so a quote cannot safely be a parked order. - Rewrote the reasoning at the top of the quotes module. The old justification cited an incident that turned out to have no source behind it — two notes referring to each other. It is struck out and replaced with the real reason, pointing at the exact lines it was read from, and it says what would have to change for the decision to be revisited. Nothing a user can see is different in this version.
- v1.5.0
Quote on paper — the document a contractor carries away. NEW - A quote can now be printed. Registered as a fourth print screen; the engine minted its durable id, which is the third time the belief that print screens are a closed set has been shown to be wrong. - The print is offered at the moment the paper is wanted: saving a quote no longer closes the sheet, it holds open on the saved quote with Print and Done. Putting the print behind a second trip through the Quotes page would have added a step to the busiest thing a counter does. - The printed quote carries its reference, the validity date as the headline commercial promise, the customer and job reference, every quoted line with its unit and frozen price, and the lines total. DELIBERATE - No tax line. A quote has no order behind it, so there is no host-computed tax to read — and working one out on the screen would be the client-side money arithmetic this build forbids everywhere else. The paper shows the lines total and says plainly that tax is not included. A contractor bids real money against this sheet; an invented figure on it would be worse than an absent one. - An expired quote prints as expired, with a line telling the reader to ask for a requote, rather than looking like a live price. Known: whether paper actually comes out, on what stock, and whether a station needs a printer bound to the new print id are all device questions. Printing is mocked entirely in preview.
- v1.4.0
Catalogue page — look up an item, fix its quantity, print a shelf tag. NEW - Catalogue page (5th section): search reusing the register's own grammar, Below zero / Low stock / Not tracked filters, and a two-pane detail view showing one figure per stock pool with unit siblings attached to their pool rather than counted separately. - Adjust stock (add / remove / recount) per stock-owning variant, quantity stepped from the unit's own precision and sent as a string to preserve it. Every adjustment re-reads the item from the host and the screen redraws from that, never from the command's returned figure — which is a client-side prediction. - Other outlets behind a disclosure, so the local figure stays the one read first. - Shelf label print screen. Print screens were never a closed set; registering a third one mints its durable id exactly as the first two. - "Low stock at" flow option (default 5). The platform has no per-item reorder point, so the threshold is the build's, and the screen says what it means. - Item editing shown as disabled controls rather than hidden — the platform has no POS-runtime handler for product writes. FIXED — both in shipped register behaviour - The counter's on-hand figure added every OUTLET's stock while the only stock write moves this station's outlet alone. It now reads this outlet's row. - It then still added every stock POOL of a product, so an item narrowed to one size reported every size's stock together. It now reads the resolved selling unit's own figure. Known: the stock-adjust error paths, unit/pool rendering and multi-outlet reads cannot be exercised against mock data and need a device. Printing is mocked entirely.
- v1.3.0
Phase 1 nav restructure: Register / Orders / Quotes / Customers are now four real pages behind one nav rail. Live ticket state lifted into a shared provider above the screen registry so cross-page guards are true; Orders and Quotes promoted out of sheets, with returns hosted on Orders and save-as-quote kept on the register. Counter renamed Register and user-facing "ticket" copy swept to "order".
About the maker
Final
Product Team
St. John's, Newfoundland
Final's in-house flow studio. We publish official themes built to the platform's highest standard, pairing dependable designs you can ship today with experiments that point to what's next.
