Monero View Key — Selective Transparency Without Spending Risk

How to prove payments, enable audits, and monitor your wallet — without exposing your private spend key.

TL;DR

Your Monero view key lets others see incoming payments only without spending risk. Use it for tax audits, payment verification, or monitoring. For targeted disclosure, use per-transaction proofs (tx_key) instead of sharing the full view key. The view key does NOT show outgoing transactions or true balance.

Monero's Key Hierarchy

Every Monero wallet has four keys, derived from a single 25-word seed phrase:

Private Spend Key

The master secret. Authorizes spending. Never share this. Anyone with it can drain your wallet. Derived from your seed phrase.

Private View Key

Scans the blockchain for incoming payments. Sharing it reveals your deposits but cannot spend funds. Derived from spend key.

Public Spend Key (B)

Part of your Monero address. Used by senders to create stealth addresses. Public and safe to share.

Public View Key (A)

Part of your Monero address. Used with stealth addresses. Public and safe to share.

What the View Key Can and Cannot Do

CapabilityView KeySpend Key
See incoming paymentsYesYes
See outgoing paymentsNoYes
See true balanceNo (shows cumulative in)Yes
Spend fundsNoYes
Create transactionsNoYes
Generate subaddressesYesYes
Verify specific paymentYes (all incoming)Yes
Critical limitation: A view-only wallet shows all deposits but not withdrawals. If you received 100 XMR and spent 80, the view-only wallet shows "100 XMR received" — not the actual 20 XMR balance. For accurate balance, you need the spend key or key images export.

Use Cases

1. Tax Audits

In Germany, crypto held over 1 year is tax-free (§23 EStG). If a tax authority asks for proof, sharing your view key lets them see deposits without giving spending access. Combined with get_tx_key proofs for outgoing payments, you can provide a complete audit trail.

See our Monero Tax Guide for details on German/EU tax obligations.

2. Payment Verification (P2P Trading)

In P2P trading, you may need to prove you sent a payment. Instead of sharing your view key (which reveals ALL transactions), use a per-transaction proof:

monero-wallet-cli: get_tx_key <txid> Counterparty verifies: check_tx_key <txid> <tx_key> <address>

This proves a specific payment without revealing anything else. The counterparty sees: "Yes, this transaction sent X.XX XMR to this address."

3. Cold Wallet Monitoring

Keep your spend key in cold storage (hardware wallet, air-gapped laptop). Create a view-only wallet on a connected device to monitor incoming payments. You see deposits in real-time without your spend key ever touching the internet.

4. Merchant Payment Tracking

If you accept Monero payments, a view-only wallet on your server confirms incoming payments automatically. Your hot wallet only needs the view key — the spend key stays offline until you want to move funds.

How to Create a View-Only Wallet

Feather Wallet

WalletView-Only → Save. Creates a copy that can only view, not spend.

Monero GUI

Create new walletRestore from keys → Enter your address + view key. Leave the spend key field blank.

Monero CLI

monero-wallet-cli --generate-from-view-key wallet-view-only

Enter your address, view key, and restore height when prompted.

Per-Transaction Proofs (Better Than View Key)

For most disclosure scenarios, per-transaction proofs are better than sharing the full view key. They reveal only what you choose:

Proof TypeRevealsCommand
tx_keySingle outgoing paymentget_tx_key <txid>
tx_proofPayment to specific addressget_tx_proof <txid> <addr>
spend_proofAuthorship of a TXget_spend_proof <txid>
reserve_proofBalance at a point in timeget_reserve_proof all
P2P trading tip: When trading via Haveno or direct P2P, always save your tx_key immediately after sending. If a dispute arises, the tx_key is your mathematical proof of payment — unforgeable and independently verifiable.

Key Images: Fixing the Balance Problem

View-only wallets can't detect outgoing transactions. To fix this:

  1. On your full wallet: export_key_images keys.bin
  2. Transfer keys.bin to your view-only wallet device
  3. On the view-only wallet: import_key_images keys.bin

After importing key images, the view-only wallet shows the correct balance (including outgoing). You need to repeat this after each spending transaction.