OpenReceive for Odoo
Accept Bitcoin & Stablecoin Payments With Odoo
Take Bitcoin Lightning in Odoo with the OpenReceive payment provider: customers pay online orders and invoice payment links straight into your own wallet. Stablecoin payments are optional.
Plugin
Tested live · Oct 19, 2026 · 0.4.30
Copy agent directions — Paste into Claude Code, Codex or Cursor to add OpenReceive to your Odoo app.
Why OpenReceive
- Odoo keeps the order. Once the wallet reports the payment, the module marks Odoo's payment transaction done, so Odoo confirms the order or pays the invoice as with any provider.
- Your database, no new service. Payment attempts live in two tables of the PostgreSQL database your Odoo already uses.
- Receive-only wallet permissions. Saving a wallet code asks the wallet first and keeps it only when the wallet answers as receive-only.
- Stablecoins, optional. With a swap provider code, customers can pay in USDT, USDC, ETH or SOL, and you still receive Bitcoin.
Try the checkout your customers will see
Odoo customers see this same checkout on Odoo's payment page; here it runs in the openreceive.org demo shop. The live demo needs JavaScript: open the OpenReceive home page.
Five steps, no code
Requires Odoo 19 or 20, self-hosted or Odoo.sh, and the openreceive Python package.
1. Get a receive-only NWC code — get one here. It can issue invoices and watch for payment, and it can never spend from your wallet.
2. Get an LSC code for swaps (optional) — from a swap provider, only if customers should be able to pay in USDT, USDC, ETH or SOL.
3. Install the module
Unzip openreceive-odoo-<version>.zip into an addons folder, pip install openreceive, then odoo -i payment_openreceive
4. Connect the wallet — In Invoicing (or Website) → Configuration → Payment Providers, open OpenReceive and paste the NWC code, plus the LSC code if you want swaps. Saving asks the wallet first and keeps a code only when the wallet answers as receive-only.
5. Publish the provider — Odoo 19: set the state to Enabled. Odoo 20: Live and Published. The module's scheduled action records payments whose customer left the page.
Full Odoo quickstart · Plugin source
How it runs
- Tested on
- Odoo 19 and 20, their official Docker images, on Python 3.12
- Databases
- PostgreSQL, Odoo's own database
- Secrets
- The module's own settings table in Odoo's database, saved from the provider form or odoo openreceive configure
- Refunds
- Refund a settled Lightning payment from your own wallet: the wallet code is receive-only. A customer reclaims a swap deposit that never converted from the transaction's checkout page.
- Mobile apps
- No app SDK. Payers pay on the store's web checkout, and an app that opens it follows the same app store rules as any web checkout.
Practical questions
- Which currencies can customers pay with?
- Bitcoin over Lightning, always. With a swap provider configured, also USDT on Tron, Solana or Ethereum, USDC on Solana or Ethereum, ETH and SOL, each converted into the same Lightning payment. Automated swaps guide
- Where does the Bitcoin go?
- Into the wallet behind the receive-only NWC code. OpenReceive never holds funds: the invoice is minted in your wallet and the sats land there. The module marks Odoo's payment transaction done, so Odoo confirms the order or reconciles the invoice. Odoo quickstart
- What wallet do I need?
- Any wallet that issues receive-only NWC (Nostr Wallet Connect) codes, hosted or self-run. The code must be able to create invoices and read their status, and must not be able to spend. Get a receive-only NWC code
- What does it cost?
- OpenReceive is open source and free. Fees charged by your wallet provider, by a swap provider or by Lightning routing belong to those services and are outside OpenReceive's scope.
- What do I need to deploy?
- Odoo 19 or 20, self-hosted or on Odoo.sh (Odoo Online cannot install modules), the openreceive Python package installed with pip in Odoo's environment, and the module's ZIP from a GitHub release. Odoo quickstart
Add OpenReceive to Odoo
Copy agent directions · Full quickstart · Plugin source · API reference · Guides