Stripe Terminal Integration
Accept in-person card payments on Stripe Terminal hardware
directly from your Odoo invoices — tap, insert, or manually key in cards.
💳 Card-Present Payments ☎ MOTO / Phone Orders ↺ One-Click Refunds
ⓘ Description
Stripe Terminal Integration connects your physical Stripe Terminal readers to Odoo’s invoicing workflow. Select an invoice, choose a terminal, and collect payment — the transaction is automatically recorded, reconciled, and linked back to the invoice.
The module supports both card-present payments (tap or insert) and MOTO (manual card entry for phone orders). Refunds are processed through credit notes and routed back to the original card automatically. No card data is ever stored in Odoo — all sensitive information is handled by Stripe.
|
💳
Invoice-to-PaymentPay invoices from the Register Payment dialog — select your terminal, present the card, and you’re done |
🔄
Real-Time StatusA full-screen overlay shows live payment progress with clear status messages and automatic retry on decline |
↺
Built-In RefundsProcess refunds from credit notes with one click — funds are returned to the original card automatically |
⚙ Key Features
Payment Processing
- Card-Present Payments — tap, insert, or swipe on any supported Stripe Terminal reader
- MOTO Payments — manually enter card details on the terminal screen for phone or mail orders
- Automatic Reconciliation — payments are posted and matched to the invoice instantly
- Card Tokenization — save payment methods for repeat customers automatically
- Stripe Customer Sync — Odoo partners are linked to Stripe Customers with smart deduplication
Refund Management
- Credit-Note Refunds — process refunds directly from credit notes through a guided wizard
- Original Card Returns — funds go back to the card that was charged
- Refund Tracking — view refund count, total refunded amount, and linked transactions
- Validation Guards — prevents refunding more than the original charge
- Full Audit Trail — refund details are logged in chatter on both the credit note and original invoice
Terminal Reader Management
- Multi-Reader Support — manage multiple Stripe Terminal devices from a central list
- Status Monitoring — check reader connectivity before initiating payments
- User Defaults — each user can set their preferred terminal in Preferences
- Pre-Flight Checks — the module validates reader availability before every transaction
User Experience
- Full-Screen Payment UI — an overlay displays live status, amount, and terminal name during payment
- Smart Error Messages — 20+ error conditions mapped to clear, user-friendly messages
- Auto-Retry on Decline — declined cards are automatically retried so the customer can try again
- Cancel Anytime — users can cancel an in-progress payment with one click
🔌 Supported Hardware
Works with all Stripe Terminal readers that support server-driven integration:
| Device | Type |
|---|---|
| BBPOS WisePOS E | Countertop smart terminal |
| Stripe Reader S700 | Countertop smart terminal |
| Verifone P400 | Countertop terminal |
| Stripe Reader M2 | Mobile card reader |
| BBPOS Chipper 2X BT | Mobile Bluetooth reader |
⚡ How It Works
Collecting a payment takes just a few clicks:
|
1
|
Register Payment — open an invoice and click Register Payment. Select the Stripe journal. |
|
2
|
Choose Mode & Terminal — pick Terminal (card-present) or MOTO (manual entry) and select the reader. |
|
3
|
Present the Card — the terminal activates and the full-screen overlay shows live status updates as the card is processed. |
|
4
|
Done — the payment is recorded, reconciled with the invoice, and the card token is saved for future use. |
🔧 Configuration
1. Stripe Payment Acquirer
Navigate to Accounting → Configuration → Payment Providers and configure your Stripe acquirer with valid API keys. The module uses the same credentials as Odoo’s built-in Stripe integration.
2. Register Terminal Readers
Go to Accounting → Configuration → Stripe Terminal Readers. Create a record for each physical reader with its Stripe Reader ID (from your Stripe Dashboard), a label, and the device type. Use the Check Status button to verify connectivity.
3. Payment Journal
Create or edit a payment journal under Accounting → Configuration → Journals. In the journal’s advanced settings, enable Is Stripe Journal. Make sure the journal has an outbound payment method if you plan to process refunds.
4. User Preferences (Optional)
Each user can set a default Stripe Terminal reader in their Preferences so it is pre-selected during payment registration.
This module builds on Odoo’s native
payment_stripe module. If you already have Stripe configured in Odoo, you only need to add your terminal readers and mark the journal.
📦 Dependencies
This module requires the following Odoo modules to be installed:
| Module | Purpose |
|---|---|
Accounting account |
Invoices, journals, and payment posting |
Payment payment |
Payment transaction framework and tokens |
Stripe payment_stripe |
Stripe API credentials and base integration |
🎙 Support
Questions or issues? We're here to help.
✉ contact@aglow.dev
Stripe Terminal Integration is developed and maintained by Alpenglow Technologies LLC.
This software is provided "as is", without warranty of any kind, express or implied.
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