Submit your Apps & Themes
Register your Git repository
Please sign in to be able to register a repository.
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.
Like Theme Enark or Theme Treehouse
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 GPL-3
, AGPL-3
, LGPL-3
, OPL-1
, 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: OPL-1
, 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 |
GPL-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 |
OEEL-1 | LGPL-3, OEEL-1 |
Like Avantgarde Theme
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.
- R4. Modules that collect information without user consent (such as usage statistics) will be removed unless the description of the module explicitly mentions what is collected and links to the applicable Privacy Policy.
- 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 gitServer
from mypath
.
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 (NOT odoo-online) 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 (apps@odoo.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 ssh://git@github.com/odoo/odoo#9.0
.
We intentionally keep deleted modules for safekeeping. If you really want that we remove your modules from Odoo Apps, please issue your request to apps@odoo.com. 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.
Yes. If the dependencies are from Odoo Enterprise, Community, your own, or another vendor, and are published in the App Store (except for Odoo apps).
The price to the buyer will include the cost of your app plus the cost of each dependency.
It is also possible to depend on an unpublished app. This way you can have a base module and customers are only going to download it when they buy one of the apps that depends on it. To do it remember to keep the base app free.
Please contact apps@odoo.com with the urls of both the old Bzr repository and the new Git one, we will take care of everything!
Please contact apps@odoo.com with all the details and we'll be happy to help you get on track!
Yes. Odoo S.A. takes a 30% commission on all sales on Odoo Apps and a 25% commission on each In-App Purchase (IAP) transactions. Please, consult our Vendor Guidelines for more information.