IotPOS a Point of Sale for Raspberry Pi

Build your own DIY Point of Sale using a Raspberry Pi ZERO/a+/b/b+/2 with a mini thermal receipt printer and IoT funtions.

Similar projects worth following
Hello everyone, in this tutorial I am going to show you how to make a complete Point of Sale, with Internet of Things services too! This project reduces costs because includes many of the more expensive parts and functions of a proprietary Point of Sale. And now with the new Pi ZERO as low as a $5.00 CPU.

Includes a serial receipt thermal printer with a function to print your own barcode products labels too, no need to buy a dedicated printer. We redesign the interface to work with low resolution screens as 800x480px, now compatible with the official 7″ touchscreen monitor for the Pi.

The IoT functions includes e-mails with: receipt copies, status reports, user logins, offers, CSVs or others important notifications for you and your clients, use the remaining GPIOs as: alarms, environment sensors, counters and many more functions, giving modern Internet of Thing functions to your business.

Download an SD image at the blog here.

"For those that don't have the budget to afford a proprietary system, for those who need a simpler inventory/POS system, and want a system to run on the Linux operating system, over lower energy consumption, fully open source support and lightweight enough to run into a ARM based SBC as the Raspberry pi ZERO. Your choice is IotPOS".

Assembly and connections are almost the same as the “Internet of Things Printer for Raspberry Pi” tutorial from adafruit, but with an extra opening to reach reach the USB & HDMI ports and you can use all the Raspberry pi models instead only the classic B.

A serial thermal printer it used connected to the serial GPIO output. (not support for the Raspberry pi 3 model at this moment.) The software supports touch screens and most barcode readers. The cash drawer opens using a pulse through the GPIO (relay needed).

Supports many POS terminals with a single database on a network. And with VNC Remote Desktop you won’t need to connect to the box to make changes, update stock, make purchases, transfer files, and so on.

Includes iotStock, the administration tool for managing your store, printed reports, and more. Includes a useful function to print your own barcode labels with name and price, a great money saver!

Automatic SQL backups to external USB storage, just name any USB drive as "iotpos" to execute daily database backups in case of SD corruption or other failures.

I hope you enjoy this project, if you want to try IotPOS go ahead and follow the instructions.

View all 12 components

View all 6 project logs

  • 1
    Step 1

    Prepare raspbian OS

    We recommend to uninstall useless apps for a dedicated point of sale:

    sudo apt-get update

    sudo apt-get remove scratch wolfram-engine dillo netsurf-gtk sonic-pi minecraft-pi

    sudo apt-get autoremove

    sudo apt-get clean

    sudo reboot

    That will give you an extra .6 Gb space, great for smallers SDs.

  • 2
    Step 2

    Disable shell and kernel messages on the serial connection

    The serial port on the Raspberry Pi’s GPIO header is normally configured for console cable use,

    will output a Console from your Pi that, with a suitable Serial cable, you can use to control your Pi via the command-line.

    But now we want to use this port for the thermal printer instead, so we’ll need to disable this default behavior.

    sudo raspi-config

    Advanced options

    Serial / Enable/Disable shell and kernel messages on the serial connection

    Would you like a login shell to be accessible over │

    │ serial? NO

  • 3
    Step 3


    This diagram shows the Raspberry pi 2, GPIO wirings are exactly the same on all Pi's, please prototype this connections before try the enclosure, it will help you to understand the basic functions and try the app first.

    Jump to Step 4 for software install instructions.

    You can download the enclosure at thingiverse:

    Assembly and connections are almost the same as the “Internet of Things Printer for Raspberry Pi” tutorial from adafruit, but with an opening to reach USB/HDMI ports and use the Raspberry pi zero instead classic model mounted on 2 sets of Brass M2.5 Standoffs for Pi HATs available from adafruit. No need for the T-Cobbler Breakout neither. You can follow the adafruit tutorial for more details.
    ABOUT cash drawer and the external relay.

    The raspberry pi gpio output cannot open a cash drawer directly, it is needed 12-24 DCV, you must use a opto-isolated relay conected to the Physical pin 11.

    This image shows connection using jumper wires, soldering is better.

    WARNING!!!: Never conect the side printer Tx pin to Rx GPIO on the pi, the Tx wire is only used for rare cases where the printer returns data to the computer. It’s left unconnected because the printer works at 5 Volts and the Raspberry Pi at 3.3 Volts connecting directly to the Rx pin could permanently damage the Raspberry Pi! (The other direction is safe as-is.).

    Serial Data Cable Rx TO Physical pin 8 It's also commonly known as "Serial TX" ttyAMA0. Serial Data Cable Tx Serial GND from serial printer to any gpio GND could use Physical pin 6,9, 14.

    -----Push buttom and LED.

    Push bottom N.O. to Physical pin 16 switch to GND.

    LED+ Physical pin 12 LED- TO any GND available.

View all 6 instructions

Enjoy this project?



joseluis wrote 06/24/2020 at 10:16 point

Hello, thanks for the project, is very good for me. 

Can someone tell me about backup of BBDD or complete backup SD Card ?. Many thanks

  Are you sure? yes | no

Jorge Chávez wrote 05/11/2020 at 07:13 point

Any update? You know there are some aspects that are not clear, it would be good for someone to resume Hiram's work, very good work indeed. Only he should stay active, we could make donations if we called your attention @Hiram Villarreal 

  Are you sure? yes | no

talal sharabi wrote 05/09/2020 at 20:57 point

Hi @Hiram Villarreal 

thanks for the great efforts, I have been trying to work around with the ready image as for some reason we could not run the direct commands iotpos, however I have two questions for the ready image:

1- how can i change the resolution?

2- I need to add some lines in the config.txt for the touch screen, so how can i do that?

Appreciate the help

  Are you sure? yes | no

Alan Hart wrote 02/26/2020 at 12:56 point

hi, im looking a building this, but will this software on raspberry pi 3b+ or 4 work with a usb thermal printer instead of the mini one you recommend, hope it can, i work for a Blind/visually impaired charity so would like to use a bigger thermal printer so then can print receipts in nice large print. 


  Are you sure? yes | no

aimausy wrote 12/29/2019 at 13:02 point

Hi everyone and thump up for the great creators of this project.

Merry Christmas and Happy New Year to you all.

I will be experiment and use it in our restaurant. I will report back to you.

Questions please.

1. Can I use Ubuntu on my notebook.

I have successfully installed raspbian to virtualbox and try it. Please tell me if it need tricks to do to prepare for installing iotPOS?

2. Can we used the software as multi terminals, more or less I will have 3 more Tablet to take care tables as well as cashier, so it will be multiusers.

I presume the data base got to be under record locking to enable multi user mode.

3. I will try to use multiplr LCD RPi later for that multiple LCD RPi tablets.

If we can run multiple Tablets, what is the workable RPi models I should use.

Thank you very much in advance for your advice.

  Are you sure? yes | no

Julio Torres wrote 12/02/2019 at 05:50 point

Hello Hiram,

Thanks for this software. I am going to install it in a new Raspberry and need to uninstall it in the old one. What are the commands for uninstall?


  Are you sure? yes | no

Dia Abdoul wrote 08/22/2019 at 03:35 point

I managed to install iotpos. It works very well. I'm trying to find a way to send data from the iotpos through a webservice. Any hint? I can see no way to do it from the interface.

  Are you sure? yes | no

dps wrote 06/10/2019 at 22:03 point

when i try to clone into git, via your tutorial, it asks for a username and password

  Are you sure? yes | no

Alexander wrote 06/09/2019 at 05:19 point

Hi! What do you think about the software for your POS based on Electron?

  Are you sure? yes | no

abraham wrote 12/14/2018 at 23:48 point


Whats the process to move the db of products and sales from one raspberry pi to another, assuming the new raspberry already has iotpos installed?



  Are you sure? yes | no

Be_OK wrote 11/29/2018 at 11:26 point

Very interesting project,wonder if you where thinking to add a (second)  portable raspberry-w with a barcode scanner to add to the stock.

  Are you sure? yes | no

Brucecalder wrote 10/15/2018 at 19:24 point

Hi.  I just installed this on a RasPi 3Bv1.2 using the installer and it was flawless. I would really like to use this in my laundry business but am having trouble understanding some aspects of the program like adding sales people, accessing the db, changing the default layout, etc. Are there any detailed instructions floating around anywhere? Thanks!


  Are you sure? yes | no

Hiram Villarreal wrote 10/15/2018 at 21:42 point

Hey buddy Thanks.
-like adding sales people: well remember there are two app one iotpos the icon with the cash register logo and the other icon a cloud with bars IoTstock that is the administration program there you would find add products, clients and vendors.
-accessing the db: if you what to see the tables you can use promt or MySQL Workbench.

-Detailed instructon- there is a little manual at: 

  Are you sure? yes | no

Hiram Villarreal wrote 10/15/2018 at 21:43 point

I forgot to restore a database with preloaded products and examples:

cd ~/iotpos/database_resources
sudo mysql -u root -p iotposdb < iotposdb.sql

  Are you sure? yes | no

fauzanpeter wrote 09/20/2018 at 23:12 point

I love your project but i have some problem. Everytime i install the iotpos(lots of time) , it always asking me for the password and i cannot type anything on the password. When i test out the program, it says that the database is unavailable and cannot login. 

I would love to see it work. 

  Are you sure? yes | no

Hiram Villarreal wrote 10/15/2018 at 21:33 point

Sorry buddy untill now I saw you comments.
Did you tried the new script?

  Are you sure? yes | no

Neel wrote 06/12/2018 at 10:32 point

Is there any way we can push the receipt to an application rather than to printing it?

  Are you sure? yes | no

Hiram Villarreal wrote 08/08/2018 at 14:01 point

Well the idea behind this project was to send all the printiing outputs to emails

  Are you sure? yes | no

Paul wrote 02/02/2018 at 06:48 point

I have spent over a week, using 2 different Pi Zero and 3 different Pi 3B and I can not get this to work. 

I can not find a way to start this program. I have followed ever single step, even had my wife do a build without me helping her and still no luck.   Where the instructions say type "iotpos" .. in what file/dir should I be in?

  Are you sure? yes | no

Hiram Villarreal wrote 08/08/2018 at 14:00 point

Paul, if it was installed correctly it should be at Start>others Menu.

we have a new Install script just follow the next commands:

git clone
cd iotpos
sudo chmod +x
sudo ./

  Are you sure? yes | no

Hamza wrote 01/05/2018 at 12:59 point

Hi, thank you for this project. I want to know if is it possible to use a USB Thermal Printer instead of GPIO one ? If it is, how can I configure it ? 

  Are you sure? yes | no

Hiram Villarreal wrote 08/08/2018 at 13:58 point

Sure if that printer has linux drivers you could using it through CUPS too.

  Are you sure? yes | no

Gabe wrote 11/25/2017 at 06:09 point

Hi, I love this project. I think it's outstanding that you are providing small business owners a solution to an often very expensive technology. I'm playing around with the SD image version and I was wondering if there's an easy way to clear the data (items, transactions ...) so that I can start with a totally empty system. 

  Are you sure? yes | no

Hiram Villarreal wrote 08/08/2018 at 13:57 point

Hello Gabe, you can just drop the entire database and create irt again, or just delete the products at IoTStock

  Are you sure? yes | no

George wrote 08/18/2017 at 16:10 point

How difficult would this be to adapt to a multi-printer system?  I am looking to set one up for my American Legion post, and would need 2-3 separate printers, one printer that prints everything, one for just food, and one for special event related sales.

Any word on Raspberry PI 3 B Support?

Can you insert special requests, either buy on screen buttons or manual typing (i.e. NO ONION, ADD MUSHROOM)?

  Are you sure? yes | no

Hiram Villarreal wrote 09/12/2017 at 16:16 point

Hello George I am really sorry I miss your post, I been working on an special request display for kitchen for example, you can install as many terminals as you need connected  to the one  who has the Data base.

  Are you sure? yes | no

abibula.aygun wrote 03/05/2017 at 16:03 point

I have started to continue your project for Romanian taxes ( VAT 19% for general products and 9% for food ). Also the printer al  Datecs Dp25BT or , 25B , DP55 , Dp45 etc . 

My Question is : How can I translate the Interface in Romanian ?

Thank you in advance !

  Are you sure? yes | no

Hiram Villarreal wrote 09/12/2017 at 16:17 point

Sorry I miss your post, yes you can traslate the .po files.

  Are you sure? yes | no

fstennet wrote 01/05/2017 at 18:17 point

Very interesting project! Is there an ETA for Raspberry PI 3 B support? What would it be required? new mapping of GPIO, just guessing....

  Are you sure? yes | no

Hiram Villarreal wrote 09/12/2017 at 16:20 point

 Sorry I miss your post, yea it works on the Rpi3 too, no need to remaping since raspbian already has the configuration to disable the not terminal output through TTL gpios. Keeping the wifi operating but the BT.

  Are you sure? yes | no

Similar Projects

Does this project spark your interest?

Become a member to follow this project and never miss any updates