Home / Help Center / pos-app-electronics / electronics / Trade-in / Exchange
🔄 electronics

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.

📍 Menu path: /electronics/trade-in
👤 Who uses it: Owner,Manager,Staff

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

Step-by-Step Guide

1 Record a new trade-in

  1. Click New Trade-in.
  2. Enter Customer Name * (required) and Phone.
  3. Under "Device Being Traded In", select Type * (required — Mobile, Laptop, Tablet, Smart Watch, TV, Printer, Desktop, Other) and enter Brand and Model.
  4. Enter IMEI, Color and Storage if applicable.
  5. Pick Condition (Excellent, Good, Fair, Poor, For Parts Only) and describe any Known Issues.
  6. Enter Assessed Value and, once you and the customer agree on a number, Final Trade-in Value.
  7. 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.
  8. Set Status (defaults to Pending) and add any Notes, then click Record Trade-in.

2 Progress a trade-in through its status

  1. Open the record via the edit icon at each stage of the deal.
  2. Move Status from Pending → Assessed once you have inspected the device and entered an Assessed Value.
  3. Move to Accepted once the customer agrees to the Final Trade-in Value, or Rejected if the deal does not proceed.
  4. Move to Completed once the exchange/sale has actually taken place.

3 Search, filter and manage records

  1. Use the search box to filter by customer name, brand, model number or IMEI.
  2. Use the status chips (All, Pending, Assessed, Accepted, Rejected, Completed) to narrow the table.
  3. Click the trash icon and confirm to permanently delete a trade-in record.

Every Field & Button, Explained

Field / ButtonWhat it does
New Trade-inOpens the blank trade-in form.
Customer Name * / PhoneRequired customer name and optional contact phone.
Type *Required device category: Mobile, Laptop, Tablet, Smart Watch, TV, Printer, Desktop, Other.
Brand / ModelOptional make and model of the device traded in.
IMEI / Color / StorageOptional identifying and variant details of the device traded in.
ConditionExcellent, Good, Fair, Poor, or For Parts Only.
Known IssuesFree-text description of defects, e.g. cracked screen, battery.
Assessed ValueThe shop's initial valuation of the traded-in device.
Final Trade-in ValueThe agreed final value credited to the customer; shown in the table in preference to Assessed Value once set.
New Device Name / New Device PriceThe replacement device this trade-in is being exchanged toward, if any.
StatusPending, Assessed, Accepted, Rejected, or Completed — shown as a colour-coded badge.
NotesFree-text notes on the trade-in.
Search boxFilters by customer name, brand, model number or IMEI.
Status filter chipsAll, Pending, Assessed, Accepted, Rejected, Completed.
Edit / Delete iconsEdit opens the form pre-filled; Delete permanently removes the record after a confirmation prompt.

Tips & Best Practices

Troubleshooting & FAQ

The trade-in value shown in the table doesn't match what I entered as Assessed Value.
The table always prefers Final Trade-in Value over Assessed Value once a final value has been entered — check the record's Final Trade-in Value field if the number looks different from your initial assessment.
I can't find fields for a discount linked to the new device, even though I recall configuring one.
The form currently only captures the New Device Name and New Device Price — there is no visible field to enter a separate exchange discount amount in this screen even though the record type reserves space for one internally; apply any discount through the sale itself instead.
A trade-in I marked Rejected is still showing up in my active list.
Rejected is a normal status like any other — use the status filter chips and select a specific status (e.g. Accepted) if you want to exclude Rejected/Completed records from view.

🧑‍💻 Developer Notes

Source component(s):

  • frontend-app/pos-app-electronics/src/pages/electronics/TradeInPage.jsx
  • frontend-app/packages/pos-react-lib/src/pages/electronics/TradeInPage.jsx

Backend endpoints used:

  • GET /electronics/trade-ins
  • POST /electronics/trade-ins
  • PUT /electronics/trade-ins/:id
  • DELETE /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.