I had hotpot last night in Shenzhen with some friends from software and hardware bitcoin companies. After dinner, I of course wanted to split the bill with bitcoin paid by Lightning and actually managed to convince one person to do so. For some reason, China Mobile hasn't been letting roaming phones connect to some portions (or certain frequencies?) of their network and so that night, my roaming HK phone didn't have a very good connection inside the restaurant. Because of this, the Lightning wallet I was trying to use to receive the payment, Phoenix wallet, wouldn't generate a QR for me to receive payment. Apparently it still can't generate an invoice without talking to the network despite containing its own LND node. However, once we walked outside where the network signal was stronger, payment went through quickly...like lightning.

Another person at the dinner paid me via Hong Kong's ubiquitous bank account to bank account real time gross settlement system "Faster Payment Service." I didn't need to be online for him to send this payment...it automatically appeared in my bank account in Hong Kong.

Still another wanted to pay me via Tencent's onshore payment system which everyone calls "WeChat Pay" despite the company's position that the english name is Weixin Pay. I didn't need to be online to receive this payment from him, but I did need to be online to accept his friend request so that he could send the payment. The money he paid me was onshore renminbi (CNY) and I had paid the bill using an offshore renminbi (CNH) credit card...so I couldn't actually use the money unless I bought more stuff onshore...but that's a story for another day.

If you're thinking "wow that's a lot of fiat payments for a dinner with bitcoin friends, why aren't they using bitcoin?" You and I are on the same page. Also a story for another day.

In defense of Lightning, I had had a similar problem when I originally paid the bill in fiat money with Unionpay's QR code payment service "Cloud QuickPass". The app wouldn't provide a QR code for the merchant to scan until it could connect to the internet and the merchant needed to be online to "pull" the payment from Unionpay credit card linked to the app.

This led me start thinking about online vs offline when sending in-person payments. Some payment methods require neither party to be online, some require one party to be online and some require both to be online.

Below is a list of payment methods I commonly encounter and which parties need to be online to send the payment. This list solely deals with the making the payment, not independent verification by the recipient that it was made.

  • Cash: Neither party needs to be online
  • FPS: Only the sending party needs to be online
  • Alipay, Wechat Pay, Alipay HK, Wechat Pay HK:
    • To send to individuals, only the sending party needs to be online, but they need to be friends. If not friends, they need to be online to add as a friend.
    • To send to merchants, both parties need to be online for pull payments (merchant scans customer) but not when customer scans merchant (like paying a taxi driver or street vendor's QR code.
  • Bitcoin & other blockchain-based tokens: only the sending party needs to be online
  • Lightning - both parties need to be online
  • Octopus Card - neither party needs to online
  • Credit card/Apple Pay - Neither party needs to be online, but receiving party has risk of no funds available if it is not online.

Internet connectivity doesn't work all the time. Because of this, the more parties a payment method requires to be online to send a payment, the greater the chance that the user experience is ruined when one of them has connection problems.