BOLT 12

User Stories

Reusable Payment Requests

Now that I can slap a QR code on our tip jar, my band can seamlessly receive tips in bitcoin! No more creating a new QR code for every virtual fan who wants to tip us after a moon colony gig, and no more losing 75% of potential tippers due to the long wait for BOLT 11 invoices.

In this scenario, Alice just needs a payment identifier that doesn’t need to be changed or refreshed after each use. Her wallet creates an offer for her. She can then use the share tray and send it to a printer, then affix the printed QR code next to her band, in the same way that one might put a CashApp QR code on their tip jar.

Alice playing a keyboard

Alice is a musician and wants a way to receive tips from the audience when her band is playing live shows.

Bitcoin wallet in an app store

Alice downloads a bitcoin wallet from the app store.

Wallet Onboarding Flow

Alice onboards to the wallet.

A UI where Alice can retrieve her payment code, a BIP21 URI with a BOLT 12 offer.

Alices retrieves her payment code, which is a BIP21 URI with a BOLT 12 offer.

UI of opening the share tray on iOS

Once she has her payment code, she can share it with her audience.

A tip sign with a QR code of Alice's BOLT 12 offer

Alice slaps this payment code (Offer QR) on a sign at her band’s merch booth and in front of the mic so audience can tip them directly.

Receiver Privacy

As a shadowy super coder contributing to Bitcoin Core, I needed a way to accept donations that preserves anonymity while compartmentalizing my 784 digital identities. With BOLT 12’s route blinding, I can now accept payments discreetly and securely!

In this scenario, the user needs some extra privacy. By using route blinding, which could be provided as an optional service by the LSP, the user can publish the offer into the world without revealing their node’s pubkey. In theory, the user could create different offers for different sectors of their life, maintaing privacy and separation between these sectors.

Brijesh in his secret trenchcoat

Brijesh, known as Bob on Github, is a pseudonymous bitcoin FOSS dev and wants a way that people can support his work as privately as possible with BTC.

UI displaying all of Brijesh's BOLT 12 offers

Bob likes to separate out pay codes for different sectors of his life.

UI to make a new pay code (offer)

Bob goes to create a new pay code specifically for bitcoin dev donations.

Ui to give the offer extra privacy features

He turns on the extra privacy option, which adds 2 blinded paths with 2 hops each to the BOLT 12 offer.

UI displaying the newly created offer

Brijesh retrieves his payment code, which is a BIP21 URI with a BOLT 12 offer.

Brijesh's website, where he displays his offer under the pseudonymous name Bob

A supporter goes to tip him on his website. They can tap a link to a BIP21 URI, scan the offer QR code, etc.

Social Integration

I’m a content creator on Nostr who has always wanted a self-custodial way to accept zaps for my VR artwork. By publishing my bitcoin wallet’s payment code to my Nostr profile, I can receive zaps directly, without custodians or middlemen. Viva la BOLT 12!

In this scenario, the user wants to receive self-custodial zaps on Nostr. While the current zaps implementation uses LNURL, there is not reason it could not be done with a BOLT 12 offer as well. For example, a BOLT 12 could be included in a `kind: 0` metadata note, AKA the user’s profile. From there, Nostr clients aware of BOLT 12 could attempt to pay using the offer instead of the LNURL data in Charlotte’s profile.

Charlotte is a content creator who is very active on Nostr and wants a way that her audience and fans can tip her directly from a Nostr client.

Charlotte downloads a bitcoin wallet and gets setup.

The wallet generates a payment code for her during onboarding. It notifies her that she can add this to her Nostr profile. She taps yes for this.

Wallet opens share tray (or similar menu) and she chooses her fave Nostr client from the list of apps.

Switches over to the Nostr client --- client asks what she wants to do with the offer, she chooses “add to profile”.

Now her fans can send her zaps via BOLT 12 over Nostr.

Auto-withdrawals

After hearing some cyborgs talk about bitcoin on XNBC Squawk Cube, I decided to buy in. Later, I learned that it’s better to self-custody bitcoin rather than trust exchanges. So, I set my exchange account to automatically deposit bitcoin into a self-custodial wallet using BOLT 12 offers.

Services such as Swan allow you to setup automated recurring withdrawals of your bitcoin balance to your own wallet. Currently, this is implemented with a static on-chain address or an xPub. Imagine an exchange adding BOLT 12 offers to the list of accepted formats. Then users could have their balance auto-withdrawn to their own wallet, instantly spendable on lightning and without the onchain fees.

Dan likes to invest, and he DCAs bitcoin everyday with a recurring buy on an exchange. He wants a way to sweep his BTC off the exchange automatically once a week.

Dan goes into the withdrawal options for his exchange account, and chooses a recurring withdrawal. Exchange asks him for a bitcoin address or a BOLT 12 offer.

Dan goes to his bitcoin wallet...

...copies the offer...

...and pastes it into the exchange’s form. Then, he receives his payouts automatically once a week via async payments.

OR, in a world where async payments doesn’t exist yet, Dan receives a text from his exchange once a week asking him if he’d like to withdraw funds. He taps a link inside, which opens his bitcoin wallet, and then the exchange sends the payment.

Censorship Resistance

As an activist living under an authoritarian robot regime, I needed a way to accept donations without payment services blocking my IP address. With onion messaging, my IP address remains hidden, ensuring I can receive support securely. Smash the autonomous patriarchy!

Bitcoin payment schemes that rely on HTTP can be censored. One advantage of BOLT 12 offers is that they do not rely on web servers or HTTP requests. Instead, they use onion messaging. Furthermore, the offer can use a BIP 353 payment identifier, which looks like an email address and is easy to remember and share.

Elaheh is an activist living under an authoritarian regime. She needs a way to accept donations to her cause in a way that is private, not censorable, and can easily be shared on social media or by word of mouth.

Elaheh tries out her wallet's new username feature.

She chooses a username. It looks just like an email address and is easy to remember.

Confirmation that the username is created. She can now copy+paste it, or simply tell people.

It's now easy for social influencers like Charlotte to spread Elaheh's donation address with the world!