User guide

Version 2.0.0

How it works

You create your buy/sell ads on Binance P2P as usual. The bot manages their price: every few seconds it reads the live order book your ad competes in, picks the ad it should beat (depending on your strategy), and sets your price exactly one tick better, never past the limits you set. It never creates or deletes ads, never changes amounts, payment methods or terms, and never touches orders.

"Better" depends on the ad type:

Your ad Customers see Better price =
SELL (you sell crypto) cheapest first lower
BUY (you buy crypto) highest first higher

The bot only moves your price when it is noticeably off (see Re-price tolerance), so it doesn't spam Binance with tiny edits.

The control panel

The panel opens when you start the bot (Server edition: at your HTTPS address).

  • Dashboard: every ad with an on/off switch, its strategy, your current price, the target price and what the bot did last. Top bar: engine state, Binance login state, Simulation and Pause buttons.
  • Ad settings (click an ad): all settings for that ad and a Live preview: the current order book and exactly where the bot would put your price right now. Nothing is posted from the preview.
  • Profit: realized profit for 24 h / 7 d / 30 d / all time, recent sales, wallet, CSV export.
  • Logs: what the bot is doing, live. Download to send to support.
  • Settings: Telegram, update speed, Binance login, re-sync ads.
  • Help: a short version of this guide.

Setting up an ad

  1. Create the ad on Binance P2P (in the Binance app or website) and make sure it is online.
  2. In the bot, press Sync ads from Binance (this also happens automatically after every login). New ads appear switched off.
  3. Open the ad and choose a strategy (the default is hold position 1).
  4. Set a protective limit: Minimum price for a SELL ad, Maximum price for a BUY ad (or a Cost basis + Margin). Without one, the bot follows the market wherever it goes.
  5. Check the Live preview.
  6. Switch the ad on. With Simulation on you'll see what the bot would do in the dashboard and log, without any real change. Turn Simulation off when you're happy.

Strategies

Hold a position (default). Stay at rank N in the order book: 1 = best price on the page. Rank 2 or 3 keeps you on the first screen while leaving more margin than fighting for first place.

Follow a rival. Enter an advertiser's nickname and the bot always prices one tick ahead of them, wherever they move. If they have several ads in the market, choose whether to follow their lowest or highest priced ad. When the rival is offline, the bot leaves your price alone. Type off to go back to position mode.

Size-aware positioning. A modifier for position mode. The bot only competes with advertisers holding more inventory than your ad; smaller ads are ignored because they can't fill large orders, so those customers end up with you anyway. You keep more margin, and the bot becomes more aggressive automatically as your ad sells down. When you are the biggest ad, it falls back to your target position.

Every setting explained

Strategy

Setting What it does
Target position Rank to hold (1 = best). Used when you don't follow a rival.
Follow a rival Nickname to beat instead of holding a position. off clears it.
Which rival ad lowest or highest of the rival's ads in this market.
Size-aware positioning See Strategies.
Price tick The smallest price step for this market, e.g. 0.01. You beat the reference ad by exactly one tick.
Re-price tolerance The price is only changed when it is at least half this amount away from the ideal price. 0 = follow exactly.

Price limits

Setting What it does
Minimum price SELL ads never go below it. Ignored for BUY ads.
Maximum price BUY ads never go above it. Ignored for SELL ads.
Cost basis SELL: what the crypto cost you. BUY: what you expect to resell at. With a margin it creates a floor (SELL) or ceiling (BUY). auto (SELL only) uses the average cost of your current inventory from the profit tracker.
Margin % SELL floor = cost × (1 + margin%). BUY ceiling = resale price × (1 − margin%).

When both a manual limit and a cost limit are set, the stricter one wins. When the market goes past your limit, your ad stays listed at the limit instead of disappearing.

Market filters

Setting What it does
Order size to compete at The fiat amount used to search the order book. Binance then only shows ads that accept an order of that size, so you compete in your own size segment. auto uses your ad's remaining size and follows it as the ad sells. 0 = no filter.
Min order limit Ignore competitor ads whose limits end below this amount.
Max order limit Ignore competitor ads whose minimum order is above this amount (very large "whale" ads).
Match my payment methods Only compete with ads that accept at least one payment method your ad accepts.
Outlier filter % Ignore ads priced more than this percentage away from the market median, so a single bait ad can't pull your price.
Min completion rate % Ignore advertisers with a lower 30-day completion rate.
Min 30-day orders Ignore advertisers with fewer completed orders in the last 30 days.
Ignored advertisers Nicknames the bot never competes with, comma-separated.

Your own ads are always excluded from the order book. Advertisers that haven't been active recently are ignored too (see Global settings).

Global settings

Setting Default Meaning
Update interval 5 s Time between cycles. 5–10 s is a good range; lower means more requests to Binance.
Ignore advertisers idle for more than 20 min Ads from advertisers who haven't been online recently aren't real competition.
Order book depth 20 How many competing ads are read per cycle (up to 50). Needed for target positions deeper than 20.
Your Binance nickname none Optional. Your ads are recognised by their ad number anyway.
Sale alerts on A Telegram message for every completed sale.

Profit tracking

After the first login the bot imports your completed P2P orders (silently) and from then on checks for new ones every two minutes.

  • Profit is realized profit using FIFO: every sale is matched with your oldest purchases of the same coin in the same currency.
  • Binance P2P fees, when you pay them, are included in the cost.
  • Binance only returns part of your order history (about six months). Sales of coins you bought before that are counted only for the part with a known cost, and the alert says so.
  • Purchases outside P2P (spot, Convert, deposits) are not visible to the tracker. The wallet figure is read live from your Binance Funding wallet.
  • Export CSV gives you every realized sale for your own records or accountant.

Telegram remote control

Optional, but recommended: alerts reach you anywhere and you can control the bot from your phone. Setup is in SETUP.md (two minutes). Only your Telegram user ID can control the bot; messages from anyone else are ignored.

Command
/menu main menu with buttons
/status engine, login and every ad at a glance
/pairs your ads; tap one to see and change every setting
/profit profit report and wallet
/export profit history as a CSV file
/logs the recent log as a file
/login log in to Binance
/pause, /resume stop / resume all price changes
/sim simulation mode on/off
/cancel cancel the value you are typing
/help command list

To change a setting: /pairs → tap the ad → tap the setting → send the new value.

Alerts you can receive: every sale with its profit, "log in to Binance" when the session ends, an ad's balance dropping below Binance's 100-unit minimum, and newly found ads.

Logging in to Binance

The bot works through your normal Binance web login. There are no API keys to create.

  • Desktop editions: a Chrome window opens on your computer. Log in as usual (password, 2FA, captcha). The window closes by itself once the bot has your session.
  • Server edition: the login window runs on the server. Press Log in in the panel or in Telegram and open the link; it shows the server's browser in your own browser.

Your password is never stored. The bot keeps the browser profile, so after a restart it usually logs in by itself. When Binance ends the session (typically after days or weeks, or if you log out everywhere), the bot pauses price changes and asks you to log in again.

Safety features

  • Floors and ceilings: never sells below / buys above your limit; stays listed at the limit.
  • Simulation mode: full decision-making without posting anything.
  • Pause: stops all changes instantly; ads keep their last price.
  • Own-ad protection: your ads are never treated as competitors, so the bot never undercuts itself.
  • Low balance: Binance refuses price changes when an ad has fewer than 100 units left. The bot shows the ad as Parked, tells you once an hour at most, and continues by itself when you top the ad up.
  • Session loss: no requests are made with an expired session; you get one alert.
  • One copy per folder: starting the bot twice from the same folder is blocked.

Your data

Everything the bot stores is in the data folder next to it:

File Contents
settings.json global settings incl. Telegram token
ads.json per-ad settings
session/ your Binance web session. Treat it like a password.
chrome-profile/ the browser profile used for login. Treat it like a password.
profit_state.json profit history
logs/bot.log log (rotated automatically, max ~12 MB)

Backup: copy the data folder. Move to another computer: install the bot there and copy data into its folder. Never send session/ or chrome-profile/ to anyone, including support; logs are enough.

FAQ and troubleshooting

The ad is enabled but the price doesn't change. Look at the status on the dashboard or open the ad's Live preview. Common reasons: Simulation or Pause is on; the price is already right (On target); your floor/ceiling is limiting it; the filters exclude every competitor (No competing ads match your filters); the target position is deeper than the ads found (raise Order book depth or lower the position).

"Parked". The ad has fewer than 100 units left; Binance blocks price changes. Top it up.

"Ad not found on your Binance account". The ad was deleted or closed on Binance. Create it again and press Sync ads; switch the old entry off and use Remove from list on its settings page.

The login window doesn't open. Make sure Google Chrome is installed (the bot can also download its own copy). Run the installer again to repeat the system check. Close other copies of the bot.

Telegram test message fails. Check the token (from @BotFather) and your numeric user ID (from @userinfobot), and press Start in your bot's chat, because bots cannot message you first.

"Already running from this folder". Another copy is open. Close it (or, if it crashed, wait a few seconds and start again).

The panel says "The bot is not responding". The bot window/terminal was closed. Start the bot again.

How fast should the update interval be? 5–10 seconds. Faster rarely wins more trades and increases the chance of Binance rate limits.