How to Turn Google Sheets into a Restaurant POS System

google sheets pos system

A restaurant POS does not have to start with expensive hardware or a complicated software subscription. For a small café, food truck, bakery, takeaway shop, or independent restaurant, Google Sheets can be turned into a surprisingly capable point-of-sale system.

The important distinction is that you are not simply creating a spreadsheet with a list of sales. A workable Google Sheets POS needs a product database, order-entry screen, automatic calculations, payment tracking, sales history, inventory logic, staff controls, and reporting.

Done properly, the spreadsheet becomes a small restaurant operating system.

It will not replace a commercial POS in every situation. High-volume restaurants need things such as payment-terminal integration, offline transaction processing, kitchen display systems, fiscal compliance, customer-facing ordering, and more sophisticated permissions. But for a smaller operation, Google Sheets can provide the core mechanics of a POS at very little cost.

This guide explains how to build one from scratch.

What a Google Sheets Restaurant POS Should Do

Before creating formulas, define what you expect the system to accomplish.

At minimum, the POS should allow a cashier or server to:

  • Select menu items
  • Enter quantities
  • Calculate line totals
  • Apply discounts
  • Calculate taxes
  • Record payment method
  • Produce an order or receipt number
  • Save completed transactions
  • Track daily sales
  • Track which products were sold
  • Deduct ingredients or inventory
  • Identify cash, card, and other payment totals
  • Review sales by employee, product, category, and date

The owner should also have a separate dashboard showing revenue, transaction count, average order value, best-selling products, payment mix, and inventory information.

The biggest mistake is putting all of this onto one giant worksheet. Build the POS as several connected sheets instead.

Step 1: Create the POS Workbook

Create one Google Sheets file and give it a name such as:

Restaurant POS

Create these tabs:

  1. POS
  2. Products
  3. Orders
  4. Order Items
  5. Payments
  6. Inventory
  7. Recipes
  8. Employees
  9. Customers
  10. Dashboard
  11. Settings

You do not necessarily need all 11 tabs on day one. A small café can begin with POS, Products, Orders, Payments, Inventory, and Dashboard.

The important principle is separation.

The POS screen is where employees work. The Products sheet is where management maintains menu information. Orders becomes the permanent transaction history.

Step 2: Build the Products Database

The Products sheet is the foundation of the entire system.

Use columns such as:

Product IDProduct NameCategoryPriceTax RateCostActive
P001CappuccinoCoffee4.500%1.10Yes
P002LatteCoffee4.750%1.25Yes
P003Chicken SandwichFood9.507%3.20Yes

Give every product a unique Product ID.

Do not use the product name as the primary identifier. Names change. IDs should not.

The Active column is also useful. Rather than deleting an old menu item, mark it inactive. This preserves historical sales data.

For the price, store a numeric value rather than “$4.50” as text. Formatting can make it display as currency without turning the underlying value into text.

Step 3: Add Dropdown Controls

A POS should prevent staff from typing inconsistent information.

For example, one employee might enter “Visa,” another “VISA,” and another “Credit Card.” Your sales report then sees three different payment methods.

Use dropdowns for fields such as:

  • Payment method
  • Product category
  • Employee
  • Order type
  • Table number
  • Tax type
  • Discount type
  • Order status

Google Sheets supports dropdowns through data validation, including dropdowns populated from another range. Invalid entries can also be rejected rather than simply flagged.

For example, create this list on the Settings sheet:

Payment Methods

  • Cash
  • Credit Card
  • Debit Card
  • Mobile Payment
  • Bank Transfer
  • Other

Then make the Payment Method field on the POS sheet a dropdown based on that list.

Step 4: Design the POS Screen

The POS tab should look more like a simple application than an accounting spreadsheet.

A basic layout could be:

FieldValue
Order #10025
Date09/06/2026
CashierMaria
Order TypeTakeaway
Table12

Then create the order-entry area:

ProductQtyUnit PriceDiscountTotal
Cappuccino2$4.50$0.00$9.00
Chicken Sandwich1$9.50$0.00$9.50

Underneath, calculate:

Subtotal

Discount

Tax

Grand Total

Amount Paid

Change

The employee should only have to select the product and enter the quantity.

Everything else should calculate automatically.

Step 5: Pull Prices Automatically

Do not ask the cashier to type the price.

If the product is selected in cell A10 and the Products sheet contains Product ID, Product Name, Category, Price, and Cost, use a lookup formula to retrieve the price.

For example, depending on your product-table structure, you can use:

=XLOOKUP(A10,Products!B:B,Products!D:D,"")

This means:

“Find the selected product in the Products sheet and return its price.”

If your Google Sheets environment or existing workbook uses another lookup method, VLOOKUP or INDEX/MATCH can accomplish the same basic task.

The important design rule is simple:

Prices belong in one master product table.

Do not manually duplicate prices throughout the workbook.

Step 6: Calculate Each Order

The line total should be:

Quantity × Unit Price - Discount

For example:

=B10*C10-D10

Then the subtotal can be:

=SUM(E10:E25)

Suppose the subtotal is $18.50 and the restaurant gives a $2 discount.

The taxable amount is:

=Subtotal-Discount

Then calculate tax using the applicable rate.

For example:

=TaxableAmount*TaxRate

Finally:

=TaxableAmount+Tax

This gives you a basic checkout engine.

Step 7: Create a Real Order Number

Every completed sale needs a unique identifier.

For example:

  • 20260906-0001
  • 20260906-0002
  • 20260906-0003

Using the date as part of the number makes transactions easier to locate.

Avoid relying solely on the spreadsheet row number. Rows can be inserted or deleted.

For a basic implementation, an Apps Script function can generate sequential order numbers and write them to the transaction record.

Google Apps Script is particularly useful here because it can extend Sheets with JavaScript functions and automate spreadsheet actions.

Step 8: Create the Orders Table

The Orders sheet should contain one row per completed transaction.

For example:

Order IDDateTimeEmployeeOrder TypeSubtotalDiscountTaxTotal
20260906-00109/06/2610:12MariaDine-in18.502.001.1617.66

Do not overwrite completed orders.

This is the transaction ledger.

Once an order has been paid, it should be copied or written into this table and treated as historical data.

Step 9: Create an Order Items Table

A second table should contain individual products sold.

Order IDProduct IDProductQuantityPriceDiscountLine Total
20260906-001P001Cappuccino24.5009.00
20260906-001P003Chicken Sandwich19.502.007.50

This structure is much better than putting every product into one enormous transaction row.

Why?

Because you can later ask:

  • How many cappuccinos did we sell?
  • Which products generated the most revenue?
  • What did customer orders typically contain?
  • How many sandwiches were sold yesterday?
  • What was the average quantity per order?

The Order Items table makes those questions possible.

Step 10: Add Payment Tracking

Create a Payments sheet.

Payment IDOrder IDPayment MethodAmountDateEmployee
PAY00120260906-001Cash$17.6609/06/26Maria

This becomes particularly important when customers use multiple payment methods.

For example, a customer could pay $10 cash and $7.66 by card.

Instead of forcing the transaction into one payment-method column, record two payment rows against the same Order ID.

At closing, you can calculate:

Cash received

Card received

Mobile payments

Other payments

That gives the manager a much cleaner reconciliation process.

Step 11: Build Inventory Management

A spreadsheet POS becomes much more useful when sales affect inventory.

The simplest approach is to connect products to recipes.

Suppose a cappuccino requires:

  • 18g coffee beans
  • 200ml milk

The Recipes sheet could look like:

ProductIngredientQuantityUnit
CappuccinoCoffee Beans18g
CappuccinoMilk200ml

When one cappuccino is sold, the theoretical inventory consumption becomes:

18g coffee + 200ml milk

If 50 cappuccinos are sold:

900g coffee + 10L milk

This is far more useful than simply deducting “1 cappuccino” from inventory.

Step 12: Create the Inventory Sheet

Track ingredients rather than only menu products.

IngredientUnitOpening StockPurchasesSales UsageWasteClosing StockReorder Level
Coffee Beanskg10570.57.53
MilkL40204531215

A theoretical inventory calculation is:

Opening Stock + Purchases – Sales Usage – Waste = Theoretical Closing Stock

You can then compare theoretical stock with physical stock.

That difference is an important restaurant control metric.

If the spreadsheet says you should have 7.5kg of coffee but the physical count is 6.2kg, investigate the variance.

Possible causes include waste, incorrect recipes, staff drinks, spoilage, theft, over-portioning, or incorrect receiving.

Step 13: Add Waste Tracking

Do not bury waste inside inventory adjustments.

Create a Waste Log:

DateIngredientQuantityReasonEmployee
09/06/26Milk2LSpoilageMaria
09/06/26Chicken1kgOverproductionJames

This gives management a much clearer view of food waste.

A restaurant POS built in Sheets should distinguish between:

  • Sales consumption
  • Waste
  • Stock adjustment
  • Purchasing
  • Physical count

That distinction is what turns a basic spreadsheet into a management tool.

Step 14: Automate the Workflow with Apps Script

This is where the spreadsheet starts behaving like an actual POS.

Create an Apps Script project from:

Extensions → Apps Script

Google documents Apps Script as the way to extend Sheets with JavaScript, including custom functions and spreadsheet automation.

A “Complete Sale” button can eventually perform several actions:

  1. Validate that a product has been selected.
  2. Check that quantities are greater than zero.
  3. Generate an order number.
  4. Calculate the final amount.
  5. Write the transaction to Orders.
  6. Write each product to Order Items.
  7. Write payment information to Payments.
  8. Update inventory records.
  9. Clear the POS screen.
  10. Prepare the next order.

That is considerably better than asking staff to copy and paste information manually.

Step 15: Use Triggers for Automation

Apps Script supports event-driven and time-driven triggers.

An edit trigger can respond when a spreadsheet is changed. A time-driven trigger can run on a schedule.

For example, you could create an automated daily process that:

  • Archives old temporary data
  • Creates a daily sales summary
  • Checks low-stock ingredients
  • Sends a manager notification
  • Updates a dashboard

Be careful with automation around financial records. A script should never silently alter completed sales without leaving an audit trail.

Step 16: Protect the Spreadsheet

This is one of the most important steps.

Cashiers should not have access to formulas, product costs, inventory formulas, or historical transaction data simply because they can open the POS file.

Protect management sheets and formula ranges.

The cashier-facing area should contain only the cells they actually need to operate.

For example:

Cashier can edit:

  • Product
  • Quantity
  • Order type
  • Table
  • Payment method
  • Amount received

Cashier should not edit:

  • Product price database
  • Product cost
  • Tax formulas
  • Inventory formulas
  • Historical transactions
  • Dashboard formulas

Also keep regular backups or copies of the workbook.

Step 17: Build the Restaurant Dashboard

The Dashboard should answer management questions quickly.

At minimum, display:

Today’s Sales

=SUMIFS(Orders!I:I,Orders!B:B,TODAY())

Number of Orders

=COUNTIFS(Orders!B:B,TODAY())

Average Order Value

=Today's Sales/Number of Orders

Cash Sales

Sum payments where the payment method is Cash.

Card Sales

Sum payments where the payment method is Card.

Best-Selling Products

Use a pivot table or formulas to rank products by quantity sold.

Useful dashboard metrics include:

  • Gross sales
  • Net sales
  • Number of orders
  • Average order value
  • Sales by hour
  • Sales by category
  • Sales by employee
  • Payment-method breakdown
  • Discounts
  • Refunds
  • Food cost
  • Inventory variance
  • Waste

This is where Google Sheets can provide genuine business value rather than merely acting as a digital cash register.

Step 18: Test the POS Before Using It

Never put an untested spreadsheet POS in front of customers.

Run at least 20 to 50 simulated transactions.

Test:

  • One-item sale
  • Multiple-item sale
  • Discount
  • Tax
  • Cash payment
  • Card payment
  • Split payment
  • Wrong product
  • Zero quantity
  • Refund
  • Cancelled order
  • Duplicate order
  • Out-of-stock ingredient
  • End-of-day reconciliation

Then deliberately break it.

Try entering letters into quantity fields. Delete a product. Change a price. Enter a negative quantity. Remove a dropdown value.

A POS is only useful if ordinary staff mistakes do not destroy the underlying data.

When Google Sheets Is a Good POS Choice

Google Sheets works particularly well for:

  • Small cafés
  • Coffee shops
  • Bakeries
  • Food trucks
  • Small takeaway businesses
  • Pop-up restaurants
  • New restaurants testing a concept
  • Low-volume independent restaurants
  • Businesses that mainly need sales and inventory tracking

It can also be useful as a temporary POS while a restaurant evaluates dedicated POS software.

When Google Sheets Stops Being Enough

There is a point where building more spreadsheet functionality becomes counterproductive.

Consider dedicated POS software when you need:

  • Integrated card processing
  • Offline operation
  • Kitchen display systems
  • Self-service ordering
  • Online ordering integration
  • Delivery-platform integration
  • Sophisticated employee permissions
  • Multi-location synchronization
  • Fiscal or electronic invoicing compliance
  • Advanced loyalty programs
  • Detailed audit controls
  • High transaction volumes
  • Automated accounting integrations

The problem is not that Google Sheets cannot be made more sophisticated. Apps Script can automate a great deal. The problem is that you eventually start building your own POS company inside a spreadsheet.

That is rarely a good use of a restaurant owner’s time.

The Best Architecture for a Google Sheets POS

If you want the system to remain manageable, use this structure:

POS

→ employee-facing order screen

Products

→ master menu and pricing database

Orders

→ one row per completed transaction

Order Items

→ individual products sold

Payments

→ payment transactions

Recipes

→ ingredient requirements

Inventory

→ stock movement and balances

Waste

→ discarded products and ingredients

Employees

→ staff records

Dashboard

→ management reporting

Settings

→ dropdown lists and system controls

This separation is the key to making the system reliable.

Final Advice: Build the POS Around the Transaction, Not the Spreadsheet

The best Google Sheets restaurant POS is not the one with the most formulas.

It is the one that follows a clean transaction from beginning to end:

Customer orders → cashier enters order → system calculates price → customer pays → transaction is saved → payment is recorded → inventory consumption is calculated → dashboard updates.

Once that workflow is working, add features carefully.

Start with sales. Then payments. Then inventory. Then recipes. Then reporting. Finally, automate repetitive tasks with Apps Script.

That approach is much easier to troubleshoot than trying to build a fully automated restaurant POS on the first day.

Google Sheets already provides the spreadsheet engine, data validation, formulas, and database-like tables. Apps Script adds the automation layer. Google’s documentation specifically supports custom functions and event-driven triggers, making it possible to extend a Sheet beyond ordinary calculations.

For a small restaurant or café, that combination can be enough to create a functional POS without buying a traditional system immediately.

The real test is not whether the spreadsheet looks like a POS.

The test is whether every dollar of sales can be traced from the customer’s order to the final daily reconciliation, and whether every ingredient used can be reasonably explained by the sales recorded.

If your Google Sheets system can do that reliably, you have built much more than a spreadsheet. You have built a workable restaurant POS.

Scroll to Top