Meet the Core Developer Who’s Building a Better ‘BitPay’
Bitcoinist spoke with Bitcoin Core developer Nicolas Dorier who explains why BTCPay is not only a cheaper alternative to BitPay but also provides merchants and users with more control over their funds.
What is BTCPay?
BTCPay Server is an open-source payment processor that conforms to the invoice API of Bitpay. This allows easy migration of your code base to your own self-hosted payment processor. According to BTCPay, the service would be a good choice for you if:
- You currently use Bitpay as a payment processor but worry about their commitment to Bitcoin in the future;
- You want to be in control of your own funds;
- Bitpay compliance team decided to reject your application;
- You want lower fees (we support Segwit);
- You want to become a payment processor yourself and offer BTCPay-hosted solution to merchants;
- You want to support another currency than those offered by Bitpay.
Bitcoin itself is decentralized, but payment processors are not […]. BTCPay is a way out.
Bitcoinist: What is BTCPay? Is it open-source and how much does it cost?
Nicolas Dorier (ND): BTCPay is multi-tenant open-source payment processor, backward compatible with Bitpay API. It means that it is a payment processor which can be used to provide payment processing to multiple merchants.
The cost depends on what you choose to host it (can be hosted by any by linux or windows).
A typical cloud hosting (AWS or Azure) should be around $20 USD of computing power per month and $40 USD of storage (mainly for the blockchain) per month.
The $40 USD of storage will drop significantly to around $5 USD with Jonas Schnelli work on BIP159 (NODE_NETWORK_LIMITED). One install can support multiple merchants and multiple stores.
I created a one-click install for Azure users.
Bitcoinist: Why did you decide to work on this project?
ND: During the B2X debacle, Bitpay decided to force its customers to follow B2X chain. I advised lots of people to use Bitpay (and Copay) in the past. And those merchants were definitively not happy with Bitpay making the decision on what their businesses will consider to be Bitcoin.
Since then, we again saw Bitpay acting against the interest of its merchants by not migrating to segwit (externalizing this cost as “Network Fee” to their merchants) and temporarily raising the minimum invoice to $100 USD suddenly.
Bitcoin itself is decentralized, but payment processors are not, and they use their comfortable position to abuse its customers. BTCPay is a way out.
Bitcoinist: What are the biggest differences between BTCPay and BitPay?
ND: BTCPay can be hosted by yourself. This means that you are in control of the full node. Nobody can force you about what version of Bitcoin to accept.
The API of BTCPay is exactly the same as Bitpay (outside of the URL where to send the invoice requests).
It makes migration from Bitpay easy. BTCPay can easily fork all open-source plugins developed by Bitpay or its community and adapt them with minimum change to work with BTCPay. This is what we did for Woocommerce plugin. Other plugins will be supported on demand.
We will probably not support BCH (except if BCH community makes a clean, TESTED pull request).
Litecoin will soon be supported. Changelly integration is on the roadmap. It will be possible to pay an invoice in several cryptocurrencies. Lightning Network is on the roadmap as well. BTCPay will use an “x/zpub” to generate invoice addresses. This can be retrieved from your own Electrum wallets, Trezor or Ledger easily.
BTCPay never has access to the funds of your wallet and does not require it to be online, it can only generate addresses.
Because BTCPay is open-source and self-hosted, there is no support for fiat conversion at the moment. However, there is a plan for support of a standard to allow any exchange to become fiat provider to a BTCPay merchant through the COX protocol.
I saw lots of interest among some exchanges about this idea.
Bitcoinist: Can anyone just use the code to process their own payments and avoid BitPay?
ND: Yes, BTCPay is entirely open-source. Unless you need fiat conversion, you can bypass BitPay. (If you need fiat conversion, see above about the COX protocol in the roadmap.)
Bitcoinist: Why should merchants choose BTCPay over legacy processors?
ND: Because other open-source payment processors seriously suck and do not work. Some merchants migrating to BTCPay already tried the other alternatives thinking they were more mature…no. One may use another centralized payment processor, but will likely put their business at the mercy of arbitrary decisions once again.
Bitcoinist: How tech-savvy do merchants have to be? Must they download the source code or is there an option to sign up for a hosted service?
ND: If the merchant is tech savvy, he can host by himself. If he is a bit tech savvy but not too much, he can host by himself via the one-click deploy on Azure.
If the merchant is not at all tech savvy, a third party would be able to host a BTCPay instance and make merchants pay for using the service monthly. (I might do that myself for free if nobody does.)
One BTCPay instance can host multiple merchants with multiple stores, so the host is not necessarily the merchant himself.
Bitcoinist: How much interest have you received from merchants so far?
ND: Quite a lot of questions about this new service, and some who already jumped ship and use it in production like cryptoasylum.com (and soon coincards.ca).
I developed Bitpay integrations for customers in the past; I am slowly migrating them (eating my own dog food.) My “thumb in the wind” estimation of the current volume is between 10 and 50 invoices per day; double next month.
Lot’s on interest coming from Litecoin community, so I think new merchants will jump the ship soon. And even more once Lightning Network is supported.
Bitcoinist: Would such a service mitigate fees, given the recent sharp rise in Bitcoin tx costs recently?
ND: Yes it will. The service supports segwit, saving around 40% of fee per transaction.
Second, Bitpay considers an invoice “invalid” after 1H if not confirmed. This means the buyer need to add large fees or the invoice will be canceled, which need even more transaction to refund the customer.
BTCPay lets the merchant decide. The merchant will see the invoice as “paid” when receiving the unconfirmed transaction. The invoice will be “confirmed” after 1 or 6 confirmations (merchant setting). If the first confirmation takes too much time to come, the invoice will become “invalid” after whatever timeout the merchant wants to configure.
Bitcoinist: Why did you decide to support Litecoin as well?
ND: I work on Litecoin as merchants need an alternative before Lightning is ready. Litecoin has a competent development team and shorter confirmation time making it attractive for small payment on-chain.
It also supports Segwit, meaning some interesting scenarios will be possible once I add Lightning Network support. Like cross atomic swap between merchants so they can accept Bitcoin payment, but receive Litecoin instead without passing by an exchange.
I am not against supporting other altcoins (BCH included), given they are smart enough to look at how Litecoin support is implemented as an example and do the same for themselves.
I will not work on it directly, but I would need to the guess the next altcoin after Litecoin to be supported by BTCPay, it might be Stratis: they have a team very familiar with NBitcoin and .NET Core development, this is likely a 2-3 days worth of work for them.
I will also work on Changelly integration so that any currency supported by Changelly will be supported indirectly by BTCPay.
Bitcoinist: What kind of benefits would Lightning Network integration bring to payment processing?
ND: Lightning Network will provide instant transactions nearly for free.
This unlocks interesting things like instant cross atomic swaps. So the merchant can instantly exchange his LTC against BTC upon receiving the invoice.
In the case of integration to exchanges, it means that a merchant can propose BTC payment to his customer, and immediately sending part of his BTC on an exchange and place a market sell order.
Most of the volatility risk disappear as the time between when the payment is received and the sell order is placed is near zero. The only volatility risk remaining is between the creation of the invoice and its payment. The 15 min in Bitpay will be configurable in BTCPay.
All of that without any trusted third party holding his cryptocurrency. This is quite exciting.
Bitcoinist: Thanks for your insight. Anything you would like to add?
ND: Thanks to DG Lab and Metaco, which support my work on BTCPay. Thanks to my girlfriend for the awesome design. Thanks to the community and support everybody show. Thanks to Bitcoin for taking care of me.
Join us on Slack: http://18.104.22.168:3000/
Join us on Twitter: https://twitter.com/BtcpayServer
Join us on GitHub: https://github.com/btcpayserver/btcpayserver
Join us on youtube: https://www.youtube.com/channel/UCpG9WL6TJuoNfFVkaDMp9ug
If you want to play around on testnet: https://btcpay-server-testnet.azurewebsites.net/
There is very exciting time ahead for Bitcoin. I think we’ll look at 2018 as being the year where Bitcoin really takes off!
Can BTCPay become a better service than current processors? Let us know your thoughts below!
Images courtesy of Shutterstock, Twitter