Some users of BitPay’s service have been inconvenienced by our requirement to use Payment Protocol (also known as BIP-70*). Because we require Payment Protocol payments, some users have had to switch to one of the compatible wallets to make payments.
We've written before about our reasons for moving quickly to a Payment Protocol requirement. We wanted to take a moment now to give some more background on our decision.
Dramatically Reducing Costly Payment Errors
For a while now, we’ve wanted to reduce or completely eliminate payment errors to BitPay invoices. Payment errors occur when someone pays too much, too little, too late, or their payment doesn’t include a sufficient miner fee (resulting in a delay in confirmation). These are not isolated incidents. Before Payment Protocol, wallets or exchange accounts not suitable for spending (along with user error) created more than a thousand of these errors for BitPay purchasers every week.
As bitcoin has grown, more and more bitcoin users rely on BitPay merchants for their day to day expenses. Our merchants rely on us to make sure payments happen successfully, and their teams feel the pain of payment errors. And while we’ve automated refunds for many payment errors, they’re still terrible experiences for customers, who are unable to complete their orders.
Protecting Users from Unnecessary Miner Fees
While a terrible user experience is one thing, adding to the congestion on the Bitcoin network and paying unnecessary fees to miners is another. In recent months, miner fees have increased dramatically as usage of the Bitcoin network has skyrocketed.
It was not uncommon for a user with a payment error to pay a $10 miner fee on the original transaction. They would also incur a similar $10 miner fee to obtain a refund. In the end, a user who relied on a wallet that sent a mistaken payment would have paid $20 in miner fees for no reason. This situation increased the urgency for us to eliminate these payment errors.
How Payment Protocol Solves the Problem
Payment Protocol wallets instantly lock in the correct sending amount and bitcoin address for a payment to BitPay. They are not subject to the manual mistakes which cause so many costly payment errors.
Payment Protocol will soon enable us to prevent all payment errors from happening in the first place. With Payment Protocol, a wallet can coordinate a payment directly with BitPay’s servers before it is broadcast on the Bitcoin network. If there is anything wrong with the transaction, BitPay can reject it. The transaction would never get broadcast, and the user would not lose money to a mistaken payment. Payment Protocol gives us the opportunity to prevent incorrect BitPay invoice payments from ever being broadcast on the Bitcoin network.
While we wanted to accomplish this in a manner that was simpler than BIP-70, due to sky rocketing bitcoin miner fees, we needed to take action immediately. BIP-70 is already implemented by multiple major wallets. While not perfect, it is available now and it is solving the problem.
BIP-70 has the added benefit of being far more secure than simply copying and pasting addresses. Man-in-the-middle attacks have plagued the bitcoin ecosystem for some time. It's possible for malicious third-party scripts and extensions, viruses, or malicious Tor exit nodes to change the bitcoin address shown on a web page to route funds toward attackers. The Payment Protocol eliminates this security threat.
What's Next from BitPay for BIP-70 Wallet Implementation
We know that BIP-70 can be difficult for wallets to implement (it was difficult for us when we implemented it a few years ago). We are already working to help other wallet providers become compatible, and we are going to deploy new capabilities that will make it easier in the future. Ultimately, our goal is to build a great, problem-free bitcoin payment experience, and we want to work with the bitcoin ecosystem to make that happen.
While we will continue to support BIP-70 for Bitcoin payments, we are also working on an easier to implement JSON based API so more wallets can become compatible with BitPay invoices. This option will also help other cryptocurrencies' wallets implement error-free payments as we add support for other block chains in addition to Bitcoin.
Our team has been closely monitoring the payment error improvements since we implemented the Payment Protocol requirement. This week we will share a post on our results with Payment Protocol so far.
UPDATE, 6/29: Since we published this post, multiple BTC and BCH wallets have started securing payments via Payment Protocol.
- We have replaced the original compatible wallets image with an updated one. At the time of the post's publication this list included BitPay, Copay, Mycelium, Airbitz, Electrum, and Bitcoin Core. Since then, BTC wallets BRD and Bitcoin.com have added support. BCH wallets BRD, Bitcoin.com, Electron Cash, and Bitcoin Cash Wallet have also added support.
- We have introduced our JSON-based Payment Protocol, making Payment Protocol implementation significantly simpler for wallets.
- We have dramatically reduced payment errors. Underpayments now represent less than a tenth of a percent of payments to BitPay merchants – down from several percent.