Skip to main content
Odoo Community Association

Payment Provider: EasyPay

Beta License: LGPL-3 OCA/l10n-portugal Translate me on Weblate Try me on Runboat

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

Once logged in, note your Account ID and API Key (both UUID format) from the EasyPay dashboard.

2. Configure the Provider in Odoo

  1. Go to Accounting → Configuration → Payment Providers (or Website → Configuration → Payment Providers)

  2. Search for EasyPay and open the provider form

  3. 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.

  4. 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)

  5. 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:

  1. On the EasyPay provider form, click Configure Webhooks

  2. 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

  1. Replace test credentials with production values

  2. Change provider State to Enabled

  3. Click Configure Webhooks again to register production webhook URLs

  4. Test with a small real payment before going fully live

  5. Set the provider to Published so customers can see it

Usage

Once configured, customers can use EasyPay to make payments:

  1. During checkout, select EasyPay as the payment method

  2. Click Pay Now

  3. 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:

  1. Open the payment transaction and click Refund

  2. A refund request is sent to EasyPay and a child refund transaction is created in Pending state

  3. 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

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.

Odoo Community Association

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.

Release files for odoo-addon-payment-easypay-oca 18.0.1.0.4

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Built distribution (wheel)

Table of built distributions (wheels) for odoo-addon-payment-easypay-oca 18.0.1.0.4
File Interpreter ABI Platform
odoo_addon_payment_easypay_oca-18.0.1.0.4-py3-none-any.whl Python 3 none any Details

Release files / odoo_addon_payment_easypay_oca-18.0.1.0.4-py3-none-any.whl

Download URL odoo_addon_payment_easypay_oca-18.0.1.0.4-py3-none-any.whl
Size 524.4 kB
Tags Python 3
SHA-256 checksum
How to use checksums
1217ac2ca8d77109f9b4aafda8bc24ab6be0b18571afaf0304ae31fd3809bb9a
BLAKE2b-256 checksum
How to use checksums
18f507e5252c752cf063d4f9847c873bbffacfe162c7b95ef641937ef7b9b8a4
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.12.3

Release history Release notifications | RSS feed

This release

18.0.1.0.4 This release

1 release file

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page