OdooWiki OCA HUB

Sale Import Base

sale_import_base folder_open OCA/sale-channel open_in_new
Generic Modules/Sale License: AGPL-3

This module adds an easy way to import and validate sale orders in JSON format.

auto_awesome What this module does

AI-generated from the code · Odoo 16.0

This module provides the base to import sale orders into Odoo from JSON data coming from external sales channels. Users can review each import in a 'Sale Import' screen, retry failed imports, and configure how orders, customers and payments are created per channel.

This module is the technical foundation for importing sale orders from external marketplaces or webshops. Each incoming order is stored as a payload record that you can see under Sales > Sale Import. The list shows the date, the sales channel and the status (Pending, Done or Failed), and you can filter by pending or failed imports. Opening a payload shows its editable JSON data, any error message and, for administrators, the full error trace. A 'Retry job' button re-launches a failed import.

Imports run in the background through the job queue. When a payload is created it is processed automatically; if it fails, the reason is saved and the payload is marked as Failed instead of blocking other imports. Old successful payloads are cleaned up automatically after one year.

On each sales channel you can set import parameters: the pricelist, the sales team, whether to confirm the order, whether to generate the invoice, whether to match customers by email, whether to archive imported addresses, and whether the order number should use the external reference or Odoo's own sequence. You can also enable checks comparing the imported untaxed and total amounts with the amounts Odoo computes; these are available as sale exception rules.

Payment providers get an extra reference field used to identify the payment mode coming from the external system.

Menus it adds

Sale Import
Models and fields (5)
  • sale.order · extends an existing modelsi_amount_tax ((technical) Tax amount from import), si_amount_total ((technical) Total amount from import), si_amount_untaxed ((technical) Untaxed amount from import)
  • sale.channel · extends an existing modelcrm_team_id, pricelist_id (Pricelist), confirm_order, invoice_order, archive_addresses (Automatically archive partner's addresses), allow_match_on_email (Allow customer match on email), internal_naming_method, sale_orders_check_amounts_total ((technical) Check total amounts against imported values), sale_orders_check_amounts_untaxed ((technical) Check untaxed amounts against imported values)
  • payment.provider · extends an existing modelref
  • sale.import.payload · new modelstate, data_str (Editable data), company_id, state_info (Additional state information), stack_trace, sale_channel_id
  • sale.channel.importer · new modelpayload_id

Text generated by AI (DeepSeek) from reading the Odoo 16.0 code on GitHub; it may contain mistakes, so check the code before deciding. View the code on GitHub

Availability by version

Reviewed: 2026-11-03
Confirmed (verified in repository and branch) Estimated (unverified) No information

Confirmation status: 1 confirmed, 8 with no information of 9 versions.

Sources · Odoo 16.0

Confirmed on 2026-11-03 in branch 16.0 of OCA/sale-channel.

terminal Installation and usage

OCA documentation · Odoo 16.0

Use the batch_process_imports method which requires a list of dicts as input and returns a list of job ids.

No verified information in OCA: Installation, Configuration.

info

Data imported from GitHub: this sheet reflects the latest catalog review, not a live lookup. Always check the module documentation and staging before installing in production.