How escrow protection works

Escrow is the trust layer of P2P. We explain when crypto is locked, who can access it, and how it protects both sides from being cheated.

Updated: September 5, 2026

Escrow in one sentence

Escrow is a conditional-deposit service: between the moment a trade opens and the moment it ends, the crypto is physically held by the platform and unavailable to the seller. This creates a temporary "neutral zone" where neither side can run with the money or take back what they've already delivered.

In a traditional exchange, the exchange itself plays the escrow role. On a P2P platform, escrow is the platform's code that locks the balance atomically. No human flips switches by hand.

Who is the seller, who is the buyer

The terminology can confuse: every ad has a creator (ad creator, trader) and a client who comes in through the ad. Either party can be the seller or the buyer:

  • SELL ad (the trader sells): ad creator = seller, client = buyer.
  • BUY ad (the trader buys): ad creator = buyer, client = seller.

In both cases the seller is whoever gives crypto, and the buyer is whoever gives fiat. Escrow works the same: the seller's crypto is locked.

What happens at trade open

When the buyer clicks Open trade, the platform runs a single atomic database transaction (Prisma Serializable isolation — Postgres's strictest level, no races) which:

  1. Creates the trade record in Open state.
  2. Debits the seller's "available" balance by crypto_amount + commission.
  3. Credits the seller's "locked" balance by crypto_amount + commission.
  4. Posts a system message in the chat with payment details.

commission is calculated from the crypto amount at the platform commission rate, rounded up to 2 decimals for USDT or 8 for BTC. Only the ad creator (trader) pays it, but it's pre-locked in escrow to avoid races at release.

If the seller doesn't have enough "available" to lock — opening the trade is refused with "Amount exceeds seller's available balance". No partial locks — either the whole amount goes into escrow, or the trade isn't created.

What "locked" balance means

In the wallet, each currency shows two numbers:

  • Available — what you can spend (withdraw, open new trades).
  • Locked — what's currently in escrow across open trades.

Locked funds:

  • can't be withdrawn (the form will show a smaller available);
  • can't be used in new trades (new trades refuse if "available" is insufficient);
  • are visible in the wallet as part of total balance, marked "in trades".

The lock lasts until the trade closes one of four ways: receipt confirmed, cancelled, timer expired, or dispute resolved.

What happens at trade end

Successful release (seller clicked "Confirm receipt")

Inside one Serializable transaction:

  1. Seller's "locked" balance is debited by crypto_amount + commission.
  2. Buyer's "available" balance is credited by crypto_amount.
  3. commission is distributed to the platform. If the ad creator has a referrer, part of the commission is credited to them — see Referral program.
  4. Trade moves to Completed state.

After this, buyer's balance grows by exactly crypto_amount, seller's drops by crypto_amount + commission.

Cancel before payment or timer expiry

  1. Seller's "locked" balance is debited by crypto_amount + commission.
  2. Seller's "available" balance is credited by crypto_amount + commission.
  3. Trade moves to Cancelled state.

So the seller gets back exactly what was locked. No losses — there's no fee on unsuccessful trades.

Dispute

If a trade goes to Dispute state, escrow stays locked until a moderator rules. Three rulings:

  • Buyer wins — crypto goes to the buyer (same movement as success), commission charged.
  • Seller wins — escrow is released back to the seller.
  • Cancelled — escrow is released back to the seller.

In the last two, no commission is charged.

What escrow protects against — and what it doesn't

It protects

  • The buyer — from a seller running off with crypto. The crypto is already in escrow. The seller can't move it.
  • The seller — from a buyer "receiving crypto and not paying". For crypto to leave, the seller has to click Confirm receipt. Without that, crypto stays in escrow, and a moderator rules in a dispute.
  • Both sides — from technical glitches. The atomic Serializable transaction rules out races (a seller can't simultaneously withdraw the crypto and open a trade with it).

It doesn't protect

Escrow is about crypto on our side. It does NOT protect against:

  • Card chargeback. If a buyer paid with a stolen card, the real owner can reverse it via the bank days later. The fiat leaves your account; the crypto is already gone. Defence — accept fiat only from the counterparty's listed name.
  • Fake screenshots. If you confirmed receipt by screenshot without checking your account, that's your decision. Escrow releases crypto and won't return it.
  • Off-platform detail swaps. If a buyer convinced you in Telegram to pay "another seller on their behalf" — that's not a platform trade, escrow isn't involved.
  • Social engineering. No code defends against voluntarily handing money to a scammer off-platform.

Why "Serializable" so strictly

BitMoment's financial transactions run at Serializable isolation — Postgres's strictest. In practice this means:

  • two parallel requests can't simultaneously debit the same amount from one balance;
  • on race, one request errors and is retried;
  • "opened two 100-USDT trades on a 100-USDT balance" cannot happen.

This is slower than less-strict levels — and it's the right place for money.

Where you can see this

  • Open trade — state Open or Paid, crypto in the seller's "locked". Visible on the trade page and in Wallet.
  • Completed trade — state Completed, crypto on buyer's "available", debited from seller. History — Wallet → Operations history.
  • Dispute — state Dispute, crypto locked until moderator rules.
  • All fund movementsWallet → Operations history and /dashboard/transactions with filters.
Was this article helpful?

Still have questions?

Message us on Telegram — we answer 24/7.

Message on Telegram
How escrow protection works — BitMoment