A build-to-order Odoo payment provider that connects your checkout to Opn Payments (formerly Omise) for Thai and Southeast Asian cards, PromptPay QR, internet banking, and the TrueMoney wallet. ECOSIRE builds, installs, and supports it for Odoo 17.0, 18.0, and 19.0. Built to order by ECOSIRE for Odoo 17, 18, 19 — indicative price from $249.00 USD; request a quote for a scoped proposal.

A build-to-order Odoo payment provider that connects your checkout to Opn Payments (formerly Omise) for Thai and Southeast Asian cards, PromptPay QR, internet banking, and the TrueMoney wallet. ECOSIRE builds, installs, and supports it for Odoo 17.0, 18.0, and 19.0.
No payment now. This sends a quote request to our team — we'll follow up by email with pricing and next steps.
Merchants selling in Thailand and wider Southeast Asia lose orders at checkout when their only options are foreign card rails. Local buyers expect PromptPay QR, the TrueMoney wallet, and THB internet banking — the exact tender types Opn Payments (formerly Omise) settles natively. Odoo core ships a payment framework with a handful of providers, but there is no first-party Opn provider, and Odoo does not model asynchronous QR/wallet confirmations, source-based flows, or Opn's webhook event shapes out of the box. The result is manual bank-statement matching, orders stuck in a pending state, and reconciliation gaps between what Opn settled and what Odoo believes it collected.
Native `payment.provider` extension with `code = 'opn'`, so checkout, e-commerce, invoicing and Sales portal payment links all work without a parallel payment stack
Opn charge and source creation via the REST API, with THB amounts correctly serialized to minor units (satang) and currency validation against Opn's supported set
PromptPay QR checkout rendered through a QWeb template, with the source payload displayed for the customer to scan and an asynchronous confirmation flow
TrueMoney wallet payment method wired through Opn source objects, mapped to the Odoo transaction state machine
Card payments with 3-D Secure redirect carried through Odoo's standard payment return controller and status polling
Thai internet-banking (offsite) methods surfaced as selectable checkout options gated per provider configuration
We build a dedicated Odoo payment provider that extends the native payment.provider and payment.transaction models rather than bolting on a parallel system, so it inherits Odoo's checkout, invoicing, and accounting hooks. A new provider record (code = 'opn') carries your public and secret API keys plus the webhook signing secret, stored on encrypted fields and gated by ir.model.access.csv and record rules so only Accounting/Settings managers can read them. At checkout the OWL/QWeb payment form renders the enabled Opn methods; the server creates an Opn charge or source via the REST API over requests, and for PromptPay it returns the QR payload to a QWeb-rendered template the customer scans. Card flows carry the 3-D Secure redirect through Odoo's standard return controller.
Because PromptPay, TrueMoney, and internet-banking payments confirm asynchronously, the module exposes a signed webhook controller that verifies each Opn event, maps charge.complete, charge.failed, and refund events onto the transaction state machine (_set_done, _set_pending, _set_canceled), and is idempotent against Opn's event id so retried deliveries never double-post. A scheduled action (ir.cron) polls any transaction still pending past a threshold and reconciles it against the Opn charge, closing the gap when a webhook is missed. Refunds initiated from the Odoo credit-note flow call the Opn refund API and write the returned refund id back to the transaction for audit. THB is the primary currency, with SGD and JPY handled per Opn's supported set, and amounts are converted to the correct minor-unit (satang) representation Opn expects.
This is a build-to-order engagement, not an instant apps.odoo.com download. After a short scoping call we confirm which methods you need (cards, PromptPay, internet banking, TrueMoney), your Odoo edition and version (17.0/18.0/19.0, Community or Enterprise), and your accounting/journal setup. We then build against your exact configuration, run UAT on a staging database with Opn test keys, and hand over installable source, a git repository, and documentation. Typical delivery is 2-4 weeks from confirmed scope, and every path is tested end-to-end with live-mode keys before go-live.
Runs Odoo eCommerce or the Sales portal for a Thailand-based store and needs PromptPay and card checkout via their existing Opn (Omise) account so local buyers can pay without leaving the site.
Owns reconciliation and refunds across THB/SGD/JPY. Needs Opn settlements to match Odoo invoices automatically, webhook-driven status updates, and refunds issued from the credit-note flow rather than the Opn dashboard.
Wants a clean provider that extends `payment.provider`/`payment.transaction` with proper access rules and a git handover, not a fragile fork, so it survives version upgrades and can be maintained internally.
Sells via web and POS-adjacent channels and wants to add TrueMoney and internet-banking options at online checkout, with idempotent webhook handling so asynchronous confirmations stay consistent.
Buy the license on ecosire.com and download the Opn (Omise) Payment Gateway for Odoo module ZIP from your account dashboard.
Extract the ZIP into your Odoo custom addons folder on the server (or upload via Apps > Install from file on Odoo.sh / runbot).
Activate Developer Mode, open Apps, click Update Apps List, search for Opn (Omise) Payment Gateway for Odoo, and press Install.
Open the new menu, paste your ECOSIRE license key, connect any external credentials (Shopify, Amazon, Stripe, etc.), and save.
Run the built-in connection test, sync your first 10 records, and schedule the recurring cron. Contact support if anything fails.
| Criterion | ECOSIRE | Custom Build | Competitor | Odoo Native |
|---|---|---|---|---|
| Opn/Omise coverage | Purpose-built Opn provider: cards, PromptPay, internet banking, TrueMoney | Whatever you scope and build yourself | Often cards-only or a subset, gaps on wallets/QR | |
| Async QR/wallet confirmation | Signed, idempotent webhook + cron self-heal for pending charges | Must design the state machine and idempotency yourself | Varies; idempotency and cron reconciliation often missing | |
| Refunds | Driven from Odoo credit-note, refund id persisted for audit | Depends on your build effort | Sometimes dashboard-only, not Odoo-native | |
| Odoo version fit | Built for your exact 17.0/18.0/19.0 + Community/Enterprise | You maintain version compatibility | May lag new Odoo releases | |
| Security model | Encrypted keys, ir.model.access.csv + record rules, no card storage | Your responsibility to get right | Inconsistent access controls across vendors | |
| Reconciliation to accounting | Transactions matched to invoices/SOs, THB satang-correct amounts | You wire the accounting hooks | Basic; edge cases often unhandled | |
| Support & handover | Post-go-live window + full git repo + training | Internal only | Ticket-based, no source access typically | |
| Time to production | 2-4 weeks build-to-order, UAT on staging first | Unpredictable, depends on internal capacity | Fast install but rework to fit your flow |
This is a build-to-order module, so we start from a short scoping call to confirm your methods, Odoo version, and accounting setup. Typical delivery is 2-4 weeks from confirmed scope, including UAT on a staging database before go-live. Tighter scopes (cards + PromptPay only) land faster; broader ones with custom reconciliation reporting sit at the upper end.
We build for Odoo 17.0, 18.0, and 19.0, on both Community and Enterprise. The provider extends the native `payment.provider`/`payment.transaction` framework, which exists in Community, so no Enterprise dependency is required for the payment flow itself.
Every engagement includes a post-go-live support window for defect fixes and configuration adjustments. Because you receive the full git repository, your team can maintain it, and we offer version-upgrade and enhancement work (new methods, custom reconciliation reports) as a follow-on when Odoo releases a new version or Opn changes an API.
Cards (with 3-D Secure), PromptPay QR, Thai internet banking, and the TrueMoney wallet, subject to what your Opn account has enabled. During scoping we confirm exactly which methods to surface at checkout and configure them per provider.
Refunds are driven from Odoo's credit-note flow, which calls the Opn refund API and writes the refund id back to the transaction. Reconciliation is webhook-driven with an idempotent event handler, backed by an `ir.cron` job that re-queries Opn for any transaction stuck pending, so a missed webhook self-heals instead of leaving an order in limbo.
No. Sensitive card details are handled by Opn's PCI-compliant flows (tokens/sources and the hosted 3DS step); Odoo stores the Opn charge/source references, transaction state, and refund ids. API keys and the webhook secret are stored on the provider record and restricted via `ir.model.access.csv` and record rules to Settings/Accounting managers.
Yes. If you currently reconcile Opn settlements by hand or use a partial integration, we map your existing journals and payment methods during scoping and stage the new provider alongside the old one, cut over on staging under UAT, and keep a rollback plan so production is never left in a broken state.
A build-to-order Odoo payment provider that connects your checkout to Opn Payments (formerly Omise) for Thai and Southeast Asian cards, PromptPay QR, internet banking, and the TrueMoney wallet. ECOSIRE builds, installs, and supports it for Odoo 17.0, 18.0, and 19.0.