Stripe Odoo Integration
Global card payments with radar fraud.
Stripe is the usual choice when an Odoo shop sells across borders and needs cards, wallets and recurring billing under one account. In Odoo it runs as a payment provider on the website and customer portal, so quotations, sale orders and invoices can all be paid online. The hard part is rarely the checkout. It is making sure every authorization, capture, failure and refund lands on the right journal entry, and that the settlement batch reconciles against the bank at month end.
What syncs between Stripe and Odoo
- โ Payments and captures: Stripe to Odoo, one-way. Each successful charge posts against the sale order or invoice that started it.
- โ Refunds: two-way. Refunds raised in Odoo call Stripe, and refunds raised in the Stripe dashboard come back over webhooks so the two never drift.
- โ Saved cards and tokens: Stripe to Odoo, one-way. Odoo holds a token reference only, which is what makes repeat and subscription billing possible without asking the buyer again.
- โ Customer records: Odoo to Stripe, one-way, so every Stripe customer carries your partner reference.
- โ Payouts and processing fees: Stripe to Odoo, one-way, posted so the bank statement line matches the ledger.
- โ Disputes: Stripe to Odoo, one-way, raised as an activity on the related invoice for someone to action.
How we implement it
- 1 Keys and environments
Separate test and live keys, a restricted key for the server, and a staging database that can never touch live money.
- 2 Provider setup in Odoo
Enable the payment provider, pick automatic or manual capture, and point it at the right journal, payment method and company.
- 3 Webhook endpoint
Register the endpoint, verify the signature on every call, and make the handler idempotent so a replayed event cannot double-post.
- 4 Accounting mapping
Fee account, settlement journal, currency handling and rounding, agreed with whoever closes your books.
- 5 Test matrix
Authentication challenge cards, declines, partial refunds, multi-currency orders, and a deliberately dropped webhook to prove recovery.
- 6 Go-live and first settlement
Switch to live keys, run a small real transaction, then watch the first full settlement cycle reconcile before stepping back.
Services that cover this work
Odoo Implementation
End-to-end Odoo deployment, from discovery to go-live.
Odoo Integration
Connect Odoo with your stack and third-party APIs.
Odoo E-Commerce
High-conversion Odoo websites & shops.
Stripe and Odoo: common questions
Does Odoo store card numbers?
No. Odoo stores a token reference returned by Stripe. Card data is entered in Stripe-hosted fields, so the card number never reaches your database or your server logs.
Can we authorize now and capture later?
Yes. Manual capture holds the authorization when the order is placed and takes the money when you confirm or ship. It suits made-to-order and stock-checked workflows.
What happens if a webhook is missed?
The handler is idempotent and keyed on the Stripe event, so Stripe can retry safely. We also add a scheduled reconciliation job that pulls anything the webhook stream missed.
Can Stripe run alongside another gateway?
Yes. Odoo supports several payment providers at once. Routing by website, currency or customer country is a common setup, for example Stripe internationally and a local gateway domestically.
Does it work with Odoo Subscriptions?
Yes. Saved tokens let the subscription renewal charge the stored payment method automatically, with a dunning flow for failures.
Other payments integrations
Need a connector that is not on the list?
Custom REST, GraphQL, webhook, EDI and flat-file integrations, built with retry, idempotency and audit logging so a failed message is visible instead of lost.