# Odoo integration

Cheqi for Odoo sends digital receipts from Odoo 19 and Odoo 20 Point of Sale
and eCommerce, and receives receipts in Odoo Expenses. Matched customers get
receipts in the Cheqi app automatically. Other Cheqi users, including cash
customers, can use a pairing code for direct app delivery. An optional QR code
or link opens the receipt in a browser wallet and can also add it to the app.
Sales never wait for receipt delivery.

Whether digital delivery can replace a local fiscal or paper receipt depends
on the merchant's setup and jurisdiction. See
[Odoo country coverage](/odoo/country-coverage) before using Cheqi as part of a
country-specific receipt workflow.

## French Point of Sale receipts

With Odoo's French POS certification installed, Cheqi includes the paid
order's Odoo hash and secure sequence as cash-system evidence. Cheqi's own
receipt hash verifies the digital document separately. Odoo remains responsible
for its compliance attestation, inalterability controls, retention, and archives.
Without a secured Odoo order, the connector sends an ordinary receipt without
French fiscalization data.

## German Point of Sale receipts

With Odoo Enterprise's German POS certification installed, Cheqi includes
Odoo's completed TSE transaction and signature data in the encrypted receipt.
Odoo remains responsible for TSE signing and Fiskaly registration. A German
POS without a registered TSS produces an Odoo test receipt; Cheqi does not mark
that receipt as fiscalized.

Odoo's POS order does not expose an exact DSFinV-K QR payload or a separate
verification code, so the connector does not add either. Live TSE signing
through this connector has not yet been verified with a registered merchant.

## Three parts

Cheqi for Odoo has three parts, which you install and switch on separately:

| Part | What it does |
|  --- | --- |
| **Cheqi POS Receipts** | Sends receipts for paid Point of Sale orders and shows the result on the cashier and customer screens. |
| **Cheqi eCommerce Receipts** | Sends receipts for paid webshop orders and shows the result on the confirmation page. |
| **Cheqi Expenses** | Creates draft expenses from receipts submitted by employees or delivered to your company. |


New to Cheqi for Odoo? Start with the [quick start](/odoo/quick-start). It
checks whether your Odoo can run Cheqi and walks you to your first receipt.

Not available on Odoo Online
Cheqi for Odoo is a set of custom modules. They run on Odoo.sh and on your own
server, but not on Odoo Online (SaaS), which does not allow custom modules.

## Where the work happens

The connector runs inside your own Odoo. Cheqi does not operate it and does
not get access to your Odoo.

- **Sending receipts**: Odoo encrypts every receipt before it leaves Odoo. Only
the customer's devices, or the browser that opens the QR link, can decrypt it.
- **Receiving receipts**: Cheqi Expenses creates its own key pair in Odoo.
Receipts are encrypted for that key, so only your Odoo can read them.


## Browser receipt wallet

The QR code and link lead to the same encrypted receipt. Without the Cheqi app,
customers can open and save it in a browser wallet local to that browser; no
account is needed. Cheqi users can collect the same receipt in their app. A
pairing code can add direct app delivery even after a link has been issued; the
link stays valid. See
[Web Wallet](/receipts/qr-collection).

Merchants can turn off the QR option. If no customer is matched and no pairing
code is provided, the order is marked **Not matched** and no receipt is created.

## Which identifier is used

The connector sends every identifier it has, and Cheqi uses the first one that
matches, in this order:

1. **Pairing code**: the 8-digit code from the customer's Cheqi app, entered by
the cashier in the POS or by the customer on the webshop confirmation page
after payment when automatic delivery did not match them.
2. **Card PAR**: supplied by the payment provider for card payments.
3. **IBAN**: supplied for bank payments such as iDEAL.
4. **Email address**: the checkout email in the webshop, or an address the
cashier enters in the POS. Cheqi uses it to find the customer's Cheqi
account.


The PAR is only passed on in memory and is never stored by the connector.

## Supported payment providers

| Provider | Point of Sale | Webshop |
|  --- | --- | --- |
| Adyen | Card payments (PAR) | Card payments (PAR) and bank payments (IBAN) |
| Worldline | Not supported yet | Card payments (PAR) and bank payments such as iDEAL (IBAN) |
| Mollie | Terminal PAR matching is implemented but not live-verified | Bank payments such as iDEAL (IBAN); online card PAR expected late 2026 or early 2027 |
| Stripe | Card payments (PAR) once enabled by Stripe | Card payments (PAR) once enabled by Stripe; bank payments without a full IBAN use the QR fallback |
| Other providers | QR code or pairing code | QR code, pairing code or checkout email |


Payments without a PAR or IBAN, such as cash, PayPal or Klarna, still get a
digital receipt through the QR code or a pairing code. See
[Payment providers](/odoo/payment-providers) for the setup per provider.

## Requirements

- Odoo 19 or Odoo 20, Community or Enterprise, on Odoo.sh or your own server
- Odoo Point of Sale, eCommerce and/or Expenses
- The Cheqi Python SDK, in the version listed in the connector's
`requirements.txt`
- A Cheqi company with an [API key](/authentication/api-keys)


## Next steps

1. [Quick start](/odoo/quick-start)
2. [Install the connector](/odoo/installation)
3. [Configure Cheqi for Point of Sale and the webshop](/odoo/configuration)
4. [Set up your payment providers](/odoo/payment-providers)
5. [Train your cashiers](/odoo/cashier-guide)
6. [Receive receipts in Odoo Expenses](/odoo/expenses)
7. [Troubleshooting and limitations](/odoo/troubleshooting)