Reading P2P prices without overpaying
The advertised rate on a peer-to-peer listing is not the rate you are getting until you have compared it against the spot mid and turned the gap into a percentage. This is that method, plus how to read the rest of the listing and which parts of it actually predict a trade that goes through cleanly.
Do it in this order: take the quote, compare it to the spot mid for the same pair, and turn the gap into a percentage of the mid. How big is it? The bands below are a working heuristic for deciding how hard to look, not published rules, and a normal premium differs by currency, rail and time of day.
- Under about 1% — an ordinary quote for most liquid currency and rail combinations. It is still around ten times an entry-level spot trading fee of roughly a tenth of a per cent, so it is a cost rather than nothing; check the release time and the order limits and take it.
- Between about 1% and 3% — ten to thirty-five times a trading fee, and double that if the money comes back out at a symmetric discount later. Usually the payment rail, or your own size climbing a thin ladder. Filter by amount and rail first, then read the list again.
- Above that — at 3.50% you are paying thirty-five trading fees in one go and a two-way quoted gap of 7.00% of the mid-price. Do not commit until you can say what is different about this listing, or about the market for your rail today.
A peer-to-peer marketplace shows you prices and no reference point. Every quote looks reasonable because every quote is being compared only against the other quotes on the screen. You have to bring your own reference, and it is one tab away.
The fee line reads zero; the cost is in the price
You are paying the gap between the merchant's quote and the real market price of the asset, and on most platforms that gap is the entire cost, because the trading fee on a P2P order is frequently zero for the taking side.
This is the inversion that catches people who came from spot trading. On an order book you pay a visible fee and a small spread. On P2P the fee line often reads zero, which reads as free, and the actual cost has been moved into the price itself. Nothing below depends on where you are; the method is the same everywhere, and local rules are deliberately left out because those genuinely do differ and are not mine to summarise.
Nobody is hiding it. A merchant is running a business: they hold inventory, they take on the risk that a payment gets reversed after they have released crypto, they answer messages at inconvenient hours, and they price all of that into the number they advertise. The premium is their revenue. That is a fair arrangement and often a useful service.
It is only a problem if you do not measure it. A merchant charging a two percent premium and a merchant charging a quarter of a percent look identical in the interface: both show a fee of zero, both show a price, and the two prices differ by an amount that means nothing until you have something to divide it by.
So the question to hold in your head is not "what is the fee". It is "how far is this from the real price, in percent".
How do I tell whether a P2P price is good?
Take the P2P quote, compare it to the spot mid price for the same pair, and express the difference as a percentage of the mid; that percentage is your real cost, and it is usually several times larger than any trading fee you would have paid.
The mid price is the midpoint between the best bid and the best ask on a normal order book, which for a liquid pair is a tight and honest number. Binance Academy's explainer on the bid-ask spread covers why the midpoint is the sensible reference rather than either side. On a major stablecoin pair the two sides are usually close enough that any reasonable reading of the market price will do.
The calculation is one line:
Premium = (P2P price − spot mid) ÷ spot mid × 100
Buying, you want that number small and positive. Selling, you are looking at it from the other side and want it small and negative. Either way the sign matters less than the magnitude.
The table below fixes a spot mid of 100.00 units of local currency per unit of the asset, which keeps the arithmetic readable and makes the premium column identical to the price difference. The last column is the one worth staring at: it compares the premium against a 0.100% trading fee, which is the standard spot rate for an account with no volume history, checked against Binance's public fee page on 2026-08-30.
| P2P quote | Premium over mid | Extra paid per 1,000 at the mid-price | Two-way quoted gap (2 × premium, vs mid) | Multiple of a 0.100% trading fee |
|---|---|---|---|---|
| 100.20 | 0.20% | 2.00 | 0.40% | 2× |
| 100.50 | 0.50% | 5.00 | 1.00% | 5× |
| 101.00 | 1.00% | 10.00 | 2.00% | 10× |
| 102.00 | 2.00% | 20.00 | 4.00% | 20× |
| 103.50 | 3.50% | 35.00 | 7.00% | 35× |
| 105.00 | 5.00% | 50.00 | 10.00% | 50× |
Two things fall out of that table immediately.
The first is scale. A one percent premium is ten times the standard trading fee, and it is charged on the whole amount in one go rather than on each side of a trade. People who will change exchanges to save a fifth of a basis point on maker fees will accept a two percent P2P premium without checking, because one of those numbers is displayed and the other is not.
The second is the round trip. With a buy premium p and an equal sell discount, the quoted gap is 2 × p, measured against the mid-price. The table uses that basis. The loss as a share of the cash actually spent is 2 × p ÷ (1 + p), with p written as a decimal. At 2% each way, that is 0.04 ÷ 1.02 = 3.92%, before any separate charges and assuming the mid-price stays unchanged. At 5%, it is 9.52%. Repeating the journey repeats that cost.
Doing this once teaches you the local baseline, which is the real prize. There is no universal figure for a normal premium, because it is set by local supply and demand for the rails on offer and moves with them. What is portable is the method: work the premium out yourself, watch it for a few days on the pairs and rails you actually use, and build your own sense of what a quiet market looks like. Once you have that baseline an unusual number announces itself. Without it every quote looks like the market rate, because the only thing you can compare it to is another quote from the same list.
Anyone who tells you the normal premium in your market is a fixed number is telling you what it was on the day they looked.
Which parts of a merchant listing actually matter?
Average release time and recent order volume predict a smooth trade far better than the completion rate, which is compressed so close to 100% across active merchants that it barely separates anyone.
A listing shows a handful of numbers next to the merchant's name. They are not equally informative, and the one printed largest is often the least useful.
| Field | What it measures | How much it predicts |
|---|---|---|
| Completion rate | Share of started orders that finished | Weak. Active merchants cluster near the top of the range, so the number rarely discriminates. A figure that is visibly low is meaningful; a figure in the high nineties is close to uninformative. |
| Total orders | Lifetime volume of completed trades | Moderate. A large number tells you the account is established, not that anyone is at the keyboard today. Prefer the recent window where the platform shows one. |
| Average release time | How long the merchant takes to release escrow after payment is marked | Strong. This is the field that separates a trade finished in three minutes from one that sits for forty. It is a direct measurement of responsiveness. |
| Average pay time | How quickly their counterparties pay | Moderate, and more relevant when you are selling than buying. |
| Order limits | Minimum and maximum per order | Decisive but not about quality. It determines whether the offer applies to you at all. |
| Available quantity | How much is left on this advertisement | Practical. A near-exhausted advertisement cannot fill the order you had in mind, whatever the price says. |
| Payment methods | Which rails the merchant will accept | Decisive, and the most common reason a good price turns out to be no price. |
The completion rate deserves one more sentence, because it is the field people lean on hardest. Platforms do not publish what the distribution of these figures looks like, so read the following as reasoning about what the field measures rather than as a measured threshold. A merchant sitting at 99% is a weak signal on its own. The figure counts orders that ended rather than orders that went smoothly: one that closed after a forty-minute wait and three chasing messages scores exactly the same as one that closed in ninety seconds. Average release time and steady recent order volume tell you more, because they measure whether someone is at the keyboard now rather than whether they were reliable last year.
If you want one heuristic: sort by price, then discard every listing whose average release time is slow or whose limits do not bracket your amount, and take the best price remaining. That is a thirty-second filter and it removes most of the ways a P2P order turns into an afternoon.
The other thing worth doing, and it costs nothing, is reading the merchant's terms before opening the order rather than after. Some list conditions that materially change the trade: a required note on the transfer, a refusal of certain rails, a demand for a particular reference format. Those conditions are enforceable in an appeal. Finding them after you have already sent money is the wrong order of operations, and I have done it.
Why can I not actually buy at the best price shown?
Because the top of the list is sorted by price alone, and the cheapest advertisement is frequently unavailable to you due to its order limits, its remaining quantity, or the payment methods it accepts.
Sorting by price produces a list of offers. It does not produce a list of offers open to you, and the difference between those two lists is the everyday frustration of using P2P.
The usual obstacles, roughly in order of how often they bite:
- The minimum is above your amount. The keenest prices are often posted by merchants working in size, with minimums set well above a retail order. The price is real; it is just not for your ticket.
- The maximum is below your amount. The mirror case, and the one that quietly forces you down the list, because filling a large order means either splitting it across several merchants or accepting a worse rate from one who can take it whole.
- The remaining quantity is nearly gone. An advertisement that has been picked over cannot fill what it appears to offer.
- The payment rail does not match. The one that catches most people. A price you cannot pay for is not a price.
- Eligibility conditions. Some advertisements are restricted to counterparties above a certain history or verification level, and are not offered to newer accounts at all.
None of this is manipulation. It is what happens when a two-sided market with heterogeneous payment methods is flattened into a single sorted column. But it does mean the number at the top of the screen is not the market rate for you, and benchmarking against it will make every trade you can actually do look bad.
Sort by price and you are sorting a list of offers, most of which are not offers to you.
The fix is to filter first and sort second. Set your amount and your payment method in the filters before you look at any prices at all. Those controls sit in a row above the list and fold into a single button on a narrow screen, which is a large part of why people scroll past them and start reading prices that were never available. The list that remains is the market you are actually trading in, and the best price on it is the number worth measuring against spot.
A large order climbs a ladder of advertisements
P2P depth is thin and fragmented, so a large order climbs a ladder of successively worse advertisements in much the same way a large market order walks an order book.
The mechanism is familiar even if the venue is not. Each advertisement is a limited quantity at a fixed price, like a level in a book. Small orders fill inside the best one. Larger orders exhaust it and reach into the next.
The difference from an order book is that on P2P you cannot cross several levels in a single action. Each advertisement is a separate order, with a separate counterparty, a separate payment, a separate release wait and a separate chance of something going wrong. So a large purchase becomes several trades, at ascending prices, each with its own friction. The effective rate is the quantity-weighted average of all of them, and it is always worse than the number you first saw.
Worked through: suppose the best available advertisement for your rail offers 400 units at a 0.5% premium, the next 600 at 1.1%, and the next 1,000 at 1.8%. Buying 400 costs you 0.5%. Buying 1,000 costs (400 × 0.5% + 600 × 1.1%) ÷ 1,000 = 0.86%. Buying 2,000 costs (400 × 0.5% + 600 × 1.1% + 1,000 × 1.8%) ÷ 2,000 = 1.33%. The headline premium nearly tripled and nothing about the market changed. Your size did.
This is the same shape of cost as slippage on a market order, and it responds to the same treatments. Splitting a large purchase across time rather than across advertisements often finds a better average, because fresh inventory arrives at the top of the ladder continuously. Against that, each additional order is another counterparty and another payment, and there is a point where the saved percentage stops being worth the extra hour. Where that point sits depends on the size and on how much your time is worth, which is a judgement rather than a formula.
For my own buying I stopped splitting small amounts across merchants. The arithmetic said I was saving a fraction of a percent; each extra order cost a payment, a wait and a slice of attention, and I was trading real minutes for a saving I could not feel afterwards. Above a certain size the calculation flips. Where that line sits is personal.
Pay from an account in your own name
Any rail that can be reversed after settlement carries risk for the seller, and paying from an account that is not in your own name is the single fastest way to have a trade go wrong for the buyer.
Two separate risks live here and it helps to keep them apart, because they land on different parties.
The seller's risk is reversal. Some payment rails allow a transfer to be pulled back after it has apparently settled, sometimes days later. If a seller releases crypto against a payment that is subsequently reversed, they have lost the asset and the money. This is why merchants price certain rails worse than others, why some refuse them outright, and why the rails that settle irreversibly tend to carry the better quotes. Which rails behave which way, and for how long a reversal window stays open, varies by rail and by where you are. Your payment provider can tell you; a page like this one cannot, and should not pretend to.
The buyer's risk is different and mostly self-inflicted. It is the third-party payment problem.
Pay from an account held in your own verified name, to the account details shown in the order, and nowhere else.
Every large platform requires the name on the paying account to match the verified name on the trading account, and treats a mismatch as a policy violation rather than an inconvenience. Binance sets this out in its P2P user transaction policy. The reason is not bureaucratic: an escrow system that decides disputes on evidence needs the payment trail to identify the same two people as the order does. A payment arriving from a third name breaks that link and makes the order undecidable.
The practical consequences are severe and they fall on the buyer. The crypto typically will not be released, the seller may be instructed to return the funds to the originating account rather than to you, the P2P function on the paying account can be suspended, and if there is a dispute the party who sent the third-party payment is generally the one who carries the loss. Using a partner's account, a business account, or a friend's account because your own is temporarily unavailable is not a shortcut. It is the fastest route to an order that cannot be resolved in your favour.
Check three things against the order screen: the receiving account name matches the counterparty's verified name, the amount matches to the last decimal, and any reference the merchant asked for is included. Then check one thing about yourself, which is that the account you are paying from is in your own name. Those four checks take under a minute and prevent most of what goes wrong.
One more rule, and it is absolute. Never mark an order as paid before the money has actually left. Marking paid releases nothing to you, but it starts the seller's clock and, if you then cannot pay, you have created a dispute out of nothing.
How does an appeal work and what evidence does it need?
An appeal moves a disputed order to the platform for a decision, and it is decided almost entirely on the payment evidence you can produce, so what matters is having a clean record from your payment provider rather than a persuasive account of events.
The shape of the process is consistent across venues. You open the disputed order, choose the appeal option, select a reason, describe what happened, and attach evidence. The counterparty gets a short window to respond, then the case goes to a support queue and is decided there. Binance documents its own version, including timings, in its guide on appealing a P2P order, with a separate page setting out how the resulting cases are weighed.
What decides the case is documentation, and specifically documentation from the payment system rather than from the chat window.
- A transaction record from your bank or payment application showing the amount, the timestamp, the destination account details and the sending account name. This is the core of it and everything else is supporting.
- The platform order number, so the payment can be tied to the specific trade.
- Any reference or note the merchant required, visible in the payment record itself.
- Screenshots of the order chat, which are useful for establishing what was agreed and useless as proof that money moved.
That last distinction is the one people get wrong. A screenshot of a counterparty saying "yes I received it" is not evidence of payment. A statement line from the payment provider is. Support teams are deciding hundreds of these and they are looking for the record that a third party can verify, not for the most compelling narrative.
Two habits make an appeal much easier if you ever need one. Take the payment screenshot at the moment you pay, not later, because some applications make older transactions harder to display cleanly. And keep everything relevant inside the platform chat, because messages exchanged in another application are outside what the platform can see and are worth close to nothing in a dispute.
Appeals resolve on a scale of hours to a couple of days rather than minutes. That is uncomfortable when your money is on one side and the crypto is on the other, and it is precisely why the checks in the previous section are worth the minute they cost.
An unusually good rate is a warning, not a bargain
A merchant with genuinely better pricing has no need to advertise it far below the rest of the market, so a quote well outside the local range is usually explained by something other than generosity.
Ordinary competitive pricing clusters. Merchants can see each other's advertisements, they price against each other, and the result is a band that moves together. A quote sitting well outside that band is not a merchant who has discovered a cheaper source of inventory. It is a listing that is different in some other way, and the difference is worth identifying before you commit.
The benign explanations exist and are worth checking first. Someone may be clearing inventory quickly, or running a promotional rate on a new account to build a trading history, or posting a small quantity they want gone. Those are real and they are usually visible: small remaining quantity, tight limits, a thin order history that is thin rather than suspicious.
The non-benign explanations tend to announce themselves as soon as the order opens.
- Immediate pressure to move the conversation to another messaging application, where nothing said is visible to the platform.
- A request that you cancel the order and settle directly, which removes the escrow entirely. This one is not a negotiation; it is the whole scheme.
- Payment details that do not match the counterparty's verified name, sometimes with a story about a family member or a business account attached.
- A request that you release the crypto before confirming receipt, when you are selling. There is no legitimate version of this.
- Stalling that runs the payment window down, followed by cancellation after you have already sent money.
- An advertisement whose written terms contradict the platform's own rules, which is a signal about how the counterparty intends to behave if something goes wrong.
One of those deserves its own sentence, because it is the one that costs the most money. Do not cancel an order you have already paid for, whatever reason is offered. Cancelling releases the escrow back to the seller and removes the mechanism that was protecting you. The correct route is the appeal, which exists precisely so that a disputed order is decided on evidence rather than by whoever is more persuasive in the chat.
The escrow is the only thing standing between you and a stranger with your money. Every one of the patterns above works by getting you to step outside it voluntarily, because inside it the platform can see what happened and rule on it. Any instruction whose effect is to take the trade off the platform should end the trade, regardless of how reasonable the explanation sounds.
The correct posture is unexciting. The best obtainable price from a merchant with a fast release time and limits that fit your order is a good outcome, and it will normally sit within a modest band of the rest of the market. A rate far outside that band is not an opportunity you spotted before anyone else. On a screen showing hundreds of competing offers refreshed continuously, the assumption that you have found free money is the assumption most likely to be wrong.