From what I understand, there are some requirements for using bitcoins at a physical store:

  • Both the store owner and the client must have Internet access
  • The client must have a cellphone or a laptop to issue the payment
  • The seller must have a way to confirm that the coins were sent.

The biggest problem is the confirmation. Since it is risky to accept transactions with 0 confirmations, it will take around 10 minutes before a single confirmation occurs and allows the real world transaction to be completed. The more confirmations that occur, the less risky it is.

That said, what is the best way for a store owner to securely accept bitcoins?

  • 1
    Here is a proof of concept of a Bitcoin Point of Sale system.
    – ripper234
    Commented Sep 1, 2011 at 6:53
  • 6
    I guess that you are talking about the title, cause the text clearly ends with a question. In this case, just suggest an edit of the title, don't vote to close.
    – D.H.
    Commented Sep 1, 2011 at 17:57
  • I think this is is an excellent question and if you have a problem with it, edit it and contribute or just go away.
    – Scott
    Commented Jan 18, 2014 at 4:06

5 Answers 5


Green address technique from Instawallet. System sends bitcoins from well known address called Green Address and if recipient trusts Instawallet or any other major organization that uses same technique, then he or she can accept payment without waiting for confirmations. This is what already implemented but it solves only the third problem.

Instant TX for established business relationships is in early development stage but it can solve all three of the problems, with an exception that only retailer needs to have internet access. For example, transaction could be printed by customer on a piece of paper, handed over and accepted instantly by retailer, and it still would be secure. The idea is very promising because such transaction could be sent over internet or by any other way directly from buyer to seller and won't use any of Bitcoin Network resources, and it would be economically fisible to make automatic payments for a service that costs several micro bitcoins.


One thing people fail to realize when saying "0 confirms are risky" is that risk is all relative. A lot depends on how valuable the goods are. While 0 confirmation may have some risk it is very low for low value transactions and likely far less than credit card fraud.

Say you are selling a sandwich for whatever $5 is worth in BTC. When you get a 0 confirm it has indicated that your client sees that address has sufficient value to complete the transaction. The risk is simply that before confirmed someone else could purchase something with the same address, a hypothetical "double spend".

Still remember the window of attack is very small. The AVERAGE block completion time is 10 minutes but ~50% of blocks are completed in less than 6 minutes. That means if two attackers timed it so they started their attack right after a block was discovered they have roughly 50% chance of getting both transactions completed prior to next block verification.

To be defrauded BOTH transactions would have to be fully completed and the attacker gone within that window. For low value transaction especially in the real world that is incredibly unlikely. No attacker is guaranteed any sort of "minimum window" the next block might be verified in 10 minutes or in 9 seconds.

Now if you are selling $100K worth of gold then maybe you should wait for 6 confirmations but a customer moving $100K worth of gold likely would understand the need for security.

Unless your physical world business involves both fast transactions AND high street value I wouldn't worry. A bitcoin ATM however would be a good target for double spending thus some other mechanism would be needed to verify the transfer.

  • What could be a secure mechanism to verify the transfer in a bitcoin ATM scenario? It wouldn't be feasible to have the customer wait for 10 minutes before she can grab the withdrawn cash, let alone an hour.
    – nivs
    Commented Apr 4, 2013 at 10:00
  • 1
    On related note, the Subway sandwich restaurant near my university do accept bitcoins with zero confirmations.
    – aland
    Commented Jan 20, 2014 at 21:20

For transactions of under $100 or so, I don't think it's unreasonably risky to accept transactions with zero confirmations. For one thing, it doesn't matter unless the customer is attempting a double-spending attack, and it's unlikely someone would want to attempt such an attack and try to physically get away within 10 minutes or so just for $100.

For under $1,000, 1 confirmation is sufficient. That takes 10 minutes on average.

In general, face-to-face transactions just aren't all that risky.


Create a "We accept Bitcoin!" display: http://ma.eatgold.com/accept/

If you want to verify that bitcoins have been received you can look on blockexplorer.com. The format is http://blockexplorer.com/address/1At6LdqJsMJ11kkujzU4NR5cbD5NhLj3Ay . You can see a list of all transactions received on your wallet address.

You can get a receiving address from online exchanges or wallet services. I recommend you find one you can trust because they will be holding your coins. My recommendation is ExchB: https://www.exchangebitcoins.com/en/r/howmanycoins

Another option is to download the bitcoin client from bitcoin.org. You must make sure your computer is secure from trojans or viruses or you could lose your coins. Or you could use an android based application for your mobile phone. Bitcoin Wallet is the most efficient app currently. Here is a link to it: https://market.android.com/details?id=de.schildbach.wallet&hl=en . Take care your phone is secure from viruses or malicious applications that could steal your wallet. Transfer any large amounts of coins off of your phone and to a secure address elsewhere.

To check the exchange rate for converting your product prices you can pull up the current price at http://coin.ly/ , or many other sites have this information as well.

You can also use a merchant services company such as bit-pay.com to handle all this stuff for you in an automated fashion. They offer additional features such as converting bitcoins into USD immediately so you dont have to deal with all the extra details and risks of handling bitcoins on your own.

  • downvote with no comments? UPVOTE!!!!
    – user4951
    Commented Apr 21, 2013 at 22:44

Accepting bitcoin is easy. Create an account on coinbase.com

Go to: Linked Accounts -> Link a bank account.

then Merchant Tools -> Merchant Settings -> Check, "Instantly exchange my bitcoins to USD and credit my primary bank account once a day."

Add this to your event description: "Bitcoin Accepted w/ coinbase to [email protected]"

If you want a bitcoin logo you can use this: http://i.imgur.com/s7YQ2.jpg

Here are examples of other companies accepting bitcoin: http://blog.coinbase.com/post/48102298494/okcupid-starts-accepting-bitcoin-using-coinbase http://en.blog.wordpress.com/2012/11/15/pay-another-way-bitcoin/

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.