SM / SPENCER MADRIE← All builds
Rust desktop · Build notes

eBay Tracker: following the money behind a sale

A sale is one number. Understanding the purchase, costs, and shipment behind it takes a different kind of tool.

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 →