Mycelium has implemented Proof of Payment (BIP120 and BIP121), and I'm really glad they did. It's one of the most popular wallets out there. Plus, I implemented most of it. I'd like to show you how smooth the user experience can be when PoP is used poperly! If you would like to play with this, please visit my PoP test site. It supports both mainnet and testnet. I'll show a service I call PayMess. That's a site where you pay for a message space. You can then update that message space with whatever you want for free whenever you like using PoP. Here we go:

Let's create a new message space. Hit 'Create'.
Now pay. Please note the 'label=PayMess 14' parameter
Pay. This is just a normal payment. Note the Transaction Label.
Once paid, your new message space appears on top of the list
![](images/04-paymess-update.png?classes=caption "Let's update it. Enter a new sentence and hit "Update".") ![](images/05-pop-request.png?classes=caption "Now it's time to prove the previous payment. Note the "label=PayMess%2014" parameter. It's used by the wallet to find the correct payment to prove.")

Now take a look at the transaction to prove. I'm about to prove a transaction I paid at 14:36 today, and the label and amount seems reasonable. The PoP will be sent to, that's what I expect. Let's sign and send by hitting "Prove".

When the server receives the PoP you'll get back to the main page and your message space is updated.

This was a rough walkthrough of the Proof of Payment process in Mycelium. I hope you get the idea and how it can be useful. If you've got something on your mind regarding BIP120, Proof of Payment, don't hesitate to contact me at

Previous Post Next Post