Stripe Processing Fee Extension
Automatically calculate, display, and collect a configurable Stripe credit card processing fee from customers — transparent, real-time, and fully reconciled inside Odoo.
What does this module do?
This module extends the Odoo 19 Stripe payment provider to automatically calculate and collect a configurable processing fee when a customer pays by credit or debit card. The fee is computed in real time on the payment portal, displayed as a dedicated line item so customers always know exactly what they will be charged before confirming, and then reconciled back into the sale order as a separate order line once payment is confirmed via Stripe webhook. Bank transfers and ACH payments are fee-free.
Everything you need to collect and reconcile Stripe processing fees transparently.
Real-time Fee Calculation
Fee is computed and shown instantly on the payment portal the moment the customer selects a card payment method.
Configurable Rate
Set your own percentage and fixed amount per payment provider directly in Odoo settings — no code change required.
Separate Line Item
The fee appears as a dedicated order line on the sale order and linked invoice, keeping accounting clean and auditable.
Card-only Trigger
The fee panel is shown only when a card method is selected. Bank transfers and ACH payments remain fee-free automatically.
Idempotency Safe
Duplicate fee lines are prevented even if Odoo's payment cron retries a transaction multiple times.
Webhook Integration
Fee order line is auto-created on payment confirmation via the Stripe webhook using a safe sudo pattern.
Portal Transparency
Full fee breakdown (subtotal, fee amount, total) is shown to customers before they confirm payment — no surprises.
Saved Card Support
Fee breakdown also appears correctly when customers pay with a saved card on file in the Odoo portal.
No Custom Roles
Uses existing Accounting Manager access for configuration — no new security groups or custom roles are required.
How the fee moves from the portal through to the sale order.
If the customer switches back to a bank-transfer method the fee panel disappears and no fee line is created.
Follow these steps from installation through live fee collection.
-
Install the Module
Go to Apps → Search "Stripe Processing Fee Extension" → Install. The module adds fee-related fields to the Stripe payment provider configuration.
💡TipThe module requirespayment_stripe,sale, andwebsite_sale. The Stripe payment provider must be configured and active before the fee extension will work. -
Configure the Processing Fee Rate
Go to Accounting → Configuration → Payment Providers → Stripe. In the Processing Fee section, set:
Setting Description Fee PercentageThe variable part of the fee as a percentage of the order total. Default: 2.9%. Fixed FeeA flat amount added to every card transaction regardless of order size. Default: $0.30. Fee ProductThe Odoo product used as the order line for the fee. Created automatically during installation. 💡TipThe fee formula is:Fee = (Order Total × Fee %) + Fixed Fee. For Stripe's standard US rate:(total × 0.029) + 0.30. -
Verify the Stripe Webhook is Active
The fee order line is created when Stripe confirms payment via webhook. Ensure your Stripe webhook is properly configured in Odoo:
- Go to Accounting → Configuration → Payment Providers → Stripe → Webhook.
- Confirm the webhook URL is registered in your Stripe Dashboard under Developers → Webhooks.
- Ensure the
payment_intent.succeededevent is enabled.
⚠️ImportantWithout an active webhook, the fee line will not be added to the sale order after payment. The fee will still be collected by Stripe but will not be visible in Odoo. -
Customer Checkout Experience
When a customer reaches the payment step on the website or portal and selects a card method:
- The fee breakdown block appears automatically below the order summary.
- It shows: Order Subtotal, Processing Fee (with the rate), and Total Charged.
- The amounts update in real time if the customer switches between payment methods.
- If the customer selects bank transfer or ACH, the fee block hides and no fee is charged.
-
Review the Fee on the Sale Order
After successful payment, open the confirmed sale order in Sales → Orders → Orders. The fee appears as a dedicated order line with the Processing Fee product. It is included in the invoice automatically when the order is invoiced.
💡TipThe fee product uses a dedicated income account (configured on the fee product form) so you can report on processing fee revenue separately in Odoo's accounting reports.
| Field | Location | Description |
|---|---|---|
stripe_fee_percentage | Payment Provider form | Variable fee as a decimal percentage (e.g., 2.9 for 2.9%). |
stripe_fee_fixed | Payment Provider form | Fixed fee added to every card transaction (e.g., 0.30 for $0.30). |
stripe_fee_product_id | Payment Provider form | The product used for the fee order line. Defaults to the auto-created "Processing Fee" product. |
| Fee product income account | Product form (Accounting tab) | The account used to post processing fee revenue. Set this to a dedicated income or expense account. |
| Requirement | Details |
|---|---|
| Odoo Version | 19.0 (Community or Enterprise) |
| Required Odoo modules | payment_stripe sale website_sale |
| Stripe account | An active Stripe account with the Odoo webhook configured (payment_intent.succeeded event). |
| Python packages | No additional packages required beyond standard Odoo dependencies. |
| Browser support | Modern browsers with JavaScript ES6+ (Chrome 80+, Firefox 75+, Safari 13+, Edge 80+) |
Data Models & Extensions
| Model / View | Change |
|---|---|
payment.provider | Adds stripe_fee_percentage, stripe_fee_fixed, and stripe_fee_product_id fields. |
sale.order | Adds helper method to locate or create the processing fee order line. |
| Website payment form template | Injects the real-time fee breakdown block below the order summary. |
| Website sale template | Extends the checkout page to surface the fee when a card method is selected. |
Shadail Technology
Stripe Processing Fee Extension — Version 19.0.1.0.0
License: LGPL-3 • Compatible with Odoo 19
For support, feature requests, or bug reports please contact your Shadail Technology representative.
Stripe Processing Fee Extension
Automatically calculate, display, and collect a configurable Stripe credit card processing fee from customers — transparent, real-time, and fully reconciled inside Odoo.
What does this module do?
This module extends the Odoo 19 Stripe payment provider to automatically calculate and collect a configurable processing fee when a customer pays by credit or debit card. The fee is computed in real time on the payment portal, displayed as a dedicated line item so customers always know exactly what they will be charged before confirming, and then reconciled back into the sale order as a separate order line once payment is confirmed via Stripe webhook. Bank transfers and ACH payments are fee-free.
Everything you need to collect and reconcile Stripe processing fees transparently.
Real-time Fee Calculation
Fee is computed and shown instantly on the payment portal the moment the customer selects a card payment method.
Configurable Rate
Set your own percentage and fixed amount per payment provider directly in Odoo settings — no code change required.
Separate Line Item
The fee appears as a dedicated order line on the sale order and linked invoice, keeping accounting clean and auditable.
Card-only Trigger
The fee panel is shown only when a card method is selected. Bank transfers and ACH payments remain fee-free automatically.
Idempotency Safe
Duplicate fee lines are prevented even if Odoo's payment cron retries a transaction multiple times.
Webhook Integration
Fee order line is auto-created on payment confirmation via the Stripe webhook using a safe sudo pattern.
Portal Transparency
Full fee breakdown (subtotal, fee amount, total) is shown to customers before they confirm payment — no surprises.
Saved Card Support
Fee breakdown also appears correctly when customers pay with a saved card on file in the Odoo portal.
No Custom Roles
Uses existing Accounting Manager access for configuration — no new security groups or custom roles are required.
How the fee moves from the portal through to the sale order.
If the customer switches back to a bank-transfer method the fee panel disappears and no fee line is created.
Follow these steps from installation through live fee collection.
-
Install the Module
Go to Apps → Search "Stripe Processing Fee Extension" → Install. The module adds fee-related fields to the Stripe payment provider configuration.
💡TipThe module requirespayment_stripe,sale, andwebsite_sale. The Stripe payment provider must be configured and active before the fee extension will work. -
Configure the Processing Fee Rate
Go to Accounting → Configuration → Payment Providers → Stripe. In the Processing Fee section, set:
Setting Description Fee PercentageThe variable part of the fee as a percentage of the order total. Default: 2.9%. Fixed FeeA flat amount added to every card transaction regardless of order size. Default: $0.30. Fee ProductThe Odoo product used as the order line for the fee. Created automatically during installation. 💡TipThe fee formula is:Fee = (Order Total × Fee %) + Fixed Fee. For Stripe's standard US rate:(total × 0.029) + 0.30. -
Verify the Stripe Webhook is Active
The fee order line is created when Stripe confirms payment via webhook. Ensure your Stripe webhook is properly configured in Odoo:
- Go to Accounting → Configuration → Payment Providers → Stripe → Webhook.
- Confirm the webhook URL is registered in your Stripe Dashboard under Developers → Webhooks.
- Ensure the
payment_intent.succeededevent is enabled.
⚠️ImportantWithout an active webhook, the fee line will not be added to the sale order after payment. The fee will still be collected by Stripe but will not be visible in Odoo. -
Customer Checkout Experience
When a customer reaches the payment step on the website or portal and selects a card method:
- The fee breakdown block appears automatically below the order summary.
- It shows: Order Subtotal, Processing Fee (with the rate), and Total Charged.
- The amounts update in real time if the customer switches between payment methods.
- If the customer selects bank transfer or ACH, the fee block hides and no fee is charged.
-
Review the Fee on the Sale Order
After successful payment, open the confirmed sale order in Sales → Orders → Orders. The fee appears as a dedicated order line with the Processing Fee product. It is included in the invoice automatically when the order is invoiced.
💡TipThe fee product uses a dedicated income account (configured on the fee product form) so you can report on processing fee revenue separately in Odoo's accounting reports.
| Field | Location | Description |
|---|---|---|
stripe_fee_percentage | Payment Provider form | Variable fee as a decimal percentage (e.g., 2.9 for 2.9%). |
stripe_fee_fixed | Payment Provider form | Fixed fee added to every card transaction (e.g., 0.30 for $0.30). |
stripe_fee_product_id | Payment Provider form | The product used for the fee order line. Defaults to the auto-created "Processing Fee" product. |
| Fee product income account | Product form (Accounting tab) | The account used to post processing fee revenue. Set this to a dedicated income or expense account. |
| Requirement | Details |
|---|---|
| Odoo Version | 19.0 (Community or Enterprise) |
| Required Odoo modules | payment_stripe sale website_sale |
| Stripe account | An active Stripe account with the Odoo webhook configured (payment_intent.succeeded event). |
| Python packages | No additional packages required beyond standard Odoo dependencies. |
| Browser support | Modern browsers with JavaScript ES6+ (Chrome 80+, Firefox 75+, Safari 13+, Edge 80+) |
Data Models & Extensions
| Model / View | Change |
|---|---|
payment.provider | Adds stripe_fee_percentage, stripe_fee_fixed, and stripe_fee_product_id fields. |
sale.order | Adds helper method to locate or create the processing fee order line. |
| Website payment form template | Injects the real-time fee breakdown block below the order summary. |
| Website sale template | Extends the checkout page to surface the fee when a card method is selected. |
Shadail Technology
Stripe Processing Fee Extension — Version 19.0.1.0.0
License: LGPL-3 • Compatible with Odoo 19
For support, feature requests, or bug reports please contact your Shadail Technology representative.