BITCOIN++ BERLIN 2026 · WALTER & MO

KaleidoPay

Receive what you want.
Pay with what you have.

A plugin for wallets: one QR for the receiver, every route for the payer.

The problem

Bitcoin lives on many layers. Payments don't.

RECEIVER

One code, one layer

An invoice is Lightning, an address is on-chain. A merchant can't say "stablecoins first, then Lightning".

PAYER

Holds a different layer

The receiver wants Arkade, I hold Bark. Two Ark wallets on different servers can't pay each other.

SWAPS

Siloed

Each wallet wires one swap service. No way to compare providers or pay any address out there.

The idea

A wallet plugin for both sides of a payment

RECEIVER

One QR, your priorities

Choose every way you accept money and rank them. Share a single reusable code.

PAYER

Pay with what you have

Scan any code. Pay directly if you share a layer, otherwise through the best swap provider.

OPEN STANDARD

SSPS

Swap providers speak one open protocol, found on Nostr. Any address is payable if one provider supports it.

Receiver

One QR. Several ways to be paid. Your priorities.

MERCHANT

Stablecoins first

USDT on Liquid or RGB as first choice, Lightning as fallback.

ADVANCED USER

Ark first

Arkade or Bark before Liquid or on-chain.

ANYONE

Always payable

Lightning is always in the list, so every BOLT12 wallet can pay.

How the receiver side works

BOLT12, with the receiver's priorities inside

The receiver's Rate connects to their own LDK node over Nostr Wallet Connect and passes the ranked layers and addresses. The node issues one reusable BOLT12 offer with that list in an extra record.

WHAT WE CHANGED

A patched LDK

LDK authenticates every record of its offers, so the list must go in at creation. We patched rust-lightning, ldk-node and ldk-server.

COMPATIBLE

Still a BOLT12 offer

Wallets that ignore the record pay it over Lightning as usual.

TRADE-OFF

Address reuse

Ark addresses in the offer are static. Next: an Ark protocol for universal QR codes without reuse.

Payer

Scan anything. Direct if possible, swapped if needed.

DIRECT

Same layer

Two wallets on the same Ark server pay each other. Bark to Bark: no swap, no fee.

THROUGH LIGHTNING

Different layers

Receiver on Arkade, payer on Bark: route through Lightning.

THROUGH PROVIDERS

Compare and pick

Several swap providers quote at once. The wallet shows each total and the payer picks the best.

The standard

SSPS: Swap Service Provider Specification

An open standard, live today, announced next week. Built on the BOLTs and on Electrum's Lightning ↔ on-chain swap providers on Nostr.

ONE PROTOCOL

Many providers

Providers announce on Nostr which layers they serve. Wallets ask several at once.

EXAMPLE

On-chain wallet pays Lightning

Pick the cheapest of several providers, swap inside the payment.

THE PROMISE

Pay any address

As long as at least one provider implements a route, the wallet can pay it.

Built at bitcoin++ Berlin

What we added this weekend

MOBILE APP

Bark in Rate

Bark wallet in our existing app, paying Lightning, BOLT12 offers and Bark addresses.

RECEIVER

BOLT12 generation

Patched LDK over NWC issues the universal offer with ranked layers.

PAYER

Electrum providers on Nostr

Scanning, quoting and swapping with Electrum's swap providers. Likely the first wallet outside Electrum to do it.

Status, honestly

What works and what doesn't yet

WORKS

Payer, on mainnet

Scan, see priorities, live quotes from Bark routes and four Electrum providers.

WORKS

Receiver, on signet

A real LDK node issues the QR over NWC with the ranked layers inside.

WORKS

Swaps, on Mutinynet

Electrum swaps over Nostr paid and claimed in under 25 s.

NOT YET

One full Bark payment

End to end through the QR: receiver and payer ran on different networks.

NOT YET

Arkade direct

Needs a fee estimate from the wallet library.

NOT YET

Per-payment locks

The QR still carries static addresses.

Demo

See it in Rate

VIDEO 1 · 40 S

Pay with what you have

Scan, see their priorities, compare every route, pick one.

VIDEO 2 · 35 S

The receiver decides

On-chain first: their choice next to the best price.

LIVE

kaleidoswap.github.io/kaleido-pay

Videos, screens, slides, offer inspector.

What's next

From hackathon to standard

STABLECOINS

RGB and Liquid

Receive USDT on Liquid or RGB; the payer just pays sats.

PROVIDERS

More swap providers

KaleidoSwap makers and others alongside Electrum's, all on SSPS.

ARK

Universal Ark QR

A protocol for Ark codes without address reuse.

LOCKS

Per-payment locks

Pay on-chain or on Ark without a Lightning hop.

UPSTREAM

bLIP and LDK

Standardise the offer record; upstream the LDK changes.

MAINNET

Real payments

Mainnet receiver nodes and full payments end to end.

Receive what you want.
Pay with what you have.

kaleidoswap.github.io/kaleido-pay

github.com/kaleidoswap/kaleido-pay · github.com/kaleidoswap/ssps · github.com/kaleidoswap/Rate

KaleidoPay