Introduction: Open Bitcoin ATM

The world's first completely open-source Bitcoin ATM for Education and Experimentation. for more information.

Step 1: Fabricate Box and Faceplate

Out of a piece of 12″x12″ aluminum sheet metal, cut two rectangles and drill six rivet holes and four holes to attach the bill acceptor.

Cut aluminum angle into two 11 1/2″ lengths.

For each aluminum angle, drill and tap two holes; drill three faceplate rivet holes.

Rivet the two aluminum angles to each side of the faceplate. Allow room (about 1/8″) to overlap with the front of the box to create flush surface; make sure aluminum angles are positioned to lie flush on the inside of box.

Drill four holes through the box that exactly align with tapped holes in aluminum angle.  (tip: if using acrylic, set drill to reverse, and gently apply pressure to prevent cracking).

Measure 16″ leads, solder  one end to barrel plug and other end to J2 connectors.  Attach barrel plug to back of box. Tape leads to base of box.

Step 2: Attach Bill Acceptor and Printer

Position printer in faceplate and attach using bracket provided.

Position bill acceptor and attach using four screws, washers and nuts.

Step 3: Provision Arduino

Download and install Arduino environment from here.

Download openbitcoin.ino from here

Attach Arduino Uno to computer USB port.

Upload openbitcoin.ino to Arduino Uno. for more information.

Step 4: Attach Resistor and Leads

Solder resistor and leads to SD shield as shown (note updated circuit diagram with pull up resistor)

Step 5: Attach SD Shield and Components

Attach SD shield to Arduino Uno.

Cover back of Arduino Uno with insulating tape.

Attach 5V power supply to back of faceplate (high strength velcro works well).

Attach Arduino/SD shield to back of faceplate with (high strength velcro).

Connect J2 connectors.

Step 6: Create QR Codes

Create a few dozen private keys at

Convert private keys to 176 x 176 pixel QR codes (sample pictured above).

Convert QR codes to thermal printer format. Sample QR code in thermal printer format:  BTC_4.btc (see for more information)

Here’s a hack that makes this process a snap:

Here’s a wallet that can read the QR code:

Step 7: Provision SD Card

Copy logo.oba to root directory of SD card. (file is here

Name QR code files sequentially, then copy to root directory of SD card.

Step 8: Configure Bill Acceptor

Print the a configuration card at the end of the Apex 7000 manual

Using a dark marker, fill in the ovals on the configuration card.

Hold the reset button down for at least ten seconds.

When the lights on the front of the acceptor blink, feed the configuration card (pictured above) into the acceptor bill slot.

Acceptor will reject the card.

Acceptor will blink rapidly if successfully configured.

Step 9: Watch the Magic!

Load up the Bitcoin addresses created in step six, stand back and watch the magic!

For more information and updates see:

123D Circuits Contest

Finalist in the
123D Circuits Contest

Makerlympics Contest

Participated in the
Makerlympics Contest