XMR/USD
$324.18
0% 1 HR
24HR Change
-1.2%
Price
$324.18
Market Cap
$5.979B

Proving You Paid Someone in Monero: Transaction and Reserve Proofs Explained

> Getting Started>Guides > Proving You Paid Someone in Monero: Transaction and Reserve Proofs Explained

Proving You Paid Someone in Monero: Transaction and Reserve Proofs Explained

Monero’s privacy is real, which creates a practical problem: how do you prove to a third party that you actually sent the money? A merchant says the payment never arrived. A landlord wants confirmation the rent left your wallet. An exchange or arbitrator asks for evidence of a transfer. Bitcoin users paste a transaction ID and everyone can verify it on a public explorer. Monero users cannot, and that is by design.

The Monero wallet has built-in tools for exactly this situation. Used correctly, they prove payment without surrendering your privacy. Used incorrectly, they prove nothing and waste everyone’s time. Here is how each one works and when to reach for it.

The transaction proof

Every Monero GUI and CLI wallet can generate a proof, sometimes called a signature, for a specific outgoing transaction. The wallet takes the transaction, your private transaction key and the recipient’s address, and produces a short file or string. Anyone can then verify that proof using the wallet software: it confirms that the specified transaction sent a specific amount to a specific address, mathematically, without revealing anything else about your wallet.

In the GUI this lives under the transaction details dialog as “Prove Transaction”. In the CLI it is the get_tx_proof command. Verification is the mirror command, check_tx_proof, which the receiving party runs against the proof you sent them.

Two details matter in practice. First, the proof names the amount and the recipient address, so make sure the proof you generate matches what the other party expects. Second, the proof only exists for transactions sent from your own wallet. You cannot generate one for a payment someone else made, which is what makes it meaningful evidence.

The reserve proof

Sometimes the question is not “did you pay” but “do you actually hold what you claim”. A reserve proof demonstrates that a given wallet controls at least a stated amount, without revealing the address or the full balance. Exchanges have used reserve proofs for solvency demonstrations, and private parties use them in high-value deals where proof of funds is a precondition.

In the GUI it is under Settings, Wallet, “Prove Reserve”. In the CLI, get_reserve_proof takes an optional minimum amount: you can prove you hold at least 50 XMR while holding far more, and nothing in the proof leaks the true figure. The verifier runs check_reserve_proof with your address and the proof string.

Note the trade-off: a reserve proof necessarily ties the demonstrated funds to an address you control. If that address is one you plan to keep using privately, generate the proof from a dedicated wallet instead.

What a proof does not do

This is where most confusion lives, so it is worth being blunt.

A transaction proof does not prove the recipient received and controls the funds. It proves the transaction targeted their address. If the recipient lost their keys or gave you a wrong address, the proof is still valid. Conversely, the recipient can prove receipt with their own wallet: incoming transactions can be proven with the same mechanism in reverse, using the wallet that received them.

A proof does not reveal anything about your other activity. Your balance, your other transfers and your counterparties stay private. That is the entire point of the construction, and it is why Monero’s proofs are a better compromise than screenshotting your wallet, which proves nothing, or sharing a view key, which discloses everything.

Common failure modes

The proof was generated on a different network or after a wallet restore from seed without re-fetching the private transaction keys. Transaction keys are stored by the wallet when a payment is sent; a restored wallet that has not been synced completely may not have them. If get_tx_proof fails, sync fully first.

The verifier pasted only part of the proof string. Proofs are long, and chat applications love to truncate or mangle them. Send proofs as files or in code blocks, not as wrapped plain text.

The parties verified against the wrong transaction. Check the transaction hash matches what the recipient sees, character for character, before concluding anything about who is wrong.

A practical workflow for a disputed payment

  1. Generate the transaction proof from the wallet that sent the payment, for the exact transaction and amount in dispute.
  2. Send the proof, the transaction hash and the recipient address you used to the counterparty.
  3. Have them verify with check_tx_proof or the GUI’s verify dialog, or ask a neutral third party to run the verification.
  4. If verification passes but they still see nothing, the problem is their wallet sync or their view of incoming funds, not the payment itself.

Keep the proof. It remains verifiable indefinitely, which makes it durable evidence long after a screenshot would prove nothing.

Why this matters more as Monero grows

Privacy coins attract scrutiny precisely because they are private. Demonstrable, selective proof is the practical answer to “how can anyone trust Monero payments”: the tools exist, they are audited, and they disclose only what the situation requires. Learning to use them before you need them turns a potential dispute into a five-minute conversation, which is a better outcome than any of the alternatives.


Leave a Reply

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