If I pay someone, and they then claim that the payment has not been received, how can I prove that the payment was in fact sent?

2 Answers 2


When you send a transaction, a one time random keypair is generated. You can later see it with get_tx_key txid, replacing txid with the transaction id for the transaction in question.

You can then send an auditor/arbitrator three pieces of data: the standard address you sent to, the transaction id, and the tx key for that transaction. The auditor can then use check_tx_key txid txkey address, replacing the three arguments with the information you supplied. The command will return how much monero was transfered to that address in that transaction.

If your transfer was split in multiple transactions, you need to supply the txid/txkey pairs for all of those, and the auditor can sum up the results.

Note that these tx keys are stored in the cache file. If you send a transaction, then kill simplewallet without saving (or simplewallet crashes before saving), the tx keys will be lost, and you will be unable to prove transfer. So make sure you exit simplewallet cleanly, with the exit command.

Last, there is a known problem with the upgrade from 0.9.4 binaries to 0.10.0 binaries, where the wallet cache can't be loaded. If this happens to you, you can load the cache with 0.9.4 to query the tx keys. This will be fixed in 0.10.1, so keep your wallet cache if this applies to you.

  • Thanks for the response. Will the tx keys be stored permanently at some point in the future?
    – Alexde
    Commented Oct 2, 2016 at 20:37
  • What do you mean by "permanently" ? On the blockchain ? No.
    – user36303
    Commented Oct 3, 2016 at 11:46
  • I mean in a way that is resistant to being lost from a crash, improper closure of the wallet, etc.
    – Alexde
    Commented Oct 3, 2016 at 15:29
  • @user36303: What is contained in the transaction key, is it just the random r value(s) used to generate the output(s) for the receiver's address along with that address, or is there more to it?
    – user141
    Commented Oct 3, 2016 at 16:02
  • 1
    It is r. As for a database, whenever a patch to make it a database is contributed. hyc, a monero contributor with in depth database knowledge, is thinking about what's needed for this at the moment.
    – user36303
    Commented Oct 3, 2016 at 16:59

To add to User36303, you can do this easily online with Luigi1111's tool: http://xmr.llcoins.net/checktx.html. Just input a recipient address, a transaction ID, and a transaction key, and the tool will plug into the API of MoneroBlock.info and prove that a specific amount was sent.

Edit: Good followup by User36303 below. Luigi's tool is fine for casual confirmations, but for significant transaction confirmations a trustless independent analysis of the blockchain is probably the best first step, using the check_tx_keycommand referenced above. Luigi's tool might be a decent second confirmation in these situations, however it entails a degradation of privacy since using it broadcasts your knowledge of the transaction to third parties.

  • This does not prove the amount was received. It shows a third party tells you the amount was received.
    – user36303
    Commented Oct 3, 2016 at 11:47
  • @user36303 Are you sure you didn't misspeak? It doesn't prove you sent the amount, but it does prove that amount was sent (and received).
    – Luigi
    Commented Oct 3, 2016 at 18:46
  • I meant to highlight the difference between querying the blockchain (verified locally) and querying a third party who (claims to) verify the blockchain.
    – user36303
    Commented Oct 3, 2016 at 19:21

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.