Why I built it
I wanted a tool that follows the work I actually do: buy inventory, keep track of it, sell it, and follow the package. The eBay Tracker brings those records into a native Rust desktop app, with sales reporting, purchase costs, receipts, and shipping follow-up in the same workspace.
Start with the sales
The sales overview filters by store and date, compares periods, and charts revenue or order counts. I can look at top-selling items, drill into transactions, and export the filtered rows. Recorded sales net is useful, but it is not the same thing as profit after buying the inventory.
Give every purchase a cost
The purchase workflow supports individually priced items and mixed lots. I enter the purchase details, quantities, supplier, and any tax, buyer fees, or inbound transport. Mixed-lot costs are allocated by unit count; individually priced rows share extra acquisition charges in proportion to their prices, falling back to unit counts when all prices are zero.
Receipts can be attached as images or PDFs and previewed inside the app. They are copied into the database, so the record does not depend on a file staying in its original folder. Purchase history keeps remaining quantities and storage locations alongside the costs.
Match the sale to the inventory
Sales are explicitly matched to purchased inventory and quantities. A storage code alone is not enough to decide which purchase funded a sale. When an order spans several items, the entered selling-price weights divide its net earnings between them.
The app uses recorded eBay earnings, refunds, and additional expenses to calculate contribution profit for matched inventory. It avoids counting recorded eBay fees and shipping charges twice. Missing earnings stay pending instead of becoming a misleading zero.
See which buys earn their keep
Reports compare contribution profit by supplier, category, and sale month. Purchase history shows cash recovery and inventory still on hand. Unsold stock retains its acquisition cost. Returned units go back into stock only after they have physically come back; a refund and a returned item are separate events.
Money is stored as integer cents. Cost allocation preserves the full purchase amount, including the last few cents that ordinary rounding can lose.
Keep an eye on shipping
The shipping view brings together shipments awaiting delivery, missing tracking, and overdue estimates. Investigation records hold notes, claim references, status, and amounts actually recovered. Carrier comparisons use recorded shipment and delivery dates; an overdue estimate is a reason to investigate, not proof that a package is lost.
What the numbers mean
This is an inventory contribution-profit tool, not a complete business ledger. Labor, income tax, overhead, and sales outside the eBay feed are not automatically included. Purchases are entered manually, and sales need matching. Partial refunds across multi-item orders follow the allocation weights, so they are not automatically attributed to the exact returned item.
The point is to make the records and their limits visible, so I can make a decision from what is actually there.
Next build: the Telegram lister →