Skip to main content

Payment Provider for EasyPay with multiple payment methods

Project description

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.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

File details

Details for the file odoo_addon_payment_easypay_oca-18.0.1.0.0.3-py3-none-any.whl.

File metadata

File hashes

Hashes for odoo_addon_payment_easypay_oca-18.0.1.0.0.3-py3-none-any.whl
Algorithm Hash digest
SHA256 7542e6de6bd6273d7647bd0cb3192be0d19fc191db1f0a3e4bbf47bae9dad43e
MD5 8b7252419b0bc6a26ce3171f12056025
BLAKE2b-256 ff9036faaba5578d9e7e99d47c45b2d35479de00e4b8292f20d1247ae37dfbef

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page