FS
FoodShop POSSetup, operation, hardware and deployment brochure

Run a small food shop with a fast, low-cost POS

This system manages menu products, ingredient recipes, inventory, payment fees, expenses, receipts and end-of-day reports. The separate viewer.html lets a co-owner see the latest cloud copy without editing it.

Recommended low-cost design

At the shop

  • One existing or used Windows laptop as the main POS.
  • This PWA installed from the browser.
  • Official merchant QR Ph as the main cashless method.
  • Optional NFC Android phone with GCash PocketPay or a Maya Terminal for cards.
  • Optional 58mm USB thermal printer and wired 2D scanner.

Online

  • Static files on Cloudflare Pages, Vercel or Netlify.
  • Cloudflare Worker and D1 for cloud sync.
  • Separate admin and viewer keys.
  • Partner opens viewer.html, which is read-only.
  • Main POS continues recording locally if internet fails.
Best overall combination: touch tiles for prepared drinks and food, ordinary barcodes for packaged products, QR Ph for most cashless payments, and card tap as an optional backup.

First setup

  1. Open Settings. Enter the store name, branch, address, phone, cashier name and receipt footer.
  2. Choose receipt width. Use 58mm for the cheapest thermal printer, 80mm for easier reading, or A4 for an ordinary printer.
  3. Review currency conversion. Sales remain stored in PHP. Enter how many Philippine pesos equal one unit of USD, CAD or any replacement currency such as AUD or HKD.
  4. Review payment fees. Replace the sample GCash and Maya rates with the exact rates in the signed merchant agreement.
  5. Add inventory. Create ingredients, packaging and supplies with one consistent unit, current quantity, reorder level and cost per unit.
  6. Add products and recipes. Attach the exact ingredient and packaging deduction used for one product.
  7. Download a JSON backup. Keep the first clean setup copy before recording real sales.
  8. Configure cloud sync. Complete the Cloudflare API steps below, then push the first cloud copy.

Daily operating instructions

Complete a sale

  1. Open POS / Checkout.
  2. Tap product tiles or scan the SKU/barcode into the search field.
  3. Adjust quantities and discount.
  4. Proceed to payment.
  5. For QR/card, verify the official merchant result and enter the reference.
  6. Record the sale and print when needed.

What happens automatically

  • Ingredient and packaging quantities are deducted.
  • The configured processor fee is calculated.
  • Gross sales, net receipts and COGS are recorded.
  • Profit estimates and low-stock warnings update.
  • The cloud copy syncs when internet is available.

Restock, waste or correct stock

Open Inventory and choose Adjust beside an item. Use a positive quantity for purchases. Choose Waste or Supplier return for reductions; the POS converts the entered amount to a negative movement. Update unit cost when the latest purchase cost changes.

Void an incorrect sale

Open Sales, choose Void and enter a reason. The recipe inventory is restored. A processor refund is separate and must be performed in the official GCash or Maya merchant system.

End of day

Open Reports & EOD, select one date, review gross sales, payment fees, net receipts, COGS, expenses and estimated net amount, then choose Close selected day. Add a cash-count or variance note when useful.

Payment recommendations and integration

1. QR Ph: recommended first choice

QR Ph is the Philippine interoperable merchant QR standard. A customer can use a participating bank or e-wallet app to scan the merchant QR. It requires no card reader and the published merchant rates are generally below card rates.

  1. Customer scans the official merchant QR Ph code.
  2. Cashier checks the official merchant app, dashboard or sound device.
  3. Cashier chooses the matching QR method in this POS.
  4. Cashier enters the transaction reference.
  5. The POS records the fee and net receipt.

2. GCash PocketPay: cheapest card-tap option when a suitable phone already exists

GCash says PocketPay requires Android 11 or later, a built-in NFC chip and an internet connection. It is not supported on iPhone. Process the card in the official PocketPay app, wait for approval, then record the reference in this POS.

3. Maya Terminal or Terminal Lite

Enter the amount on the official Maya device, complete tap/insert/QR, wait for approval, and record the terminal reference in the POS. Hardware and commercial terms require a Maya merchant application or quote.

Published sample fees checked July 15, 2026

Provider / methodPublished sample ratePOS sample setting
GCash for Business QR Ph1.0% VAT-inclusive1.0%
GCash credit/debit card3.2% VAT-inclusive3.2%
Maya QR Ph / Maya QRStarting at 1.5%1.5%
Maya Terminal cardStarting at 3.5%3.5%
Maya online card checkoutStarting at 3.5% + ₱10Add both percentage and fixed fee when used
Rates can differ. Merchant pricing, promotions and contracts change. The POS settings are deliberately editable. Match the signed contract instead of relying on the samples.
Never store card details. Do not type a card number, PIN or CVV into this system. Do not accept only a customer's screenshot as proof of QR payment.

Low-cost hardware guide

ItemPractical low-cost choiceRough PH online range observed July 2026
Main POSExisting or used Windows laptop₱0 if owned; roughly ₱3,000–₱10,000 used
Receipt printer58mm USB thermal, ESC/POS compatibleAbout ₱800–₱2,300
ScannerWired 2D USB barcode/QR scannerAbout ₱600–₱1,500
Cash storageManual locked cash box or drawerAbout ₱600–₱1,500
StandBasic laptop/tablet standAbout ₱300–₱1,000
Card tap phoneUsed NFC Android 11+ phoneAbout ₱2,500–₱6,000

Printer integration

  1. Install the operating-system printer driver.
  2. Connect by USB for the most reliable cheap setup.
  3. Set 58mm or 80mm in POS Settings.
  4. Print one test receipt.

Bluetooth printer compatibility varies, especially on tablets. A Windows laptop and USB printer are easier to support. A browser may not automatically open an electronic cash drawer, so keep the drawer key available or configure the printer driver if it supports a drawer pulse.

Scanner integration

  1. Plug the scanner into USB.
  2. Open POS / Checkout.
  3. Choose Focus scanner.
  4. Scan a product barcode.
  5. The scanner acts as a keyboard and normally sends Enter.

Cloudflare deployment: recommended

A. Deploy the D1 sync API

Open a terminal in the cloudflare-api folder.

npm install
npx wrangler login
npx wrangler d1 create foodshop-pos-db

Copy wrangler.toml.example to wrangler.toml. Paste the D1 database ID returned by Cloudflare.

npx wrangler d1 execute foodshop-pos-db --remote --file=schema.sql

Generate two different long keys:

node -e "console.log(require('crypto').randomBytes(32).toString('hex'))"

Save them as Worker secrets:

npx wrangler secret put ADMIN_KEY
npx wrangler secret put VIEWER_KEY
npx wrangler deploy

Copy the deployed Worker address. The API base address ends before /api/state.

B. Deploy the static website

  1. Open Cloudflare Workers & Pages.
  2. Create a Pages application.
  3. Choose Direct Upload.
  4. Upload only the public folder, keeping index.html at the root.
  5. Open the generated pages.dev address.

CLI alternative:

npx wrangler pages deploy public --project-name foodshop-pos

C. Connect the POS

  1. Open the deployed main POS.
  2. Go to Settings.
  3. Enter the Worker URL, Store ID and admin key.
  4. Save, test, then push the local copy.
  5. After the final site address is known, restrict ALLOWED_ORIGINS in wrangler.toml and redeploy the Worker.

Vercel and Netlify deployment

The static POS can be hosted anywhere. The Cloudflare Worker and D1 can remain the backend even when the website is on Vercel or Netlify.

Vercel

  1. Open Vercel Drop.
  2. Drag the public folder.
  3. Choose a project name and deploy.
npm i -g vercel
cd public
vercel --prod

Netlify

  1. Open Netlify Drop or Projects.
  2. Drag the public folder.
  3. Use the generated site address.
npm i -g netlify-cli
netlify deploy --dir=public --prod

After deployment, enter the same Cloudflare Worker API address in the main POS and viewer. Add the Vercel or Netlify website origin to the Worker's ALLOWED_ORIGINS.

Read-only partner viewer

  1. Open the deployed viewer.html address.
  2. Enter the Worker API base URL and the same Store ID used by the POS.
  3. Enter the separate viewer key, not the admin key.
  4. Choose a date range. The page refreshes every 30 seconds.

The viewer has no editing screens. The Worker also rejects write requests made with the viewer key. This provides stronger protection than simply hiding buttons.

Security, backups and BIR caution

BIR caution: this starter is not represented as a BIR-accredited or registered invoicing system. The BIR separately requires applications for authority to use computerized accounting systems and permits for CRM/POS systems. Ask the business RDO and accountant what is currently required before treating this as the official invoicing or books system. Until approved, use it for internal management and issue the required registered invoice separately.

Official reference pages

These links were used to check the platform and payment information. Rates and rules should be rechecked before opening the store.