Working out real profit on Binance P2P spreads
If you buy USDT at 0.8645 EUR and sell at 0.8785 EUR, the spread is 0.014 EUR per USDT. Your profit is something else, because you don't buy and sell the same coins at the same moment.
The problem with averages
Suppose you bought 1,000 USDT last week at 0.8620, and another 1,000 today at 0.8660. Now you sell 1,000 at 0.8780. Did you make 0.016 per unit or 0.012? A simple average says 0.014, but that treats today's coins as if they had already been sold.
First in, first out
FIFO answers the question the way inventory normally works: the coins you bought first are the ones you sell first.
In the example, the 1,000 you sell are last week's coins at 0.8620:
- proceeds: 1,000 × 0.8780 = 878.00 EUR
- cost: 1,000 × 0.8620 = 862.00 EUR
- profit: 16.00 EUR (1.86%)
Today's 1,000 at 0.8660 stay in inventory and set the cost for the next sale.
When a sale is larger than the oldest batch, it uses that batch up and continues into the next one. Every sale gets an exact cost, even when prices move between your buys.
Fees
Binance charges P2P fees in the asset, not in fiat. A sell order with a fee releases a little more crypto than the buyer receives, and a buy order with a fee delivers a little less than you paid for. Those units are a real cost and belong in the calculation, otherwise your profit looks slightly better than it is.
Things that distort the number
- Coins from outside P2P. If you deposited USDT you bought elsewhere, P2P history doesn't know what it cost. A good tracker says so, rather than counting that part as pure profit.
- Transfers between wallets aren't trades and shouldn't count.
- Partial history. If your order history starts after you bought the coins, the first sales have no known cost.
Why it matters for pricing
Once you know the real average cost of the coins you are holding, you can set a floor that guarantees each sale makes money: cost × (1 + margin). As your inventory changes, the floor should change with it. See undercutting without a price war.
In P2P Trade Bot
The bot reads your completed P2P orders, matches them first in, first out with fees included, and shows profit for the last 24 hours, 7 days and 30 days, plus a CSV export. It can send a Telegram message for each sale, and it can use the average cost of your current inventory as the floor for a sell ad.