Back to Blog Entries

Payment Protocol support

April 14th 2015

The Payment Protocol (BIP 70) is a Bitcoin standard describing how merchants and wallet developers can work together to produce a seamless buying experience using bitcoin. It is supported by MultiBit HD Beta 8 and higher.

This blog article gives a walk-through of how it all works using a donation to as an example payment.

User clicks on a Bitcoin Payment Request link in their browser

A Bitcoin Payment Request is a small file that contains instructions for making a payment. This file can be downloaded through a browser link or perhaps sent via an email just like any other file. During installation MultiBit HD will register itself as a handler for these kinds of links and files so when one is clicked it will start up and, after a wallet is unlocked, it will show an alert.

The Payment Protocol provides a way for merchants to sign their request - typically using their site's HTTPS keys. If this signature is present and trusted the alert will indicate this. In the example, we have a signed Payment Request but the signature is not trusted.

At this stage the user can choose to dismiss the alert or proceed.

User clicks "Yes" to review the Payment Request

The Payment Request review panel appears and provides more details. If the user has sufficient funds they can choose to proceed with payment by clicking the "Pay this payment request" button. They can also choose to abandon the process and come back to it later through the Payments screen.

User clicks "Pay this payment request"

Paying a payment request is very similar to making a regular Bitcoin payment. The usual payment confirmation panel appears and the user authorises the request with their password or with their Trezor hardware wallet if present.

User clicks "Send"

At this point the user is committed as the transaction is broadcast to the Bitcoin network. Typically this takes a few seconds to provide feedback of a successful send.

User clicks "Next" to send merchant a note

The Payment Protocol provides a mechanism to send an optional note directly to the merchant over a secure channel - perhaps providing additional delivery instructions or selecting a particular option on the product.

User clicks "Next" to receive a receipt note

The merchant responds by providing a receipt note (technically a PaymentACK).

In a real payment the receipt note acts as a message from the merchant indicating how they are going to process the order. Perhaps they want to wait for several confirmations on the Bitcoin network, or maybe they will provide a link for immediate download of the digital purchase. It is up to the merchant what they put here. In this example we are simply echoing back what the user sent us.


This article describes the basic workflow of the Payment Protocol but there is a lot more to it such as refund addresses; specifying outputs as part of merge avoidance (increased privacy) and more. Over time we expect this functionality to develop further as more merchants and wallet developers roll out its use.

Related articles

Here are some related articles: