The Real Cost of Square & Shopify POS: How to Run an In-Store Register with Zero Monthly Software Rent
Published 6 September 2026. Every figure about our own setup was measured on a server we pay for. We do not quote competitors’ prices, because they change and we have not bought them — instead we show you the arithmetic and you fill in your own invoice.
Your register software charges you every month, for every lane, forever. Open a second checkout and the bill doubles — for software that was already written and already running.
There is another way to do this, and the whole of it fits in one sentence: buy the setup once, pay about $12 a month for the computer it runs on, and never pay for the software again. No licence, no per-lane fee, no charge for adding staff. This article shows you the maths on your own numbers, answers the two questions every owner asks first, and puts all the technical detail in one section at the end that you are free to skip.
1. Renting Your Register vs Owning It
Take your last invoice and find three lines. Most owners only ever look at the first.
| What you are charged | What makes it grow |
|---|---|
| A monthly fee per register | Opening another lane. The software does not cost them more, but you pay twice. |
| A slice of every card sale | Having a good year. Sell more, pay more — for the same software. |
| Add-on apps: stock sync, loyalty, reports | Needing your shop and your website to agree. Two or three of these can cost more than the register fee itself. |
Now do the arithmetic that nobody puts on a pricing page. Three years is the fair window, because that is roughly how long you keep a till system before you think about it again.
Your three-year cost of renting
(monthly fee per register × number of registers × 36)
+ (monthly card takings × their percentage × 36)
+ (monthly cost of add-on apps × 36)
= the number the decision hangs onTwo things fall out of that without needing anyone’s price list.
Only the first line grows when you add a lane, and it grows on a cost that does not. The second till runs on the same computer as the first. The second line grows when you succeed — it never depended on how many registers you own, only on how much you sold. That is not a scandal, it is simply the business model working as designed. It is just worth seeing clearly before you build a second register on top of it.
Here is the other side of the ledger, on the same three years:
Your three-year cost of owning
the setup, paid once
+ (about $12 a month for the computer × 36) = around $432
= and that is the whole listTwo lines. Neither of them moves when you add a register, because there is no per-register licence to move. Neither moves when you have a strong quarter. If your rented software costs more than roughly $12 a month, owning is cheaper from the first year — and the gap widens every month after.
put your own numbers in rather than ours. We built a calculator that takes your number of registers and your monthly card takings, in dollars, pounds or Australian dollars, and shows the first year, every year after, and the month it pays for itself. Open the savings calculator.
don’t want to spend your evenings configuring software? That is exactly why we exist. We deploy your whole register, import your inventory, configure your tax rates and test your printer — in 24 to 48 hours, for a flat $399 one-time fee. See what is included.
2. “But What If the Internet Goes Down?”
This is the first question every owner asks, and it deserves a straight answer rather than the word “offline” printed on a feature list. There are three different failures hiding behind that word, and they are not the same.
| What actually breaks | What happens at the counter |
|---|---|
| Your internet line to the outside world | You keep selling. Scanning, cash, receipts all work. Sales sync when the line comes back. Only card payments pause, because those need the outside world. |
| The router or wifi inside your shop | You stop. The tills cannot reach the register, and the receipt printer cannot be reached either. |
| The computer running everything | You stop. Same as any system, hosted or not. |
The register keeps a copy of your product list in the browser at the till, which is why row one works: you carry on scanning and taking cash while the line is out.
Row two is the one no vendor separates out, so here it is plainly. Your receipt printer sits on the network inside your shop, not on the internet. If your broadband drops, it still prints. If your router loses power, it does not — and no software feature from anyone can change that, because the printer simply cannot be reached.
Row three is a decision, not a fault. If we put your system on a rented computer in a data centre, you can reach it from home — but your shop’s internet becomes the link to it, so an outage there is an outage everywhere. If staying open through a broadband failure matters more to you than checking sales from your sofa, the machine belongs in your back office, with its backup sent off-site every night. Tell us which you prefer and we set it up that way; it is the one choice that is expensive to change later.
3. “Do I Have to Buy All New Hardware?”
Usually not, and this is where owning starts to feel different from renting.
| What you have | Will it work |
|---|---|
| A receipt printer you bought yourself | Almost certainly. Nearly every thermal printer sold in the last decade speaks the same standard. |
| A barcode scanner, USB or Bluetooth | Yes. It types the barcode and presses Enter — there is nothing to install. |
| An iPad, Android tablet or old laptop | Yes. The register runs in the browser, so the tablet does very little work. |
| A card reader leased from your current platform | Usually not. Leased terminals are tied to the platform that leased them. This is the one thing you may need to replace. |
That last row is the honest answer and we would rather give it now than after you have paid. Send us the model numbers before you commit and we will tell you what carries over — including when the answer is that a device you are fond of cannot come with you.
On card payments themselves: the reader talks to your payment company directly. Card numbers never pass through your register and are never stored on your computer — your till only ever learns that a payment of a certain amount went through. Money reaches your bank on the schedule your payment company sets for your account, which depends on your country and how long the account has been open. Check yours in your own dashboard rather than trusting a number on anyone’s sales page, this one included. What we can promise without any qualification: we take no cut of your sales and add nothing to your card rate.
4. Tax, Said Precisely
Short version: the register charges the right amount, and your accountant still files.
We configure your US state and county sales tax by product type, or your UK VAT rates, or Australian GST. Every sale is recorded in a ledger your accountant can open and export.
In the UK, one thing needs saying plainly. Making Tax Digital requires your return to be submitted through software HMRC has approved, and the free edition we install is not on that list. Your accountant files, or you use a small bridging tool that takes the ledger and submits it. If any supplier tells you a self-hosted free Odoo is “MTD compliant”, they are describing something the product does not do. It costs one sentence to explain and saves an unpleasant conversation in April.
5. What You Actually Give Up
Owning your register does not remove the work. It moves it from a monthly invoice to a machine that is yours.
- Updates. They do not install themselves.
- Backups that have been tested. A backup nobody has ever restored is a hope, not a safeguard.
- Someone to call at 6pm on a Saturday. This is the row hosted platforms are really selling, and it is a fair thing to pay for.
Budget an hour a month, or buy that hour from someone — we do it for $29 a month and so do plenty of local IT firms. A self-hosted register that nobody maintains is worse than a subscription. If nobody in your business wants that responsibility and you will not pay for it, stay where you are. That is a real answer, not a hedge, and a supplier who cannot say it is selling rather than advising.
Four other cases where renting is the right purchase: you are opening in four days; you need reporting across a dozen franchised branches today; your card volume is small enough that the fee is genuinely trivial against your time; or you simply want the whole thing to be somebody else’s problem. All defensible.
6. How It Works Under the Hood (And Why You Never Have to Touch the Code)
You can stop reading here and nothing is missing — the decision is made on the sections above. What follows is for the curious, and for whoever handles your IT if you have someone.
The arrangement is the one you already have with your van. You drive it. We service the engine, change the oil and keep the spare in the boot. The difference from renting is that the van is registered in your name, so if you ever stop working with us, you still own a van.
What is actually running
Odoo 18 Community — free, open-source software used by shops worldwide, published under a licence that permits unlimited registers and unlimited staff accounts at no charge. It stores your data in PostgreSQL, a database that has been in production use for three decades. Both run in containers, which is a way of packaging software so that updating one piece cannot break another.
We did not take anyone’s word for what it needs. We deployed it on a machine we pay for and wrote down what it used:
| Measured on a 2 vCPU server | Result |
|---|---|
| Memory used, register and database together | 536 MiB |
| Time to install the point-of-sale modules | 77 seconds, 67 modules |
| Time from cold start to a working page | 5 seconds |
| Disk needed for the software image | 2.96 GB |
| Database size once set up | 58 MB, 509 tables |
Half a gigabyte of memory, which is why a $12 computer is enough. The four-gigabyte figure repeated across the internet comes from sizing advice for large multi-department deployments, not a shop till. Disk is the tighter constraint — budget for the 2.96 GB image before picking the smallest plan.
The one setting that breaks most installations
If someone else is setting this up for you, this paragraph will save them an afternoon. Odoo needs a second network port open for the live updates that keep the till in sync — and that port does not exist until you switch on multiple worker processes. Every guide tells you to point your web server at it; on a default install there is nothing there:
$ curl -o /dev/null -w '%{http_code}\n' http://127.0.0.1:8069/web/login
200
$ curl -o /dev/null -w '%{http_code}\n' http://127.0.0.1:8072/web/login
000 # nothing is listening — this is the cause of most "502" reportsTurning workers on made the port appear. It cost 294 MiB of memory — the register went from 129 to 423 MiB — and returned 38% more capacity. On a shop till that trade is worth taking above one register.
[options]
db_host = db
db_user = odoo
; Pin the installation to one database, or the database list is public.
dbfilter = ^retail$
list_db = False
; Required when a web server sits in front, or links are built wrongly.
proxy_mode = True
; This is the line that creates the live-update port. Each worker cost us
; roughly 100 MiB; three is right for a two-core machine.
workers = 3
max_cron_threads = 1
limit_memory_soft = 671088640
limit_memory_hard = 805306368The web server in front of it
Two details here account for most of the complaints people have about Odoo tills. The live-update connection stays open far longer than a web server’s default patience, so the timeout has to be raised or the till appears to flicker as it reconnects. And the ports are bound to the machine itself rather than the open internet — because container software writes firewall rules that are read before your firewall, meaning a port you believe is closed can be wide open.
upstream odoo { server 127.0.0.1:8069; }
upstream odoo_chat { server 127.0.0.1:8072; }
server {
listen 443 ssl http2;
server_name pos.example.com;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
# 60 seconds is the default and it is far too short: the connection
# is closed, the browser reconnects, and the till appears to flicker.
proxy_read_timeout 720s;
proxy_connect_timeout 720s;
location /websocket {
proxy_pass http://odoo_chat;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
location / { proxy_pass http://odoo; proxy_redirect off; }
}The full build, with the container file and the two failures that cost us an afternoon, is in our complete deployment guide. If you would rather not read it at all, that is a perfectly good reason to hand the job over.
7. What to Do This Week
- Find your last invoice and pull out the three lines: the per-register fee, the percentage of card sales, and every add-on app.
- Multiply by 36. That single number is what the decision hangs on. The calculator does it for you.
- Photograph your printer and scanner labels. Send us the model numbers and we will tell you what carries over before you spend anything.
- Decide where the computer lives — in your back office if staying open through a broadband outage matters most, in a data centre if remote access does.
Or hand it over. We deploy the register, import your products, set your tax rates, configure and test your printer, and set up a nightly backup — $399 once, delivered in 24 to 48 hours, on a computer registered in your name. With an online shop sharing the same stock, $699. Neither carries a software licence, so there is nothing further to pay us. See exactly what is included.