Wherry
Built with
  • Solana
  • Anchor
  • Ed25519
  • WebGPU AI
  • ggwave

Offline payments on Solana · devnet

Pay with no signal.

Start the demo

When the network goes down, card payments stop. Wherry keeps the market open.

Your phone pays the shop with a signed offline payment, even in airplane mode. The money was locked on Solana first, so the payment is always good.

The shop checks it in milliseconds with no network, and collects every payment in one transaction when the signal comes back.

The whole product in one look

Signed offline. Checked offline. Collected on Solana.

No signal · payments still work

1 · Phone
Signs an offline payment. No signal needed.

Amara's kioskoffline

Signature valid · checked offline in 2 ms

Covered: $36.50 left in this tab after this sale.

AI officer on this device: looks normal.

Accept $3.50
2 · Shop
Checks it in milliseconds, still offline.
Wherry offline paymentNo. 0007
Pay toAmara's kiosk
$3.50
Collected0.6 s
3 · Solana
Collected in one transaction, about a second.

Built with

Solanadevnet program
Anchorescrow + settlement
Ed25519signed offline
WebGPU AIrisk officer on device
ggwavepay by sound
Animation: a small boat named Doggett carries payment number 7 for $3.50 from the phone's bank to the shop's bank. Halfway across the signal drops to nothing and the boat keeps going.
The signal drops halfway across. The payment still lands.

Three steps. Only the first one needs a signal.

01Online, once

Lock money in a tab

Before the signal goes, the customer locks test dollars on Solana and pairs their phone with it. Nobody can spend that money twice.

What's this?

Escrow. Money held by a Solana program, not by either side. Only signed payments for that tab can draw on it.

02No signal

Pay a shop offline

The phone signs a payment for one shop and one amount. The shop checks it in milliseconds, with no network at all.

What's this?

Voucher. An IOU your phone signs with an Ed25519 key that never leaves it. It names the shop, the amount and a serial number.

Wherry offline paymentNo. 0007
Pay toAmara's kiosk
$3.50from tab 7Qcw…r4MM
03Back online

The shop collects

When the network returns, the shop hands in its payments in one transaction. Solana checks every signature again and pays out of the tab.

What's this?

Settle. One onchain transaction that verifies each payment and moves the money from the tab to the shop, in about a second.

April 28, 2025 · Spain and Portugal

The power went out. In-store card payments fell 55%.

Source: Banco de España, Financial Stability Report, autumn 2025.

2.2 billionpeople were offline in 2025 (ITU).

When the network drops, card payments stop and the shop eats the loss. Wherry hands the shop money that was locked before the signal went.

Why I built this

A year ago, a landslide cut off the remote area I was in. There was no network, my fuel was running low, and I had no cash. I had money in my account and couldn't spend a cent of it, because every way I knew to pay needed a signal.

I looked online for something that worked offline and found very little a shop could actually trust. Later I learned how common this is: 2.2 billion people are still offline (ITU, 2025), and when the power went out across Spain and Portugal in April 2025, in-store card payments fell 55%.

Wherry is what I wish I'd had that day. I don't want anyone else to be stuck the way I was.

— Hotragn, solo builderBuilt for the MLH Solana Hackathon, November 2026

Is my money safe? Here's how it's protected.

The money exists first
Every payment draws on dollars already locked onchain. A phone can't promise more than its tab holds.
Checked twice
The shop checks the signature offline. Solana checks it again onchain, through its Ed25519 precompile.
Each payment counts once
Every payment has a serial. The tab keeps an onchain record of the 1,024 serials it can pay, and each one pays once.
The shop sees its worst case
Before saying yes, the shop sees what's left in the tab after its other uncollected payments, and how fresh that number is.
Shortfalls go on the record
If payments ever outrun the tab, the late shop gets what's left and the gap goes on the payer's public record.
Limits the shop sets
Each shop caps what it holds uncollected, per customer and in total. A small AI on the shop's own device can also say no.

Try it with two windows.

One window is the customer's phone, one is the shop. Lock test dollars, switch off the network, pay with a payment, then collect when you're back.

Open the app