• September 11, 2026

How to Verify a Monero Transaction With a View Key and Settle Payment Disputes

A seller accepts Monero for a laptop. The buyer sends the funds, the seller sees nothing in the wallet, and both sides start arguing about who is lying. This scene plays out constantly, and it happens because Monero’s privacy design hides the very information people instinctively check. In Bitcoin, you look up the address on a block explorer and settle it. In Monero, that address shows nothing to anyone. The tool that resolves this is the view key, and understanding it explains a lot about how Monero privacy actually works.

The key split: spend key and view key

A Monero wallet is built from two secret keys, not one. The spend key signs transactions and controls funds; it is the key that must never leave your control. The view key is a separate secret that can see incoming transactions destined for the wallet, and nothing else. This split is what makes selective transparency possible: you can hand someone the view key, or run a view-only wallet, and they can verify that funds arrived without ever gaining the ability to move them.

The private view key sees only inbound. It cannot reveal what you spend, where outbound funds went, or sign anything. If you give a merchant or an auditor your view key, you are showing them your incoming mail, not your outgoing letters.

How you actually verify a payment

There are two practical methods, and they suit different situations.

Method 1: view-only wallet. Export the private view key plus the wallet’s restore height (the block number when the wallet was created) into a fresh view-only wallet on any machine, using the official GUI or CLI. Sync the chain from that height. The view-only wallet lists every incoming transaction with amounts and timestamps. This is the right method for ongoing monitoring: a shop that wants a payment-watching machine that cannot possibly spend the funds.

Method 2: per-transaction proof. This is the cleaner tool for a one-off dispute. The payer, not the receiver, generates the proof. In the CLI this is get_tx_proof <txid> <address> [<message>]; in the GUI it is the same function under the transaction details pane. The payer then sends you the resulting signature string, a short base64 blob that travels fine over chat or email. You check it with check_tx_proof on your side. A valid proof cryptographically demonstrates that a specific transaction on the blockchain paid a specific amount to your address, without either party exposing private keys. Adding a message, such as an invoice number, binds the proof to the deal.

Also worth knowing: each Monero address also has a public view key and public spend key baked into it, which is how the network recognizes incoming funds without revealing them. That public pair is safe to share and is not the tool for dispute resolution; the private view key and tx proofs are.

Why this matters for merchants more than buyers

A merchant accepting Monero has an accounting problem that Bitcoin merchants do not. With no public explorer showing your addresses’ balances, how do you demonstrate revenue to an accountant, prove a payment arrived to a customer’s satisfaction, or monitor for incoming payments on a server that might get compromised? The standard architecture is a view-only wallet on the payment server and the full wallet, spend key included, kept offline. If the server is breached, the attacker can watch payments but cannot steal a thing.

Exchanges use the same construction at scale. Custodial services keep spend keys in cold storage and run hot infrastructure on view keys alone, which is exactly the threat model a small merchant should copy.

Setting up a view-only wallet step by step

In the official GUI: open your full wallet, choose Settings, then Wallet, and use “Export private view key” (on some versions it lives under the restore-from-seed screen as “Show secret keys”). Note the restore height before you do anything else; without it your view-only wallet will try to scan from genesis and the initial sync can take hours. On the watching machine, create a new wallet, choose “Restore from keys”, and enter your address, the private view key, and that restore height. In the CLI the equivalent is monero-wallet-cli --generate-from-view-key <name> <address> <viewkey> <blockheight>.

Once synced, the view-only wallet shows every incoming transaction with amount, timestamp, and transaction ID. It will show zero balance even when the full wallet holds funds, because spend information is invisible to it. That is expected, and it is the design working correctly, not a sync failure.

Limits to state plainly

A view key proves funds came in. It does not prove funds are still there, because spends are invisible to it. For the cryptography underneath, see our explainers on what ring signatures actually do and verifying transactions with a view key. If you need to prove a balance, the wallet’s sign function on a message, or an audit with the auditor running a full wallet under supervision, is the appropriate instrument. And a view key shared once is shared forever: rotate expectations accordingly, since anyone holding it can watch all future inbound transactions.

The takeaway

Monero did not remove verifiability, it moved it from the public ledger into cryptographic proofs held by the parties. For a live payment feed, run a view-only wallet. For a one-off “did you pay” argument, demand a transaction proof. Both take minutes, and both resolve disputes that a block explorer never could in a privacy coin.

admin

Read Previous

What Ring Signatures Actually Do in Monero, and Why the Ring Size Number Matters

Read Next

Monero Tail Emission Explained: The 0.6 XMR Reward and What It Means for You

Leave a Reply

Your email address will not be published. Required fields are marked *