Skip to main content
STC Pay & mada Wallet Checkout for Odoo — A custom Odoo payment provider that accepts STC Pay and mada directly at checkout,  — 1/1Illustrative preview

A custom Odoo payment provider that accepts STC Pay and mada directly at checkout,

with SAR localization, webhook reconciliation, and refund support.

ECOSIRE builds, installs, and supports it for your Saudi Odoo instance.

What is STC Pay & mada Wallet Checkout for Odoo?

A custom Odoo payment provider that accepts STC Pay and mada directly at checkout, with SAR localization, webhook reconciliation, and refund support. ECOSIRE builds, installs, and supports it for your Saudi Odoo instance. Built to order by ECOSIRE for Odoo 17, 18, 19 — indicative price from $999.00 USD; request a quote for a scoped proposal.

Key Features

New `payment.provider` type registered in Odoo's payment framework with a dedicated settings form (credentials, sandbox/production toggle, currency locked to SAR)
STC Pay wallet flow with QR presentment and OTP confirmation handled in the checkout widget
mada card acceptance with BIN/scheme detection so domestic cards settle on mada rails rather than a cross-border scheme
Apple Pay routing through the acquirer's hosted payment session for supported Safari/iOS buyers
`payment.transaction` model extended with `_get_specific_rendering_values`, `_send_payment_request`, and `_process_notification_data` per the standard provider contract
Asynchronous webhook controller with HMAC signature verification and idempotent handling of duplicate deliveries
Transaction state driven by the signed acquirer callback (not the browser return) so dropped sessions never strand a paid order in draft
Automatic posting against the sale order and customer invoice on `done`, with a payment-status QWeb page for the buyer
Refund support through Odoo's `action_refund` path — credit notes and POS returns trigger a real acquirer refund with the reference written back
SAR localization: currency restriction, Arabic-ready labels, and amount rounding aligned to the acquirer's minor-unit expectations
Optional POS payment method (`pos.payment.method`) so in-store STC Pay/mada uses the same provider in Point of Sale
`ir.model.access.csv` plus record rules scoping portal users to their own `payment.transaction` records
Full audit trail via `ir.logging` and a reconciliation view listing provider reference, state, and matched invoice/order
Packaged as a version-pinned addon for Odoo 17.0 / 18.0 / 19.0, Community or Enterprise, with sandbox and production configuration separated

Built to order, done for you

No DIY setup — a working app, built, installed and supported by ECOSIRE.

  1. 1

    You order

    Start with a one-time build price. We scope it with you at kickoff.

  2. 2

    We build & install

    ECOSIRE builds, configures and installs it on your Odoo.

  3. 3

    Go live + support

    You go live in about one working week, with two weeks of go-live support. Defects in the code we deliver are fixed free of charge.

Technical Specifications

Odoo Compatibility
Odoo 17, Odoo 18, Odoo 19
Editions
Enterprise & Community
License
Licence confirmation required
Python Requirement
Python 3.10+
Database
PostgreSQL 12+

About this Product

Saudi merchants running Odoo eCommerce or the POS frequently hit a wall at the payment step: local buyers expect to pay with STC Pay or their mada card, but Odoo core ships only with generic providers (Stripe, PayPal, wire transfer, and the payment_custom manual flow). There is no native payment.provider record that speaks to STC Pay's wallet API or routes mada correctly through a local acquirer, so merchants either lose the sale to an off-platform payment link or reconcile transactions by hand. Enterprise adds more first-party acquirers, but STC Pay and true mada-first routing are still not among them — the road runs out exactly where the Saudi conversion happens.

We build a dedicated payment provider module that plugs into Odoo's standard payment framework. It ships a new payment.provider type with its own settings view (merchant credentials, environment toggle, supported currencies restricted to SAR), a payment.transaction extension implementing _get_specific_rendering_values, _send_payment_request, and _process_notification_data, and a set of controller routes for the redirect/return and the asynchronous webhook. The STC Pay flow presents the wallet QR and OTP confirmation step; mada card payments and Apple Pay are routed through your acquirer's hosted fields or redirect, with the card scheme detected so mada BINs settle on the domestic rails. Every state transition is driven by the acquirer's signed callback, not by the browser return, so a dropped connection never leaves a paid order stuck in draft.

Technically, the module is a clean, PEP8/OCA-styled addon: __manifest__.py declaring the dependency on payment (and website_sale/point_of_sale where in scope), models in models/ with @api.depends computes for any derived fields, access control via ir.model.access.csv plus record rules so a portal user can only see their own transactions, QWeb/OWL templates for the checkout widget, and a payment-status page. Webhook reconciliation verifies the HMAC signature on every notification, matches it to the pending payment.transaction by provider reference, is idempotent against duplicate deliveries, and posts the payment against the sale order and invoice. Refunds are supported through the standard action_refund path so a credit note or a POS return triggers a real refund call to the acquirer and writes back the refund reference. Everything is auditable via ir.logging and exposed to the XML-RPC/JSON-RPC API like any other Odoo model, so your existing integrations keep working.

Because this is a build-to-order engagement, we start from your exact scope — which STC Pay/mada acquirer contract you hold, whether you need web checkout, POS, or both, and your Odoo edition and version (17.0, 18.0, or 19.0; Community or Enterprise). We confirm the specification, build against a staging copy of your database, run UAT with real sandbox credentials, and hand over installable source plus a git repository. Typical delivery is one working week from confirmed scope. There is no instant download — this is a real module, built, installed, and supported for your environment by ECOSIRE.

What you get

  • Installable module source code built for your exact Odoo version (17.0, 18.0, or 19.0) and edition
  • Installation and configuration on your environment, including acquirer credential wiring and sandbox-to-production cutover
  • Technical documentation: model/field reference, webhook contract, signature verification, and configuration guide
  • End-user guide plus a live training session for your finance/eCommerce/POS team
  • UAT on a staging copy of your database with real sandbox credentials, and a documented rollback plan
  • Post-go-live support window for defect fixes and configuration adjustments
  • Git repository handover with full commit history and tagged release
  • Deployment notes covering `__manifest__.py` dependencies, upgrade steps, and reconciliation checks

Who this is for

Saudi eCommerce merchant on Odoo Website

Runs `website_sale` and is losing conversions because local buyers can't pay with STC Pay or their mada card at checkout. Needs a native in-checkout provider, not an off-platform payment link, and wants SAR amounts and Arabic labels to look right.

Retailer running Odoo POS and web

Wants one payment provider that works both in-store (Point of Sale) and online, so STC Pay and mada reconcile the same way across channels and refunds flow through credit notes and POS returns.

Finance / accounting controller

Cares about clean reconciliation: every wallet and card payment matched to the right invoice and sale order, idempotent webhooks, a full audit trail, and refunds that write back a real acquirer reference for the books.

IT lead or Odoo administrator

Owns the instance and wants a maintainable addon: standard `payment.provider` contract, proper `ir.model.access.csv` and record rules, XML-RPC/JSON-RPC compatibility, and a git handover they can upgrade across 17.0/18.0/19.0.

How STC Pay & mada Wallet Checkout for Odoo Compares

CriterionECOSIRECustom BuildCompetitorOdoo Native
STC Pay & mada supportBuilt directly into checkout for STC Pay wallet and mada railsPossible but you build the whole provider yourselfOften generic card only; STC Pay/mada rarely first-classNot available — only generic providers and manual transfer
Webhook reconciliationSigned, idempotent, matched to invoice and sale orderDepends entirely on in-house engineering effortVaries; signature/idempotency handling often thinOnly for the few first-party acquirers Odoo ships
Refund supportReal acquirer refund via `action_refund` with reference write-backMust be designed and tested from scratchSometimes present, sometimes manual-onlyN/A for STC Pay/mada
POS + web coverageOne provider across Point of Sale and Website in scopeTwo separate builds to reconcile yourselfUsually web-only or POS-onlyNo unified STC Pay/mada method
Odoo version fitBuilt and tested for your 17.0/18.0/19.0, Community or EnterpriseYou own compatibility across versionsMay lag new Odoo releasesShips with core but lacks the providers
Ownership & maintainabilityFull source + git repo handover, standard framework codeYou own it, but also all the maintenance burdenUsually closed/obfuscated, vendor lock-inCore code, but no matching feature to maintain
Support & fixesPost-go-live support window + optional SLAWhatever your team can staffTicket queue, variable responseCommunity forums / your own team
Time to liveone working week from confirmed scope, UAT on staging firstOften months of internal effortInstall fast, but integration gaps surface laterImmediate but the feature simply isn't there

Frequently Asked Questions about STC Pay & mada Wallet Checkout

How long does delivery take?

This is a build-to-order module, so we build it for your specific scope rather than shipping a stock download. Typical delivery is one working week from confirmed scope — the exact timeline depends on whether you need web checkout, POS, or both, your Odoo version/edition, and how quickly your acquirer provides sandbox credentials. You get a firm estimate after the scoping call.

Do you support STC Pay and mada directly, or through a gateway?

Both patterns are possible. STC Pay is integrated via its wallet API (QR + OTP flow), and mada is routed through your acquiring bank or a local aggregator with mada BIN detection so domestic cards settle on mada rails. During scoping we confirm exactly which contracts and credentials you hold and build the provider to match — we don't invent an acquirer relationship you don't have.

Will this work on my Odoo version and edition?

Yes. We build and test against Odoo 17.0, 18.0, or 19.0, on Community or Enterprise. The module uses the standard `payment.provider` / `payment.transaction` framework that exists in both editions, so it does not require Enterprise-only apps unless your scope (for example a specific POS feature) does.

How do refunds and reconciliation work?

Refunds run through Odoo's standard `action_refund` path — a credit note or a POS return triggers a real refund call to the acquirer and writes the refund reference back to the transaction. Reconciliation is driven by signed webhooks: each notification is signature-verified, matched to the pending transaction by provider reference, handled idempotently against duplicate deliveries, and posted against the invoice and sale order.

What about ongoing support and updates?

Every engagement includes a post-go-live support window for defect fixes and configuration tweaks. Because you receive the full source and a git repository, you or we can maintain and upgrade the module across future Odoo versions. Extended support, SLAs, and version-migration work can be arranged as a separate agreement.

Is my payment data secure?

Card data is handled through the acquirer's hosted fields or redirect, so sensitive PAN data does not transit your Odoo server. Webhooks are HMAC signature-verified, provider secrets live in the provider settings record (not in code), portal access is scoped by `ir.model.access.csv` and record rules, and every transaction is logged via `ir.logging` for audit.

Can this integrate with my existing systems?

Yes. The module's models behave like any other Odoo model, so they're reachable over the XML-RPC/JSON-RPC API and visible to your existing automations, reports, and integrations. If you need custom automated actions or exports tied to payment events, we can include those in scope.

Request a quote

STC Pay & mada Wallet Checkout

A custom Odoo payment provider that accepts STC Pay and mada directly at checkout, with SAR localization, webhook reconciliation, and refund support. ECOSIRE builds, installs, and supports it for your Saudi Odoo instance.

  • New `payment.provider` type registered in Odoo's payment framework with a dedicated settings form (credentials, sandbox/production toggle, currency locked to SAR)
  • STC Pay wallet flow with QR presentment and OTP confirmation handled in the checkout widget
  • mada card acceptance with BIN/scheme detection so domestic cards settle on mada rails rather than a cross-border scheme
  • Apple Pay routing through the acquirer's hosted payment session for supported Safari/iOS buyers

Request a Quotation

Tell us about your STC Pay & mada Wallet Checkout requirements and we'll send pricing, licensing options and a tailored proposal — usually within one business day.

No payment now. This sends a quote request to our team — we'll follow up by email with pricing and next steps.