Payment Provider for EasyPay with multiple payment methods
Project description
Payment Provider: EasyPay
This module integrates EasyPay as a payment provider in Odoo, allowing customers to pay via credit card and other payment methods using EasyPay’s secure payment gateway.
EasyPay is a Portuguese payment service provider that supports multiple payment methods including credit cards, Multibanco, MB WAY, SEPA Direct Debit, and more.
Verified as supported:
Credit/Debit Card payments,
Multibanco (MB) reference payments,
MB WAY.
Not yet implemented or verified:
SEPA Direct Debit,
Pay by Link,
Multibanco reference on invoices.
Learn more about EasyPay at https://www.easypay.pt/
Table of contents
Configuration
Currency requirement: EasyPay only supports EUR. The provider is pre-configured to appear only for EUR transactions and will be hidden automatically when the customer’s currency is different.
1. Create an EasyPay Account
Test environment: Sign up at https://backoffice.test.easypay.pt/
Production: Sign up at https://www.easypay.pt/ and complete merchant verification
Once logged in, note your Account ID and API Key (both UUID format) from the EasyPay dashboard.
2. Configure the Provider in Odoo
Go to Accounting → Configuration → Payment Providers (or Website → Configuration → Payment Providers)
Search for EasyPay and open the provider form
Fill in:
Account ID — from your EasyPay dashboard
API Key — from your EasyPay dashboard (admin-only field)
Payment Methods — select the methods to offer (Credit/Debit Card, Multibanco, MB WAY, etc.)
Allow Saving Payment Methods — when enabled, logged-in customers can tick “Save my payment details” at checkout to tokenize their card or SEPA Direct Debit mandate for future charges (e.g. subscriptions). Enabled by default.
Set the provider State:
Test Mode → uses https://api.test.easypay.pt and enables the testing flag in the SDK automatically
Enabled → uses https://api.prod.easypay.pt (production)
Click Save
3. Register Webhooks
EasyPay sends payment status updates to three separate Odoo endpoints. The simplest way to register them is to use the built-in button:
On the EasyPay provider form, click Configure Webhooks
Odoo will call PATCH /2.0/config on the EasyPay API and register:
https://yourdomain.com/payment/easypay/webhook/generic
https://yourdomain.com/payment/easypay/webhook/authorisation
https://yourdomain.com/payment/easypay/webhook/transaction
If you need to register webhooks manually in the EasyPay dashboard, use the three URLs above. All three must be registered for all payment methods to work correctly (Multibanco confirmation, for example, arrives via the transaction webhook).
Note: Webhooks must be reachable from the internet. If running locally, use a tunnel such as localtunnel (https://theboroer.github.io/localtunnel-www/) or ngrok and update the Odoo base URL accordingly before clicking Configure Webhooks.
4. Test the Connection
Click Test Connection on the provider form to verify that your credentials are correct and the EasyPay API is reachable.
5. Go Live
Replace test credentials with production values
Change provider State to Enabled
Click Configure Webhooks again to register production webhook URLs
Test with a small real payment before going fully live
Set the provider to Published so customers can see it
Usage
Once configured, customers can use EasyPay to make payments:
During checkout, select EasyPay as the payment method
Click Pay Now
A secure inline payment form loads. The customer selects a payment method and completes the payment without leaving the site.
Payment method behaviour
Credit/Debit Card: Payment is captured immediately. Order is confirmed as soon as the card is charged.
MB WAY: The customer enters their mobile number. A push notification is sent to their phone for confirmation. The order is placed in Pending state until the user confirms (or rejects) on the MB WAY app.
Multibanco: An ATM reference (Entity + Reference + Amount) is displayed. The customer pays at any ATM or via online banking. The order remains Pending until the payment is confirmed, which may take minutes to days. The customer should not close the confirmation page before noting down the reference.
SEPA Direct Debit: The customer enters their IBAN and accepts a SEPA mandate authorizing EasyPay to debit their account. The order remains Pending until the bank settles the debit (typically 2–5 business days). When used with tokenization, the mandate is saved and subsequent charges are pulled automatically.
Virtual IBAN: A dedicated IBAN is displayed. The customer transfers the exact amount via online banking. The order remains Pending until the transfer is received and matched by EasyPay.
Save payment details (tokenization): Logged-in customers can tick Save my payment details at checkout. The payment method is saved as a token for future charges (e.g. subscriptions). This works with cards and SEPA Direct Debit.
Refunds
Refunds can be initiated from the Odoo backend on any confirmed transaction:
Open the payment transaction and click Refund
A refund request is sent to EasyPay and a child refund transaction is created in Pending state
Once EasyPay processes the refund, a webhook updates the refund transaction to Done (or Error if it failed)
Partial refunds are supported — enter the amount to refund when prompted.
Test card details (test environment only)
See the EasyPay Payment Methods guide for full test credentials for all payment methods.
Bug Tracker
Bugs are tracked on GitHub Issues. In case of trouble, please check there if your issue has already been reported. If you spotted it first, help us to smash it by providing a detailed and welcomed feedback.
Do not contact contributors directly about support or help with technical issues.
Credits
Contributors
Open Source Integrators <https://www.opensourceintegrators.com>
Daniel Reis (dreis@opensourceintegrators.com)
This work was developed with the aid of AI tools under human guidance and supervision, specifically Cascade (IDE coding assistant) and Anthropic Claude. All AI-assisted changes were reviewed and approved by human maintainers.
Maintainers
This module is maintained by the OCA.
OCA, or the Odoo Community Association, is a nonprofit organization whose mission is to support the collaborative development of Odoo features and promote its widespread use.
This module is part of the OCA/l10n-portugal project on GitHub.
You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distributions
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file odoo_addon_payment_easypay_oca-18.0.1.0.2-py3-none-any.whl.
File metadata
- Download URL: odoo_addon_payment_easypay_oca-18.0.1.0.2-py3-none-any.whl
- Upload date:
- Size: 456.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ea6ef8f4a6de172d2763cd5fbaf0631edc3316fa73671ed1958a695f23043c16
|
|
| MD5 |
5820e749531718be1d90064a898a5b40
|
|
| BLAKE2b-256 |
70183a450e2b7a1c88a913d75fdc470f0b758ee0a7707def601a7e561deea665
|