P2P Trading
Escrowed peer-to-peer trading for Bicrypto — makers post buy and sell offers, takers trade against them, the platform holds the crypto in escrow until payment is confirmed, and admins resolve what goes wrong.
P2P Trading turns your Bicrypto install into a peer-to-peer marketplace. A maker posts an offer — "I will sell 500 USDT at 1.02 EUR, bank transfer only, 30 minutes to pay". A taker opens a trade against it. The platform locks the seller's crypto, the buyer pays them outside the platform by whatever method the offer names, the seller confirms receipt, and the escrow is released to the buyer.
The platform never touches the fiat leg. It holds the crypto and it arbitrates. That is the entire product, and everything on these pages follows from it.
What this product requires
It requires a working Bicrypto install — the same database, the same wallets, the same user accounts, the same Redis. There is no separate P2P deployment.
| Requirement | Why |
|---|---|
| Bicrypto core | Users, wallets, KYC, notifications and the settings store all come from core. P2P adds routes and tables to the same tree. |
| Redis, reachable | Trade initiation, release and cancellation take a distributed lock. If Redis is unreachable those endpoints answer 503 rather than risk a double payout. |
| The cron process running | Payment windows, offer expiry, the 24-hour stale-payment safety net and reputation scores are all cron work. Without CRON_MODE=only running, a trade that runs out of time simply sits there holding the seller's funds. |
A valid licence for p2p |
Every route under /api/p2p and /api/admin/p2p is behind the extension licence gate. |
| Ecosystem — only for ECO offers | An offer's walletType may be FIAT, SPOT or ECO. The first two work on core alone. ECO requires the Ecosystem addon; without it the currency check fails and the offer cannot be published. |
Nothing else. Futures, Staking, ICO and the rest are unrelated. The MLM & Affiliate addon, if installed, pays referral rewards on completed P2P trades — but P2P works fine without it.
What it does
Offers. A maker publishes a BUY or SELL offer in a currency, at a fixed price or a percentage margin off the market, with an amount range, a payment window, one or more payment methods, written terms, and optional requirements on who may take it (completed trades, success rate, account age, verified email, prior counterparty, KYC).
Escrow. A SELL offer locks its entire advertised total out of the maker's wallet the moment it is published. A BUY offer locks nothing until someone takes it, at which point the taker is the seller and their funds are held. Either way, the crypto is out of the seller's spendable balance before the buyer is asked to send money.
Trades. PENDING → buyer pays and confirms → PAYMENT_SENT → seller
releases → COMPLETED. A private chat with image attachments runs alongside,
over a WebSocket, and every event is appended to the trade timeline.
Disputes. Either party can dispute a trade whose payment has been declared but not released. The escrow freezes and an admin decides where it goes: buyer, seller, or a split.
Reputation. Completed trades, completion rate, response speed and three review dimensions (communication, speed, trust) feed the trader cards on the market board.
Moderation. Offers can be held for approval, flagged, paused, rejected or disabled from the admin panel; trades can be cancelled or force-resolved; every admin action is written to an activity log.
What it deliberately does not do
Being clear about this now saves a support ticket later.
- It does not move fiat. There is no bank integration, no payment confirmation from a provider, nothing that verifies the buyer actually paid. The seller's judgement is the only confirmation, and a dispute is the only appeal.
- It does not enforce country restrictions. An offer can state restricted countries, and the maker's UI says so, but nothing blocks a taker on that basis — the platform has no trustworthy per-user country to check against. See Creating offers.
- It does not reopen a completed trade.
COMPLETEDis terminal. Once the escrow is released it cannot re-enter the dispute money path, because a second payout would be drawn from whatever else the seller happened to be holding — in practice, another offer's escrow. Post-completion complaints are a support matter, not a P2P one. - The three "kill switch" settings only persuade the browser.
p2pEnabled,p2pMaintenanceModeandp2pAllowGuestBrowsinghide UI. The API keeps answering. See Settings.
Where to start
Activate the licence, switch the extension on, confirm the cron job is registered, and set the four settings that decide whether the marketplace is usable on day one.
What a maker fills in, which fields are in which currency, what escrow is taken, and every rule that will reject a publish.
Every status, who may move it, when escrow moves, what expires and when.
Who can file, what the eight reasons mean, and the two windows that decide whether a dispute is even possible.
The four outcomes, exactly what each does to the money, and the guards that stop an admin ruling twice.
Every field on the P2P settings screen, which ones are enforced server-side, and which four are stored but read by nothing.
Two reference pages sit behind all of them: API and data reference lists every route, permission, setting key and table, and Troubleshooting covers stuck escrow, offers that will not publish, and trades that never expire.
Admin navigation
Once the extension is enabled, P2P appears in the admin panel with its own section:
| Screen | Path | Permission |
|---|---|---|
| Overview | /admin/p2p |
access.p2p |
| Trades | /admin/p2p/trade |
view.p2p.trade |
| Offers | /admin/p2p/offer |
view.p2p.offer |
| Disputes | /admin/p2p/dispute |
view.p2p.dispute |
| Activity Log | /admin/p2p/activity |
view.p2p.activity |
| Payment Methods | /admin/p2p/payment-method |
view.p2p.payment_method |
| Settings | /admin/p2p/settings |
core settings permission |
Customers see four destinations: /p2p (overview), /p2p/market (find someone
to trade with), /p2p/trades (their running trades, history and own offers) and
/p2p/learn.