I have an online store and would like to begin accepting bitcoins. How can I go about doing this?

  • 3
    There are many particular services/solutions mentioned here. Does anyone want to synthesize a bunch of them into a guide for how to implement? That would be ideal since I would prefer not to "choose" one service over others. So the ideal answer should start "It will depend on your level of technological expertise and your existing software stack:" then break it down starting with 'slap on an address' and ending up at code-your-own. Commented Sep 9, 2011 at 14:43
  • As of 2020 (and it's been for some years now), the most straightforward way is by using btcpayserver.org . Commented Jun 27, 2020 at 9:59

6 Answers 6


There are a number of ways one can go about accepting Bitcoin on a web interface. Keep in mind as you review these options that Bitcoin is still a young technology and many of these options aren't what you'd call "friendly" just yet. That said you do have quite a few options depending on your level of expertise and technical requirements:

  • Use a service like:
  • Use an existing shopping cart interface
    • There are existing plugins for Ubercart, Magento and many other popular e-commerce platforms. If you are looking to modify an existing site that happens to run on one of these platforms, this may be your best bet. If you've yet to start a site and don't want to write code yourself this may still be your best bet since you can choose your platform prior to implementation.
  • Roll your own using existing libraries
    • This is your best bet if you're using a platform that isn't currently supported or if you have difficult integration requirements that cannot be satisfied by existing e-commerce platforms like Magento or Ubercart.
    • Languages:
  • Roll your own using the JSON API directly
    • This is only necessary if you are not using one of the half-dozen or so languages that already have pre-written libraries for interfacing with bitcoind. The list of languages may be short, but all of the major industry standards have been covered, so it's unlikely you will have to go this far.

You can use services like BitcoinPayFlow or Bit-Pay.

I'm working on a payment module to integrate BitcoinPayFlow with OpenCart, watch the project here - it should be ready within a couple weeks.

Edit: Bit-Pay just released an OpenCart payment module. See here.

  • 3
    I would advise against a solution that depends on another site staying afloat. If yours is more then a casual website it will be worth the effort to have a bitcoin solution that runs on your own server.
    – lathomas64
    Commented Aug 31, 2011 at 15:16
  • 1
    I agree with lathomas64. I think it's a bad idea to recommend third party solutions as the accepted answer. We've seen a very high failure rate with third party solutions, and bitcoind gives you the functionality you need. Commented Sep 4, 2011 at 20:12
  • I both agree and disagree. Both solutions (JSON RPC and third party payment processors) have their place. The reason I suggested BitcoinPayFlow and Bit-Pay is because they are easy to setup as they don't require much technical knowledge. BitcoinPayFlow is nice because it forwards all payments as soon as they've been confirmed so they don't often have much of a balance. Commented Sep 4, 2011 at 21:58

You should definitely checkout https://bitcoinnotify.com/ service. They work noticably different than the existing solutions:

  1. You provide a list of btcaddresses (of your own wallet!) to them
  2. They monitor all transactions in the network
  3. If they observe a transaction to one of your adresses you get a POST from their site with address, amount, timestamp, number of confirmations, ...
  4. You can specify how many confirmations are needed before you get the notification. Also multiple notifications are possible, e.g. at 1 and at 6 confirmations

To implement this you need to keep track on your side which order is linked to which btc-address. When a payment is confirmed you can use the address again for the next order


  • No external wallet involved - All payments go DIRECTLY to your own wallet, so there is no way they can run with your money or get hacked or robbed etc.
  • You can keep your wallet at any dedicated, highly secured separate system, no need to have it on or near your website
  • If you want to take the risk of not waiting for confirmations you get the notification within seconds after the transaction has been issued from the customer (at least that's my personal experience)

I hope that soon similar services appear, so you could subscribe at multiple sites for notification. So there is no single point of failure anymore.

  • 1
    You should note the risks also, e.g. that bitcoinnotify colludes with one of your customers (or becomes one of your customers) and fraudulently notifies you to ship something that hasn't actually been paid for. Hopefully that would be quickly reported if it happened, and folks that use them could switch. But there is also always the risk of "he said - she said", unfortunately.
    – nealmcb
    Commented Sep 17, 2011 at 18:26

Take a look at the bitcoind json api.

You will have to run the bitcoind services on a computer accessible by your website. The computer you run the service on should be very secure since it holds your wallet. Development is underway to allow you to have the wallet file located elsewhere.

For added security you can keep a copy of your server wallet file on your computer and regularly transfer funds to a more secure account.

There are also people who provide this service. However this is not as secure, and you should carefully review the options before trusting one of these services. Nevertheless these can be an easy alternative if you can accept the risks involved.


There are a number of shopping cart interfaces currently available, though a fair number of them relied on the now-defunct MyBitcoin API. It is also fairly easy to integrate your own code with the JSON API as there are libraries available in most common languages, such as ASP.NET/C#, PHP, Python and many others. VPS or dedicated hosting is recommended since the bitcoin client can then reside on the server itself, but as bitcoin's JSON API supports SSL as of version 0.3.14 it is reasonably secure for the bitcoin client to reside on another system and allow your web application to connect to it remotely.


You can also have a look at blockonomics merchant service. It allows you to accept bitcoin directly into your wallet and is the only service right now that handles gap limit problems itself.

Not the answer you're looking for? Browse other questions tagged or ask your own question.