Odoo Apps FAQ
I am an App Buyer
Third-party apps sold on Odoo Apps cannot be used on Odoo Online.
No. The module author is expected to fix any bug that would prevent the app from working as advertised on its description page. However, we do not expect them to provide you with additional support regarding extra features or customizations.
In particular, most authors will charge an extra fee if you ask them to implement a new feature inside an app which was not advertised on its description page, or adapt an existing feature so that it covers additional cases.
In addition, it is possible that an app won't work because of a misconfiguration of your server rather than a bug in the app itself. In this case, we expect the authors to provide you with configuration advices so that your technical team can correct the mistake on your server. However, while we expect the authors to help you in pointing your technical team to the right direction by email or providing you with documentation, we do not expect them to configure your server by themselves for free.
You should receive an email with temporary download links up to one hour after you made the purchase. After the temporary download links you received by email are not valid anymore, you can still download the module from your orders page. with the Odoo Account with which you made the purchase. Go on the description page of the module you bought, you will see a download link. If you purchased a module without logging in to an account, please use the Sign Up link you have received by email to create one. If you already had an account but forgot to login when making the purchase, please use our support form to request our team to merge the data of your purchases together.
You need to copy paste the module that is inside the zip file to your addons folder. If you are installing the module into an existing database, you need to enable the Technical Features to click on Settings > Update Modules List. Your new module will now appear in the list of modules that you can install.
Support is provided by the module publisher themselves. You can go to your orders page and click on the button there to get support from the publisher. Please do not contact the publisher outside of this dedicated discussion channel as this is the only channel on which the two weeks time of our Refund Policy applies.
Every module bought for version 12.0 and prior gives you access to the all versions up to 12.0. Starting version 13.0, Every version of the module is sold separately.
I am an App Maintainer
It is possible to sell your own module on our Apps platform. You can start selling your modules very easily by adding a
price and a
currency keys in your module manifest like
'price': 49.99, and
'currency': 'EUR', for example. Supported currencies are EUR and USD. We require that the modules sold on our Apps platform is the lowest (or the same) price on the web, have a proper description, complete with screenshots of the functionalities and an overall nice presentation page. Please refer to the following section for more informations on how to achieve this goal. We reserve the rights to unpublish modules which do not conform to these criterias until they receive a proper presentation page.
Don't be afraid to value your work as it should be ! If people need the feature of your module, they will pay for it. In any case it will make them gain development time so you should not undervalue your work. We think 100 euros is a good starting point.
Starting from version 8.0, the module icon needs to be located at
static/description/icon.png in the module folder. The cover image (thumbnail) location is defined in the
images key of the manifest, like
'images': ['images/main_screenshot.png'], for example. The rich-text HTML description comes from the
static/description/index.html file in the module folder. It is recommended to start with this official template.
To have a big screenshot in your theme, you need to have more than one picture in
'images': ['images/main_1.png', 'images/main_2.png', 'images/main_screenshot.png'], and the first picture with a name ending with '_screenshot' will be selected and displayed as big screenshot.
The purpose of this screenshot format is to show a full demo page and not your company logo larger.
The only image file formats allowed in your module description are png, gif, and jpeg.
Either your icon is not in the right place (
static/description/icon.png since Odoo 8.0), or its format is not PNG. Please note that changing the file extension of an image does not change its format. For example, renaming icon.ico into icon.png will not work. You need to actually convert the image type.
Like Theme Clean
The license is defined in the
license key of the manifest (
__manifest__.py as of Odoo 10,
__openerp__.py for older series), like
'license': 'AGPL-3', for example. Possible values are
Other OSI approved licence,
Other proprietary. The license file is loaded from the
LICENSE file at the root of your module or, if there is none, at the root of your repository. The license file will only be displayed if the license is not a well known open source one, that is:
Other OSI approved licence,
Other proprietary. If no license information is provided in the manifest, we will use Other Proprietary as default value.
The following table shows the compatibility between licenses:
|Module license||Compatible dependencies licenses|
|AGPL-3||AGPL-3, GPL-3, LGPL-3|
|LGPL-3||LGPL-3, OPL-1, OEEL-1, Other OSI approved licence, Other proprietary|
|OPL-1||LGPL-3, OPL-1, OEEL-1, Other OSI approved licence, Other proprietary|
|Other OSI approved licence||LGPL-3, OEEL-1, OPL-1, Other OSI approved licence, Other proprietary|
|Other proprietary||LGPL-3, OEEL-1, OPL-1, Other OSI approved licence, Other proprietary|
Like Odoo VOIP
The documentation is automatically loaded from the
doc/index.rst file in the module folder. It needs to be a valid, pure rst file.
We do not currently review every module published, but we do take action when users report abusive behavior. You will usually know when you cross the line, but here are some examples of things that would cause your modules to be removed from the store:
- R1. Stealing data from the users, copying other developers' work without permission and without giving proper credit (according to the license terms), cheating on the ratings system, are all examples of abusive behavior that will get your modules removed;
- R2. Modules that download code in any form, or modules that install or launch other executable code will be removed. This includes obfuscated/encrypted code.
- R3. Modules that include undocumented or hidden features inconsistent with the module description will be removed.
- R5. Modules that harm the image and/or reputation of another author will be removed, such as a module that doesn't work and is attributed to another author.
- R6. Modules for which you don't provide support to customer who bought it, such as a customer asking for help configuring the module or who encounters a bug when using it.
You will get 70% of your modules revenues on our Apps platform. You can either opt-in for automatic monthly payments or manually send us an invoice. Your sales will be accounted for in a PO that you can see in your sales dashboard. During each month, we will close the POs that have reached or exceeded 400 euros unredeemed sales. If you have enabled the automatic redeem method in your account, we will pay the invoice in the following days. If you have not, then you will receive an email from us notifying you that we are waiting for an invoice from you. The invoice must include the PO reference that you will receive by email and, obviously, the amounts must match. Please do not send us invoices for PO that are still Opened; you need to wait for our system to close the PO and notify you. Please note that since we are making international SWIFT transfers, the payment may take several days or weeks, especially if you are outside of Europe.
Clearly, the automatic payment method is the easiest, but you need to make sure with your local lawyer that you can receive money on your account without providing an invoice to justify that money.
All repositories URL's will follow the standard ssh URI scheme. There are two reasons to this standardization.
- We will remove sensitive information (password) from the URL;
- This standardization avoids the accidental duplication of repositories.
ssh://git@gitServer(:port)/mypath#version. In the event that the registration fails due to a badly formatted url, please make sure that you only use the colon to define the port or the URL, if no port is to be defined, use slash to separate
To publish your modules on our platform, we need to be allowed to read from your repository. If you are on Github, you can simply authorize our online-odoo user on your repository (the authorization must be done on the repository specifically, not the entire company).
If you are on Gitlab, you can authorize our OdooApps (email@example.com) user. If you use Bitbucket or another service, you will need to authorize our public SSH key instead.
Don't forget to use the SSH url of your repository when registering it to allow us to identify using ssh. For example for GitHub, it should be something like
We intentionally keep deleted modules for safekeeping. If you really want that we remove your modules from Odoo Apps, please issue your request to firstname.lastname@example.org. We will however continue to keep those modules if people have already bought them, or if another module depends on it. We can simply hide the module in those cases.
Odoo.sh works alongside an online git repository. By default, only free apps can be installed on Odoo.sh because the underlying git repository is public. However, if the underlying repository is set to be private instead, then paid apps can be installed on an Odoo.sh instance.
Please contact email@example.com with the urls of both the old Bzr repository and the new Git one, we will take care of everything!
Please contact firstname.lastname@example.org with all the details and we'll be happy to help you get on track!