Skip to Content
Odoo Module · Payment Provider

Payoneer – Payment Provider (payment_payoneer)

Accept online payments with the Payoneer Checkout API (Optile orchestration platform): customers pay invoices, website orders and other payment documents with the payment methods available in Payoneer Checkout — cards, e-wallets, bank transfers and more.

Category: Accounting / Payment Providers Depends on: payment Provider code: payoneer Author: CPRAMOD
Features

What it provides

Redirect checkout

The customer is redirected to the Payoneer checkout page (an auto-submitting form, with a fallback link when JavaScript is disabled) and pays there.

🔒

OAuth2 token, cached

The access token is fetched from the OAuth2 client-credentials endpoint and cached on the provider record until it expires — no repeated token round-trips.

🔌

Signed webhooks

Server-to-server notifications update the transaction. When a Webhook Secret is set, the raw body is verified with an HMAC-SHA256 signature (X-Payoneer-Signature).

Post-processing cron

Pending transactions with a charge reference are re-fetched from the API until they reach a final state — the standard payment cron drives it.

Refunds as payouts

Refunds are sent back to Payoneer as payouts (POST /charges/{charge_id}/payout); partial refunds are supported.

Sandbox / live toggle

Point the provider at the sandbox (api.sandbox.oscato.com) or the live environment (api.live.oscato.com) with a single checkbox.

How it works

The payment flow

The integration follows the Payoneer orchestration flow used by the official Payoneer “Payoneer Checkout” gateway.

1

List session

When a customer starts paying, Odoo creates a Payoneer list session (POST /lists) with the customer, amount/currency, products and callback URLs.

2

Charge

Odoo creates the charge for the session (POST /lists/{list_id}/charge); the response carries the customer-facing redirect URL.

3

Redirect

The customer is redirected to the Payoneer checkout page and completes the payment.

4

Status

The status is followed through the return URL (interactionCode), the webhook and the post-processing cron.

5

Refund

Refunds go back to Payoneer as payouts; partial refunds are supported.

Status mapping

Payoneer status codes are mapped onto Odoo transaction states:

Odoo statePayoneer statuses
pendingpending, listed, in_progress, created
donecharged, settled, succeeded, completed
errordeclined, failed, expired, cancelled, canceled, aborted

On the return URL, interaction codes ABORT, TRY_OTHER_NETWORK, TRY_OTHER_ACCOUNT, RETRY and VERIFY mark the transaction as in error; PROCEED keeps it pending until the authoritative charge status is fetched from the API.

Configuration

Provider settings

Settings → Payment Providers → Payoneer (the provider record is created on install, one per company).

FieldDescription
Client Id / Client SecretThe OAuth2 client credentials issued by Payoneer. Required before the provider can be enabled.
Integration IdThe integration identifier issued by Payoneer for this merchant.
Merchant IdThe merchant id, when issued separately from the integration id.
SandboxUse the sandbox environment (https://api.sandbox.oscato.com/api) instead of live (https://api.live.oscato.com/api).
Webhook SecretOptional HMAC-SHA256 secret for verifying the webhook notifications.
Test Connection. The provider form carries a Test Connection button that validates the configured credentials against the oauth2/token endpoint and caches the returned access token. Payoneer does not offer an OAuth “connect” flow, so the credentials are obtained manually from the Payoneer account (Checkout → Tokens) — the form links to where to get them.
Endpoints. Payoneer issues the credentials (and, for some integrations, the exact host/endpoint) after the integration partnership is approved. The base URLs, the token endpoint and the media type live in payment_payoneer/const.py; adjust them there if your issued credentials point at a different host.
Get started

Installation

Unzip into your Odoo addons/ path, then install:

odoo-bin -i payment_payoneer

The module is Odoo 19-only (manifest version 19.0.1.0.0) and depends on payment. On install it creates the Payoneer provider record per company and sets the Payoneer logo on the provider form.

Routes

  • Return /payment/payoneer/return — the customer is redirected back with interactionCode.
  • Webhook /payment/payoneer/webhook — server-to-server notifications (optional HMAC-SHA256 signature).

Ready to take payments with Payoneer?

Download the module and let your customers pay the way they want to.