Skip to Content
Odoo 19 • Accounting / Payment Providers

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.

📦 Version 19.0.1.0.0 🏢 Shadail Technology 💻 Odoo 19 🔒 LGPL-3 License
Overview

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.

Example Payment Summary
Order Subtotal $100.00
Stripe Processing Fee 2.9% + $0.30 $3.20
Total Charged $103.20
Key Features

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.

Payment Flow

How the fee moves from the portal through to the sale order.

🛒
Customer Checkout
Selects card payment on portal
Fee Displayed
Breakdown shown in real time
Payment Confirmed
Stripe webhook fires
🧾
Fee Line Added
SOL created on sale order

If the customer switches back to a bank-transfer method the fee panel disappears and no fee line is created.

Step-by-Step Guide

Follow these steps from installation through live fee collection.

  1. 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 requires payment_stripe, sale, and website_sale. The Stripe payment provider must be configured and active before the fee extension will work.
  2. Configure the Processing Fee Rate

    Go to Accounting → Configuration → Payment Providers → Stripe. In the Processing Fee section, set:

    SettingDescription
    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.
  3. 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.succeeded event 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.
  4. 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.
  5. 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.
Configuration Reference
FieldLocationDescription
stripe_fee_percentagePayment Provider formVariable fee as a decimal percentage (e.g., 2.9 for 2.9%).
stripe_fee_fixedPayment Provider formFixed fee added to every card transaction (e.g., 0.30 for $0.30).
stripe_fee_product_idPayment Provider formThe product used for the fee order line. Defaults to the auto-created "Processing Fee" product.
Fee product income accountProduct form (Accounting tab)The account used to post processing fee revenue. Set this to a dedicated income or expense account.
Dependencies & Requirements
RequirementDetails
Odoo Version19.0 (Community or Enterprise)
Required Odoo modules payment_stripe sale website_sale
Stripe accountAn active Stripe account with the Odoo webhook configured (payment_intent.succeeded event).
Python packagesNo additional packages required beyond standard Odoo dependencies.
Browser supportModern browsers with JavaScript ES6+ (Chrome 80+, Firefox 75+, Safari 13+, Edge 80+)

Data Models & Extensions

Model / ViewChange
payment.providerAdds stripe_fee_percentage, stripe_fee_fixed, and stripe_fee_product_id fields.
sale.orderAdds helper method to locate or create the processing fee order line.
Website payment form templateInjects the real-time fee breakdown block below the order summary.
Website sale templateExtends the checkout page to surface the fee when a card method is selected.

Download The App From Here


Download App