| Availability |
Odoo Online
Odoo.sh
On Premise
|
| Odoo Apps Dependencies |
•
Invoicing (account)
• Discuss (mail) • Purchase (purchase) |
| Community Apps Dependencies | Show |
| Lines of code | 1628 |
| Technical Name |
shd_backend_payment_stripe |
| License | OPL-1 |
| Website | https://www.shadailtech.com/ |
| Availability |
Odoo Online
Odoo.sh
On Premise
|
| Odoo Apps Dependencies |
•
Invoicing (account)
• Discuss (mail) • Purchase (purchase) |
| Community Apps Dependencies | Show |
| Lines of code | 1628 |
| Technical Name |
shd_backend_payment_stripe |
| License | OPL-1 |
| Website | https://www.shadailtech.com/ |
Backend Payment Stripe
PCI-compliant Stripe card and ACH token management for the Odoo 19 backend — collect credit cards via Stripe Elements and bank accounts via SetupIntents without raw payment data ever touching the Odoo server.
🛡️ PCI DSS Compliance — Raw card data never touches the Odoo server
Cards are collected via Stripe Elements (hosted iFrame). ACH details are tokenised via stripe.confirmUsBankAccountSetup on Stripe's servers. Odoo only receives a PaymentMethod ID — never raw card numbers or account data.
PCI-Compliant Card Collection
Cards collected exclusively via Stripe Elements iFrame. A PaymentMethod ID is returned to Odoo after confirmation — raw card numbers never reach Odoo.
ACH Bank Account Support
US bank accounts tokenised via stripe.confirmUsBankAccountSetup. Supports instant verification (test) and micro-deposit verification (production).
Stripe Customer Management
Create and update Stripe Customer objects (cus_xxx) directly from the Partner form. Customer ID stored and reused for all tokens on that partner.
SetupIntent Flow
Uses off_session SetupIntents for recurring backend-initiated charges — the industry-standard approach for saving payment methods without a checkout.
Rich Token Metadata
Cards: brand, last4, expiry month/year. ACH: bank name, account last4, routing number, verification status and URL.
Full Token Lifecycle
View, set as default, verify ACH tokens, soft-delete in Odoo, or hard-detach from Stripe — all from the partner's Stripe tab.
Payment Wizard Integration
Auto-detects Stripe when processing payments. Shows card/ACH toggle and inline token collection in the payment wizard from any business document.
Micro-Deposit Verification
Automatic instant verification in Stripe test mode. In production, generates a Stripe-hosted verification URL for the customer to confirm micro-deposits.
Token Types
💳 Credit / Debit Card
- Collected via Stripe Elements iFrame
- SetupIntent with
usage: off_session - Immediately usable — no verification needed
- Stores: brand, last4, expiry month/year
🏦 ACH Bank Account
- Collected via Stripe.js ACH form
- SetupIntent with
us_bank_account - Instant (test) or micro-deposit (prod) verification
- Stores: bank name, last4, routing number, status
shd_backend_payment_core and Odoo's built-in payment_stripe must be installed before this module.Install Dependencies
Ensure these modules are installed first:
shd_backend_payment_core— Shadail Technology Backend Payment Corepayment_stripe— Odoo's built-in Stripe provideraccount— Accounting module
Configure Stripe Payment Provider
Configure the stripe payment provider. Go to Accounting → Configuration → Payment Providers → Stripe.
- Enter your Publishable Key and Secret Key from your Stripe dashboard.
- Set state to Test for sandbox testing or Enabled for live.
- Ensure Allow Saving Payment Methods is enabled.
Install This Module
Go to Apps, search for SHD Backend Payment Stripe, and click Install.
Create Stripe Customers for Partners
Stripe customer creation from partner form view. Open any customer partner record. Go to the Stripe tab. Click Create Stripe Customer. The
cus_xxxID is saved on the partner automatically.Add Payment Tokens
On the Stripe tab, click Add Card Token to open the Stripe Elements card dialog, or Add Bank Account to open the ACH collection form.
4242 4242 4242 4242 (any future expiry, any CVC) to test card token creation. For ACH testing, use routing 110000000 and account 000123456789.Stripe Tab on the Partner Form
| Section | Available Actions |
|---|---|
| Stripe Customer | Create Stripe Customer · Update Customer (pushes name/email/phone) |
| Credit Card Tokens | View saved cards (brand, last4, expiry) · Add Card Token · Set Default · Soft-delete · Hard-detach from Stripe |
| ACH Bank Account Tokens | View saved accounts (bank, last4, status) · Add Bank Account · Verify ACH · Set Default · Soft-delete · Hard-detach |
Adding a Credit Card Token
Create Stripe Customer First
Ensure the partner has a Stripe Customer ID (
cus_xxx). Click Create Stripe Customer on the Stripe tab if not yet created.Click Add Card Token
A Stripe Elements dialog opens — the card input field is a Stripe-hosted iFrame. Enter card number, expiry, and CVC directly into the Stripe form.
Confirm
Odoo calls Stripe's SetupIntent API to confirm and save the card. A
payment.tokenrecord is created automatically with brand, last4, and expiry metadata.
Adding an ACH Bank Account Token
Click Add Bank Account
Opens the ACH collection dialog. Enter bank routing number, account number, and account holder name.
Stripe Tokenises the Details
stripe.confirmUsBankAccountSetupis called — bank details are sent directly to Stripe's servers and tokenised. Only a PaymentMethod ID is returned to Odoo.Verification
In test mode, verification happens automatically. In production, the token is saved with status Pending and a Stripe-hosted verification URL is stored for the customer to complete micro-deposit verification.
ACH Verification Status
✅ Verified
Token is ready to use for payments. Micro-deposit verification completed (or auto-verified in test mode).
⏳ Pending
Awaiting micro-deposit verification. Customer must visit the Stripe-hosted URL to confirm the two small deposits. Click Verify in Odoo to re-attempt automatic verification.
Token Management Actions
| Action | Effect |
|---|---|
| Set as Default | Marks is_default = True on the token — shown first in payment wizard dropdowns |
| Soft Delete | Archives the token in Odoo (active = False). Does NOT detach from Stripe — token can be re-activated if needed. |
| Detach from Stripe | Calls Stripe's /payment_methods/{id}/detach API AND archives in Odoo. Permanently removes the payment method from Stripe. |
| Verify ACH | Attempts to verify a pending ACH token via SetupIntent API. Updates status to Verified if successful. |
PCI DSS Compliance Architecture
| Token Type | Collection Method | Data Flow |
|---|---|---|
| Credit Card | Stripe Elements (hosted iFrame) | Card data → Stripe servers → PaymentMethod ID returned to Odoo. Raw card numbers never reach Odoo. |
| ACH Bank Account | stripe.confirmUsBankAccountSetup | Bank details → Stripe SetupIntent → PaymentMethod ID returned. Routing/account numbers never stored in Odoo. |
Module Dependencies
shd_backend_payment_core, payment_stripe, account | License: OPL-1Need Help Configuring Stripe on Odoo?
Our Odoo payment integration specialists at Shadail Technology can set up, test, and customise your Stripe integration.
Contact UsSHD Backend Payment Stripe
Table of Contents
Overview
The SHD Backend Payment Stripe module extends Odoo 19 with backend Stripe payment processing capabilities. It enables saving credit card and ACH bank-account payment tokens directly on partner records using Stripe Elements (Stripe.js) and SetupIntents, and processing backend payments via those tokens from Sales Orders, Invoices, and other business documents.
Card details are collected exclusively via Stripe Elements — raw card data never touches the Odoo server, satisfying PCI DSS requirements. ACH bank-account details are submitted via stripe.confirmUsBankAccountSetup, which tokenises them on Stripe's servers before returning a PaymentMethod ID.
Key Features
- Card Token Management — Save credit card tokens via Stripe Elements (Stripe.js SetupIntents)
- ACH Bank Account Token Management — Save ACH bank account tokens via Stripe's US Bank Account SetupIntent flow
- PCI DSS Compliant — Raw card data never reaches the Odoo server; all sensitive data handled exclusively by Stripe
- Backend Payment Processing — Process payments using saved tokens from business documents
- Token List on Partner — Saved card and ACH tokens displayed on partner records
- Bridge Wizard — Connects shd_backend_payment_core wizard with Stripe-specific token and API logic
Dependencies
- shd_backend_payment_core
- payment_stripe
- account
Installation
- Install shd_backend_payment_core and Odoo's payment_stripe module first.
- In the Odoo Apps menu, search for SHD Backend Payment Stripe and click Install.
Configuration
- Go to Accounting → Configuration → Payment Providers → Stripe.
- Enter your Stripe Publishable Key and Secret Key from your Stripe dashboard.
- Set the provider state to Test for test mode or Enabled for live processing.
- The token management interface becomes available on partner records.
Usage
Adding a Card Token
- Open any customer partner record.
- Go to the Payment Tokens tab (or the Stripe section added by this module).
- Click Add Card Token — a Stripe Elements card input form appears.
- Enter card details in the secure Stripe Elements form and confirm.
- Stripe creates a SetupIntent, confirms it, and returns a PaymentMethod ID stored as a token.
Adding an ACH Bank Account Token
- On the partner record, click Add Bank Account Token.
- Enter bank account details (routing number, account number, account type).
- stripe.confirmUsBankAccountSetup is called — Stripe tokenises the account details.
- The resulting PaymentMethod ID is stored as a token on the partner.
Processing a Backend Payment
- Open a Sales Order or Invoice.
- Click Process Payment (via shd_backend_payment_core wizard).
- Select Stripe as the provider and the desired saved token.
- Confirm — Stripe charges the saved payment method and the transaction is recorded.
Security Notes
- Card numbers are never transmitted to or stored on the Odoo server.
- All card input is handled inside Stripe Elements iframes, which are fully isolated from the Odoo page context.
- ACH account details are tokenised by Stripe's servers via the SetupIntent API before any identifier reaches Odoo.
- Only opaque PaymentMethod IDs (e.g., pm_1Abc...) are stored in Odoo.
Technical Notes
- Module: shd_backend_payment_stripe
- Version: 19.0.1.0.0
- Category: Accounting/Payment Providers
- Author: Shadail Technology
- Website: https://www.shadailtech.com/
- License: OPL-1
Support
For support and customisation requests, contact us at:
- Email: info@shadailtech.com
- Phone: +91 79773 52693
- Website: https://www.shadailtech.com/contactus
- Address: Office no. 602, Raj Oaks, MTNL Rd, Gokul Village, Mira Road East, Mira Bhayandar, MH 401107
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