@lnp2pBot

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.

FAQ

Here we try to answer frequent questions.

What is @lnp2pBot?

Lnp2pBot is an exchange system of bitcoin for local currency, to make easy and secure peer-to-peer transactions using the Lightning Network. It is a Telegram bot that can be used pseudonymously, without user registration or identity verification. It is a "non-custodial" tool, i.e. it does not store satoshis (minimum bitcoin unit) during the exchange. Lnp2pBot is an open source application, which can be freely replicated, modified and redistributed. Go to @lnp2pBot

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

You can also find this and other commands by clicking on the "Menu" button.

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, lnp2pBot collects some statistics on your trades. Specifically, the number of completed transactions, the total volume traded, the counterparty rating and the record of disputes 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. To do this, lnp2pBot has a 5-star rating system that will allow you to rate your experience, where 1 star is the lowest rating and 5 stars are the highest.

When you create an offer, it will include by default the number of successful trades you have made and the ratings received from your counterparties.

Reputation System

How do I create a sell order?

When chatting with @lnp2pBot you will find a "Menu" button. Click it to display the list of commands you can use. Select the sell command: /sell, to activate the wizard that will guide you through the selling process.

Start the wizard

Once activated, the wizard will ask you to specify the fiat currency in which you want to trade:

Fiat currency

Next, you must enter the amount, in fiat currency, that you want in exchange for your satoshis. Remember to enter only numbers in this step, so that the wizard can understand you.

You can also enter a range of amounts to buy, separating the numbers by a hyphen (-).

Fiat Amount

The bot will ask you the amount, in satoshis, you want to deliver. Here you have the possibility to use the "Market price" button. If you do so, the rate of Yadio. io will be applied.

Amount sats

The next thing the wizard prompts you for is the percentage premium or discount you want on your swap. If you want to increase the market rate (premium), select a positive number; if you want to decrease it (discount), select a negative number. If you want neither, use the "No premium or discount" button.

Premium or discount

Next, you will need to specify the payment method. In this field, you can get creative and add emoticons or whatever you consider to make your request attractive.

The bot will proceed to publish your offer in the general or community channel you have set as default. It will remain visible for 23 hours if no one takes it before that time.

channel-publication

At any time you can cancel the offer, as long as no one has taken it, using the command /cancel followed by the order identifier. You can also copy the command plus the identifier in the chat with the bot.

Cancel order command

The wizard will return a message confirming the cancellation and your offer will be removed from the offers channel.

Order cancelled

In case your sale is taken, the bot will ask your counterparty to deliver a Lightning Network invoice.

At the same time, it will ask you to pay the invoice with the corresponding amount in satoshis, plus a 0.6% commission. Remember that the network may charge you an additional amount for payment routing. This amount will depend on the nodes through which your transaction will pass and the network status. The bot has nothing to do with this amount.

At this point, the bot will contact both parties to discuss the details of the exchange.

Once the bot receives notice that the fiat amount was paid, it sends you an alert to check your account. If everything is in order, you can release the satoshis with the command /release followed by the transaction identifier (or copy and paste the text into the bot chat) and the transaction will be executed.

The exchange is finished. Now you can rate your counterparty.

You can exit the wizard at any time by executing the /exit command.

To execute the same sell order, without using the wizard, you must type your order with the details: /sell <amount in sats> <amount in fiat> <fiat code> <payment method> [premium/discount] (without the special characters).

Example: /sell 100000 50 USD "bank xyz" I sell one hundred thousand sats at fifty dollars I charge by bank xyz.

In case there is any unsupported variable, the bot will indicate it to you during the order creation process. Once completed, the order will be published in the exchange channel and will be visible for a period of 23 hours.

How do I create a purchase order?

The procedure is the same as for the sell order. Only, when pressing the "Menu" button, you must select the command /buy instead of /sell. This will activate the wizard that will guide you through the buying process.

Once activated, the wizard will ask you to specify the fiat currency with which you want to trade:

fiat currency

Next, you must enter the amount, in fiat currency, that you want to buy. Remember to enter only numbers in this step, so that the wizard can understand you.

You can also enter a range of amounts to buy, separating the numbers by a hyphen (-).

Amount in fiat

The wizard will ask you the amount, in satoshis, you want to receive. Here you can to use the "Market price" button. If you do so, the rate of Yadio.io will be applied.

Amount in satoshis

The next thing the wizard prompts you for is the percentage premium or discount you want on your exchange. If you want to increase the market rate (premium), select a positive number; if you want to decrease it (discount), select a negative number. If you want neither, use the "No premium or discount" button.

Premium or discount

Next, you will need to specify the payment method. In this field, you can get creative and add emoticons or whatever you consider to make your offer attractive.

Payment method

The bot will proceed to publish your offer in the general or community channel you have set as default. It will remain visible for 23 hours if no one takes it before that time.

Offer published

At any time you can cancel the offer, as long as no one has taken it, using the command /cancel followed by the order identifier. You can also copy the command plus the identifier into the chat with the bot.

Cancel order

The wizard will return a message confirming the cancellation and your offer will be removed from the offers channel.

Order cancelled

In case your offer is taken, the wizard will ask you to submit an invoice to Lightning Network with the corresponding amount in satoshis. At the same time, it will ask your counterparty to pay the invoice.

At this point, the bot will contact both parties to discuss the details of the exchange.

Once you have made the fiat payment, notify the bot with the /fiatsent command. The bot will notify your counterpart to check and verify receipt of the money, and proceed to release the satoshis. Remember that your wallet must be online to receive the satoshis.

The exchange is finished. Now you can rate your counterparty.

You can exit the wizard at any time by executing the /exit command.

To execute the same purchase order, without using the wizard, you must write your order with the details: /buy [premium/discount] (without the special characters).

Example: /buy 100000 50 USD "xyz bank".

I buy one hundred thousand sats at fifty dollars payment by xyz bank.

Some examples of purchase orders would be as follows:

  • Ex. /buy 0 50 ves "xyz bank": I buy fifty bolivars in sats -in this case, the bot will calculate at the market rate- payment by xyz bank.
  • Ex. /buy 0 10-100 pen "mobile payment": I buy from 10 to 100 nuevos soles -in this case, the seller will choose what amount to sell you in that range- payment by mobile payment.
  • Ex. /buy 0 100 eur -3 "mobile payment": I buy 100 euros discounting 3% -in this case, the bot will calculate at the market rate discounting or increasing the percentage you choose- payment by mobile payment.

If there is any unsupported variable, the bot will indicate it to you during the order creation process. Once completed, the order will be automatically published in the exchange channel and will be visible for 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 or select it in the "Menu". The bot will show you the active orders. Select the ID corresponding to the order you want cancel.

The ID or identification number of your order appears just below the message of acceptance and publication, 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.

Cancel a orden

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 you can choose to specify only the fiat amount to be paid/charge, but not the sats amount to buy/sell. In this case, you should select the "Market price" button, and then the bot will calculate at the market rate offered by yadio.io.

market-price

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:

CodeName
AEDUnited Arab Emirates Dirham๐Ÿ‡ฆ๐Ÿ‡ช
ARSPeso argentino๐Ÿ‡ฆ๐Ÿ‡ท
AUDAustralian Dollar๐Ÿ‡ฆ๐Ÿ‡บ
AZNAzerbaijani Manat๐Ÿ‡ฆ๐Ÿ‡ฟ
BOBBoliviano๐Ÿ‡ง๐Ÿ‡ด
BRLBrazilian Real๐Ÿ‡ง๐Ÿ‡ท
BYNBelarusian Ruble๐Ÿ‡ง๐Ÿ‡พ
CHFSwiss Franc๐Ÿ‡จ๐Ÿ‡ญ
CADCanadian Dollar๐Ÿ‡จ๐Ÿ‡ฆ
CLPPeso chileno๐Ÿ‡จ๐Ÿ‡ฑ
CNYChinese Yuan๐Ÿ‡จ๐Ÿ‡ณ
COPPeso colombiano๐Ÿ‡จ๐Ÿ‡ด
CRCColรณn๐Ÿ‡จ๐Ÿ‡ท
CUPPeso cubano๐Ÿ‡จ๐Ÿ‡บ
CZKCzech Republic Koruna๐Ÿ‡จ๐Ÿ‡ฟ
DKKDanish Krone๐Ÿ‡ฉ๐Ÿ‡ฐ
DOPPeso dominicano๐Ÿ‡ฉ๐Ÿ‡ด
EUREuro๐Ÿ‡ช๐Ÿ‡บ
GBPBritish Pound Sterling๐Ÿ‡ฌ๐Ÿ‡ง
GELGeorgian Lari๐Ÿ‡ฌ๐Ÿ‡ช
GHSGhanaian Cedi๐Ÿ‡ฌ๐Ÿ‡ญ
GTQQuetzal๐Ÿ‡ฌ๐Ÿ‡น
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๐Ÿ‡บ๐Ÿ‡พ
VESBolรญvar๐Ÿ‡ป๐Ÿ‡ช
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 lnp2pBot into your language, you can propose your collaboration. This is a good place to start.

How can I find communities operating with my currency?

By executing the command: /findcomms followed by the desired currency code (you can use standard ISO 4217 currencies codes), lnp2pBot will show you the created communities operating with your coin. There may also be communities trading sats against some other cryptocurrency. There is no limitation for the user.

In the following image we can see the result of /findcomms usd.

Find Community Capture

Recommended wallets

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

Support

@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.

Common problems and their solutions

I tried to pay an invoice with a wallet with insufficient funds and @lnp2pbot now tells me that the invoice was used

Wait 15 minutes for the transaction time to expire and start it again for a new invoice to be generated.

My counterparty had a problem sending me the payment in fiat and then it disappeared, my sats were blocked

The transaction will be automatically canceled after 23 hours and your satoshis will appear in your wallet as a failed payment.

A user took my purchase by mistake and I already made the payment in satoshis

A cooperative cancellation can be initiated. The initiator must execute the command /cancel <command identifier> and the counterpart only needs to run /cancel and touch the button to confirm.

I canceled an order but the sats have not returned to my wallet, how long should I wait?

When an order is canceled, the seller's sats return immediately to the node/wallet that made the payment. If you use a self-custody wallet or your own node you will not have any problem but if you use a wallet that custodies your funds you must wait for them to reflect your balance in their internal system, this can take from a few minutes to a couple of hours depending on the wallet but in all wallets it returns 100% of your funds, be patient.

How do I know if the seller actually released the sats?

If @lnp2pBot tells you that the vendor released, it really is, but if you want to verify it you can do it as follows:

Write to the bot /listorders and if the bot is still in the process of paying your invoice the status you will see will be PAID_HOLD_INVOICE, if the bot has already paid the invoice the order will not appear on the list.

When an order has status PAID_HOLD_INVOICE, the seller no longer has any responsibility because he/she has released the sats, if you have problems receiving go to the section The seller released but I don't get the sats in my wallet.

The seller released but I don't get the sats in my wallet

Sometimes the bot does not find successful routes to make the payment for different reasons, sometimes because there is simply not a good connection from the origin to the destination but other times it is much more complicated, it can happen that the nodes connected to the destination charge very high fees, @lnp2pBot's node is willing to pay up to 0.2% of the total amount of the operation in routing fee, if this fee is higher the bot simply will not make the payment, some wallets that are not native lightning may charge more than 0.2% when the mempool is congested, those wallets will not be able to be paid by the bot.

Another case is that you do not have inbound capacity, I will give you an example, if you use Blixt wallet and in it you have a channel that you just opened, all the money in that wallet would be outgoing, you do not have the capacity to receive, in that case all Payments to that wallet will fail, there are modern wallets such as the Phoenix wallet that solves this problem by indicating that you do not have inbound capacity and offers you to open a new channel, this wallet charges a commission for this.

As a solution we recommend trying different wallets, generate new invoices and give them to the bot so that it tries to send you the payment again.

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

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.

Trust

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.

Incentives

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. Before taking a dispute, the solver must be sure that he/she have the community setted up, to set up the community, the solver must run the command /setcomm @community-group.

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