Your first offline payment
A step-by-step walkthrough of sending from a wallet whose keys are on your offline device: prepare, scan, check, sign, scan back, send, and Monero's extra first round.
This walks you through one payment from a wallet whose keys are on your offline device. You need the wallet watched on your everyday device first: see Set up an offline signer.
For your first one, send a small amount. It's the easiest way to see the whole loop working before real money depends on it.
1. Prepare the payment on your everyday device
- Open the watched wallet and tap Send. (Or tap Offline → New transaction, and pick the wallet under From.)
- Choose the Asset, then fill in To and Amount. Max sends everything the wallet can.
- Bitcoin: pick a Speed (Fast, Normal or Slow).
- Zcash: you can add a Memo, which only the recipient can read.
- Bitcoin, SOL and Monero: Pay several people adds more recipients to the same payment, with one fee.
- Tap Create code.
Your everyday device shows Scan on the offline device, with a QR code and a one-line summary under it (amount and recipient). Leave it on screen.
Bitcoin and Ethereum payments need the wallet watched on this device: it needs the wallet's coins (Bitcoin) or its transaction count (Ethereum). A Solana payment can also leave the choice of wallet to the offline device (Any wallet on the offline device).
What the codes look like
Most payments fit in one QR code. A bigger one (a Zcash send, for example) is an animated code: a loop of frames, with a note to hold it in front of the camera until it's read.
- Hold the camera steady and let it collect the frames. Missed frames don't need to come round again: a few more of any frames make up for them.
- Tap a code to enlarge it. If the camera struggles with a dense animated code, tap Bigger dots, slower in the enlarged view.
- The screen stays on while a code is shown.
Solana and Zcash codes have time limits:
- Solana: the code renews itself every 15 seconds, and a signed Solana payment is good for about a minute. If it expires, nothing is sent: do it again.
- Zcash: about an hour.
2. Scan it on the offline device
On the offline device, tap Scan and hold the camera up to the code on your everyday device.
3. Check it on the offline screen
The offline device shows what the transaction does, worked out from the transaction itself. This is the one screen you can trust: a hacked everyday device could have changed what it prepared, but it can't change what the offline device reads from the code.
Check:
- To: the full recipient address. Compare it, character by character, with the address the recipient gave you. If the address is in your contacts, its name shows. If it only looks like an address you've paid before (the same start and end, different in between), a warning says so: scammers count on look-alikes.
- The amount and what's being sent.
- The fee.
- From: which of your wallets pays.
- Any warnings. For example, a fee that looks too high, a payment that looks like one you've already signed, or more than the wallet had, by your everyday device's last report.
If anything is wrong, tap Cancel (or Reject). Nothing is signed. What the signer checks for each coin, and what it refuses: What the signer checks.
4. Sign it
Tap Sign.
If the fee is far higher than usual, the note above the buttons turns into a question and the button reads Sign anyway. Tap it again only if you mean it. A busy network can need a high fee, so AirWallet asks rather than refuses.
The offline device shows Signed, with a QR code and the note "Scan it with your online wallet: Scan signed code." Signing sends nothing: the offline device can't. The payment now shows under Pending on the offline device.
5. Scan the signed code on your everyday device
On your everyday device, tap Scan signed code → under the code it showed in step 1 (if you closed it: Offline → Scan signed code), and hold its camera up to the offline device's screen.
6. Send it
Your everyday device shows Confirm: what the signed transaction sends, to whom, from which wallet, on which network, and its fee. Tap Send.
It's on its way. A payment is never sent twice: if the network's answer gets lost, AirWallet looks for the transaction by its own ID before trying again.
On the offline device, the payment stays under Pending until a later code from your everyday device (any payment, or Offline → Sync balances) reports that it went through. If you need the signed code again, Show again gives the same one: it can only land once.
Monero: one extra round, the first time
Monero hides which coins are spent behind "key images", and only the spend key, on your offline device, can make them. Your everyday device watches with the view key, so the very first send from a watched Monero wallet takes two rounds:
- Everyday device: Send → fill it in → Create code. The code says Step 1 of 2, nothing to approve yet: the offline device will only check which of the wallet's coins are already spent. Tap Scan its answer →.
- Offline device: Scan the code. It shows Step 1 of 2: which coins are spent: a code with the key images. Nothing was signed, and no keys are in it.
- Everyday device: scan that answer. It goes straight on to step 2 and shows the transfer itself: Step 2 of 2.
- Offline device: Scan, check the recipients, amounts, fee and change, then Sign.
- Everyday device: Scan signed code →, then Send.
After that, it's one round every time: each signed transfer carries the key images back to your everyday device.
A few things to know:
- Finish both rounds within the hour, without restarting the everyday app. Otherwise the everyday device just records which coins are spent, and you start the transfer again.
- If you spend from the same Monero wallet somewhere else, the node may refuse your next send from here as a double spend. AirWallet then asks for step 1 again.
- A very high Monero fee is never refused: like other coins, it's warned about, and a far higher one asks once more.
Zcash: one round
A Zcash send is one round, like Bitcoin. The code is animated, and while you check and sign on the offline device, your everyday device makes the zero-knowledge proofs.
If something goes wrong
- The camera won't read the code: enlarge it (tap it), turn the screen brightness up, and for animated codes try Bigger dots, slower. The camera view has a light button when the camera has a light.
- A device says the code was made by a different version: your two devices run different AirWallet versions. Update both to the same one.
- A Solana code expired: nothing was sent. Start again, and scan the signed code back within the minute.
AirWallet