- Home
- Apps
- SaaS Tools
- Nexi / Nets Payment Gateway for Odoo
Illustrative previewA build-to-order Odoo payment provider that connects your checkout to Nexi XPay and Nets Easy for Italian and
Nordic card acquiring, with 3DS2/SCA, local payment methods, and webhook-based reconciliation. ECOSIRE builds, installs, and supports it for Odoo 17.0/18.0/19.0.
What is Nexi / Nets Payment Gateway for Odoo?
A build-to-order Odoo payment provider that connects your checkout to Nexi XPay and Nets Easy for Italian and Nordic card acquiring, with 3DS2/SCA, local payment methods, and webhook-based reconciliation. ECOSIRE builds, installs, and supports it for Odoo 17.0/18.0/19.0. 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
Built to order, done for you
No DIY setup — a working app, built, installed and supported by ECOSIRE.
- 1
You order
Start with a one-time build price. We scope it with you at kickoff.
- 2
We build & install
ECOSIRE builds, configures and installs it on your Odoo.
- 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
Italian and Nordic merchants running Odoo eCommerce, subscriptions, or portal invoice payment consistently hit the same wall: Odoo core ships Stripe, Adyen, PayPal, and a handful of others, but there is no native payment.provider for Nexi XPay or Nets Easy. That means the acquirer your bank actually settles with — the one giving you Italian domestic card rates or Nordic methods like Dankort, MobilePay redirection, or Vipps-adjacent flows — cannot take money on your Odoo checkout. Merchants end up bouncing customers to an off-platform hosted page with no reconciliation back into Odoo, or manually reconciling settlements against account.move by hand. Both leak revenue and both break the audit trail.
ECOSIRE builds a first-class Odoo payment provider that inherits payment.provider and payment.transaction and speaks natively to the Nexi XPay / Nets Easy hosted checkout APIs. The __manifest__.py declares a clean dependency on payment (and website_sale where eCommerce is in scope), registers the provider in payment_provider_data.xml, and adds provider-specific credential fields (merchant/terminal id, secret/API key, environment toggle) on the provider model with values encrypted at rest and gated by ir.model.access.csv plus record rules so only Payment Administrators can read them. At checkout the module creates a payment intent/order against the gateway, redirects the shopper to the hosted, PCI-scope-reducing payment page, and returns them to Odoo's controller. 3DS2 / SCA is handled by the acquirer's hosted flow so you stay out of card-data scope; the module simply carries the authentication result back. An inbound webhook controller (CSRF-exempt, signature-verified against the shared secret) reconciles the asynchronous notification: it looks up the payment.transaction by the gateway reference, verifies amount and currency, and transitions the transaction state (_set_done, _set_pending, _set_canceled, _set_error) idempotently so a retried webhook never double-posts. Confirmed transactions flow through Odoo's standard pipeline to confirm the sale order and post the invoice, and refunds are issued from the invoice/transaction using the provider's refund support so a credit note in Odoo triggers the real acquirer refund and writes back the state.
Everything is built to Odoo conventions so it survives upgrades and audits: compute fields use @api.depends, states use standard selection values, the gateway dialogue is logged for traceability, and admin-facing configuration lives in proper XML/OWL settings views rather than hardcoded config. We support Community and Enterprise — the provider works on Community website_sale, and where Enterprise-only flows (e.g. subscription tokenization) are in scope we build against them explicitly. The same provider is available for Odoo 17.0, 18.0, and 19.0, matched to your exact running version.
Because this is build-to-order, we start from your acquirer contract and settlement setup, not a generic template. After a short scoping call we confirm which product (Nexi XPay vs Nets Easy), which methods (cards plus the specific Nordic/Italian local methods you are enabled for), currencies, and whether tokenized/recurring payments are needed. We then build against your sandbox credentials, run the full flow — authorize, capture, 3DS2 challenge, webhook reconciliation, partial and full refund — on a staging database, and hand over installable source, a git repo, docs, and a training session. Typical delivery is one working week from confirmed scope, followed by a post-go-live support window while you take real transactions.
What you get
- Installable Odoo module source code targeted to your exact version (17.0 / 18.0 / 19.0) and edition (Community/Enterprise)
- Installation and configuration on your environment, including provider credential setup and sandbox-to-production cutover
- Technical documentation: architecture, webhook endpoints, credential/security model, and upgrade notes
- End-user guide plus a live training session for your finance/eCommerce team
- UAT on a staging database covering authorize, capture, 3DS2 challenge, webhook reconciliation, and partial/full refunds, with a documented rollback plan
- Post-go-live support window to resolve any issues during your first real transactions
- Git repository handover with full commit history and tagged release
- Configuration checklist mapping your Nexi/Nets contract (methods, currencies, terminals) to the deployed provider settings
Who this is for
Italian merchant on Nexi XPay
Runs Odoo eCommerce and needs domestic Italian card acquiring through their Nexi contract at their negotiated rates, with SCA-compliant 3DS2 and clean invoice reconciliation instead of an off-platform hosted page.
Nordic retailer on Nets Easy
Sells across Denmark/Sweden/Norway and needs Nets Easy with local methods (Dankort, Nordic wallets) presented natively at Odoo checkout, with settlements reconciling automatically to sale orders and invoices.
Odoo finance/controller
Owns `account.move` integrity and wants every acquirer settlement, refund, and chargeback reflected as a proper Odoo transaction and credit note — no manual matching, full audit log, no card data on the Odoo box.
Odoo implementation partner / internal IT
Needs a maintainable, upgrade-safe provider that follows Odoo conventions (inherited models, `ir.model.access.csv`, standard states) and ships with a git repo and docs so it can be supported after handover across 17/18/19.
How Nexi / Nets Payment Gateway for Odoo Compares
| Criterion | ECOSIRE | Custom Build | Competitor | Odoo Native |
|---|---|---|---|---|
| Nexi/Nets support | Purpose-built provider for XPay and Nets Easy | Possible but you build it from scratch | Rarely covers Italian/Nordic acquirers | Not available — no Nexi/Nets provider |
| 3DS2 / SCA | Delegated to acquirer hosted page, result reconciled | Must implement and test yourself | Varies; often incomplete | Only for bundled providers (Stripe/Adyen) |
| Webhook reconciliation | Signature-verified, idempotent state machine | You design idempotency and matching | Often basic or missing | Only for supported providers |
| Refunds | Credit note triggers real acquirer refund | Extra scope to build | Sometimes manual-only | N/A for Nexi/Nets |
| Odoo version fit | Built and tested on your 17/18/19 | Depends on your team's version expertise | May lag latest release | Ships with core, but no Nexi/Nets |
| Fit to your contract | Scoped to your methods, currencies, terminals | Fully bespoke but slower | Generic config, one size fits all | N/A |
| Support & handover | Docs, training, git repo, support window | You own all maintenance | Vendor-dependent, variable | Community forums only |
| Total effort for you | Scoping call, UAT sign-off, go live | High — spec, build, test, maintain | Buy then integrate/troubleshoot gaps | Cannot use this acquirer at all |
Frequently Asked Questions about Nexi / Nets Payment Gateway
How long does delivery take?
This is build-to-order, not an instant download. After a short scoping call to confirm your acquirer (Nexi XPay or Nets Easy), methods, currencies, and whether recurring payments are needed, typical delivery is one working week from confirmed scope. We build against your sandbox first, run full UAT on staging, then cut over to production.
Do you handle ongoing support and Odoo version updates?
Yes. Every build includes a post-go-live support window, and we hand over a git repo, source, and docs. Because the module follows Odoo conventions (inherited `payment.provider`, standard transaction states, `ir.model.access.csv`), it upgrades cleanly. We can migrate it to a newer Odoo version or extend it under a separate support/retainer arrangement.
Is my Odoo server in PCI scope?
No card data touches your Odoo instance. We integrate the Nexi XPay / Nets Easy hosted checkout, so the shopper enters card details on the acquirer's PCI-compliant page and 3DS2/SCA runs there. Odoo only receives and reconciles the signed result, which keeps your PCI scope minimal.
Does it work with Community or do I need Enterprise?
The provider works on Odoo Community with `website_sale` and on Enterprise. Card checkout, webhooks, and refunds are edition-agnostic. Certain flows like subscription tokenization depend on Enterprise apps; if those are in scope we build against them explicitly and confirm during scoping.
How are payments reconciled back into Odoo?
A signature-verified webhook controller matches each acquirer notification to its `payment.transaction` by reference, validates amount and currency, and transitions state idempotently. Confirmed payments run through Odoo's standard pipeline to confirm the sale order and post the invoice, so your `account.move` reflects real settlements automatically.
Can it issue refunds?
Yes. Refunds are driven from the Odoo invoice/transaction and call the acquirer's refund API, then write the resulting state back to the transaction. Both partial and full refunds are covered and tested during UAT.
Which Odoo versions do you support?
Odoo 17.0, 18.0, and 19.0. We build and test against your exact running version so the module matches your ORM, controller, and payment-framework APIs rather than assuming a generic release.
Related Modules

Netvisor Connector for Finland
A build-to-order integration that keeps Odoo and your Finnish accounting system reconciled — pushing invoices, importing bills and payments, and mapping the GL and cost centres both ways. ECOSIRE scopes, builds, installs and supports it after you request a quotation.

Network International (N-Genius) Gateway for Odoo
A build-to-order Odoo payment provider that connects your storefront and invoices to Network International's N-Genius gateway for UAE card acquiring. ECOSIRE builds, installs, and supports it — no instant download.

Nigeria FIRS E-Invoicing & VAT Compliance for Odoo
A build-to-order Odoo module that makes Nigerian companies compliant with FIRS e-invoicing, 7.5% VAT and withholding tax — with a localized chart of accounts, TIN validation and return-ready reports. ECOSIRE scopes, builds, installs and supports it on Odoo 17, 18 or 19.

Nigeria Payroll (PAYE, Pension, NHF)
Build-to-order Odoo Nigeria payroll localization: PAYE, pension, NHF, NSITF & ITF in NGN. ECOSIRE builds, installs and supports it.
Nexi / Nets Payment Gateway
A build-to-order Odoo payment provider that connects your checkout to Nexi XPay and Nets Easy for Italian and Nordic card acquiring, with 3DS2/SCA, local payment methods, and webhook-based reconciliation. ECOSIRE builds, installs, and supports it for Odoo 17.0/18.0/19.0.
- Custom `payment.provider` record inheriting Odoo's provider model, registered in `payment_provider_data.xml` and selectable per website/company
- Nexi XPay hosted-checkout integration: create payment order, redirect to the acquirer page, verify the return signature in the Odoo controller
- Nets Easy hosted-checkout integration with the same abstraction so a single provider config drives either acquirer per your contract
- 3DS2 / SCA delegated to the acquirer's hosted flow, keeping the Odoo instance out of PCI card-data scope; authentication result carried back to `payment.transaction`