Fast on proper hardware
A native Android till for SUNMI counter terminals. Scans register without selecting a field first, and the printer, cash drawer and second screen are all driven directly.
ForwardPOS is a retail till, customer display and stock system in one. It runs on proper counter hardware, keeps taking cash when the internet drops, and holds a stock ledger that matches the shelf. It is being built and proven behind a real counter at Tower Cards, with WooCommerce sync in testing.
£1 excluding VAT covers your whole first month — every shop, every extra till, whichever plan you choose. Your normal price, from £59 a month, starts on the second invoice.
Most tills are a website squeezed into an app. ForwardPOS is written for the counter itself: the hardware under your hands, the queue in front of you, the stock in the back room.
A native Android till for SUNMI counter terminals. Scans register without selecting a field first, and the printer, cash drawer and second screen are all driven directly.
Your logo, colours and messages on the customer screen, with a live basket while you serve and your promotions and events when the counter is quiet.
When the connection drops, cash sales are saved on the till and uploaded exactly once when it's back. Nothing is guessed, doubled or quietly thrown away.
ForwardPOS holds the stock figure for your shop and your website. Every sale, return and correction goes through a ledger, so you can always see why a number changed.
Prices are held in whole pennies, never floating-point numbers. VAT is worked out per rate, and net plus VAT always equals the total. The server re-checks every basket the till sends.
Turn on ForwardTCG, Cinema, Hospitality, Eat or Hotel for the workflows that trade needs — each on the same till, back office and stock ledger. All five are in early access and not charged yet. See modules.
A prepared till carries on taking cash when it loses the connection. It shows you plainly that it's offline and how many sales it's holding, and uploads each one exactly once when it's back.
“Tower Cards is where we prove it works. ForwardPOS is the product.”
ForwardPOS is being developed alongside Tower Cards, a UK trading-card shop, on the same SUNMI hardware a customer would use. There is no bespoke build for them: their logo, prices and promotions are settings, exactly as yours would be.
Early access is open to a small number of independent UK shops. You get hands-on setup, a direct line to the people building it, and a real say in what gets built next.
ForwardPOS is five parts that share one set of data: the till your staff use, the screen your customers see, the back office you manage from, the integrations that link it all up, and the core that keeps everything consistent.
Every feature below is marked honestly. Built works and is covered by automated tests. In testing is written and being proven on real hardware or with a real provider, and Early access means shops can use it today while it is still being proven. Planned is on the roadmap.
A native Android app for counter terminals. Big targets, one-tap actions, and scanning that works without selecting a field first.
| Barcode scanning, EAN-13, EAN-8, UPC, Code 128 | In testing |
| Basket, VAT per rate, line and order discounts | Built |
| Cash with change and cash drawer | Built |
| Refunds: whole sale, single lines, part quantities | Built |
| Till sessions: float, paid in and out, cash-up | Built |
| Offline cash with exactly-once upload | In testing |
| Receipt printing, lookup and reprint | In testing |
| Inventory browse by category and name (no barcode required) | Built |
| Separate till screens when a module is enabled for that till | In testing |
| Saved servers, e.g. a live shop and a training server | Built |
Your shop's face at the counter. It follows the basket as you scan, confirms the payment, thanks the customer by name of shop, then goes back to your own promotions.
| Live basket, total and payment status | Built |
| Logo, colours and thank-you message from the back office | Built |
| Idle slides for promotions and events | Built |
| Idle video | In testing |
| Browser or tablet displays for other hardware | Planned |
Integrations plug in behind a fixed boundary, so you choose your card provider and web platform, and switching one never means changing the till.
| Cash, and a test card for training | Built |
| Mollie card payments and card refunds | In testing |
| WooCommerce stock and order sync | In testing |
| Shopify | Planned |
| Stripe Terminal and Revolut | Planned |
| Accounting exports | Planned |
A web app for managers and owners. Nothing to install, and every action is limited by what that person is allowed to do.
| Products, barcodes and prices | Built |
| Product categories for catalogue browse | Built |
| Stock levels, adjustments and a full movement history | Built |
| Settings → Modules to enable vertical modules per business, location or till | Built |
| Sales, voids and receipts | Built |
| Review of offline sales, with price and tax approvals | Built |
| Customers, loyalty fobs, events and attendance | Built |
| Several shops: locations, tills and central pricing | Built |
| Staff roles and an audit log of sensitive actions | Built |
| A virtual till in the browser, for online orders and counter work without a terminal | Built |
| Receipts carrying your shop's name, address, VAT number and your own footer | Built |
| Cash position at a glance: opening float, cash sales, refunds, paid-outs and the expected drawer | In testing |
| Staying signed in through a page refresh, with idle and absolute limits | In testing |
| Suppliers, purchase orders and goods-in | Planned |
| Margin and category reporting | Planned |
Forward Core is the central service every till and screen talks to. It re-prices every basket from your own catalogue, owns the stock figure, and records who did what.
Book a demo on a D3 Pro, with your own products loaded if you'd like.
ForwardPOS runs natively on commercial Android counter terminals. It drives the printer, cash drawer, scanner and customer screen directly instead of working around them. The first supported terminal is the SUNMI D3 Pro.
15.6″ Full HD touch. The layout runs basket on the left, totals and a large PAY button on the right, with the connection state always in view.
The 10″ rear screen shows your branding, the live basket and the total, then your promotions between customers.
Your shop name, address and VAT number, the sale number, operator, a VAT breakdown and your own footer. Any receipt can be looked up and reprinted later.
Runs in any modern browser, on a laptop in the back room or a tablet on the shop floor.
Specifications from SUNMI's product page. Configurations vary by reseller, so check the exact model before you buy.
The till talks to hardware through a small, fixed set of abilities: print, open the drawer, read a barcode, drive a second screen. SUNMI is the first implementation of that, not the only one.
We can source a D3 Pro, scanner and cash drawer and set them up with your shop, or get a SUNMI you already own running.
Trading-card and hobby shops don't just sell boxes. They sell singles in a given condition, buy collections over the counter, and run league nights. ForwardTCG adds all of that to the same till, without changing how the rest of the shop works. Singles, buying, store credit, graded cards and pre-orders are all in early access today.
ForwardTCG is developed alongside Tower Cards. It's an optional module: shops that don't need it never see it, and it never changes how the core till behaves. Early access means it is in real use while parts of it are still being proven, mostly on the Android till. The table below says which is which.
| Sell singles by game, set, number, rarity, condition, language and finish | Built |
| Each card is ordinary stock, so pricing, stock counts and returns work like the rest of the shop | Built |
| Receipts record the exact card sold, so they still describe it years later | Built |
| Buy cards for cash or trade them for store credit, in the browser till | Built |
| Market prices entered by hand or pulled from JustTCG or PulseTCG with your own API key, with the source kept on each offer | Built |
| A queue for collections still waiting to be priced | Built |
| Cost tracked per purchase, so the margin on each single is real | Built |
| Undo a completed buy or trade, with a reason recorded | Built |
| Graded cards, reserved at the till so they can never be sold twice | Built |
| Pre-orders with deposits | Built |
| League nights and events, with attendance on loyalty fobs | Built |
| Selling and returning the exact card on the SUNMI D3 till | In testing |
| Buying, trading and spending store credit on the Android till | In testing |
| Buying and trading on the Android till with no connection, settled when it comes back | In testing |
| Printed receipts for buys and trades on the Android till | In testing |
| Tournament registration | Planned |
ForwardTCG switches on from your back office, and it is not charged while it is in early access.
Modules add the screens, records and workflows a particular kind of business needs, on top of the same till, back office, payments and reporting. All five are in early access: you can switch them on from your back office today, they are not charged yet, and each one keeps growing on the same core.
Card and hobby shops
Independent cinemas
Pubs, bars and cafés
Restaurants and takeaways
Hotels and guest houses
Modules are how ForwardPOS grows into new trades. If your business needs something the core doesn't do, tell us. It may be the next one we build.
Talk to usStock, payments, VAT, staff permissions, audit and reporting are shared by every module, so a cinema's popcorn and a card shop's booster packs are counted the same careful way.
Turn a module on for the business, then narrow it to locations or tills. A hotel can run ForwardHotel at reception and ForwardHospitality in the bar, with one set of reports.
Modules add their own records alongside the core rather than changing it, so every business gets the same updates, the same security and the same till. Disabling a module never deletes history.
Every capability on this site appears here with the same status it carries everywhere else, and we keep the two in step: if a status changes here, it changes there too. Nothing below has a delivery date: the order is our current intention, and intentions move.
In use by shops now, covered by automated tests. Where a capability depends on particular hardware or a payment provider, it is listed further down instead.
| Basket, VAT per rate, line and order discounts | Forward Register | Built |
| Cash with change and cash drawer | Forward Register | Built |
| Refunds: whole sale, single lines, part quantities | Forward Register | Built |
| Till sessions: float, paid in and out, cash-up | Forward Register | Built |
| Saved servers, e.g. a live shop and a training server | Forward Register | Built |
| Live basket, total and payment status | Forward Display | Built |
| Logo, colours and thank-you message from the back office | Forward Display | Built |
| Idle slides for promotions and events | Forward Display | Built |
| Products, barcodes and prices | Forward Backoffice | Built |
| Product categories for catalogue browse | Forward Backoffice | Built |
| Stock levels, adjustments and a full movement history | Forward Backoffice | Built |
| Settings → Modules: enable vertical modules per business, location or till | Forward Backoffice | Built |
| Sales, voids and receipts | Forward Backoffice | Built |
| Review of offline sales, with price and tax approvals | Forward Backoffice | Built |
| Customers, loyalty fobs, events and attendance | Forward Backoffice | Built |
| Several shops: locations, tills and central pricing | Forward Backoffice | Built |
| Staff roles and an audit log of sensitive actions | Forward Backoffice | Built |
| A virtual till in the browser, for online orders and counter work without a terminal | Forward Backoffice | Built |
| Receipts carrying your shop's name, address, VAT number and your own footer | Forward Backoffice | Built |
| Cash, and a test card for training | Forward Connect | Built |
| Sell singles by game, set, number, rarity, condition, language and finish | ForwardTCG | Built |
| Each card is ordinary stock, so pricing, stock counts and returns work like the rest of the shop | ForwardTCG | Built |
| Receipts record the exact card sold, so they still describe it years later | ForwardTCG | Built |
| Buy cards for cash or trade them for store credit, in the browser till | ForwardTCG | Built |
| Market prices entered by hand or pulled from JustTCG or PulseTCG with your own API key, with the source kept on each offer | ForwardTCG | Built |
| A queue for collections still waiting to be priced | ForwardTCG | Built |
| Cost tracked per purchase, so the margin on each single is real | ForwardTCG | Built |
| Undo a completed buy or trade, with a reason recorded | ForwardTCG | Built |
| Graded cards, reserved at the till so they can never be sold twice | ForwardTCG | Built |
| Pre-orders with deposits | ForwardTCG | Built |
| League nights and events, with attendance on loyalty fobs | ForwardTCG | Built |
| HTTPS everywhere, private no-store API responses | Hosting and operations | In place |
| Per-shop data isolation, tested by automated cross-shop attacks | Hosting and operations | In place |
| Rate limits, with a much tighter limit on PIN sign-in | Hosting and operations | In place |
| Health and readiness endpoints | Hosting and operations | In place |
| Backups of the server that runs ForwardPOS | Hosting and operations | In place |
Written and deployed, and now being tested on real hardware, with a real provider, or in a hosted build that has not yet been promoted. Usable, but we are not calling it finished.
| Barcode scanning, EAN-13, EAN-8, UPC, Code 128 | Forward Register | In testing |
| Inventory browse by category and name on the till | Forward Register | Built |
| Separate till screens when a module is enabled for that till | Forward Register | In testing |
| Offline cash with exactly-once upload | Forward Register | In testing |
| Receipt printing, lookup and reprint | Forward Register | In testing |
| Idle video | Forward Display | In testing |
| Cash position at a glance: opening float, cash sales, refunds, paid-outs and the expected drawer | Forward Backoffice | In testing |
| Staying signed in through a page refresh, with idle and absolute limits | Forward Backoffice | In testing |
| Mollie card payments and card refunds | Forward Connect | In testing |
| WooCommerce stock and order sync | Forward Connect | In testing |
| Selling and returning the exact card on the SUNMI D3 till | ForwardTCG | In testing |
| Buying, trading and spending store credit on the Android till | ForwardTCG | In testing |
| Buying and trading on the Android till with no connection, settled when it comes back | ForwardTCG | In testing |
| Printed receipts for buys and trades on the Android till | ForwardTCG | In testing |
| ForwardEat: kitchen screen, options and add-ons, courses and order types | ForwardEat | Early access |
| ForwardHospitality: table plan, tabs, waitlist, reservations and bill splitting | ForwardHospitality | Early access |
| ForwardCinema: showtimes, ticket sales, door scanning and seat holds | ForwardCinema | Early access |
| ForwardHotel: rooms, housekeeping, guest bills and arrivals | ForwardHotel | Early access |
What we intend to build next. No dates, and the order can change if a shop tells us something else matters more.
| Tournament registration | ForwardTCG | Planned |
| A visual seat map, a film catalogue and Android till screens | ForwardCinema | Planned |
| A full reservations diary and a front-desk till | ForwardHotel | Planned |
| Online ordering and courier dispatch | ForwardEat | Planned |
| Happy hours and time-based pricing | ForwardHospitality | Planned |
| Independent database backups held off the server | Hosting and operations | Planned |
| A restore procedure that is actually tested, not just written down | Hosting and operations | Planned |
| Central monitoring and alerting | Hosting and operations | Planned |
Wanted, understood, and behind the work above. Ask if one of these is the thing standing between you and a decision.
| Suppliers, purchase orders and goods-in | Forward Backoffice | Planned |
| Margin and category reporting | Forward Backoffice | Planned |
| Shopify | Forward Connect | Planned |
| Accounting exports | Forward Connect | Planned |
| Published uptime and support hours | Hosting and operations | Planned |
| Outbound webhooks for sales, refunds and stock changes | Developer API | Planned |
| Stock levels and adjustments for integrations | Developer API | Planned |
| Customers and loyalty for integrations | Developer API | Planned |
| API keys scoped to a single integration | Developer API | Planned |
Under consideration. Nothing has been designed and nothing is committed.
| Browser or tablet displays for other hardware | Forward Display | Planned |
| Stripe Terminal and Revolut | Forward Connect | Planned |
Specialist trades are served by optional modules on the same core. All five can be switched on today in early access, and none is charged yet. See the modules page for what each one can do today.
| ForwardTCG — Trading cards and hobby shops | Early access |
| ForwardCinema — Tickets, seats and concessions | Early access |
| ForwardHospitality — Pubs, bars and cafés | Early access |
| ForwardEat — Restaurants and takeaways | Early access |
| ForwardHotel — Front desk and guest charges | Early access |
Plans are monthly, with no contract and no cut of your card takings. Each plan sits at least 20% below the nearest like-for-like plan from Lightspeed Retail, the closest match for stock control, web-shop sync, several shops and an API.
First month £1 with the code NEW1POUND, for new customers. Your whole first month costs £1 excluding VAT (£1.20 with VAT), whichever plan, shops and tills you choose. From the second month your normal plan price applies, monthly with no contract, and you can cancel before then in the billing portal.
Prices exclude VAT. Early access shops are onboarded individually, so talk to us before you plan a switchover.
+ available now · ~ in testing or planned, included in the plan when it ships
Add tills beyond your plan's limit, at the same shop.
A flat fee, never a percentage of sales. Every module is in early access and not charged yet; we will agree a start date with you in writing first. The others are priced at launch. See modules.
D3 Pro terminals, scanners and drawers sourced and set up for you, or use a compatible SUNMI you own.
We price against the closest like-for-like product rather than the cheapest headline. Some tills cost less on paper, and here's what's different about them.
| Product | Plan | Per month | What to know |
|---|---|---|---|
| ForwardPOS | Essentials / Retail / Multi-store | £59 / £119 / £149 | No contract. No cut of card takings. Offline cash included on every plan. |
| Lightspeed Retail | Basic / Core / Plus | £75 / £149 / £189 | The closest match on inventory, web-shop sync, several shops and an API. Extra registers cost more. Card rates are quoted individually. |
| Square for Retail | Free / Plus | £0 / £49 | Plus mainly lowers the in-person card rate, from 1.75% to 1.6%. Tied to Square's own payments. |
| Epos Now | Standard / Premium | ~£25 / ~£39 | Lower monthly fee, but contracts typically run 24 to 36 months, with app add-ons charged extra. |
| TCG Sync | Storefront Pro | 2% of TCG sales | A specialist card-shop platform, with a US$1,000 setup fee. Compare with ForwardTCG's flat £39. |
Competitor prices were checked in September 2026 from published reviews and vendor pages, and may exclude VAT or change without notice. Check with each provider before deciding. Sources: Lightspeed, Square, Epos Now, TCG Sync.
Enter the code NEW1POUND when you sign up and your whole first monthly invoice is £1 excluding VAT — £1.20 on a UK invoice at 20% — whichever plan you pick, however many shops and extra tills you have. It is a paid first month, not a free trial, so you have a working account from day one. Your normal plan price then applies from the second invoice. Checkout shows you that price and the renewal date before you confirm, and you can cancel before it through the billing portal. The offer is for new customers and cannot be added to an existing subscription.
No. All prices exclude VAT. Each plan's receipt shows the total with UK VAT at 20% added.
No. Plans are billed monthly and you can cancel whenever you like. Your products, customers and sales history belong to you.
ForwardPOS is in early access. It is running on real hardware at our first shop, and some features are still being proven, each one marked on the platform page. Choose a plan to create your account, verify your email and subscribe with Stripe. Your back office is created after payment is confirmed.
Whatever your payment provider charges you. You hold the account and the relationship with them, and ForwardPOS adds no fee on top.
A prepared till keeps taking cash and saves each sale on the device, then uploads it exactly once when the connection returns. Card payments need a connection, because only the provider can confirm them.
Not yet. ForwardPOS is hosted by us today. A self-hosted option for larger and multi-site retailers is planned; see hosting.
ForwardPOS is a hosted service: we run the servers, the database and the updates. Because each till keeps what it needs to take cash locally, a dropped connection slows your reporting down, not your queue.
The standard way to run ForwardPOS. Included in every plan.
For larger and multi-site retailers who need the platform on their own infrastructure. Not priced yet, so talk to us if it matters to you.
Public HTTPS traffic from tills and browsers reaches Forward Core through Cloudflare.
These are the operating standards ForwardPOS Cloud must meet before it leaves early access. We'll publish status here as each one is met.
| Standard | Status |
|---|---|
| HTTPS everywhere, private no-store API responses | In place |
| Backups of the server that runs ForwardPOS | In place |
| Per-shop data isolation, tested by automated cross-shop attacks | In place |
| Rate limits, with a much tighter limit on PIN sign-in | In place |
| Health and readiness endpoints | In place |
| Independent database backups held off the server | Planned |
| A restore procedure that is actually tested, not just written down | Planned |
| Central monitoring and alerting | Planned |
| Published uptime and support hours | Planned |
For IT leads, auditors and anyone who'd rather read the design than the brochure. This describes the system as it's built today. Where something is planned rather than built, we say so.
ForwardPOS is multi-tenant software as a service. One platform serves every retailer, and each retailer's data is isolated from every other's. Data belongs to a hierarchy of tenant → organisation → location → register, and stock belongs to a location.
There are five parts. Forward Core is the central API and the single source of truth for products, prices, stock, sales and payments. Forward Register is the native Android till. Forward Display is the customer screen, driven by the till. Forward Backoffice is the browser-based management app. Forward Connect is the integration layer for payment providers and web shops, each behind a fixed interface so it can be swapped.
Specialist trades are served by optional vertical modules: ForwardTCG, ForwardCinema, ForwardHospitality, ForwardEat and ForwardHotel. Each is switched on in Settings → Modules. Modules carry their own data on sale lines or domain records and never add trade-specific rules to the core.
/v1), with an OpenAPI description.sale:void, sale:refund, sale:price-override and inventory:adjust, grouped into default roles: cashier, supervisor, manager and administrator.Every sale is given a globally unique ID by the till, and that ID doubles as its idempotency key. Replaying a sale returns the original result. Replaying the same ID with different content is refused as a conflict. Sales and payments commit in serialisable database transactions, and two identical retries racing each other still produce one sale and one stock movement.
A till that has been prepared for offline use can accept cash without a connection. Each offline receipt is written to durable storage before the till reports success, and keeps its original sale and payment keys for its eventual upload. If the server rejects a receipt, for a changed price, a changed VAT rate or a stock shortage, the receipt stays on the till and is reported to the back office for a manager to review. It is never rewritten to make it fit.
Stock is a ledger. Every change is a movement recording the shop, product, quantity, type, reference, the person or system responsible, and the time. The current quantity is a cached total of those movements, so a number can always be explained. Movement types include sale, refund, void, adjustment, offline review corrections and stock allocated to web orders. Each shop decides whether its tills may sell into negative stock.
ForwardPOS is the stock master. Web shops are sales channels that receive its figure, and inbound web orders reduce it through the same ledger. Sync is idempotent to prevent loops.
Payment providers implement one interface: create a payment, check its status, cancel, refund, and verify webhooks. A sale is marked paid only when the provider confirms it, never because the till asked. Payment requests need a stable retry key, and the balance is reserved before a provider is contacted, so two taps can't take two payments.
A payment in an uncertain state is never voided or restocked just because it is old. The provider is asked first. Webhooks are verified against the exact bytes the provider sent.
The till reaches hardware through a HardwareProvider abstraction with a small set of abilities: print a receipt, open the drawer, read barcodes, drive a customer display and report device information. The SUNMI implementation is the first. Capabilities are detected on the device rather than assumed. USB HID scanners are read at the activity level, so a scan registers without a focused text field and typed input is never swallowed.
Sensitive actions are written to a protected audit log with the shop, user, till, action, affected record, time and relevant before and after values. That covers sign-in, refunds, discounts, price overrides, stock adjustments, drawer opens, voids and changes to staff, permissions, integrations and settings. Application logs are structured and carry request IDs. Passwords, payment secrets and card data are never logged.
Forward Register, Forward Backoffice and your own integrations all call one versioned REST API. If the till can do something, it goes through a documented endpoint with the same permission checks.
Preview v1 is in early access and may still change before general availability. API access is included in the Multi-store plan. This page covers the core integration surface: catalogue, sales, payments and refunds.
Your base URL is given to you when your account is set up. The version is part of every path, so /v1 keeps working after /v2 exists. A till estate can't all be upgraded at the same moment, and the API is designed around that.
# every request
https://{your-forwardpos-server}/v1/...
Authorization: Bearer {accessToken}
Content-Type: application/json
An OpenAPI description is available for development and training servers. It isn't exposed on live servers by default, because a complete map of a retail API helps attackers more than it helps integrators. Ask us if you need it.
Sign in to get a short-lived access token and a refresh token. Staff and integration users sign in with an email and password. A till signs in with its register code and an operator's PIN, and its session is bound to that register.
Your shop is identified by the token itself. Any shop or tenant ID you send is ignored, and a token can never read another shop's data.
Refresh tokens rotate: each refresh returns a new pair and retires the old refresh token. Presenting a retired refresh token is treated as theft and signs that user out everywhere, so store the newest one and never replay an old one.
4999 is £49.99. Field names end in Minor. There are no decimals anywhere.Idempotency-Key header. A retry with the same key and body returns the first result. The same key with a different body gets 409.moduleData.<moduleId> or in the module's own records. Enabling a module never grants permissions; disabling never deletes history.transactedAt is when the sale happened, which for an offline sale can be long before it uploaded.Cache-Control: private, no-store. Don't cache responses in shared proxies.Errors are JSON with a statusCode and a human-readable message written to be shown to staff.
| Status | Meaning |
|---|---|
| 400 | The request failed validation, for example an unknown field or a non-integer amount. |
| 401 | No token, or an expired one. Refresh and retry. |
| 403 | Signed in but not allowed. The message names the missing permission. |
| 404 | Not found in your shop. Other shops' records are indistinguishable from missing ones. |
| 409 | A conflict, such as an ID reused with different content or a payment whose outcome isn't known yet. |
| 422 | Understood but refused, such as a total that doesn't match the server's calculation or stock the shop won't sell below zero. |
| 429 | Rate limited. Wait for the Retry-After interval. |
Limits: 300 requests a minute by default, 30 a minute for token refresh, and 10 a minute for each sign-in endpoint.
/v1/auth/passwordpublic · 10/minSign in with an email and password.
| tenantSlug | string | Your account's short name. |
| string | The user's email address. | |
| password | string | 8 to 256 characters. |
// 200 { "accessToken": "eyJhbGciOi...", "refreshToken": "r1_9f2c...", ... }
/v1/auth/pinpublic · 10/minA till signs in an operator with the register code and a 4 to 8 digit PIN. The session is bound to that register, and sales can only be committed for it.
/v1/auth/refreshpublic · 30/minSwap a refresh token for a new access and refresh pair. The old refresh token stops working.
/v1/auth/logoutpublicRevoke a refresh token. Returns 204.
Register-bound sessions (PIN sign-in) call these with me resolved from the token, never from a path parameter.
/v1/registers/me/configregister sessionConfiguration and branding for this till, including enabledModules / modulesVersion after a safe refresh boundary (empty basket, no pending payment).
/v1/registers/me/heartbeatregister sessionReport that the register is alive. Optional x-forwardpos-app-version and x-forwardpos-device headers.
/v1/registers/me/offline-reportregister sessionSubmit an offline trading report for review in the back office.
Shared inventory foundation: products, barcodes, categories and till browse. Modules extend products via moduleData rather than parallel catalogues.
/v1/products/barcode/{barcode}product:readLook up a product by barcode. This is the scan path, matched exactly on the barcode string, so a retailer's own labels work as well as EAN codes.
/v1/products/categoriesproduct:readList catalogue categories for till inventory browse.
/v1/products?q={text}&categoryId={id}&limit={n}product:readBrowse or search the catalogue. Optional categoryId filters by category. Responses include stock and, where relevant, module variant hints (e.g. hospitality bottle pour quantity).
/v1/products/sync?since={timestamp}&cursor={cursor}product:readPull the catalogue in pages, or only what changed since a time. Tills use this to fill their offline cache. Follow the returned cursor until there are no more pages.
/v1/products/{productId}/barcodesproduct:barcode:associateAttach another barcode to an existing product, for example when a supplier changes packaging.
A sale is committed first, which moves stock, and paid second. It is only complete when a payment provider has confirmed payment.
/v1/salessale:createCommit a basket. Send what was scanned and the total you expect. The server prices it from your catalogue and refuses it with 422 if the totals differ. Discounts need sale:discount:line or sale:discount:order, and a unit price different from the catalogue needs sale:price-override.
{
"id": "6f1c2a4e-8b1d-4c1e-9d7a-2a3b4c5d6e7f", // your UUID, also the idempotency key
"registerId": "b3e0...",
"transactedAt": "2026-09-21T14:32:05Z",
"lines": [
{ "id": "c9a1...", "productId": "2d7f...", "quantity": 2 },
{ "id": "e04b...", "productId": "91ac...", "quantity": 1 }
],
"expectedTotalMinor": 3048
}
{
"id": "6f1c2a4e-8b1d-4c1e-9d7a-2a3b4c5d6e7f",
"saleNumber": "TILL01-000419",
"status": "PENDING",
"subtotalMinor": 3048, "discountMinor": 0,
"netMinor": 2540, "taxMinor": 508, "totalMinor": 3048
}
| lines | 1–500 | Each has id, productId, quantity (1–10,000), and optionally discountMinor, discountBasisPoints, discountReason and unitPriceMinor. |
| orderDiscountMinor | integer | Optional. Or orderDiscountBasisPoints. |
| customerId | uuid | Optional. Attaches a customer. |
| tillSessionId | uuid | Optional. Must be an open session on this register. |
| wasOffline | boolean | Set by tills replaying an offline sale. |
/v1/sales/{saleId}sale:createThe sale's current status and totals. Use this to settle an uncertain outcome instead of guessing.
/v1/sales/{saleId}/voidsale:voidAbandon an unpaid sale and return its stock, with a reason. Voiding twice returns the same voided sale without restocking again. Returns 422 if a payment has settled (refund it instead) and 409 if a payment's outcome isn't known yet.
/v1/sales/{saleId}/paymentssale:create · Idempotency-KeyTake a payment against a committed sale. The amount is reserved before the provider is contacted, so two identical taps can't take two payments. For cash, send tenderedMinor and the change is worked out for you.
// Idempotency-Key: 0e5b7c1a-... { "provider": "cash", "amountMinor": 3048, "tenderedMinor": 5000 } // 201 { "id": "a41f...", "provider": "cash", "state": "PAID", "amountMinor": 3048, "changeMinor": 1952 }
state is one of PENDING, PAID, FAILED, EXPIRED or CANCELLED. A card payment starts as PENDING and is only PAID once the provider confirms it.
/v1/sales/{saleId}/payments/{paymentId}/confirmsale:createAsk the server to check a pending payment with its provider. The answer comes from the provider, never from the client.
Payment providers notify ForwardPOS through signed webhooks, which are verified against the exact bytes sent. These endpoints are for providers, not integrators.
Refunds are prepared, then confirmed, so a refund is never half-done. Card refunds go back through the original provider. Every refund needs sale:refund.
/v1/refunds/lookup?receipt={saleNumber}sale:refundFind the original sale from its receipt number to start a refund.
/v1/refundssale:refundPrepare a refund of whole or part lines. Nothing moves until it's confirmed.
/v1/refunds/{id}/confirmsale:refundComplete a prepared refund. Stock returns through the ledger.
/v1/refunds/{id}/cancelsale:refundAbandon a prepared refund.
/healthpublicIs the process alive? Doesn't touch the database, so a brief database blip can't cause a restart storm.
/readypublicCan it serve traffic? Checks the database, and returns 503 if it can't reach it.
ForwardTCG, ForwardCinema, ForwardHospitality, ForwardEat and ForwardHotel are in early access, and their endpoints are still settling. Rather than publish routes that may change, we share the module reference directly with integrators who need it. Ask us for it.
What you can rely on now: where a module adds details to a sale line, they sit under moduleData.<moduleId> rather than in new core fields. Switching a module on never grants a staff permission, and switching it off never deletes a record.
| Outbound webhooks for sales, refunds and stock changes | Planned |
| Stock levels and adjustments for integrations | Planned |
| Customers and loyalty for integrations | Planned |
| API keys scoped to a single integration | Planned |
Back-office routes, such as fleet settings, owner exports, billing, signup and module set-up, are not part of the public reference.
Choose your plan, verify your email and set up your business. Subscribe securely with Stripe, then head straight into your own back office.
First month £1 with the code NEW1POUND, for new customers. Your whole first month costs £1 excluding VAT (£1.20 with VAT), whichever plan, shops and tills you choose. From the second month your normal plan price applies, monthly with no contract, and you can cancel before then in the billing portal.
Online signup is not open yet. Tell us the plan and the size of your shop and we will set you up by hand, usually the same working day. The buttons below write the email for you.
Monthly, with no contract and no cut of your card takings. Multi-store is priced per shop. You can change plan later by asking us.
One shop and one till, with the core tools for your counter: checkout, customer display, products, stock and offline cash.
One busy shop with up to three tills, adding customers, shop management and the reporting a busy counter needs.
For two or more shops, with up to three tills each and one place to run stock, pricing and staff across them.
Tell us how many shops and tills you need. Your answers travel with you into signup, and nothing here is final — ask us and we will move you.
Prices exclude VAT. Add extra tills for £19 each per month. Stripe shows tax and the final recurring total before you subscribe. Hardware and shop payment-provider fees are separate. Compare the plans in full.
ForwardTCG, ForwardCinema, ForwardHospitality, ForwardEat and ForwardHotel can be switched on from your back office today. None of them is on your bill yet, and we will agree any start date with you in writing first. See the modules.
Sign in to pick up where you left off. Open your back office
Something not right, or not sure which plan fits? Email [email protected] and a person will answer.
ForwardPOS is in early access. Hardware and provider acceptance testing is ongoing; see the platform details for current availability.
How Network Heroes Ltd uses information about visitors to this site, businesses with a ForwardPOS account, and people who contact us.
ForwardPOS is provided by Network Heroes Ltd, registered in England and Wales with company number 15467032 (VAT registration GB475910664). Registered office: Blackpool Enterprise Centre, Lytham Road, Blackpool, Lancashire, England, FY4 1EW. For support and privacy enquiries, email [email protected].
This notice explains our use of information about website visitors, business account holders and people who contact us. A shop using ForwardPOS is responsible for explaining its own use of customer, staff, loyalty and event-attendance information. Where we host that information on its instructions, we do so under a separate data-processing agreement with that shop.
Account setup includes your email address, name, business details, VAT status, selected plan and shop/till allowances. We store password hashes, verification records, subscription references and account activity. Support messages and technical records may include contact details, IP addresses, timestamps and error information. Only provide information needed for your request.
We use account and subscription details to set up and administer the service you request. Where you contract personally, this supports that contract; where you act for a company, our basis is our legitimate interest in administering that business relationship. Security and operational records support our legitimate interests in protecting accounts, investigating faults and preventing misuse. Statutory financial records are retained to meet applicable legal obligations. Signup is not consent to marketing. You can ask support to review an account restriction or billing error.
Stripe handles ForwardPOS subscription checkout and billing. Card entry takes place in Stripe's hosted checkout; ForwardPOS receives billing references and payment/subscription status. Maileroo sends the emails that verify your address at signup, so it receives your email address and the content of those emails.
This website and the ForwardPOS service run on server infrastructure operated by Network Heroes Ltd, and their databases are held there. Cloudflare sits in front of them: requests to this website and to the ForwardPOS service pass through Cloudflare's network, which delivers them to our servers and helps protect the service against attacks and misuse. To do this, Cloudflare handles connection details such as your IP address, the details of each request, and the information passing between your browser or till and our servers.
Until 13 October 2026, the ForwardPOS service and this website were hosted by SiteGround. Public traffic now goes to our infrastructure. The earlier SiteGround deployment and its data are temporarily retained so that we can reverse the move if we need to.
Verification codes expire after ten minutes and signup credentials expire after 24 hours. Expiry does not mean the underlying signup record has been deleted. We assess retention against the purpose of each record, legal obligations and unresolved disputes. Incomplete signup records are needed only to complete or investigate signup and prevent abuse; support records are needed to resolve enquiries and relevant disputes; operational logs are needed to investigate faults and security incidents. Information no longer needed for those purposes will be deleted or anonymised.
Merchant data is scheduled for deletion 60 days after the paid subscription ends following cancellation, or 60 days after the seven-day payment grace period ends following non-payment. The verified account owner may request an export during that period. A timely export request pauses deletion of the requested data until it has been supplied and there have been at least seven days to retrieve it. Earlier deletion may be requested subject to legal requirements. Our own billing records and evidence needed for legal obligations or a dispute may be retained separately. Restricted backup copies expire through rotation; deletion instructions are reapplied after a restore.
This website remembers your light/dark theme in browser storage. It sets no cookies of its own, carries no analytics or advertising, and serves its own fonts. Opening a page here involves Cloudflare, which carries the request to us as described above, and our own server, which keeps standard request logs (IP address, time, page requested and browser details) to run and secure the site. No other company is contacted. The signup application uses browser session storage for its signup credential. Stripe and other services may use their own storage when you visit their pages.
Depending on the circumstances, you may request access, correction, erasure, restriction or portability of your information, or object to its use. Where processing relies on consent, you may withdraw it. Some information is needed to create and bill an account; without it we cannot complete signup. For a shop's records, contact that shop first. For information controlled by Network Heroes Ltd, email [email protected] using the contact link above.
You can also raise concerns with the Information Commissioner's Office.
This notice is version 1.2 and takes effect on 13 October 2026. It records that ForwardPOS and this website moved from SiteGround to infrastructure operated by Network Heroes Ltd, with Cloudflare carrying and protecting traffic, and that Maileroo now sends verification emails. Version 1.1 took effect on 24 September 2026 and recorded that the site no longer loads fonts from Google; version 1.0, of the same date, said it did. Earlier versions are available from support. We will explain material changes to how information is used before they take effect, and the version and date above will change with them.
The terms of a ForwardPOS subscription bought for business use: what your plan includes, how billing and cancellation work, and where responsibility sits.
ForwardPOS is provided by Network Heroes Ltd, registered in England and Wales with company number 15467032 (VAT registration GB475910664). Registered office: Blackpool Enterprise Centre, Lytham Road, Blackpool, Lancashire, England, FY4 1EW. For support and privacy enquiries, email [email protected].
These terms cover ForwardPOS subscriptions bought for business use. The person ordering must have authority to act for that business. Review the selected plan, locations, extra tills, monthly price and tax before confirming payment. A successful checkout is followed by business-account provisioning; contact support if payment succeeds but access is not supplied.
Your order identifies the plan and shop/till allowances. Upcoming modules and features marked planned or coming soon are not included as delivered functionality. Hardware purchases and the payment provider you use to accept your own customers' payments are separate unless expressly included in your order.
Subscriptions renew monthly through Stripe. Prices are in pounds sterling, with applicable VAT shown separately at checkout. Essentials is £59 per shop per month with one till; Retail is £119 per shop per month with up to three tills; Multi-store is £149 per shop per month with a minimum of two shops and up to three tills per shop. Extra tills are £19 per till per month. Your checkout confirmation records the amount ordered.
We sometimes offer an introductory price to new customers, such as a discounted first month under a published code. An introductory price applies only to the invoice or period stated when you order, and covers the plan, locations and extra tills on that order. It is a paid introduction rather than a free trial, and VAT is added to the discounted amount at checkout. Your normal plan price resumes automatically on the next invoice. That return to your normal price is not a price increase, so the 30 days' notice below does not apply to it; the discounted amount, the normal recurring price and the renewal date are all shown at checkout before you confirm, and you can cancel before that renewal through the billing portal. An introductory offer applies to a new subscription only and cannot be added to an existing one.
We will notify you by email at least 30 days before increasing your subscription price. The increase will apply from a renewal date after that notice period. You can cancel before that renewal using the billing portal if you do not wish to continue at the new price.
Contact support to request changes to plans, locations or till allowances. Any change requires written confirmation of its price, allowances and effective date before it takes effect.
You can request cancellation through the account owner's billing portal. Cancellation is scheduled for the end of the current billing period. The portal shows the cancellation date. You can continue using your paid subscription until then. Cancellation does not itself erase business or accounting records.
We do not normally refund unused time when you cancel a monthly subscription. We will correct duplicate or incorrect charges and provide refunds required by law. If we permanently discontinue a paid service before the end of your paid period, we will refund the unused portion. Contact support about billing problems; this policy does not remove remedies for our breach of contract.
Keep account access secure and allocate staff permissions appropriately. You are responsible for the accuracy of product, stock, tax and customer records you enter, your sales and returns policies, and notices or permissions needed for your staff and customers. Do not use the service unlawfully, attempt unauthorised access or interfere with other businesses' accounts.
Offline trading depends on a previously synced and supported terminal. Some actions need connectivity or provider confirmation. Check that queued sales have synchronised and investigate uncertain payment results before collecting payment again. We will confirm the supported devices and payment methods for your setup. ForwardPOS subscription billing does not itself enable card acceptance on your tills.
ForwardPOS is currently in early access. Office support hours are Monday to Friday, 09:00–17:00 UK time. Submit support tickets to [email protected]. Tickets receive an initial response by the next working day; a response is not a promise of resolution within that time. Do not rely on roadmap items as commitments to a delivery date.
Advance notice is not required for planned maintenance expected to cause no more than 15 minutes of downtime. For planned downtime longer than 15 minutes, we will provide at least 24 hours of notice for urgent maintenance and at least seven days of notice for non-urgent maintenance.
If an immediate security threat or unplanned incident makes advance notice impracticable, we may act immediately to protect the service and data. We will notify affected account owners as soon as reasonably practicable and provide updates on material disruption.
ForwardPOS is an early-access service. Uptime is not guaranteed. Any availability commitment made to us by an infrastructure or network provider, such as Cloudflare, does not constitute a ForwardPOS uptime guarantee. We operate the infrastructure that runs ForwardPOS, keep backups of it, and will use reasonable care when maintaining and recovering hosted data. We do not promise a fixed recovery time or that every change since the last usable backup can be recovered.
Customers may also keep their own backups using the export or backup features included in their ForwardPOS plan. Keep independent copies of business records you need to retain. This does not remove our own data-protection or contractual responsibilities.
A failed subscription payment has a seven-day grace period from the first failed collection of that payment to allow it to be corrected. Further retries do not restart this period. We will notify the account owner of the failure. If payment remains unpaid when the grace period ends, we may suspend trading access. Contact support or update the payment method in the billing portal to resolve the balance. We will restore access once payment and any separate security issue are resolved, provided the data has not been deleted.
We may also restrict access where reasonably necessary to address unlawful use, a serious breach of these terms or a material security threat. Where safe and lawful, we will explain the reason and allow a reasonable opportunity to remedy it. Restrictions will be proportionate. You may ask support to review a suspension.
Merchant data is scheduled for deletion 60 days after the paid subscription ends following cancellation, or 60 days after the seven-day payment grace period ends following non-payment. During that period, the verified account owner may request a standard export through support without renewing the trading subscription or purchasing an additional backup feature. Trading access and export access are separate. We will send a reminder at least seven days before scheduled deletion. If you request an export before the deadline, we will not delete the requested data until it has been supplied and you have had at least seven days to retrieve it.
You may instruct us to delete merchant personal data sooner, subject to applicable law and identity checks. Once deletion is complete, recovery is not promised. Restricted backup copies will expire through the backup rotation and will not be used for ordinary operations; if a backup is restored, applicable deletion instructions will be reapplied. We may retain our own billing records or limited evidence required by law or an unresolved dispute, separately from merchant operational data.
Your business retains its rights in data it supplies. Network Heroes Ltd retains its rights in ForwardPOS software and branding. Where we process merchant personal data, we do so under an agreed data-processing agreement covering our instructions, confidentiality, security, subprocessors, incident assistance and the return or deletion of data.
ForwardPOS is supplied as an early-access product. We offer no voluntary warranty that the service will be uninterrupted, error-free or suitable for every business requirement. We do not guarantee uptime. This does not remove our express commitments elsewhere in these terms or any rights or liabilities that cannot lawfully be excluded or restricted. In particular, nothing in these terms excludes or limits liability for death or personal injury caused by negligence, fraud or fraudulent misrepresentation. These terms do not impose an additional financial cap on liability; responsibility for loss is determined under applicable law.
We may end the service for a material breach that is not remedied within 14 days of written notice, or immediately where continued provision would be unlawful or present a serious security risk. We may discontinue the service for other reasons with at least 30 days of notice. The refund and data-export provisions above continue to apply as appropriate.
Contact [email protected] first about a complaint so we can investigate and seek a resolution. These terms are governed by the law of England and Wales, whose courts have jurisdiction. Nothing prevents either party seeking urgent relief or exercising rights that cannot lawfully be restricted.
We send contractual notices to the account owner's registered email address; keep it current. We will give at least 30 days of notice of material changes to these terms, with the opportunity to cancel before they apply. Changes required sooner by law or to address an immediate security risk will be explained as soon as reasonably practicable. Changes will not retrospectively remove accrued rights.
These terms are version 1.2 and take effect on 13 October 2026. Version 1.2 replaces the reference to SiteGround's backup facilities, now that we operate the infrastructure that runs ForwardPOS ourselves. It does not change your rights, your price or our other commitments. Version 1.1 took effect on 25 September 2026, and earlier versions are available from support.