Another simple way be to ask identify customers using unique payment amount.
So instead of 1.0 BTC, you could ask them to pay 1.0000007 BTC, 1.0000010 BTC like this
But, You can run out of payment amounts if you have lots of customers
Thanks
I think sir @btc_enigma 's suggestion is a practical one and easy to implement.You just tweak your prices to indentify from which product/customers the payment come from.
Won't this lead to complaints? If i buy something (don't know what you're selling) for 1.0007, and somebody else is buying the same item from you for 0.999999, i would't be supprised if people complained.
I know, it's only satoshi's, but people can become really strange when talking about money.
You change it at around the satoshi level, you can go 8 decimal places out with bitcoin the actual difference in price would be negligible and well under a cent.
You can try what Bitpay does, generate a few addresses, and use them at different intervals. For example customer 1 gets address 1, customer 2 address 2 etc. each address or transaction has a time limit after that time limit the address can be reused and watched under a different customers transaction. So after 15 minutes address 1 goes back into the rotation and customer 5 can then be assigned that address and the program you create to watch the addresses continues to read from then on.
If you use Blockchain API you should be able to read how much Bitcoin the address has ever received, math can determine if the customer paid.