Payment Provider: EasyPay
by Open Source Integrators https://github.com/OCA/l10n-portugal , Odoo Community Association (OCA) https://github.com/OCA/l10n-portugal| Availability |
Odoo Online
Odoo.sh
On Premise
|
| Odoo Apps Dependencies |
Discuss (mail)
|
| Lines of code | 1485 |
| Technical Name |
payment_easypay_oca |
| License | LGPL-3 |
| Website | https://github.com/OCA/l10n-portugal |
| Availability |
Odoo Online
Odoo.sh
On Premise
|
| Odoo Apps Dependencies |
Discuss (mail)
|
| Lines of code | 1485 |
| Technical Name |
payment_easypay_oca |
| License | LGPL-3 |
| Website | https://github.com/OCA/l10n-portugal |
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
Authors
- Open Source Integrators
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.
Please log in to comment on this module