Accept Bitcoin On Your Own

do it yourself

Much respect goes to you for considering to accept Bitcoin for your business without using a payment processor or middleman. Direct payments between two people is the very essence of Bitcoin. And here’s some of the benefits you’ll get when you do it yourself:

  • You pay no transaction fees. The customer optionally pays a small miner’s fee for faster confirmation times (minimum fee on many wallets is currently set at .001 BTC, about $0.06 USD).

  • No bank account needed.

  • Privacy: no 3rd party (i.e. a Bitcoin payment processor) is facilitating or logging your transactions with your identity. This is useful if you prefer to have more privacy with your business dealings.

But there are drawbacks to handling Bitcoin payments on your own, including:

  • You’ll need to have a basic understanding of Bitcoin, how it works, and how to keep your bitcoins safe and secure.

  • You’ll be subjected to Bitcoin’s volatile exchange rate. You may price an order at $10, receive a Bitcoin payment for the equivalent amount, and then tomorrow, that Bitcoin amount is worth only $7. Or $5. Or $20. Or $50. The Bitcoin exchange rate moves fast.

  • You may need to wait for confirmations on payments (6 confirmations is recommended, which takes about an hour). It’s optional, but a recommended best practice, especially if you’re selling a physical item, as opposed to a service that can be easily revoked (like a subscription or membership). Once the transaction is confirmed and “permanent”, it’s safe to hand the merchandise over to the customer.

Accepting Bitcoin In Person

You’ll need an Android phone or tablet. It’s going to work as your point-of-sale (POS) device: you’ll enter customer’s order price into it, and the app will display a QR code for both the Bitcoin amount and your Bitcoin payment address. The customer scans the QR code with their own Bitcoin mobile app, hits a button, and sends you bitcoins for the total amount of the order.

Your iPhone/iPad/iPod won’t work because Apple has banned Bitcoin related apps that have the ability to send and receive bitcoins.

Before you get started, you’ll need to decide if you want to keep your Bitcoin wallet on your Android device (more convenient to spend and refund bitcoins, but less secure) or if you want to keep your wallet elsewhere (more secure). There are Bitcoin point-of-sale apps that will work with either option.

I Want To Keep My Wallet Off My Device

This is a good choice for keeping the bitcoins you receive secure — your Bitcoin wallet doesn’t need to be on your device to accept Bitcoin. You can simply display a Bitcoin address that belongs to your wallet, and have customers send payments to it.

If you don’t already have a Bitcoin wallet, take a look at the Getting Started page. Get a Bitcoin wallet that won’t be stored on your Android device.

Then download and install the Coinbox app on your Android device. This app will be your point-of-sale (POS). After you open the app, you should import an address from your Bitcoin wallet by going to the Coinbox menu and selecting Bitcoin > Import an account > Address Import:

coinbox menu

coinbox import 1

coinbox import 2

Then hit the Scan button. This will open up your device’s camera to scan a QR code. Point it at the QR code of a Bitcoin address from your Bitcoin wallet. This will be the address customers send their payments to.

Once you’ve imported an address, you’re ready to start taking orders. You can enter new orders on the main screen. For every item on the order, you can enter in an amount (priced in your national currency) and an optional note. Hit the + button to add the item to the order:

coinbox order

Once the order has been entered, hit the $ button at the top right corner of the app. You’ll be prompted to select the customer’s payment method. In this case, hit the Bitcoin button. Then a QR code will be displayed that contains both your Bitcoin wallet address and the correct amount of bitcoins (based on the current Bitcoin exchange rate). Show it to the customer so they can scan it with their own Bitcoin wallet app and send you a payment:

coinbox order confirm

coinbox QR code

coinbox payment complete

Once the customer has sent the payment, the app will display that the purchase is complete. If you want to watch for the transaction to confirm, go to the Coinbox menu and select Sales, and select which sale you’re interested in. The sale’s details will be displayed, along with the transaction’s confirmation count:

coinbox tx detail

And that’s how you accept Bitcoin payments with the Coinbox app. But there are a few other things you may want to setup on the Coinbox app before you start taking Bitcoin orders:

  • Bitcoin Discount: By default, Coinbox takes a 5% discount off of all orders paid with Bitcoin. To disable this, go to the Coinbox menu and select Discount & Tax. Tap the 5% field next to Bitcoin Discount and type 0 (note that simply deleting the 5 in the field is not enough, you must type 0).

    coinbox discount
  • Set a Password: You can optionally set a password in the Coinbox app to help prevent anyone else from changing your Bitcoin address, currency, and discount settings. Go to the Coinbox menu and select Security. Choose and confirm a strong password.

If you’re not a fan of the Coinbox point-of-sale app, or using the same Bitcoin address for every transaction, another option is the Blockchain Merchant app. This application has a more simple interface and fewer options, but generates a new Bitcoin receiving address for every customer order. However, it is worth noting that the payment request QR codes that the app generates point to Bitcoin addresses controlled by Blockchain.info. That means all customer payments first go to a newly generated Blockchain.info address, which are eventually forwarded as a new transaction to your own Bitcoin address. This helps protect your Bitcoin privacy (i.e. makes it harder for customers to know how many bitcoins are in your address), but also means that all payments pass through Blockchain.info’s fingers.

I Want My Wallet on My Device

Download the Mycelium app. Many Bitcoiners agree that it’s the best Bitcoin wallet for Android because it has tons of features, including a basic point-of-sale (POS) functionality.

Backup Your Mycelium Private Key

The first thing you should do is backup private key to an encrypted PDF. Hit the Backup Missing button, and then hit the Backup button:

mycelium backup

Mycelium will then generate and encrypt a PDF backup of your private key. You should write down the displayed password for the backup and store it in a safe place. Once Mycelium finishes generating the backup PDF, you should then copy it to another device, computer, or online storage for safe keeping. Hit the Share PDF button to email it to yourself or store it in the cloud.

If you’d prefer to manually move the backup PDF to your external SD card or elsewhere, the backup PDF file can be found in this directory on your Android device:

/data/data/com.mycelium.wallet/files/

The file will by named mycelium-back-XX-XX-XX-X.XX.pdf, where the X’s will be the date and time of when the backup was created.

It’s also a good idea to verify your PDF backup once it’s complete. Hit the Verify Backup button and use your device’s camera to scan the QR code of the Encrypted Private Key on the PDF backup:

mycelium backup verify

You’ll be prompted to enter the 15 character password for the backup. Mycelium will then decrypt and verify the backup, and display a success message on completion:

mycelium backup decrypt

mycelium verify success

Every time you create a new receiving address in Mycelium you should repeat this backup process for the corresponding private key. Every private key in Mycelium should have its own backup PDF.

Accepting Payments With Mycelium

On the Balance tab of the Mycelium app, hit the Receive button. This will display your active Bitcoin address and its QR code. To generate a specific payment amount for a customer, hit the keyboard icon beneath Optional Amount. Initially, you’ll be prompted to enter an amount in mBTC (millibitcoins):

mycelium receive amount

To enter the amount in your local currency, tap the mBTC rectangle in the top right corner. If you have a network connection, it should now display the converted amount in your local currency. This is based on the live Bitcoin exchange rate:

mycelium receive amount usd

Hit the OK button when you’re finished and an updated QR code will be displayed that contains the amount you’ve entered. Show this to your customer and they can scan it with their own Bitcoin wallet app and send you a Bitcoin payment:

mycelium receive

Once the customer has sent the Bitcoin payment, Mycelium will display the payment on the Transactions tab. Use the circular arrows at the top of the tab to refresh the display and the number of confirmations.

mycelium tx

You can view additional details about the transaction by touching it and tapping Show Details at the top of the screen.

Accepting Bitcoin On Your Website

Manual Method

To sell items manually for Bitcoin on your website, give customers a way to contact you when they want to purchase something. This can be either a form submission on your site or simply a contact email address.

Once you’re contacted with a new order, you’ll respond to them with a Bitcoin amount and a Bitcoin payment address:

  1. First, go to bitcoinaverage.com and get the current Bitcoin exchange rate for your local currency. You’ll use this to convert the order total amount from local currency to bitcoins. This service provides the average Bitcoin exchange rate combined from all the major online exchanges. We’ll use the exchange rate of 1 BTC = $620 USD for the remainder of this example.

  2. Determine the total amount of bitcoins they owe you by dividing the order price (local currency) by the Bitcoin exchange rate, and round to 8 decimal places. For instance, if the order total was $135, then the order total in bitcoins would be 0.21774194 BTC (i.e. $135 ÷ $620 = 0.217741935 =~ 0.21774194 BTC).

  3. Open your Bitcoin wallet and generate a new address. The customer will be sending their Bitcoin payment to it.

  4. Write them a response with your new Bitcoin address, the total amount in bitcoins, and the exchange rate you used to determine the total amount. For example:

    Hi Mr. Customer,
    
    Thank you for your order! Below is the invoice for your order, 
    including the Bitcoin amount and address to send your payment to.
    
    (1) Pair of leather boots   $85
    (1) Cowboy hat              $50
    -------------------------------
    Total (USD):               $135
    
    Bitcoin Payment Info
    -------------------------------
    Exchange Rate:             $620 BTC/USD
    Payment Address:           1FPYTo4rYVY9SGGzFo4DEiu7LLWVnffTQj 
    Total:                     0.21774194 BTC
    
    
    Due to the volatility of the Bitcoin exchange rate, the Bitcoin payment total is only valid for the next 6 hours, so please make your Bitcoin payment within that time frame. 
    
    Thanks you for your business!
    Mrs. Shopowner
    
  5. Once you receive the Bitcoin payment from the customer, wait for the transaction to reach 6 confirmations before shipping out the order. It’ll take about an hour. This greatly reduces the chance that the customer could successfully pull off a double spend attempt (and scam you out of the payment).

Refunds

If you need to provide a customer a Bitcoin refund, contact them to get a payment address. It’s a bad idea to send refunds to the address they sent you payment from. This is because the customer could be using an online wallet, which may no longer provide the customer access to the customer’s prior sending address, meaning that the Bitcoins could be lost.

Automated Methods

For automated do-it-yourself Bitcoin payments, you need to be willing to get your hands dirty. Fortunately, free open source plugins have already been created for many shopping cart interfaces.

Woocommerce

Magento

  • Bitcoin (JSON-RPC)

    • NOTE: this plugin may no longer be functional or supported by its developer

    • Creates new Bitcoin address for each order.

    • Relies on bitcoind running on the host server.

    • Uses cron task to confirm Bitcoin payments

    • Obtains exchange rate from bitcoincharts.com

    • Github: https://github.com/Appmerce/Magento-Bitcoin


References