On this site you will find information about @lnp2pBot. It is an application to buy and sell bitcoin on Lightning Network with your local currency, without giving your personal data.

Quick Start Guide

  1. Download a Lightning Network compatible wallet (Recomended wallets).

  2. Get a Telegram username.

  3. Start @lnp2pBot

    Starting the bot

  4. Find offers in the channel @lnp2pbot Exchange.

    Looking for offers

  5. Start buying and selling.

  6. Find answers to your questions in the FAQ section.


Here we try to answer frequent questions.

What is @lnp2pBot?

@lnp2pBot is an open source, non-custodial peer-to-peer exchange with no user registration or identity verification, running on top of a Telegram bot. It allows you to buy and sell sats (minimum fractional unit of measurement of Bitcoin) via Lighting Network.

What is Lightning Network?

Lighting Network is a network of payment channels that works as a second layer protocol on the Bitcoin network, taking advantage of the property of writing smart contracts on its blockchain. It is a scalability solution that allows exponentially increasing the number of transactions and their speed by not needing on-chain confirmations, while drastically reducing network fees. Payments become instant and cost almost nothing.

What do I need to use @lnp2pBot?

You only need a Telegram account with the "username" enabled to initialize the bot and interact with it; and a wallet that supports Lighting Network, to start buying and selling. Here we leave some recommended wallets

How do I initialize the bot?

Open the private chat with @lnp2pBot and click "START", or run the /start command.

What are the channels to make exchanges on Telegram?

To create your buy / sell orders, use the chat with @lnp2pBot.

To take buy / sell offers, go to the channel @p2plightning.

Where I can find offers for my local currency?

You can ask it to the bot executing /findcomms command and your local currency code.

This will show you the venezuelan bolivar communities.

/findcomms ves

Do I need to fill out any user registration or identity verification?

NO! Bitcoin was born as a peer-to-peer electronic money system, and we are proud to support that principle. No personal information is required from you, the exchanges are entirely between peers, and @lnp2pbot does not collect or store any personal information of the parties involved.

What type of information do you collect from each user?

For the purposes of the user reputation system, only the number of completed transactions, the total volume traded, the counterparty rating, and the dispute score, if any. Of this information, only the number of transactions and the counterparty rating are public by default. Meanwhile, showing the total volume traded and your username is optional (you choose to show it or not, by default it is not shown).

In case you want to show your username and/or volume traded to accompany your reputation in the offers you publish, you must do it manually through the following commands:

/showusername yes

/showvolume yes

Each command is sent as a direct message to the bot.

How does the user reputation system work?

For every trade you make, you will be asked to rate your counterparty, while your counterparty will rate you.

How do I create a sell order?

The procedure is exactly the same as for the purchase order, substituting the /buy command for /sell

You have to type the details of your order: /sell [premium/discount] without the special characters.

Ex. /sell 100000 50 usd "bank xyz" I sell one hundred thousand sats at fifty dollars I charge by bank xyz Like with the buying orders, if there is any non-compatible variable, the bot will indicate it to you during the order creation process. Upon completion, it will be published on the exchange channel and will remain visible for a period of 23 hours.

How do I find and accept an offer to buy or sell?

In the channel @p2plightning you will find the offers of all the participants, including yours. Just scroll through until you find one that suits your search and hit the "buy satoshis" or "sell satoshis" button.

How do I cancel a posted order?

If the order has not been taken, use the command /cancel in your chat with the bot.

The ID or identification number of your order appears just below the message of acceptance and publication of the same, and it is even indicated to you as an option to cancel it.

If the order has been taken, you must initiate a cooperative cancellation.

Is there a limit (minimum or maximum) on the amounts I can trade?

From the botโ€™s side, there are no limits to the volume of your transaction. However, it will depend on the network's capacity and the channel's liquidity that you can find a maximum limit at a given moment.

How long does it take to finalize a transaction?

It depends on several factors. Being a P2P exchange, the main variable is the taking of your offer by another person. Your post will be available for up to 23 hours and will then be automatically deleted if it is not taken.

Once an offer is accepted, a 15-minute window is opened to pay the lighting bill and for the bot to contact both parties. From here, they have a maximum time of two hours to complete the operation. After those two hours, the order expires and the sats will be returned to the wallet they came from. For this reason users must only use instant fiat money payment methods.

As both participants are online and agree on immediate payment methods, transactions are almost instantaneous.

Fees and commissions

The bot charges a flat rate of 0.6%. It includes the network fee, so there are no additional charges. This commission is paid only by the seller, not the buyer.

What exchange rate does the bot use?

When creating an order without specifying the amount in sats you want to buy/sell, but rather the fiat amount to pay/charge, the bot will calculate at the market rate offered by yadio.io.

In which countries and languages is it available?

Being a P2P exchange on Telegram, it is technically available to everyone who has the app. However, so far the bot can get the market price of 58 currencies with which you can create buy/sell orders using the price market button when create an order with the wizard.

Here we present you the list of currencies:

AEDUnited Arab Emirates Dirham๐Ÿ‡ฆ๐Ÿ‡ช
ARSPeso argentino๐Ÿ‡ฆ๐Ÿ‡ท
AUDAustralian Dollar๐Ÿ‡ฆ๐Ÿ‡บ
AZNAzerbaijani Manat๐Ÿ‡ฆ๐Ÿ‡ฟ
BRLBrazilian Real๐Ÿ‡ง๐Ÿ‡ท
BYNBelarusian Ruble๐Ÿ‡ง๐Ÿ‡พ
CHFSwiss Franc๐Ÿ‡จ๐Ÿ‡ญ
CADCanadian Dollar๐Ÿ‡จ๐Ÿ‡ฆ
CLPPeso chileno๐Ÿ‡จ๐Ÿ‡ฑ
CNYChinese Yuan๐Ÿ‡จ๐Ÿ‡ณ
COPPeso colombiano๐Ÿ‡จ๐Ÿ‡ด
CUPPeso cubano๐Ÿ‡จ๐Ÿ‡บ
CZKCzech Republic Koruna๐Ÿ‡จ๐Ÿ‡ฟ
DKKDanish Krone๐Ÿ‡ฉ๐Ÿ‡ฐ
DOPPeso dominicano๐Ÿ‡ฉ๐Ÿ‡ด
GBPBritish Pound Sterling๐Ÿ‡ฌ๐Ÿ‡ง
GELGeorgian Lari๐Ÿ‡ฌ๐Ÿ‡ช
GHSGhanaian Cedi๐Ÿ‡ฌ๐Ÿ‡ญ
HKDHong Kong Dollar๐Ÿ‡ญ๐Ÿ‡ฐ
HUFHungarian Forint๐Ÿ‡ญ๐Ÿ‡บ
IDRIndonesian Rupiah๐Ÿ‡ฎ๐Ÿ‡ฉ
ILSIsraeli New Sheqel๐Ÿ‡ฎ๐Ÿ‡ฑ
INRIndian Rupee๐Ÿ‡ฎ๐Ÿ‡ณ
JMDJamaican Dollar๐Ÿ‡ฏ๐Ÿ‡ฒ
JPYJapanese Yen๐Ÿ‡ฏ๐Ÿ‡ต
KESKenyan Shilling๐Ÿ‡ฐ๐Ÿ‡ช
KRWSouth Korean Won๐Ÿ‡ฐ๐Ÿ‡ท
KZTKazakhstani Tenge๐Ÿ‡ฐ๐Ÿ‡ฟ
MXNPeso mexicano๐Ÿ‡ฒ๐Ÿ‡ฝ
MYRMalaysian Ringgit๐Ÿ‡ฒ๐Ÿ‡พ
NADNamibian Dollar๐Ÿ‡ณ๐Ÿ‡ฆ
NGNNigerian Naira๐Ÿ‡ณ๐Ÿ‡ฌ
NOKNorwegian Krone๐Ÿ‡ณ๐Ÿ‡ด
NZDNew Zealand Dollar๐Ÿ‡ณ๐Ÿ‡ฟ
PABPanamanian Balboa๐Ÿ‡ต๐Ÿ‡ฆ
PENPeruvian Nuevo Sol๐Ÿ‡ต๐Ÿ‡ช
PHPPhilippine Peso๐Ÿ‡ต๐Ÿ‡ญ
PKRPakistani Rupee๐Ÿ‡ต๐Ÿ‡ฐ
PLNPolish Zloty๐Ÿ‡ต๐Ÿ‡ฑ
PYGParaguayan Guarani๐Ÿ‡ต๐Ÿ‡พ
QARQatari Rial๐Ÿ‡ถ๐Ÿ‡ฆ
RONRomanian Leu๐Ÿ‡ท๐Ÿ‡ด
RUBRussian Ruble๐Ÿ‡ท๐Ÿ‡บ
SARSaudi Riyal๐Ÿ‡ธ๐Ÿ‡ฆ
SEKSwedish Krona๐Ÿ‡ธ๐Ÿ‡ช
SGDSingapore Dollar๐Ÿ‡ธ๐Ÿ‡ฌ
TRYTurkish Lira๐Ÿ‡น๐Ÿ‡ท
TTDTrinidad and Tobago Dollar๐Ÿ‡น๐Ÿ‡น
UAHUkrainian Hryvnia๐Ÿ‡บ๐Ÿ‡ฆ
USDUS Dollar๐Ÿ‡บ๐Ÿ‡ธ
UYUPeso uruguayo๐Ÿ‡บ๐Ÿ‡พ
VNDVietnamese Dong๐Ÿ‡ป๐Ÿ‡ณ
ZARSouth African Rand๐Ÿ‡ฟ๐Ÿ‡ฆ

So far, @lnp2pbot is fully available in English and Spanish. There is a partial translation (in progress) to Portuguese.

To change the wizard language use the /setlang command

If you want to help by translating into your language, you can propose your collaboration. This is a good place to start

Recommended wallets

The following wallets are the ones that have shown better performance when tested with the bot:


@lnp2pbot is not a company, therefore it does not have a technical support department, although there is a community that you can go to in case you need help, remember that the participants in this community do not receive any type of remuneration, if You do not receive an immediate answer, be patient and educated that if someone has the answer at some point they will try to help you.

Contact with developers

If you need to contact the developers use our GitHub, if you have any proposal or want to report a bug go to the issues section and create one.

I am a developer and I want to contribute

Brilliant! Thanks for your interest, in the issues section you will see a list of issues to be resolved, choose one with the tag help wanted and if you have doubts you can ask by making a comment and then if you are sure you want to solve it, comment it, those with the label good first issue are simple issues that often help you get familiar with the code.


Communities were design so that users may interact in small groups, adapted to their tastes and needs.

Communities can be created around a project, a currency, or a country, for example.

Anyone can create a community and interact with the bot from it. Witch leaves creators/administrators with great power in their hands, โ€œa great power comes with a great responsibilityโ€ This means that once users start working in their own communities, they will also have to manage any disputes that may occur.


The model we have chosen to resolve disputes is that of trust. This seems paradoxical for those who work with Bitcoin and advocate of "trustless" systems. The truth is that the goal is to develop systems in which we do not have to trust anyone. But after thinking a lot about dispute resolution systems, we had to accept that you always have to trust someone to some extent.

Benevolent dictator

Having accepted that to resolve a dispute, you have to trust someone, our focus shifted to answering the question: how to make there less incentive to create disputes? Regarding this issue, the community has made several proposals. And the one we are developing (because at the time of writing this text it is not ready yet) is to use the figure of the โ€œbenevolent dictatorโ€. It is about a "dictator" whom the people accept and trust that his decisions are made for the good of the community. Let's say he is a trusted community mediator.

The benevolent dictator is the creator of the community. The benevolent dictator is the one who can add dispute solvers or โ€œsolversโ€. These are publicly known by the community (we refer to your โ€œusernameโ€ in Telegram). The community will be in charge of denouncing if these users are doing their job correctly or not. In a community where the "benevolent dictator" correctly selects the "solvers", everything will work fine; in one where the "dictator" makes mistakes, his subjects will go to another community or create a new one. In this way, we delegate this responsibility to the communities.

How do I create a community?

To create a community, simply type the /community command. After this, the bot will ask you to indicate the following:

  • Community Name: A name to identify your community.
  • Currencies: Fiat currencies that can operate in the community. These must be entered separately from a blank space. For example, for an Uruguayan community, "UYU USD" can be added.
  • Community Group: This is the main group where members of the community meet. Both @lnp2pbot and the person creating the community must be administrators in this group. Users will be able to create orders by sending bot commands in this group.
  • Order book channel or channels: Orders will be published where we indicate to the bot. If we enter a single channel, the purchases and sales will be published in that channel, but if you indicate two channels, the purchases will be published in the first and the sales in the second. Channels are entered separately with a blank space and both the bot and the community creator must be channel admins.
  • Solvers: We must indicate the โ€œusernamesโ€ of the users who will be in charge of resolving the disputes, separated by a blank space.
  • Channel for disputes: In this channel, the bot will publish when a user initiates a dispute. Both the bot and the community creator must be channel administrators.

Modifying a community

To modify any field, we simply execute the /mycomms command and the bot will show you a menu that will help you select the community you want to modify and the specific field.

Creating orders

The operation of the bot remains exactly the same, by default it creates the orders in a global channel. But since we have created a new community we want our order to be published in the channel that we have associated with the community. There are two ways to create an order in the new community.

We enter the community group (in the case of our example it would be @p2pZimbabwe) and within the group, we execute the usual command: /sell or /buy. If we want something more private, we tell the bot our default community by running the /setcomm @p2pZimbabwe command. From then on, all orders you create privately will go to the corresponding channel linked to @p2pZimbabwe. You can change your default community at any time with /setcomm @Coolercommunity (example). You can also go back to the previous state, where you didn't have a community by default, by running /setcomm off.


Since its creation, @lnp2pbot has charged a fee to the seller for each completed order, this fee is currently 0.6%, now, if the order was created in a community, the bot divides this fee, one part remains for the bot and the other part will be the community profit.

The proportions are 70% of the commission for the bot and the rest for the community.

That is, in a transaction for 10,000 satoshis, the commission to be paid by the seller is 60 satoshis. Of those, 42 satoshis are for the roboto, and the rest (18 satoshis) are for the community.

But, to encourage competition, the community has the power to reduce its 'earnings', so that instead of charging all of that 30%, it can lower a percentage of its commissions.

In the example above, instead of charging 18 satoshis (100%), you can choose to collect 9 satoshis (50%). The remaining satoshis remain as a discount for the seller who, instead of paying 60 satoshis, would pay 51.

What is a solver

Solvers are users appointed by the community administrator and are responsible for resolving disputes and maintaining order.

A community must have at least one solver. There is no requirement to be a solver. The administrator can add or remove them at any time.

The administrator can be a solver in his community.

Resolving disputes

When a user initiates a dispute, a message is sent by the bot to the dispute channel. Only solvers can take it by tapping the Take dispute button.

Dispute Capture

Once the solver takes the dispute, the bot will send them all the necessary information to resolve it. The solver will also have to communicate with each party, understand what happened, and complete the order or cancel it.

Dispute details capture

Settle an order

Many disputes start because one of the two parties was slow to respond to a message, there was a misunderstanding, or payment was delayed. These are simple cases that only require patience and help in communication. Other cases involve malice, for example, there may be a seller who wants to keep the fiat money and return the sats. For these cases, the solver can execute the /settleorder command, what this command does is that it recognizes the received payment and automatically sends the sats to the buyer.

Completing an order

Canceling an order

The other alternative that the solver has is to cancel the order if the case warrants it. To do this, use the /cancelorder command. This returns the sats to the seller.

Cancel order capture

Removing disputes

Every time a user initiates a dispute, both he and his counterpart are involved in it. Until it is resolved, both remain related, when resolved, the solver has the power to eliminate this dispute from one of the users or both, if he needs it, with the command /deldispute username order-id.

Deleting a Capture dispute