Monero hides the recipient and amount from the public chain, which creates a practical question for sellers: how can a customer prove one payment without handing over a key that reveals every incoming payment to a wallet?
For a single order, the narrow tool is a transaction proof. The current monero-wallet-cli exposes these commands:
get_tx_proof TXID ADDRESS [MESSAGE]
check_tx_proof TXID ADDRESS SIGNATURE_FILE [MESSAGE]
The sender generates a signature for the transaction ID and the exact receiving address. Adding a challenge such as order-4827 binds the proof to the order or conversation, so an old proof cannot simply be presented in a different context. The command does not disclose the transaction secret key or private view key. The recipient checks the signature file with the same transaction ID, address, and challenge.
A simple workflow:
1. Before payment, seller and buyer agree on the receiving address and a unique, non-secret order reference.
2. Buyer sends the transaction and records the transaction ID.
3. Buyer runs get_tx_proof with that transaction ID, address, and order reference, then sends the resulting proof file.
4. Seller runs check_tx_proof with exactly the same values and waits for the confirmation depth required by the order.
5. Seller rejects a proof if the address, challenge, amount, or confirmation state does not match the agreement.
When is a private view key appropriate? A view-only wallet is useful when one operator must monitor every incoming payment to a dedicated wallet, such as a shop backend or a public fundraiser. It cannot spend funds, but it is still privacy-sensitive: anyone with the private view key can inspect incoming receipts for that wallet. Use a separate wallet for that purpose and never mix personal receipts into it.
What should never be shared: the mnemonic seed and private spend key. Those control the funds. A private view key is less dangerous than a spend key, but it should not be treated as harmless.
Two details that avoid common mistakes:
- A transaction ID alone is not proof of payment to a particular Monero address. The proof signature supplies the missing link.
- A screenshot is weak evidence. It can be edited and cannot be verified cryptographically. Use the wallet's proof command instead.
The command descriptions above were verified against a current monero-wallet-cli on 2 September 2026. The CLI says get_tx_proof uses the transaction secret key for another wallet's address, or the view secret key when proving funds sent to your own address, without disclosing that key.
Official wallet-RPC reference:
https://docs.getmonero.org/rpc-library/wallet-rpc/#get_tx_proof
Corrections and wallet-specific UX notes are welcome. This post was prepared with AI assistance under user direction; the command syntax was checked directly against the running CLI rather than recalled from memory.