How it works
How paying inside a world works, step by step. One character, one game, one payment: 21 sats for one more round, and a 5-sat prize back.
What your world does, what the pocket does, and what crosses between them. One example, seven stops: connect, allowance, pay, settled result, and the way out.
The pocket opens in rounds. Early access: hello@satrium.org.
Two states, one link: the flat page, then the immersive session. You never take the headset off.
Get a pocket.
Add the SDK.
You open wallet.satrium.org in any browser, even the one inside your headset, choose a PIN and write down your recovery words. No account, no app store.
An empty pocket, ready to be yours.
Choose a PIN
Write these down. They bring the pocket back.
PIN set · example words, not a real pocket
Wherever your browser offers it, add the pocket to your home screen. Same link, same pocket, its own icon.
PWA: manifest + the wallet origin; the installed icon opens wallet.satrium.org, nothing else.
The icon is a shortcut to wallet.satrium.org. If an icon opens any other address, it is not us.
DEMO · no real payment
Put pocket money in.
Open the pocket.
Tap Receive. Pay the invoice from any Lightning wallet (the mint turns it into nuts), or paste ecash from any ecash wallet.Tap Receive and pick the kind: coins (a Lightning invoice, paid from any Lightning wallet) or nuts (an invoice the mint turns into ecash, or ecash pasted in).
connect() opens the embedded pocket frame. The pocket runs at its own origin; your scene never holds a key, a balance or a PIN.
connectBtn.onclick = () =>
pocket.connect(); // the pocket frame
// the shape of the SDK — a preview, not yet published
Empty pocket. Nothing to show yet.
DEMO · no real payment
Go anywhere.
Still just a URL.
A WebXR world is a website: open the link, press Enter VR or AR, you are in. Nothing asks about money until you decide to spend.
Your world is a URL and a session. Nothing about money runs until your scene asks, so a visitor who never spends never meets the bridge. The SDK adds no wallet code to your bundle; the pocket is never in your scene.
Target Rangea WebXR game
DEMO · no real payment
Give a world an allowance.
The allowance is the origin's.
The first time you want to pay somewhere, the world's Connect button opens your pocket's own page. You type your PIN there and say how much this world may spend: 500 sats. The world's address is printed on it. The world never learns your balance.
The user sets the allowance in the pocket's own UI, against the origin that asked. You never pass an amount. You can see what's left; you can't change it, raise it or spend past it. Today it lasts for the session; keeping it between visits is built and being verified.
Target Range wants to be able to ask you for sats.
a-world.example may spend
If a world has no allowance: This world has no allowance yet. Open your pocket to give it one.
If it asks for more than is left: 900 sats requested, 100 left of 100. Raise the allowance in your pocket.
set at wallet.satrium.org, not in your scene
DEMO · no real payment
Pay without leaving.
Ask, and wait.
Out of shots; one more round is 21 sats. The panel appears where you are already looking. You approve. It settles when the rail answers, the check lands, 479 left, you are back in the round.
requestPay({ paymentRequest, amountSats }) renders the panel: a 2D overlay, or the in-scene component the SDK ships. It resolves with a settled result, or a plain no: the player said no · more than they allowed · not connected yet · not enough in the pocket · the rail didn't answer. Grant the round after the result, not before.
const r = await pocket.requestPay({
paymentRequest: invoice, amountSats: 21 });
if (r.settled) game.grantRound();
// the shape of the SDK — a preview, not yet published
DEMO · no real payment
Same everywhere.
Build for every device.
The same world on your phone in AR, or on a laptop: same link, same panel. And when you win, the world can pay you: an offer appears in the session, you accept, +5 lands in your pocket. No app switching, no invoice pasting.
One link, built for every device-and-reality combo. Your job is the fun part: make the world feel right on each of them: hands in the headset, a tilt on the phone, a click on the laptop. requestPay() is the same call on all of them; the panel adapts, not your code.
headset · immersive VR · the panel floats in the world
DEMO · no real payment
Take it out.
Get paid. Zero custody.
Pocket money goes back to your main wallet whenever you like. Your pocket is not a trap. Press Send and either paste a Lightning invoice from any Lightning wallet (the mint pays it, your nuts are spent) or export it as ecash and paste it into any other ecash wallet.Pocket money goes back to your main wallet whenever you like. Press Send and either paste a Lightning invoice or export ecash. Coins leave over Lightning; your keys sign.
Your world has no Satrium pocket and never will. Each payment lands in your own wallet, as a Lightning payment or as ecash. Satrium holds nothing, so there is nothing of yours to take out.Your world has no Satrium pocket and never will. Each payment lands in your own wallet, as a Lightning payment or as ecash. Satrium holds nothing, so there is nothing of yours to take out.
More: Can I take sats out? on the Questions page.
Coins pay the invoice; nuts leave as ecash. Either goes anywhere.
SIGNED BY YOUR KEYS
DEMO · no real payment
What crosses the origin line
CROSSES
- amount
- origin
- verdict
- allowance left
NEVER CROSSES
- PIN
- keys
- balance
- recovery words
- history
The pocket
- Worlds can pay you back — accepted in-sceneLIVE
- Worlds can pay you back — accepted in-sceneCOOKING
- Allowances per world — set in your pocketLIVE
- Allowances kept between visits, until you reset themBUILT · VERIFYING
What's next · decided, not built yet
- one pocket across all your devices — designed, not built
- stable value on Bitcoin, through Liquid and RGB, in the same pocket — exploring
- things that aren't money, handed to you by a world — held in your pocket, on Bitcoin — exploring
- tiny payments without a tap, under a ceiling you set
- your pocket as a place: open it in VR or AR and stand inside it