If an online store accepts crypto payments directly into its wallet there is a problem:

"Anyone can make a small transfer to any BTC address derived from the MPK so they can watch the store's and its client's funds as soon as the owner transfers funds from her wallet. I suppose possibly that the person who did this wanted to know if cracking the store worth the effort."

In a previous question a user replied that a solution to this is to use a crypto payment processor like BitPay but:

  • How they handle wallet privacy? Isn't it the same? The BTC only gets to make a higher number of transactions between different addresses but still, they can be traced to the store owner's wallet and her client's afaik.

  • Or if the transaction is too small to match the price of the purchase, BitPay returns the transaction to the originating address and the BitPay address that accepted the transaction gets dumped so it can't be used to trace BitPay's customer real address?

  • Another way I think this could be avoided as well is if BitPay converts the payment to fiat, then to BTC again and then transfer the funds to the customer wallet.

  • Wouldn't it be easier just to avoid payment processors and convert the BTC to a privacy coin like Monero? For example using a transitional wallet in the store to accept payments, making smaller transactions to an exchange, converting to Monero and back to BTC and then transfer to the owner's real wallet?

  • Could this method conceal the store owner and her client's wallet balance to any potential hacker who makes a small transaction to any store wallet MPK derived address?

  • Or the only way is to use a payment processor? If so, then how they conceal their customer's wallet balance?

Thanks for your attention, it's a confusing subject for me and I hope to have written my questions as succinctly & understandably as possible.

2 Answers 2


TL;DR: your question is a valid one; there is no easy solution but CoinJoin and XMR swaps will help.

The 3rd party payment processors use wallet that is shared for all customers so this specific attack against specific merchant is not effective. But then you have another problem: the payment processor itself will leak your data, 1) ~legally to multiple partners, surveillance companies, regulators and LE 2) accidentally due to security breach, ransomware, etc 3) illegally, the data will simply be sold at some point. So it's a big no-no.

So what are the options?

To start with, use open source, self-hosted payment processors running against your own node. Examples include https://btcpayserver.org/ or https://cypherpunkpay.org/ (disclousure: author).

Then either:

  • pass coins through JoinMarket or Whirlpool
  • swap coins to XMR via near-instant, no-KYC exchanges (then wait because you cannot simply swap the same amount back to BTC)

The important thing is to work with individual coins (UTXO-s) or very small groupings of these - just to fit minimal thresholds required by the privacy tool of your choice.

Another important consideration is to use separate Tor circuits (IP addresses) for each coin or group, because the whole point is to avoid linking them together.


First of all the initial assumption is incorrect. Just because you sent coins to one of my addresses doesn't mean you will see my whole wallet. My wallet software may incorporate those coins in a transaction but it may or may not include all the other unspent coins in my wallet. It'll select unspent coins according the amount I wish to send and incorporate only the ones needed to meet that amount.

The second thing is that it's hard to tell from the blockchain which addresses are part of my wallet and which ones aren't. So for example you may not be able to tell which outputs are change and which are intended for the recipient.

As for bitpay they generate their own addresses and don't ask you for your MPK. To get paid you have to initiate a withdrawal. They pay you in fiat if that's what you request or they send bitcoin to your wallet. They don't pay you after every transaction. Only the total amount when you ask for it.

Bitpay is totally regulated so you will have to comply with anti money laundering and know your customer laws.

There are no originating addresses in bitcoin. You certainly can't safely assume that sending money to the address where the transaction's inputs were previously sent is the same as refunding the sender. To refund the sender you ask them for their address.

  • So, if you can't see the whole wallet. What is the purpose of this transaction?: Someone purchased a product in my store, he saw my public address but only made a 2k satoshi transaction to it instead the full price of the product. He also made two more purchases to see my LTC and ETH public addresses but made no transaction to them, only to the BTC. Someone answered in a previous question I made that it was to see my wallet and my client's, the volume of my crypto sells so to speak. You can check my profile if you need additional info about that question and the transaction link itself.
    – ManjaroDan
    Jun 8, 2020 at 20:58
  • @ManjaroDan It could have been a mistake. For example electrum defaults to mbtc as the unit of account. new users think they are spending in btc so the amount they send ends up being 1/1000th of the intended amount. if you multiply the amount she sent you with 1000 do you get the correct amount?
    – Abdussamad
    Jun 9, 2020 at 10:09
  • no I'm completely sure they were three transactions with ill intent. It used a fake name, disposable email, fake phone number, fake IP, and the BTC amount is not 1/1000th of the intended amount.
    – ManjaroDan
    Jun 10, 2020 at 20:19
  • @ManjaroDan mark these specific tiny UTXO-s as spam in your Bitcoin wallet. The wallet won't spend them and so the attack will be ineffective. Jul 3, 2021 at 23:32
  • @CypherpunkDev which wallet supports marking utxos as spam?
    – Abdussamad
    Jul 15, 2021 at 21:00

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.