XMR — Block —Hashrate —Tx fee ~—Converter

Monero Payment Proofs: How to Prove You Paid (and Verify It)

How to create a Monero payment proof in Feather, Cake Wallet or the CLI, how merchants verify it, and how tx keys, OutProofs and reserve proofs differ.

IntermediateBy the XMR Daily team7 min read
On this page
  1. Why a TXID alone isn’t enough
  2. Types of Monero proofs
  3. Before you start: does your wallet have the key?
  4. How to create a payment proof
  5. How merchants verify a proof
  6. When the tx key is lost: spend proofs
  7. Reserve proofs: proving a balance
  8. Proofs vs view keys
  9. Tips for merchants handling proofs
  10. A simple dispute routine

Key takeaways

  • Monero hides amounts and addresses, so if a merchant says it didn't get paid, you prove it with a proof from your wallet.
  • An OutProof (tx proof) is the preferred way to prove a payment to an address; a tx secret key also works.
  • The verifier needs the TXID, the recipient address and the proof or key, and checks it with their own wallet or a trusted tool.
  • Proofs only work if your wallet saved the transaction key; restoring from seed on a new device loses it.
  • Spend proofs show you authored a transaction, and reserve proofs show you control a balance.

On a transparent blockchain, proving a payment is easy: anyone can look up the transaction and see the amount and the receiving address. Monero hides both by default. That’s great for privacy, but it means “I paid, here’s the transaction hash” isn’t enough when an order is stuck or a merchant says the money never arrived.

Monero’s answer is cryptographic payment proofs. This guide explains which proof to use, how to create one in common wallets, and how merchants can check one.

Why a TXID alone isn’t enough

A transaction ID shows that a transaction exists on the blockchain. It doesn’t show who received it or how much they got, because Monero uses stealth addresses and confidential amounts. To link a transaction to a specific address and amount, the verifier needs extra secret data that only the sender (or receiver) holds.

That’s what a payment proof provides: enough information to verify one payment, without exposing your wallet’s other transactions.

Types of Monero proofs

Proof Who creates it What it proves Typical use
Tx secret key (tx key) Sender How much a transaction sent to a given address Older checkout systems, block explorer receipts
OutProof (tx proof) Sender The transaction paid a given address a given amount, signed by the sender Disputes with merchants, preferred method
InProof Recipient The recipient’s address received funds in a transaction Merchant proving receipt to a third party
SpendProof Sender You created the transaction (you spent its inputs) When the tx key is lost
ReserveProof Wallet owner You control at least a certain unspent balance Solvency checks, escrow, OTC deals

Key point: For everyday “I paid, where’s my order?” situations, use an OutProof. Fall back to the tx key if the merchant’s system asks for it, and to a SpendProof if your tx key is gone.

Before you start: does your wallet have the key?

Every proof that links a payment to an address relies on the transaction’s secret key. That key exists only in the wallet file that created the transaction.

  • Restored from seed on a new device? The tx key is not on the blockchain, so it won’t come back after a restore.
  • Cake Wallet: the “Save recipient address” option under Wallet settings → Privacy must have been enabled when you sent the payment. Restored or rescanned wallets won’t have the saved key or recipient address.
  • Monero CLI: transaction keys are saved only if store-tx-info is on. Run set to check, and set store-tx-info 1 to enable it.

Tip: If you pay merchants often, keep the wallet file you send from, and back it up along with your seed. The seed restores your funds, not your proof history.

How to create a payment proof

Feather Wallet

Feather has the most complete proof tools of any desktop wallet.

  1. Open the History tab.
  2. Right-click the payment and choose Create tx proof.
  3. Select Prove payment to an address.
  4. Add a message if the merchant asked for one, such as your order number.
  5. Check that the destination address matches the merchant’s invoice address.
  6. Click Get Formatted Proof for a single block of text that bundles the signature, address, message and TXID. This format works only in Feather, so if the merchant uses something else, click Get Signature instead and send the signature with the TXID, address and message separately.

If a merchant asks for the tx secret key instead: right-click the transaction, choose Show details, then Copy Tx Secret Key.

Cake Wallet

Cake Wallet works with tx keys rather than signed proofs.

  1. Open your Monero wallet and tap the sent transaction.
  2. Copy the Transaction ID, the Recipient address and the Transaction Key.
  3. Send these three values to the merchant, or create a receipt yourself on a block explorer that supports transaction receipts.

Monero GUI

In the GUI, open the Transactions page, find the payment and click the P button to generate a payment proof. Copy the result and send it along with the TXID and address.

Monero CLI

The getmonero.org guide and monero.how cover the CLI commands. The basics:

  1. Get the tx key: get_tx_key <TXID>
  2. Or create a signed proof: get_tx_proof <TXID> <ADDRESS> [<MESSAGE>]. The wallet writes the signature to a file named monero_tx_proof in your working directory.
  3. Send the merchant the TXID, the address and either the tx key or the contents of the proof file.

How merchants verify a proof

The verifier needs four things: the TXID, the recipient address, the proof or tx key, and the message if one was used.

In Feather

  1. Go to Tools → Verify transaction proof.
  2. For a formatted proof, paste it into the Formatted tab and click Verify.
  3. For a plain signature, use the Manual tab, choose the proof type and fill in the fields.

Feather supports verifying SpendProofs, OutProofs and InProofs. It doesn’t verify ReserveProofs, so use the CLI for those.

In the CLI

  • For a tx key: check_tx_key <TXID> <TXKEY> <ADDRESS>
  • For a signed tx proof: check_tx_proof <TXID> <ADDRESS> <SIGNATURE_FILE> [<MESSAGE>]

The wallet reports how much the transaction sent to that address, and how many confirmations it has.

Warning: A valid proof shows that a payment went to a specific address. It doesn’t prove the address belongs to the person you think it does. Merchants should compare it with the address on the original invoice; customers should keep a screenshot of the invoice.

Block explorer receipts

Some explorers offer a “transaction receipt” tool where you enter the TXID, address and tx key. Cake Wallet’s guide, for example, points to explorer.monero.com. That’s convenient for quick checks, but you’re sharing payment details with the explorer operator. For anything high-value, verify in your own wallet connected to your own node.

When the tx key is lost: spend proofs

If you restored your wallet and can’t get the tx key, you can still prove you made a transaction with a SpendProof:

  • CLI: get_spend_proof <TXID> [<MESSAGE>] writes a monero_spend_proof file.
  • Verifier: check_spend_proof <TXID> <SIGNATURE_FILE> [<MESSAGE>].

A SpendProof shows that you authored the transaction, but it doesn’t show the amount sent to a specific address. Pair it with the invoice and, ideally, the merchant’s own check of their wallet. Merchants with a view-only wallet can usually find your payment once they know the TXID.

Reserve proofs: proving a balance

A ReserveProof shows that you control at least a certain amount of unspent XMR, without moving it. It’s used in OTC trades, escrow arrangements and some business situations.

  • CLI: get_reserve_proof all [<MESSAGE>] or get_reserve_proof <AMOUNT> [<MESSAGE>] writes a monero_reserve_proof file.
  • Verifier: check_reserve_proof <ADDRESS> <SIGNATURE_FILE> [<MESSAGE>].

Note: A reserve proof reveals the key images of the outputs it covers. If those outputs are spent later, the verifier can see that they were spent. Only share reserve proofs with parties you trust.

Proofs vs view keys

Some people try to “prove” payments by sharing their private view key. Don’t do that for a single payment. A view key lets someone see every incoming payment to your wallet, past and future. A tx proof reveals one transaction. Save view keys for situations like accountants or auditors who genuinely need full incoming history.

Tips for merchants handling proofs

If you accept XMR, a clear proof policy saves your support team time:

  • Say which proof you accept. Tell customers whether you want a signed tx proof, a tx key, or either, and which address they should prove payment to.
  • Ask for a message. Requesting the order number as the proof message ties the proof to that order.
  • Verify against your own records. Check the address in the proof against the invoice you issued, and use your own wallet or node to verify.
  • Never ask for seeds or spend keys. A customer never needs to share them to prove a payment. Any “support agent” asking for a seed is a scammer, and saying so in your FAQ helps protect your customers.

A simple dispute routine

If an order shows as unpaid:

  1. Check the payment on your side: confirmations and amount sent.
  2. Compare the invoice address and amount with what your wallet sent.
  3. Create an OutProof (or copy the tx key) and include your order number in the message.
  4. Send support the TXID, the invoice address, the proof and a screenshot of the invoice.
  5. If you underpaid because of fees, offer to send the difference to the same invoice or a new one, as support instructs.

Most “missing payment” cases are underpayments, expired invoices or payments still waiting for confirmations. A proof clears up the rest in minutes. For more on paying merchants, see our Use & Spend XMR section, and for wallet setup questions, our wallets section.

Frequently asked questions

How do I prove a Monero payment to a merchant?

In your wallet's transaction history, open the payment and create a transaction proof for the recipient's address, or copy the transaction secret key. Send it with the TXID and address so the merchant can verify the amount received.

Why can't I find the transaction key for my payment?

Transaction keys are stored only in the wallet file that sent the payment. If you restored the wallet from its seed on another device or rescanned it, the key is gone, and you'll need a spend proof instead.

Does a payment proof reveal my balance or other transactions?

No. A tx proof or tx key only reveals what one transaction sent to one address. A reserve proof is different: it shows the verifier the balance you choose to prove.

Can I verify a Monero payment without running a wallet?

Some block explorers offer transaction-receipt tools where you enter the TXID, address and tx key. For important checks, verifying in your own wallet connected to your own node is more trustworthy.

Sources and further reading

  1. How to prove a payment was made — getmonero.org
  2. How to prove a payment — Feather Wallet docs
  3. How to verify a transaction proof — Feather Wallet docs
  4. Prove a Monero payment — Cake Wallet docs
  5. How to prove a Monero payment with the CLI — monero.how
  6. Monero view key — Moneropedia
  • payment proof
  • tx key
  • feather wallet
  • merchants
  • disputes