# BTCPay Server payment gateway for Odoo 18 / 19
# This is the module to connect Odoo 18 / 19 and BTCPay Server
This module allows you to accept bitcoin (and other cryptocurrency) payments in your Odoo e-commerce store.

TIP
If you use Odoo 16 you can find the documentation here (opens new window) and for Odoo 17 here (opens new window).
TIP
The following instructions work for Odoo 18 and 19. You just need to make sure to download the matching branch release or use the matching branch (18.0 or 19.0) mentioned in the steps below.
# Install the module
- Clone our repository (opens new window) or download the .zip from the releases page (opens new window)
- Make sure you are on branch
19.0(or18.0) or downloaded a release (opens new window) tagged with version v19.x (or v18.x) - Place the
payment_btcpayserverdirectory in your Odoo addons directory - Install dependencies by running
pip install -r requirements.txt(from inside thepayment_btcpayserverdirectory) - Restart Odoo
- Go to Apps -> Update Apps List
- Remove the "Apps" filter and search for "btcpay"
- Click Activate button
# Configure BTCPay as payment provider
- Go to Website -> Configuration -> Payment Providers
- Search for BTCPay and click on button Activate
In the BTCPay settings form, tab "Credentials":
- Set field "State" to enabled
- Set field "BTCPay Server URL" as test or live URL including https://. Example URL: https://testnet.demo.btcpayserver.org
- Get a pairing code from your BTCPay Server store:
- Go to: Settings -> Access Tokens
- Click on "Create Token" button
- Label: enter e.g. "My odoo store"
- Public Key: leave empty
- Click on "Request Pairing" button, on next page click "Approve" button
- At the top copy the code next to "Server initiated pairing code", e.g. "hg7z8wN"
- Back in Odoo: paste the code into "Pairing Code" field
- Hit Tab key on your keyboard (or click on another field) and the pairing process will start automatically
- When the pairing is successful the "Token" and "Private Key" field will be filled automatically (see screenshot below)
- Field Facade, keep default 'merchant'.
On the tab "Configuration":
- Make sure field "Payment Journal" is set to "Bank", otherwise you can click the dropdown and click on the suggestion "Bank"
- Now you can save the settings
Check the payment method is enabled:
- Go to Website -> Configuration -> Payment Methods
- Make sure "Pay with Bitcoin / Lightning Network" is active
Congrats, all done. Do some testing to be sure all works.

# How does the payment page look?
During the checkout the customers will have the option to select the payment method "Pay with Bitcoin / Lightning Network". After selecting they will be redirected to the BTCPay checkout page as shown below.

# Transaction BTCPay Details
In transaction object, you will find more technical information about this method of payment:
- Transaction Id: cryptocurrency transaction hash for the executed payout
- Invoice Id: the id of the invoice for which you want to fetch an event token
- Transaction Status: That indicates state of transaction

# Troubleshooting
# The order and transaction status does not get updated to "paid"
If the BTCPay connection generally works, like redirect to BTCPay checkout page (QR-code) then check your odoo logs and make sure PDF generation generally works. If there are errors mentioning wkhtmltopdf then you need to install wkhtmltopdf on your server.
← Nopcommerce OpenCart →