# Odoo

> Install the Mintage Pay payment provider on Odoo 17, 18 or 19, test it with test money and go live.

Source: https://mintagepay.com/docs/integrations/odoo/ (last updated 2026-10-25)

Adds **USDC or USDT** as a payment provider wherever Odoo takes online payments: the website checkout, "Pay now" on
a quotation or invoice in the customer portal, and payment links. The customer pays on the Mintage Pay payment page.
When the payment is final the transaction is **Confirmed** and Odoo confirms the sale order or marks the invoice
paid, as with any other provider.

Tested on 5 October 2026 with Odoo 17 and the website shop, against the sandbox: connect, checkout, payment, sale
order confirmed, and removal. Odoo 18 and 19 are supported by the module but have not been run against the sandbox
yet, so test them with a sandbox key first.

## What you need

- **Self-hosted Odoo or Odoo.sh.** Odoo Online (the odoo.com hosted service) cannot install custom modules: use a
  [payment link or the buy button](https://mintagepay.com/docs/integrations/#payment-links-and-the-buy-button) instead.
- Odoo 17, 18 or 19, Community or Enterprise.
- A user in the **Administration / Settings** group, and a way to add a module: server access to an addons folder, or
  the repository your Odoo.sh project builds from.
- The order, invoice or payment link must be in a currency Mintage Pay supports: USD, EUR, GBP, CAD, AUD, CHF, JPY,
  MXN, BRL, INR, SGD, AED, PLN, SEK, NOK, DKK, NZD, ZAR, TRY, KRW, HKD, NGN, ARS, PHP, IDR, VND, PKR, EGP, BDT, KES, GHS, TZS, COP, CLP, PEN, UYU, PYG, BOB, DOP, GTQ, CRC, THB, MYR, TWD, LKR, NPR, KZT, UAH, ILS, SAR, QAR, CZK, HUF, RON, ISK, XAF or XOF. Your customers always pay in US dollar
  stablecoins: a price in another currency is converted when the payment is started.
- Odoo on **https**, reachable from the internet, with the system parameter `web.base.url` set to that address
  (**Settings > Technical > System Parameters**). Behind a reverse proxy, the Odoo configuration needs
  `proxy_mode = True`. Mintage Pay tells Odoo about payments by calling `https://your-odoo/payment/mintagepay/webhook`.
- A Mintage Pay account with at least one payout address set.

## Install

1. Download [payment_mintagepay-odoo.zip](https://app.mintagepay.com/downloads/payment_mintagepay-odoo.zip) and
   unpack it.
2. Add the `payment_mintagepay` folder to Odoo:
   - **Self-hosted:** copy it into a folder on your `addons_path` and restart Odoo.
   - **Odoo.sh:** commit it to your project's repository and push. Wait for the build to finish.
3. In Odoo, go to **Apps** and click **Update Apps List**. Remove the "Apps" filter, search for "Mintage Pay" and
   click **Install** on **Payment Provider: Mintage Pay**.
4. In the Mintage Pay dashboard, open **Developers > API keys** and create a key. Copy it: it is shown only once.
5. Go to **Invoicing (or Accounting) > Configuration > Payment Providers** and open **Mintage Pay**. On the
   **Credentials** tab, paste the key into **API Key**. Set **State** to **Enabled**, switch **Published** on if the
   website should show it, and save.
6. On the Credentials tab, **Account** shows your business name and **Status** says **Connected. Webhook
   registered.**

Leave **Mintage Pay API Base URL** empty. The key decides where the module connects.

If Status shows an error:

- **"rejected this API key":** the key is wrong or was revoked.
- **"webhook could not be registered":** `web.base.url` is not a public https address. Correct it, then click
  **Check key and register webhook**.

## Try it first with test money

1. Create a free account at [sandbox.mintagepay.com](https://sandbox.mintagepay.com), set a payout address and
   create a key there.
2. Paste the sandbox key in the provider and set **State** to **Test Mode**. A sandbox key with State = Enabled is
   refused on purpose.
3. Place an order for a cheap product and choose **USDC or USDT**. You land on a payment page with a **Test mode**
   banner.
4. Pay on the payment page with free test money. The page has a button to get some.
5. Within a minute or two the transaction is **Confirmed**, with a message giving the amount and a link to the
   transaction, and the sale order is confirmed. The payment page sends you back to Odoo's confirmation page.
6. When you are happy, paste your live key, set **State** to **Enabled** and save.

## What you will see

Open the transaction: **Payment Transactions**, or the **Transactions** button on the order or invoice.

| Transaction | What it means |
|---|---|
| Confirmed | Paid. Odoo handles the order or invoice as usual |
| Pending | Waiting for payment, or part paid. The message says how much is still owed |
| Error | Needs your attention. Read the message: part paid and the payment window closed, paid the wrong amount, or paid after the transaction was cancelled. Nothing in Error is cancelled for you |
| Cancelled | The payment window closed, or the payment was cancelled, with nothing paid |

**Refunds:** you send the refund yourself and record it in the Mintage Pay dashboard. Once it is verified, Odoo gets a
refund transaction for that amount. The Refund button in Odoo is not offered for this provider.

## Copies of your database

When Odoo makes a staging or test copy of a database, it removes the API key from the copy, so a copy never talks to
your live account. Enter a sandbox key in Test Mode on the copy.

## If a transaction did not update

1. Open **Developers > Webhooks** in the Mintage Pay dashboard and look at the delivery error.
2. A 401 means the stored secret does not match: click **Check key and register webhook** on the provider.
3. Check that no firewall, bot rule or password protection blocks calls to `/payment/mintagepay/webhook`.

Your key and webhook secret are never written to the log.

## Update to a new version

1. Replace the `payment_mintagepay` folder in your addons path with the new one.
2. Restart Odoo.
3. Open **Apps**, find **Payment Provider: Mintage Pay** and click **Upgrade**.

Your key, your connection and your past transactions are kept. A transaction that was waiting for payment when you
updated is still confirmed when the payment arrives.

## Remove the module

**If Mintage Pay has taken a payment in this database,** Odoo does not allow the module to be uninstalled ("You
cannot uninstall this module as payments using this payment method already exist"). To stop using it:

1. Open the provider, set **State** to **Disabled**, empty the **API Key** field and save. This switches off Odoo's
   connection at Mintage Pay. The method is no longer offered. Past transactions are kept.

**If it has never taken a payment:**

1. **Apps > Payment Provider: Mintage Pay > Uninstall.** This switches off Odoo's connection at Mintage Pay.
2. Remove the `payment_mintagepay` folder from the addons path.
