Bolt12 is the new common interface to Bitcoin payments

Vincenzo Palazzo · @PalazzoVincenzo · Tue 13 Oct 2026 · 3:45–4:15 PM ET · Main stage · TABConf 8
1

Open a channel.

2

Rebalance it.

3

Wait for gossip.

4

Payment failed.

5

We spent years hiding that.

6

Users never see the plumbing.

7

More layers than ever.

8

“Powered by ___”

9

Which protocol does your bank speak?

10

The interface is shared.

11

When one piece breaks…

12

spark is great, until it's not.

stu 🥪🥞 @stutxo

spark is great, until it’s not! just like liquid and all the other lightning gateways

Replying to @PakoVM · Oct 5, 2026
13

A shared mistake. A shared fix.

14

Bolt12 is the account number.

15

lno1...

lno1pgd9xatswphhyapqg…
16

Publish once.

Check the blinded path before the tattoo.
17

Pay forever.

18

No web server.

19

Any backend.

20

Between the layers.

Lightning · Spark · Ark · LSPs · ecash → one offer, one name
21

₿you@domain → ark1…

ark1qzpq904am6clw3pgqwyh4p02708fy4xs0hcpwt7rwfdttuxsjamecfjuejh7a4eauna0vf2eegcw95w3dyjzl8gykpye50e9qneuwezqkp4yac
arkade.space/tx/727c9d93…
22

₿you@domain → spark1…

spark1pgss8d9lf3p23g5a3ykayn5wseuqnjd2wkzfn3t7apck9nwnfkf0gvpn3h7y0t
sparkscan.io/tx/bc097da1…
23

You just published your history.

docs.arkadeos.com/wallets/getting-started/arkade-addresses · docs.spark.money/wallets/privacy
24

₿you@domain → lno1…

At the maximum, you can submit the payer proof.lnproof.space/lnp1pgd9xa…
blinded paths · a fresh invoice per payer · no public ledger of Lightning payments
25

Same name. New wallet.

tabcon8@sonarprivacy.xyz · Breez Liquid → Cashu → Lexe
26

Contacts. Names. Receipts.

27

A case study.

sonarprivacy.xyz
28

One offer.

tabcon8@sonarprivacy.xyz
29

Old wallet. New wallet.

30

Already in production.

31

Your product, on top.

32

Ark already pays offers.

Second · bark: Wallet::pay_lightning_offer (Ark → Lightning gateway)
33

Spark: you're one step away.

34

One interface.

35

Three steps.

36

1. Pay offers.

CLN: xpay / fetchinvoice · LDK Node: bolt12_payment().send() · LND: LNDK
37

2. Receive offers.

CLN: offer · LDK Node: bolt12_payment().receive() · LND: LNDK v0.3
38

3. ₿you@yourdomain

BIP-353 · TXT at <user>.user._bitcoin-payment.<domain> → bitcoin:?lno=… (an offer, not a layer address)
39

Links.

40

Make payments just work.

41

Pretty straightforward, right?

42