POS Stripe Payment Links
Charge customers remotely with Stripe Payment Links — straight from your POS
Generate a Stripe Payment Link for the order's outstanding amount directly from the Point of Sale, share it with the customer, and let them pay securely on Stripe's hosted page. The payment is registered back in the order automatically — no extra terminal hardware required. You can also use it to settle a customer's outstanding account balance — charge the full amount or a part of it, paid remotely.
The Problem
Limited payment options
Customers want to pay with their phone, but the POS only accepts cash or a physical card terminal.
Terminal costs
Physical payment terminals require hardware investment, setup and ongoing maintenance.
Manual reconciliation
Payments taken outside the POS have to be entered and reconciled by hand, which is slow and error-prone.
The Solution
A cashier generates a Stripe Payment Link in one click from the payment screen and shares it with the customer. The customer pays on Stripe's secure hosted checkout — card, Apple Pay or Google Pay — and the POS registers the payment automatically through the Stripe webhook, while the order stays safely locked until the payment is confirmed.
Key Features
- Settle due accounts — beyond charging the current order, collect a customer's outstanding account balance remotely. Pick the Stripe Payment Link method on a customer-account settlement: the popup shows the customer's total balance and lets you charge the full amount or a partial amount. The balance is settled when the customer pays.
- One-click link generation — create a Stripe Payment Link for the order's due amount right from the payment screen.
- Copy & share — copy the payment link and send it to the customer through any channel you like.
- Order lock — the order is locked while it waits for payment, preventing accidental changes to products, quantities or customer.
- Real-time confirmation — a live bus notification updates the POS the moment the customer pays, with an automatic polling fallback.
- Automatic payment registration — the Stripe webhook records the payment on the POS order without any manual entry.
- Manual order close — the cashier closes the order once the payment is confirmed, keeping full control of the flow.
- Circuit breaker — built-in resilience protects the POS if the Stripe API is temporarily unavailable.
- Automatic expiration — unused payment links are expired automatically after 24 hours by a scheduled action.
- Backend tracking — a dedicated Payment Links menu lists every link with its status (pending, paid, expired, cancelled), amount and customer.
- Multi-company & multi-currency — works across companies and currencies, with company-level record isolation.
- Role-based security — dedicated User and Manager groups control who can view and manage payment links.
- Uses your existing Stripe setup — reuses the Stripe payment provider you already configured. No new API keys.
How It Works
See It in Action
Generate the link. From the POS payment screen, choosing the Stripe Payment Link method creates the link instantly — copy it and share it with the customer. The popup shows the amount, reference and a Pending Payment status.
The order is locked. While a payment link is active, products and the customer cannot be changed — preventing accidental edits. Tap the locked order to check the payment status.
Check the status anytime. While waiting for the customer to pay, the cashier can re-check the status, cancel the payment, or minimize the popup and keep working. The POS updates automatically the moment the payment is confirmed.
Settle due accounts. The same flow collects a customer's outstanding balance: choose the Stripe Payment Link method on a customer-account settlement, the popup shows the Customer total balance and an editable Amount to charge (full or partial), then generates a Stripe link to send. The customer's account is settled when they pay.
Stripe Webhook Setup — Step by Step
The webhook is what lets Stripe tell Odoo the moment a payment link is paid, so the POS registers the payment automatically. You set it up once, in about five minutes — no coding required.
Module Setup
Technical Information
| Odoo Version | 18.0 |
| Editions | Community & Enterprise |
| Hosting | Odoo.sh / On-Premise |
| License | OPL-1 |
| Dependencies | payment_stripe, point_of_sale, bus |
| External libraries | None |
| Languages | English, Spanish, French, German, Portuguese, Hindi, Arabic |
| Multi-Company | Yes |
| Multi-Currency | Yes |
| Webhook endpoint | /payment/stripe/webhook |
| Webhook event | checkout.session.completed |
| Real-time updates | Bus notification + polling fallback |
| Reliability | Circuit breaker on Stripe calls |
| Link expiration | Automatic after 24 h (scheduled action) |
Frequently Asked Questions
Is this app compatible with Odoo Community and Enterprise?
Yes. It depends only on standard Odoo modules, so it works on both Community and Enterprise.
Does it work on Odoo Online (odoo.com / SaaS)?
No. Like all custom modules, it runs on Odoo.sh or On-Premise, not on the Odoo Online (SaaS) platform.
Do I need a Stripe account?
Yes. You configure a standard Stripe payment provider in Odoo, and the module reuses it to create the payment links.
Do I need to install extra Python libraries?
No. The module relies on Odoo's built-in payment_stripe module to communicate with Stripe.
Is the Stripe webhook required?
Yes. The automatic payment registration uses Stripe's checkout.session.completed webhook on /payment/stripe/webhook.
Does it generate a QR code or send the link by WhatsApp automatically?
No. The cashier copies the payment link and shares it through any channel; the customer then pays on Stripe's hosted checkout page.
Do I get support and updates?
Yes. Reach us at roberto@arsol.solutions for support or questions.
Need help?
Our team is happy to assist you with setup, configuration or any question about the module.
roberto@arsol.solutionsArsol Solutions
Odoo apps built for real-world business needs.
Contact SupportCompatible with Odoo 18 Community & Enterprise
Odoo Proprietary License v1.0 This software and associated files (the "Software") may only be used (executed, modified, executed after modifications) if you have purchased a valid license from the authors, typically via Odoo Apps, or if you have received a written agreement from the authors of the Software (see the COPYRIGHT file). You may develop Odoo modules that use the Software as a library (typically by depending on it, importing it and using its resources), but without copying any source code or material from the Software. You may distribute those modules under the license of your choice, provided that this license is compatible with the terms of the Odoo Proprietary License (For example: LGPL, MIT, or proprietary licenses similar to this one). It is forbidden to publish, distribute, sublicense, or sell copies of the Software or modified copies of the Software. The above copyright notice and this permission notice must be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
Please log in to comment on this module