I'm trying to build an application that takes bitcoin and also an email. But when you send bitcoin you cannot send a message attached to it. Supposedly BIP70 solves this problem. How does a BIP70 URI look like? Example: I sell digital tickets that I email to my customers. My customers only have my bitcoin address. When they send Bitcoin to my address, how can they also send me their email address so I can email them the "digital ticket". Don't I have to have my URI something like this:

bitcoin:12A1MyfXbW6RhdRAZEqofac5jCQQjwEPBu?amount=1.2&[email protected]

1 Answer 1


There isn't any such thing as a "BIP70 URI" as I understand it. To use BIP70, the client fetches a payment request from somewhere, typically an ordinary https url (which can also be embedded in a bitcoin: uri, see BIP72). The payment request is passed to their Bitcoin wallet client, which generates the transaction as well as a Payment message which is sent back to the server at a given URL. There is a memo field in the Payment message which you could use, but filling it in would be up to the user's wallet client. I don't see any way for your payment request to instruct the software how to fill this in.

So you would have to tell the user how to fill in the memo field of the Payment message using their particular software (assuming their software supports it at all). And if they should fail to do so, too bad - by the time you receive their Payment message the transaction has already been sent. Though you could still refund their payment in that case (using the refund_to field of the Payment message).

If the user has already given you the address (e.g. entered it in a web form) then you could generate the payment request in such a way that the payment_url embeds their address (https://my.server.com/[email protected]). Then when they send their Payment message to that url, an appropriate application on your site can record that address as being associated with the transaction.

Note that in all cases the user needs a lot more than just your Bitcoin address; you have to run a publicly available secure web server to negotiate the payment protocol, and the user will need its web address.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.