<p>TL;DR: your question is a valid one; there is no easy solution but CoinJoin and XMR swaps will help.</p>
<p>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 <strong>will</strong> 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.</p>
<p>So what are the options?</p>
<p>To start with, use open source, self-hosted payment processors running against your own node. Examples include <a href="https://btcpayserver.org/" rel="nofollow noreferrer">https://btcpayserver.org/</a> or <a href="https://cypherpunkpay.org/" rel="nofollow noreferrer">https://cypherpunkpay.org/</a> (disclousure: author).</p>
<p>Then either:</p>
<ul>
<li>pass coins through JoinMarket or Whirlpool</li>
<li>swap coins to XMR via near-instant, no-KYC exchanges (<strong>then wait</strong> because you cannot simply swap the same amount back to BTC)</li>
</ul>
<p>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.</p>
<p>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.</p>

CC BY-SA 4.0
2021-07-03T23:57:17.427Z
2021-07-04T00:02:23.810Z
2021-07-04T00:02:23.810Z
CypherpunkDev
<p>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.</p>

<p>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 <a href="https://en.bitcoin.it/wiki/Change" rel="nofollow noreferrer">change</a> and which are intended for the recipient.</p>

<p>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.</p>

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

<p>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.</p>

CC BY-SA 4.0
2020-06-08T20:58:25.640Z
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
CC BY-SA 4.0
2020-06-09T10:09:37.490Z
@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
CC BY-SA 4.0
2020-06-10T20:19:31.570Z
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
CC BY-SA 4.0
2021-07-03T23:32:14.683Z
@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.
CypherpunkDev
CC BY-SA 4.0
2021-07-15T21:00:54.890Z
@CypherpunkDev which wallet supports marking utxos as spam?
Abdussamad
CC BY-SA 4.0
2020-06-08T14:12:23.493Z
2020-06-08T14:12:23.493Z
Abdussamad
<p>If an online store accepts crypto payments directly into its wallet there is a problem:</p>

<p><em>"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."</em></p>

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

<ul>
<li><p>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.</p></li>
<li><p>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?</p></li>
<li><p>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.</p></li>
<li><p>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?</p></li>
<li><p>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?</p></li>
<li><p>Or the only way is to use a payment processor? If so, then how they
conceal their customer's wallet balance?</p></li>
</ul>

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

<transactions><privacy><payment-processors><hacking><ecommerce>
How Crypto Payment Processors Handle Wallet Balance Privacy?
ManjaroDan
# How Crypto Payment Processors Handle Wallet Balance Privacy?

(Asked by: username_0 on 2020-06-07)

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.

**Tags:** transactions, privacy, payment-processors, hacking, ecommerce


---

## 2 answers

### Answer by username_1 on 2021-07-03. Score: 1 | Accepted answer

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.


---

### Answer by username_2 on 2020-06-08. Score: 0

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](https://en.bitcoin.it/wiki/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.

> **Comments:**
> **username_0**: 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.  
> **username_2**: @username_0 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?  
> **username_0**: 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.  
> **username_1**: @username_0 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.  
> **username_2**: @username_1 which wallet supports marking utxos as spam?  

---

