I'm working on a Bitcoin project, and what I've seen are:
- Just the Bitcoin address
- A url parameter-like scheme with the format "bitcoin:{plus the bitcoin address}" (no brackets used)
- A more elaborate url parameter that includes the amount, like "bitcoin:{bitcoin addr}?amount={the amount}
Coinbase uses the last scheme and it is fully recognized by the BlockChain iPhone app, enabling you to request a certain amount of Bitcoin directed to a specific address.
Coinbase uses the (deprecated) Google chart apis and the full querystring they use to build a QR code looks like this:
<img width="300" height="300" alt="Chart?cht=qr&chl=bitcoin%3a1k1yfezde2c37pwdevjnin1yc2qbtly6bk%3famount%3d0" src="https://chart.googleapis.com/chart?cht=qr&chl=bitcoin%3A1K1yfEZde2C37pWDevjnin1yc2qBtLy6bk%3Famount%3D0.01&choe=UTF-8&chs=300x300">
If you run that src url through a url decoder, you'll find that it requests 0.01 BTC to the address 1K1yfEZde2C37pWDevjnin1yc2qBtLy6bk.
When you're building a QR code, you don't need to url-encode the data. Coinbase is only doing so because they have to request the QR code from Google through a url addressing scheme.
I build my QR codes on my own server and display them as images on a web page, and I just use non-encoded data.
My project internally uses qrcode.js which can built QR codes on the client-side and claims compatibility down to IE6. Check it out, I highly recommend. – Mikko Ohtamaa – 2014-02-05T08:05:50.310
1Also the eloborate URL parameter is called "Bitcoin URI Scheme" and can be found under proposal BIP 0021. – Mikko Ohtamaa – 2014-02-05T08:06:49.267
@Mikko, thanks for the pointer to BIP21. I reviewed that after I posted this response and it helped me understand what I was seeing. – ChrisW – 2014-02-05T18:22:27.460
BIP0021 does state that "Characters must be URI encoded properly." – alexg – 2017-04-30T09:37:50.613