Monero proof of payment. How to prove a payment was made? Verifying XMR transaction. Payment proofs are helpful for spenders to prove the receiver that they’ve sent funds to them.
When you send money to someone you need to be able to prove that you’ve made the payment. In some cases the recipient may claim that they never got your payment who might then dispute the payment that was made. So how do you prove you’ve sent XMR to the receiver of the transaction?
Since XMR is a completely anonymous cryptocurrency, you can’t just share the transaction ID. All the transaction information is encrypted and is inaccessible to everyone. In order to prove Monero transaction that is to prove the sending of funds the transaction needs to be decrypted.
Here in this guide we’ll show you how to prove Monero payments. We’ll explain both the scenarios. How do, as a sender you can prove that you’ve made a payment? And How do, as a recipient you can verify that the transaction has actually arrived?
XMR transaction confirmation
So you’ve sent funds but the recipient did not receive it. Monero transaction takes few minutes and it requires a minimum of 10 block confirmations before the transaction gets finalized and considered as complete.
You can check whether or not your Monero transaction has been mined successfully by looking at your transaction ID. Monero transaction ID shows basic information about the transaction such as confirmation, transaction fees, block, transaction size, and payment ID.
How do I look up a Monero transaction? To check this visit any Monero block explorer and paste your TxID: https://www.exploremonero.com/, https://localmonero.co/ and https://xmrchain.net/. Using these service you can check if your transaction has been confirmed and how many confirmation it has. In some rare cases, the transaction can take up to several minutes to reflect. So if you’ve just made the transaction then wait for a few minutes to go through. Once the transaction is confirmed on the blockchain you can then prove / verify payment.
Proving Monero transactions
With Bitcoin, ETH and other cryptocurrencies the transaction information is publicly available on the blockchain. The transaction ID reveals the origin address, destination address and the amount used in the transaction. However such information is not available publicly on the Monero blockchain.
Monero does not disclose the amount used in a transaction, nor it reveals the sender or receivers XMR address. In outgoing payments you won’t see the recipient address and, in incoming ones you won’t see the senders address. Simply the amounts or the addresses involved in the transaction will remain hidden.
Being a privacy coin transaction details is completely hidden for anyone who is looking up for specific Monero transaction details on the block explorer. And unlike other transparent blockchains, one cannot view the balance of a Monero address. Even the owner of the address cannot view their own account balance on the Monero blockchain.
Payments in Monero
So how does one provide “proof” of payment to the sender when the transaction id doesn’t reveal much information. Every Monero transaction has a distinct transaction key attached. It’s a random number generated by the senders wallet at the time of transaction creation and only the sender knows this.
If you are a sender and if you need more information about the particular transaction such as the amount used and the sender / recipients address you will need your transaction key or secret view key to prove the amount came from you. If you are a receiver you can ask the sender to furbish the transaction private key so that you can verify the specific transaction.
Before we see about transaction private key let’s understand the different key types used in Monero. .
Private View Key
The private view key in Monero is needed to view all transactions related to an address. The data that is associated with your address is not publicly available on the Monero blockchain. In order to know the balance and to view other transaction information associated with that address the private view key is required. The private view key is derived from the private spend key.
Private spend key
Private spend key is basically private key that allows you to spend XMR from an associated address. When you send Monero your wallet uses the private spend key to sign the transaction. Unlike the view key, Monero private key should never be revealed to anyone. Doing so will provide them access to your XMR associated with that address. Remember if someone gets to know your private spend key then they’ll get hold of your Monero.
Transaction Key (TX key)
The transaction secret key or tx key is what used to prove that a transaction was made on the Monero blockchain. Every Monero transaction has a unique transaction key attached which can only be viewed from the device from which the transaction was sent. It can only be viewed by the sender and as a sender you can use this key to verify a send transaction.
Alright! Now let’s see how to decrypt the transaction.
How to prove Monero transaction?
To prove the recipient that you’ve made a payment you must supply the recipient with the following three pieces of information:
- The transaction ID or Tx Hash of a transaction.
- The recipients XMR address. The address to which the transaction was sent.
- The Tx Private Key or the transaction key.
While the transaction ID and the public address is a common across all cryptocurrencies the transaction private key is unique to Monero. When you send a transaction from your wallet a one time random key-pair is generated for that transaction and you nee this secret key to prove the payment. Here is how to find it.
Obtaining transaction secret key
When you create a transaction, a one time secret key was automatically generated by the wallet just for that transaction and this private key is available only to the sender. In most Monero wallets the transaction key is shown in the transaction details. This only appears on the original wallet / device from which the transaction was initiated. It cannot be viewed on any other device even if you import your same wallet on some other software / hardware using mnemonic recovery phrase.
To prove payment you need to provide details of your payment to the recipient. Mainly you need the TXKEY. This key is only stored locally and to obtain this you must have access to the same wallet from which the XMR was sent.
You know your recipients XMR address to which you sent Monero. Let’s now see how to obtain the other two key information that is: transaction ID and the Tx private key of a transaction on different wallets.
Monero GUI Wallet
Open Monero GUI wallet and after you’ve sent the transaction go to history page where you’ll see all your transactions.
Open the transaction which you need to prove. It will show your the transaction ID, click on it to copy the TX hash. Next to get the payment proof that is the transaction key for that transaction click on P.
Note: The transaction private key is different from your transaction ID. While the transaction ID shows general information about the transaction, the TX secret key reveals more details of the transaction which one can send to the intended user to prove the transaction.
Now you have both the transaction ID and the transaction key.
Here are the steps to obtain the transaction key of a payment you’ve sent.
show_transfers command to see the list of payments you’ve made from the CLI wallet. The command will output the list of transactions.
Now locate the Tx ID of the payment which you need to prove that you’ve sent. Next use the
get_tx_key command like this to obtain the transaction key for that particular transaction ID.
Replace txid with your transaction id.
This will return the TXKEY for your TXID
Note: This will work only if monero-wallet-cli is set to save transaction keys. To check this type the following command:
set store-tx-info 1
Once you’ve obtained the TXKEY you can then send the TXKEY and the TXID to the person whom you need to prove your transaction.
Other Monero Wallet types
Whether it’s a multi currency wallet or Monero specific wallet the wallet allows you to see each individual transaction details inside your wallet. Open the transaction to view Tx Hash, wallet addresses used in the transaction and the transaction private keys.
While most Monero wallets save the transaction private key locally there are some wallet types like for example MyMonero and few others which does not store the tx private keys. Therefore, it’s not possible to obtain the tx key from them. And since this information is generated and stored locally by the wallet its not possible to obtain them by restoring via another wallet from seed. By restoring wallet you’ll be able to view the balance and the transaction history but you cannot recover the tx key as it is only generated and saved by the wallet that sends the tx.
Note: The tx keys are stored in the wallets cache file. There are exchanges, some multi-currency and Monero specific wallets that do not supply this TX key information. If your wallet or the exchange from which you transferred Monero does not supply the private transaction key then there is nothing you can do. Well, in this case there is another method to prove transaction and we’ll explain that shortly.
Proving and Verifying XMR payment
First let’s see how to prove Monero with a send receipt
Proving that you have sent payment
To Prove XMR transaction to the recipient you can send a receipt that proves your transaction. To generate a receipt you can use any Monero block explorers.
For example go to https://www.exploremonero.com/receipt and type in the transaction ID in question, the recipients Monero address and the transaction key which you obtained from your wallet.
Once you entered all this click on get receipt which will show you the payment receipt.
You can share this receipt link to the recipient to prove your payment.
The receipt includes the amount sent in the transaction, recipients XMR address and other details of the transaction such as private / secret view key and stealth address.
Using this method you can also get receipt for a transaction that sent XMR to multiple addresses.
Note: Since the transaction key is generated by your wallet knowing the key proves you’re the sender of a TX. You can disclose this key to the recipient and they can check to ensures if it matches. If anyone else got to know your transaction key, your wallet address and the tx id then they could also claim that they are the one who sent funds and it would still be a plausible claim. So its advised that you disclose TX key to the recipient via an encrypted message.
Okay, Now let’s see how to verify the proof of payment
Verify XMR deposit
Let’s assume you are the recipient now and you wish to verify the transaction which just arrived. To verify the deposit the sender has to send you the tx secret key for that transaction along with the transaction ID
Now there are two ways to verify the proof that someone has provided you for a transaction. 1. Using Monero block explorer which we just covered. 2. Using your wallet.
Prove / Check transaction – GUI & CLI
Open your Monero GUI Wallet and and go to the Advanced > Prove / Check screen. Now enter the transaction ID, your XMR address that received the amount and the Tx signature. Click check to verify the Monero deposit.
On CLI wallet to verify a deposit use the following command: This will confirm the Monero transaction.
check_tx_key TXID TXKEY ADDRESS
To decrypt the transaction replace the three arguments “txid” “txkey” and address with the information that has been supplied to you by the sender.
check_tx_key 75faf040c8a27d960c4c7485bc56025d3815d693ef58e965be86a05efb5e6d0e adfbb781098256fy715aertfa3e96f721564150ef4e7b102e400f532a62a90a 88j15G5499c3xcDnCFqQzC2SGCDdw9esL8z1jTTwCU6AKhMTfAxEiNACR7bQwMppuD7Q3zAZPtoQmaCijG7ygivkD3dsUz8
This command will return how much Monero was transferred to your XMR address in that transaction.
Okay, Now what if the sender can’t obtain the tx key?
Proving transaction without secret key?
Since the tx key is stored in the wallet’s cache file it only remains temporarily. What if the sender lost his transaction key and can’t obtain it anymore? How can he now prove the payment came from him?
Since he has lost the Tx Key they can’t prove that they created the output but they can still prove that the input (address) used in the transaction came from him. He can do this by signing some message using the input address in that transaction. To sign a message the sender needs to use the private spend key and most Monero wallets supports this signing feature. To learn more check out these two guides: