Home / Help Center / pos-app-electronics / electronics / Buy-Back
♻️ electronics

Buy-Back

Buy-Back manages purchasing used devices from customers to resell as refurbished stock — recording the seller's ID and a clean-IMEI check for stolen-goods protection, printing a signed purchase receipt, and pushing purchased devices straight into your IMEI inventory.

📍 Menu path: /electronics/buy-back
👤 Who uses it: Owner,Manager,Staff

Overview

Each buy-back record captures the seller's name and phone, device details (Device Type, Brand, Model, Color, Storage, IMEI), physical Condition (Excellent/Good/Fair/Poor/Parts Only), and a free-text description of any Issues/Damage.

A record moves through Status Pending → Inspected → Purchased → Rejected; only once Status is Purchased does the "Add to Inventory" action become available for that row.

For legal protection when buying second-hand devices, the form can capture a Seller ID Proof (Aadhaar/PAN/Driving Licence/Voter ID/Passport/Other) with its number, and an "IMEI verified clean" checkbox with a direct link out to the government CEIR IMEI-check portal.

Clicking the print icon opens a separate purchase receipt window containing the seller's details, ID proof, device info, amount paid, and a printed Seller Declaration ("...is not stolen, lost or encumbered...") with signature lines for both seller and shop — designed as your paper trail against buying stolen goods.

Before You Start

Step-by-Step Guide

1 Intake a used device from a customer

  1. Click Record Buy-Back.
  2. Enter Customer Name (required) and Customer Phone, plus Device Type, Brand, Model, Color, Storage and IMEI as applicable.
  3. Select the device's Condition (Excellent/Good/Fair/Poor/Parts Only) and describe any Issues/Description (cosmetic damage, faults, etc.).
  4. Optionally capture the seller's ID Proof type and number, and tick "IMEI verified clean" once you have checked the device is not reported lost/stolen — use the "Check on CEIR" link to open the government verification portal in a new tab.
  5. Enter the Offered Value and the Final Agreed Value, choose a Payment Mode (Cash/Bank Transfer/Store Credit) and the Received Date, then click Save — the record starts as Pending.

2 Inspect and finalize the purchase

  1. Click the edit (pencil) icon on a row — editing reveals a Status dropdown (Pending/Inspected/Purchased/Rejected) hidden on first creation.
  2. Move Status to Inspected once you have physically checked the device against what was declared, then to Purchased once payment is made and ownership transfers, or Rejected if you decline the device.

3 Print the purchase receipt with seller declaration

  1. Click the print icon on any row to open a separate print-formatted window.
  2. The receipt shows the store name, seller name/phone/ID proof, device details, IMEI, condition, known issues, amount paid and payment mode, an "IMEI Check: Verified clean" line if that box was ticked, and a Seller Declaration paragraph with signature lines for both parties.
  3. The browser print dialog opens automatically after a short delay — print or save it as your legal record of the transaction.

4 Push a purchased device into IMEI inventory

  1. On a row with Status = Purchased and not yet added, click Add to Inventory.
  2. Confirm the prompt — BazaarPOS automatically creates a new IMEI Registry entry using the buy-back's brand/model/color/storage, sets its Grade from the device Condition (Excellent → Grade A, Good → Grade B, Fair/Poor/Parts Only → Grade C), tags its Source as "Buy-Back", sets Status to In Stock, and uses the Final Value as its cost price.
  3. Once added, the Inventory column shows a green "In Stock" tag and the action is no longer available for that row (a device can only be added once).
💡 If the automatic IMEI-creation step fails, an error toast is shown and the buy-back record is left unchanged — you can retry Add to Inventory again.

5 Search, filter and clean up

  1. Use the All / Pending / Inspected / Purchased / Rejected filter pills to narrow the list; each shows a live count.
  2. Use the search box to filter by customer name, brand, model or IMEI.
  3. Click the trash icon to permanently delete a buy-back record after a confirmation prompt.

Every Field & Button, Explained

Field / ButtonWhat it does
Record Buy-BackOpens the form to log a new used-device purchase intake.
Total Received / Purchased / Total Amount Paid / Added to Inventory tilesTotal Amount Paid sums Final Value only across PURCHASED records; Added to Inventory counts records with `addedToInventory = 1`.
Status filter pills (All/Pending/Inspected/Purchased/Rejected)Filters the table by status with a live count per pill.
Search boxFilters by customer name, brand, model or IMEI as you type.
Customer Name * / Customer PhoneName is required; phone is optional.
Device Type / Brand / Model / Color / Storage / IMEIDescriptive device fields; all optional free text except Condition.
Condition *Excellent / Good / Fair / Poor / Parts Only — shown as a color-coded badge; also drives the auto-assigned inventory Grade.
Issues / DescriptionFree-text note on known faults or cosmetic damage.
Seller ID Proof / ID Proof NumberAadhaar, PAN, Driving Licence, Voter ID, Passport or Other, plus the document number — printed on the purchase receipt for legal protection.
IMEI verified clean checkbox + "Check on CEIR" linkManually confirms the IMEI was checked as not lost/stolen; the link opens the government CEIR verification portal in a new tab (this app does not call the CEIR API automatically).
Offered Value / Final Agreed ValueThe initial quote versus the amount actually paid to the seller.
Payment ModeCash / Bank Transfer / Store Credit — printed on the receipt.
Received DateThe date the device was physically taken in.
Status (edit mode only)Pending / Inspected / Purchased / Rejected — only editable once a record already exists; new intakes always start Pending.
Add to InventoryOnly shown once Status = Purchased and not already added; creates a matching IMEI Registry entry and marks the row "In Stock".
Print (printer icon)Opens the purchase receipt with the seller declaration and signature lines in a new print-ready window.
Edit (pencil icon) / Delete (trash icon)Edits any field, or permanently removes the record after confirmation.

Tips & Best Practices

Troubleshooting & FAQ

The Add to Inventory button isn't showing on a row.
It only appears once that record's Status is Purchased and it has not already been added — check the Status column, and note the Inventory column will show "In Stock" once already done.
I clicked Add to Inventory and got an error toast.
The automatic IMEI Registry creation failed on the backend; the buy-back record itself is unchanged, so you can simply try Add to Inventory again once the issue is resolved.
What Grade does a bought-back device get in IMEI inventory?
Excellent condition maps to Grade A, Good maps to Grade B, and Fair, Poor or Parts Only all map to Grade C — this happens automatically when you use Add to Inventory.
Can I print the receipt again after the transaction is done?
Yes — the print icon is always available on the row regardless of status, so you can reprint the purchase receipt at any time.
I can't save a new buy-back record.
Customer Name is the only strictly required field on this form; if saving still fails, check your network connection or look for a toast error with more detail.

🧑‍💻 Developer Notes

Source component(s):

  • frontend-app/pos-app-electronics/src/pages/electronics/BuyBackPage.jsx
  • frontend-app/packages/pos-react-lib/src/pages/electronics/BuyBackPage.jsx (actual implementation)

Backend endpoints used:

  • GET /electronics/buy-back
  • POST /electronics/buy-back
  • PUT /electronics/buy-back/:id
  • DELETE /electronics/buy-back/:id
  • GET /settings
  • POST /electronics/imei

Related tables (db-core repositories):

  • ElectronicsBuyBack
  • ElectronicsIMEI (created by Add to Inventory)

Feature flag key: billing

Thin re-export in pos-app-electronics; real component lives in shared pos-react-lib package. `idProofType`, `idProofNumber` and `imeiVerified` were added to the ElectronicsBuyBack table via later ALTER TABLE migrations (backend/src/lib/db.js) rather than being in the original CREATE TABLE — a sign this receipt/compliance functionality was added after the initial buy-back feature shipped. The purchase receipt is generated entirely client-side via `window.open` + inline HTML/CSS and `window.print()` — there is no server-side PDF generation. Add to Inventory is a two-step client-side flow: POST /electronics/imei to create the IMEI record, then PUT /electronics/buy-back/:id with `{ addedToInventory: 1, inventoryImeiId }`; if the first POST succeeds but the second PUT fails, the IMEI could exist without the buy-back row reflecting it — worth flagging to a developer as a non-atomic operation. Mounted at `/electronics/buy-back` behind `` with no minTier restriction.