PayPal Point of Sale
PayPal Point of Sale Integration for WooCommerce
by PayPal · github.com/inpsyde/paypal-point-of-sale · website
Install
The author publishes release zips, so WP-CLI can install straight from GitHub:
wp plugin install https://github.com/inpsyde/paypal-point-of-sale/releases/download/2.0.0/zettle-pos-integration-2.0.0.zipReadme
PayPal POS for WooCommerce
Connect your WooCommerce store to PayPal POS (Point of Sale) and keep your products and stock in sync across both. Manage your catalog in WooCommerce, push it to your PayPal POS product library, and let stock levels stay accurate on both sides as sales come in.
Installation
The best way to use this package is through Composer:
$ composer require inpsyde/paypal-point-of-sale
Requirements
- PHP >= 8.2
- WordPress >= 6.8
- WooCommerce >= 10.2
Development
- Install Docker and DDEV. Edit the configuration in the
.ddev/config.ymlfile if needed. - Get your packagist token,
copy/hardlink your Composer
auth.json(from~/.config/composer/auth.jsonor~/.composer/auth.json) to~/.ddev/homeadditions/.composer/auth.json - Run
make setupto set up DDEV and install dependencies. Go to https://paypal-point-of-sale.ddev.site - Run
make lint testto run the linter and tests.
Use make reset for reinstallation (will destroy all site data).
You may also need make restart to apply the config changes.
See Makefile for other useful commands.
For Windows users: make is not included out-of-the-box, but you can simply copy the commands from Makefile to cmd,
e.g. ddev exec phpcs, ddev exec phpstan analyze instead of make lint.
Webhooks
For testing webhooks locally, follow these steps to set up ngrok:
-
Install ngrok.
-
Run our wrapper Bash script, which will start
ddev shareand replace the URLs in the WP database:make ngrok
For other environments, you can instead run ngrok http -host-header=rewrite paypal-point-of-sale.myhost
and set the NGROK_HOST env variable to the host that you got from ngrok, like abcd1234.ngrok.io.
In this case, ngrok will be used only for the webhook listening URL (paypal-pos.webhook.listener.url service).
The URLs displayed on the WordPress pages, used in redirects, etc. will still remain local.
Tests
Set the API key in .env.phpunit and run this to execute all tests in all modules:
make test
You can also run
vendor/bin/phpunit
to execute tests only in a single module (after cd to its directory inside modules.local),
or to execute only integration/acceptance tests in the repository root.
Linter
Run this to execute PHP_CodeSniffer and PHPStan, checking code style and quality in all modules:
make lint
You can also run
../../vendor/bin/phpcs .
to execute it only in a single module (after cd to its directory inside modules.local).
Publishing to WordPress.org
Releases are published via the Publish to WordPress.org GitHub Action, which wraps
inpsyde/reusable-workflows' wordpress-org-release.yml.
Trigger it manually (workflow_dispatch) with:
PLUGIN_VERSION— the version to publish, asMAJOR.MINOR.PATCH. Must match both theVersion:header inzettle-pos-integration.phpand theStable taginreadme.txt.GIT_REF— the build branch or tag to publish, e.g.main. This must be a build branch (created by theBuildworkflow,dev/main→main), never adev/*source branch — those still carry a{VERSION}placeholder instead of a real version number, and the workflow will refuse to run against one.UPDATE_TRUNK_ONLY— whentrue(default), only SVN trunk is updated; set tofalseto also cut a new SVN tag.
Crafted by Syde
The team at Syde is engineering the Web since 2006.
License
Copyright (c) 2025 Syde
Good news, this plugin is free for everyone! Since it's released under the GPL-2.0 License you can use it free of charge on your personal or commercial website.
Contributing
All feedback / bug reports / pull requests are welcome.
Read the full README on GitHub →
Releases
| Tag | Published | Asset | Downloads |
|---|---|---|---|
| 2.0.0 | Aug 19, 2026 | zettle-pos-integration-2.0.0.zip | 0 |