함께 작동하는 방식
하나의 매장을 중심으로. 모든 계산대가 동기화됩니다.
- 설정은 플러그인 하나면 충분합니다무료 플러그인은 WooCommerce 매장에 안전한 REST API를 추가합니다. 설치는 이것으로 끝입니다 — 기기마다 호스팅하거나 설정할 것이 없습니다.
- 모든 앱이 같은 매장을 읽고 씁니다데스크톱에서 판매를 처리하고 휴대폰에서 환불하세요 — 제품, 주문, 고객이 하나의 세트로 실시간 업데이트됩니다.
- 오프라인 우선, 계산대가 멈추지 않도록각 기기는 연결이 없어도 계속 작동하며, 다시 온라인이 되는 순간 재동기화됩니다.
동기화되는 항목
- 제품 및 가격
- 재고 수준
- 주문
- 고객
- 세금 및 영수증
시작하기
첫 판매까지 세 단계
처음부터 끝까지 약 2분이면 됩니다.
- 1
무료 플러그인 설치
모든 것이 연결되는 기반입니다. 대시보드에서 플러그인 → 새로 추가로 이동한 뒤 “WCPOS”를 검색하세요.
WCPOS무료 · GPL
최신 1.10.2 · WordPress 5.6+ · WooCommerce 5.3+ · PHP 7.4+
- 2
기기 선택
모두 무료이며 모두 동기화됩니다. 위에서 감지된 항목을 받거나, 아래 중 하나를 선택하세요.
iOS & iPad베타
Android베타
- 3
더 많은 기능이 필요하신가요? Pro로 업그레이드하세요
터미널 결제, 환불, 재고 관리를 같은 기반 위에 추가하는 라이선스 플러그인입니다.
릴리스 기록
새로운 기능
최근 변경 사항 — 모든 앱은 하나의 버전 라인을 공유합니다.
릴리스 노트는 GitHub에서 가져오며 영어로 표시될 수 있습니다.
1.10.2최신2026년 8월 26일
- Fixed a regression in order save speed for CPT orders -- HPOS orders are not affected. (#1727)
1.10.12026년 8월 25일
이 버전에 대한 릴리스 노트가 없습니다.
1.10.02026년 8월 25일
WCPOS 1.10.0
The biggest release since we rebuilt WCPOS in React Native back in 2023. Your store now syncs through a proper change log: the POS asks the server what changed since it last checked, instead of re-downloading your catalogue and hoping it landed. Nearly everything below follows from that.
⚠️ Please don't update lightly. This is a major update — update when your store is quiet and you have time to check everything over, and be ready to roll back if you hit a problem.
Sync and performance
- The sync engine has been rebuilt end to end, on a new server API (
wcpos/v2). Your store now syncs through a change log: the POS asks what changed since it last checked instead of re-downloading the catalogue. This is the foundation the offline queue and Store Health below are built on. - Product search matches inside words, so compound-word languages work correctly — searching "saippua" now finds "Kuorintasaippua".
- Customer search matches every word, so full names like "John Smith" work against the server.
Offline and reliability
- Browsing, cart building and saving orders keep working offline. The sync engine queues the changes you make — customers, coupons, stock and price edits (Pro), and receipt emails — and replays them on reconnect.
- Taking payment still needs a connection. Checkout renders a server-hosted payment page, so the payment step cannot complete offline. Offline checkout, starting with cash, is the focus of 1.11.
- Anything the server rejects lands in a recovery list with the reason, and can be edited and resent.
- Unreadable local storage now blocks checkout with a reload prompt instead of losing the sale; barcode scans fail loudly in that state rather than going quiet.
- The crash screen's "Try again" no longer discards unsent sales.
- Web: cross-tab leader election, so multiple tabs share one writer and can't produce phantom orders.
- Order write conflicts auto-recover once and surface if they can't.
- Store switching is transactional — hydrate, then commit, with errors surfaced.
Prevent overselling (new, off by default)
- Enable in Checkout settings. The cart blocks quantities beyond available stock and shows what's left.
- The server independently refuses the order (
wcpos_insufficient_stock, HTTP 400, every failing line listed), so a stale or bypassed device can't oversell either. - Backorders (
allow/notify) never block. Variation stock aggregates to the parent stock owner. Draft and cart syncs always succeed — only checkout is gated. - Variation stock shown in the picker; out-of-stock variations can be hidden.
Barcode scanning
- Camera scanning on every platform, in a resizable panel below the filters.
- New transports: USB serial and HID-POS (Web Serial / WebHID), Bluetooth SPP, and Bluetooth LE via vendor GATT. Electron gains a device chooser; Android gains a native key interceptor.
- Keyboard-wedge detection now requires a scanner-like burst, so fast typing doesn't register.
- Scanner Setup Wizard and a test panel that measures your scanner and suggests fixes.
- UPC-A barcodes resolve to the digits printed on the package.
- Barcode field defaults to GTIN (
_global_unique_id);_skuand custommeta_data:mappings selectable. Changing the field rebuilds the catalogue's barcode index. - Optional scan sounds with themes. Scans route to the search field on the Orders screen.
- Online fallback with auto-add for barcodes not in the local catalogue.
Store Health (new)
- Database — what's on the device vs. what's on the server, real storage usage, variation totals, server clock-skew detection, per-collection "check for changes now".
- Performance — measured actuals, live tuning dials, trend charts.
- Logs — flat ledger with duration and status columns, level filters, expandable rows, infinite scroll. Every sync warning carries a registry error code with a copyable value and a link to its explanation in the docs.
Money and tax
- Cash change and card cashback render in the order's currency rather than the site default.
- Receipts print the currency symbol rather than the ISO currency code.
Printing and receipts
- Star CloudPRNT negotiates media types properly, with a
text/plainfallback. - Receipts can be rendered server-side as PNG for printers that can't decode StarPRNT.
- Auto-print rules can trigger on order creation or only once paid, and can print multiple copies.
- Offline receipts render in the correct language — the store payload now ships a label dictionary.
- Retried print failures no longer stay stuck in "Needs attention".
- Thermal fixes: mbstring fallback, wider Star width table, shared text layout, preview and print clamp out-of-range attributes identically.
- Templates are labelled "Thermal" rather than "ESC/POS".
Access and permissions
- Cashiers can create and edit products by default. Deleting stays opt-in.
- Catalogue and coupon writes are checked against real WordPress capabilities; a rejected edit reverts locally and shows the server's reason.
- Capability toggles on the Access screen are grouped by task.
Platform
- Expo SDK 57 / React Native 0.86. Desktop app on Electron 43, with the Node stack retired from the main process.
- Native local storage moved to the Expo filesystem engine.
- Fixed dropdowns not opening on iPad.
- Fixed language changes not reaching every part of the app.
- New transport fallbacks for restrictive hosts: query-parameter JWT,
?rest_route=mode, a header echo probe, and an opt-in response-body envelope for hosts that strip headers. - Settings redesigned; Settings and Store Health open as panels rather than modals.
⚠️ Changes that may affect you Only things that differ from released 1.9.17. Internal contracts that changed during 1.10 development are not listed — they were never in a shipped build.
- Legacy
API\Settingscontroller methods are removed (get_general_settings(),update_access_settings(),get_general_endpoint_args(),remove_license_transient()and others). The class alias survives; the methods do not. Third-party code calling or overriding them needs updating. - The StarPRNT fixed-layout output adapter has been removed. Templates using it need switching to another output.
- Default cashier capabilities changed — catalogue create and edit are now granted by default. Deleting stays opt-in.
- The POS product grid now defaults to name ascending, replacing the previous default order.
For integrators
- New
wcpos/v2REST namespace. Syncing lives here, and the shared POS services previously served fromwcpos/v1are nowwcpos/v2pass-throughs. Thewcpos/v1routes still register and still work — they are frozen, and the POS no longer calls them. - New public endpoints:
wcpos/v2/site(discovery),wcpos/v2/ping(reachability),wcpos/v2/echo(header probe). - POS line-item pricing storage is now documented for third-party sync compatibility.
Upgrading Don't update while your store is busy. Pick a time when you have some free time to check everything over, and be ready to roll back if you run into a problem.
Full Changelog: https://github.com/wcpos/woocommerce-pos/compare/v1.9.17...v1.10.0
1.9.172026년 8월 7일
What's Changed
- Smaller plugin package — the download is around 2.4 MB smaller (optimized template gallery images, removed unused bundled files). This also shrinks the Pro package and resolves installation failures on hosts with restrictive upload or disk limits. (#1538)
- Fixed Pro update downloads using a stale licence key — changing or re-activating a WCPOS Pro licence now clears WordPress's cached update information, so the next update download always uses the current licence key. (#1444, #1480)
- Fixed duplicate cashier identity on multisite — on multisite networks a cashier could be assigned two different internal IDs depending on which endpoint served them, splitting one user into two identities in the POS. All endpoints now serve a single ID per user. (#1465)
- Hardened the orders API against malformed metadata — a malformed metadata entry in a batch create/update could cause a server error partway through the batch, risking duplicate orders on retry. Malformed entries are now safely skipped and invalid IDs rejected up front. (#1473)
- POS audit metadata is now server-authoritative — order metadata recording which cashier and store created an order is now stamped by the server and can no longer be altered by the client. Cash amounts are also validated more strictly. (#1464)
- Internal cloud print improvements — consolidated printer-provider handling; the server now reports which template engines each print provider supports. (#1463)
Full Changelog: https://github.com/wcpos/woocommerce-pos/compare/v1.9.16...v1.9.17
1.9.162026년 8월 4일
Bug fix
Fixed stale price ranges on variable products. The POS product grid could show an outdated price or price range for a variable product even after variation prices changed — and clearing local data did not help — because the freshly recomputed range was discarded in favour of an old stored value when building the server response. Responses now always serve the current values, so the displayed range matches the live variation prices. The price charged at checkout was always correct; this fixes what the grid displays. Server-side fix — no app update needed.
Full changelog: https://github.com/wcpos/woocommerce-pos/blob/v1.9.16/readme.txt
1.9.152026년 8월 4일
Security patch
Custom thermal receipt templates can no longer run PHP. A user with POS management access (eg: a shop manager) could embed PHP in a custom thermal receipt template and have it execute when a receipt was rendered, because the thermal engine fell through to the legacy PHP renderer. Thermal templates now render exclusively through the safe Mustache/XML pipeline, which discards embedded PHP; malformed markup fails closed. If you use custom receipt templates, please update.
More reliable thermal receipt rendering. Thermal render failures are now logged so a broken template is diagnosable, and browser-printed HTML receipts are constrained to the configured paper width so wide rows no longer overflow the roll.
Full changelog: https://github.com/wcpos/woocommerce-pos/blob/v1.9.15/readme.txt