Trade-in / Exchange
Trade-in / Exchange records an old device a customer hands in — its condition and assessed/final value — alongside the new device they are buying in exchange, and tracks that transaction through a simple approval and completion status flow.
Overview
Each record has two halves: the device being traded in (type, brand, model, IMEI, color, storage, condition, known issues, assessed value, final value) and the new device being purchased in exchange (name and price), plus the customer's name and phone.
A five-stage status flow — Pending, Assessed, Accepted, Rejected, Completed — tracks the trade-in from initial drop-off through to final resolution.
The table shows the Final Trade-in Value if set, falling back to the Assessed Value when no final value has been agreed yet, so you always see the most relevant number for that stage of the deal.
Before You Start
- No plan-tier restriction beyond the route's general "billing" feature gate.
- Only Customer Name and Device Type are required to save a trade-in — assessed value, final value and the new-device fields can all be filled in later as the deal progresses.
Step-by-Step Guide
1 Record a new trade-in
- Click New Trade-in.
- Enter Customer Name * (required) and Phone.
- Under "Device Being Traded In", select Type * (required — Mobile, Laptop, Tablet, Smart Watch, TV, Printer, Desktop, Other) and enter Brand and Model.
- Enter IMEI, Color and Storage if applicable.
- Pick Condition (Excellent, Good, Fair, Poor, For Parts Only) and describe any Known Issues.
- Enter Assessed Value and, once you and the customer agree on a number, Final Trade-in Value.
- Under "New Device (if exchange)", enter the New Device Name and New Device Price if this trade-in is going toward a specific replacement purchase.
- Set Status (defaults to Pending) and add any Notes, then click Record Trade-in.
2 Progress a trade-in through its status
- Open the record via the edit icon at each stage of the deal.
- Move Status from Pending → Assessed once you have inspected the device and entered an Assessed Value.
- Move to Accepted once the customer agrees to the Final Trade-in Value, or Rejected if the deal does not proceed.
- Move to Completed once the exchange/sale has actually taken place.
3 Search, filter and manage records
- Use the search box to filter by customer name, brand, model number or IMEI.
- Use the status chips (All, Pending, Assessed, Accepted, Rejected, Completed) to narrow the table.
- Click the trash icon and confirm to permanently delete a trade-in record.
Every Field & Button, Explained
| Field / Button | What it does |
|---|---|
New Trade-in | Opens the blank trade-in form. |
Customer Name * / Phone | Required customer name and optional contact phone. |
Type * | Required device category: Mobile, Laptop, Tablet, Smart Watch, TV, Printer, Desktop, Other. |
Brand / Model | Optional make and model of the device traded in. |
IMEI / Color / Storage | Optional identifying and variant details of the device traded in. |
Condition | Excellent, Good, Fair, Poor, or For Parts Only. |
Known Issues | Free-text description of defects, e.g. cracked screen, battery. |
Assessed Value | The shop's initial valuation of the traded-in device. |
Final Trade-in Value | The agreed final value credited to the customer; shown in the table in preference to Assessed Value once set. |
New Device Name / New Device Price | The replacement device this trade-in is being exchanged toward, if any. |
Status | Pending, Assessed, Accepted, Rejected, or Completed — shown as a colour-coded badge. |
Notes | Free-text notes on the trade-in. |
Search box | Filters by customer name, brand, model number or IMEI. |
Status filter chips | All, Pending, Assessed, Accepted, Rejected, Completed. |
Edit / Delete icons | Edit opens the form pre-filled; Delete permanently removes the record after a confirmation prompt. |
Tips & Best Practices
- Fill in Known Issues at intake even briefly — "cracked screen, battery swells" takes seconds to type and prevents a dispute later about what condition the device was really in.
- Enter both Assessed Value and Final Trade-in Value rather than only one — the gap between them is a useful record of how much negotiation happened on a given deal.
- Move records to Completed promptly once the exchange finishes — Pending/Assessed trade-ins left open indefinitely make it hard to tell which deals are still live.
Troubleshooting & FAQ
The trade-in value shown in the table doesn't match what I entered as Assessed Value.
I can't find fields for a discount linked to the new device, even though I recall configuring one.
A trade-in I marked Rejected is still showing up in my active list.
🧑💻 Developer Notes
Source component(s):
frontend-app/pos-app-electronics/src/pages/electronics/TradeInPage.jsxfrontend-app/packages/pos-react-lib/src/pages/electronics/TradeInPage.jsx
Backend endpoints used:
GET /electronics/trade-insPOST /electronics/trade-insPUT /electronics/trade-ins/:idDELETE /electronics/trade-ins/:id
Related tables (db-core repositories):
ElectronicsTradeIn
Redux slices:
None — local component state only
Feature flag key: billing
The component's initial form state (EMPTY) includes newDeviceSku and exchangeDiscount fields, and the backend table almost certainly reserves matching columns, but the current TradeInModal JSX never renders input controls for either — they can only be populated via a direct API call, not through this screen. This looks like a partially-built feature rather than an intentional omission and is worth flagging if a developer is asked to wire up SKU linkage or itemised exchange discounts.