Skip to main content
Have a project in mind? Let's talk
Book a call Tell us about your project Book a Call
SA
  Wholesale and distribution

Software for Wholesale and Distribution Companies in Saudi Arabia: Odoo or Custom

Stock across warehouses, price lists per customer, purchasing and ZATCA invoices in one system. Built on Odoo or custom, quoted by what you need.

اقرأ هذه الصفحة بالعربية

1 Feb 2027Wave 25 latest integration date
3Stock reservation methods in Odoo
AR + ENInvoice languages

A distribution company needs one view of stock across warehouses, the right price for each customer, orders that become invoices, and ZATCA e-invoices tested for rejection cases before go-live. We build that on Odoo, where multi-warehouse stock, price lists, purchasing and Saudi accounting modules exist, or as custom software when your rep or pricing process is unusual. If a ready-made inventory product fits you, buy it; we write for the company it does not fit.

Devvista is an official Odoo partner and a software development company. Contact us with your warehouses and your biggest stock or pricing problem.

01

Where distribution companies lose time and margin

A wholesaler or distributor in Saudi Arabia usually starts with an accounting package, an Excel stock sheet and WhatsApp orders from sales reps. That works until the same product sits in two warehouses, a customer has a negotiated price nobody wrote down, and the invoice for a delivery is typed after the truck has left. Four things then go wrong together: stock figures disagree between branches, quotes use the wrong price, receivables are chased from memory, and ZATCA invoices are late or inconsistent.

This page is for owners and operations or finance managers of wholesale, trading and distribution companies (food and FMCG, building materials, auto parts, electrical, medical supplies and similar) who want one system for stock, pricing, sales, purchasing and invoices. We build it on Odoo or as custom software, and we say plainly which one fits and when a ready-made product is enough.

Evidence note (Mostaql, 7 November 2026): among about 75 project titles we read, buyers asked for inventory systems, mini ERPs and one distribution system. Our research file records it as a single post, so we treat it as a sign that small distributors do look for this work, not as proof of volume. Search demand for the Arabic phrase for a distribution program returned no data in Semrush Saudi Arabia, so this page is written for buyers who reach us through an Odoo or custom-system search or a referral, not for a head term.

02

What the system covers, and where each part comes from

Each row says what the part does and what the Odoo documentation (version 19) lists for it. Combining them into one distribution system, and anything marked custom, is our design for your case.

PartWhat it does for a distributorSource in the Odoo documentation
Warehouses and locationsSeveral warehouses and stock moves between them; shelves and bins inside eachInventory lists Warehouses, Locations and Operation types. The warehouse page says users can set up multiple warehouses and create stock moves between them, with a Resupply From option when there are several warehouses and Multi-Step Routes is enabled in Inventory settings. Warehouses
ReplenishmentStock topped up between a minimum and a maximum, or on demandReordering rules keep forecasted stock between a minimum and a maximum; a product on the Buy route creates a request for quotation when the rule fires. Inventory also lists Replenish on order (MTO) and Inter-warehouse replenishment. Reordering rules
Reserving stock for ordersDecide when a confirmed order takes stock off the shelfThree methods: at confirmation, manually, or before the scheduled date. Reservation methods
Picking and removalPick many orders together; choose which stock leaves firstInventory lists Batch picking, Cluster picking and Wave transfers, and removal strategies FIFO, LIFO, FEFO, closest location and least packages. Inventory documentation
Lots and expiry datesTrace a batch and sell the oldest first, useful for food and medical linesInventory lists Lot numbers, Serial numbers and Expiration dates under product tracking. Inventory documentation
PurchasingRequests for quotation, blanket orders, control of vendor bills, vendor pricelistsThe Purchase documentation lists Requests for quotation, Blanket orders, Control policies and Import vendor pricelist. Purchase documentation
Stock valueKnow what the stock is worth, including freight and duty added to costInventory lists Landed costs and inventory valuation. Inventory documentation
Price lists and discountsDifferent prices for different customers, quantities and datesSee the next section. Pricelists
Sales commissionsPay reps on what they sellThe Sales documentation has a Commissions section; the exact rules we would set up for your reps are confirmed in scoping. Sales documentation
ZATCA invoicesEvery delivery invoiced in Arabic and sent to FatooraOdoo's Saudi localisation, covered below. Odoo Saudi documentation

Evidence label: the capabilities in the third column are Fact from the pages linked. We left out two things on purpose, customer credit limits and a ready van-sales app, because the pages we opened do not describe them (not verified). Both are discussed below as scoped work.

03

Price lists for customers, quantities and dates

Distributors rarely sell at one price. The same carton costs a supermarket chain, a corner shop and a contractor different amounts, and prices move by season. Odoo's pricelist documentation describes the mechanism, and this is what it says:

NeedWhat the documentation states
Turn it onSales app, Configuration, Settings: in the Pricing section tick Pricelists, then save
A price per customerOn the customer's contact form, under Sales & Purchase, the Pricelist field sets the pricelist for that customer
Discount, formula or fixed priceEach line in the Price Rules tab is a rule; its type is Discount, Formula or Fixed Price. A negative discount creates a markup
Price by quantityA Min. Quantity field sets the quantity at which a rule applies
Price by dateStart and end dates set when the pricelist can be applied to quotations
Price by product categoryA rule can apply to a category; if rules exist for both a product and its category, the product's own rule takes priority
OverridesPricelists suggest prices, and they can always be overridden on the sales order
Foreign currencyEach pricelist has a currency field

Source: Odoo pricelist documentation. The Sales documentation also describes per-line discounts through a Discounts setting (Odoo discounts). Our part is turning your price agreements into rules and checking them on real orders: we take your current price file, load it, and run a sample of last month's orders through it before anyone quotes from it.

04

Sales reps, credit and van sales: what is configuration and what is custom

Distribution is a field business. Reps visit shops, take orders and sometimes sell from the vehicle. This is how we separate the work, so the estimate has no surprises.

NeedHow we would approach itLabel
Reps enter orders from the roadOdoo's quotations and sales orders are the base. If your reps need a phone app that works with poor signal and Arabic screens, that is a separate mobile app talking to the system; see mobile app development in Saudi ArabiaCustom for the app; not claimed as a standard Odoo feature
Credit limits and overdue blockingThe Odoo pages we opened do not describe a customer credit limit control, so we do not promise one. We scope it as a rule you define (limit per customer, what happens when it is passed, who can override), built and tested in stagingScoped rule or custom; not verified as standard
Rep targets and commissionA commission section exists in the Sales documentation. We confirm how your reps are paid before saying how much is configurationConfirm in scoping
Orders from shops through a portal or storePossible when you want customers to order by themselves; see online store development in Saudi ArabiaSeparate scope

If you sell mostly from vans with cash collection, ask us what the van process looks like before you assume Odoo alone covers it. We would rather scope a small custom piece than hide it.

05

ZATCA e-invoicing when you issue invoices all day

A distributor issues many invoices, from several warehouses or branches, and each must reach ZATCA. ZATCA's roll-out page says phase two (integration) starts from 1 January 2023 and is applied in waves, with at least six months' notice (ZATCA roll-out phases). For Wave 25, the notice of 24 July 2026 includes taxpayers whose revenue subject to VAT exceeded SAR 187,500 in 2022, 2023, 2024 or 2025, and the latest integration date is 1 February 2027 (Wave 25 notice). Your own notice decides your date, and you can compare your figures with our Wave 25 checker.

What Odoo's Saudi documentation says matters for a distributor:

  • Each sales journal must be onboarded separately, so a company with several branch or warehouse journals repeats onboarding for each.
  • Phase two uses clearance for business-to-business sales (tax invoices); for business-to-consumer sales (simplified tax invoices) Odoo generates a QR code and reports to Fatoora.
  • Invoices rejected by ZATCA stay in a Rejected state and are not legally valid until you fix the issue and retry. Someone must own that daily check.
  • Returns are credit notes, and each credit or debit note needs a ZATCA-approved reason.
  • Tax invoices and simplified tax invoices, and their notes, must be issued in Arabic; English can be added.
  • Counter sales can go through the point-of-sale modules (l10n_sa_edi_pos). Standard VAT is 15%.

Source: Odoo Saudi Arabia documentation. The practical risk is data: a customer without a correct VAT number or address produces rejections at volume. We clean that data before go-live. Read more in Odoo ZATCA e-invoicing and accounting and e-invoicing software.

06

Odoo, custom or a ready-made product: how to choose

All three are legitimate, and the honest answer depends on your process.

PathFits whenWatch out for
Ready-made distribution or inventory SaaSOne or two warehouses, standard pricing, a few users, and the vendor confirms ZATCA phase-two support in writingLimits on price rules, branches and integrations. We do not recommend vendors by name, since we have not verified any
OdooSeveral warehouses, customer-specific price lists, purchasing and accounting in one system, growth plannedData migration, onboarding of each journal and training. See Odoo implementation in Saudi Arabia
Custom softwareYour pricing, dispatch or rep process is unusual, or you already run a system worth keeping and need pieces addedYou own more of the maintenance. See custom software in Saudi Arabia

Mixing is common: Odoo for the standard core and a custom rep app or integration for what is unique. If you also deliver your own goods, the delivery side overlaps with our logistics software page. Manufacturers who sell what they make should read ERP for manufacturers, and contractors software for contracting companies.

07

How a distribution project runs

This is how we already work, not a package. We have no Saudi distribution client to point to, and Odoo projects are under NDA, so the process below is what we offer in place of references.

StepWhat happensWhat you see
1. Scoping callWarehouses, products, price files, reps, journals, current invoice system and the date that mattersA written scope and an estimate
2. Data from ExcelProducts, customers, opening stock and price lists cleaned and loaded; duplicate and missing VAT data fixedA list of what was fixed and what is still open
3. Staging buildWarehouses, routes, price lists and invoice layout set up on a staging site, never on live stock firstA staging site and a weekly demo
4. RehearsalA sample of real orders, returns and credit notes run through, including ZATCA rejection casesTest results you can read
5. Go live and hand overStock count and cut-over with you present; documentation, access and code handed overDocuments and code that are yours

We work in Arabic and English. Tell us your case and we will say honestly whether we are a fit.

08

What changes the cost

We quote by need after a scoping call and publish no packages. The drivers, roughly in order of impact:

DriverWhy it moves the estimate
Warehouses, branches and journalsEach warehouse needs setup and each sales journal is onboarded for ZATCA on its own
Number of products and price rulesMore price lists and categories mean more rules to load and test
Data qualityDirty customer, product and stock data is the main cause of slow go-lives and rejected invoices
Rep app and offline needsA mobile app is its own piece of work
IntegrationsStore, carrier, payment or old-system links each add scope
Training and number of usersMore users and sites mean more training and support

Our published ranges, in US dollars: a fixed price from $500 to $100,000 depending on complexity, or $10 to $100 per hour depending on developer type and level. As an illustration only, at $40 an hour 50 hours of work is $2,000, an estimate and not a quote. See ERP implementation cost in Saudi Arabia for how competitors state their own ranges.

Ready to talk? Contact us with your warehouses, rough product count and the system that issues your invoices. Global English pages: Odoo implementation, hire Odoo developers and our work.

Contact Devvista

Our address, phone and opening hours.

Devvista

Amna Bint Wahb St, road, Jeddah 23622, Saudi Arabia

+966 58 372 5686

  • SundayOpen 24 hours
  • MondayOpen 24 hours
  • TuesdayOpen 24 hours
  • WednesdayOpen 24 hours
  • ThursdayOpen 24 hours
  • FridayClosed
  • SaturdayClosed
Get an Estimate

Tell us your warehouses, rough product count and the system that issues invoices and we will send an estimate. Get an estimate.

Straight Answers.

Still have a question?Send it over and we will answer personally.Send a Message

Many use an accounting package plus spreadsheets; companies that outgrow that move to an ERP such as Odoo or to a custom system. A ready-made inventory product can be enough for one or two warehouses with standard pricing.

Odoo's warehouse documentation says users can set up multiple warehouses and create stock moves between them. Inventory also lists reordering rules and inter-warehouse replenishment. Routes and the number of steps are set up per warehouse in the project.

Yes. The pricelist feature lets you assign a pricelist to a customer, with rules by discount, formula or fixed price, minimum quantity, date range and product category. Prices can still be overridden on the sales order.

We have not verified a standard credit limit control in the pages we opened, so we do not promise one. We scope it as a rule: limit per customer, what happens when it is passed, and who may override.

Not as a ready product. If your reps need an app for orders on the road in Arabic, we scope it as a custom mobile app connected to the system, and say so in the estimate.

B2B tax invoices go through clearance and B2C simplified invoices are reported with a QR code, according to Odoo's Saudi documentation. Each sales journal is onboarded separately, and rejected invoices must be fixed and retried.

A return is a credit note, and Odoo's documentation says each credit or debit note needs a ZATCA-approved reason. A credit or debit note that is not tied to a specific invoice must carry the original invoice number.

Yes. We clean and load products, customers, opening stock and price lists, fix missing VAT data, and show you what was fixed before go-live.

We quote by need after a scoping call. Our published ranges are a fixed price from $500 to $100,000 depending on complexity, or $10 to $100 per hour depending on developer type and level, in US dollars.

We do not show Saudi client references, and Odoo projects are under NDA. We offer a written scope, a staging site, weekly demos and handover of the code instead.
Saudi Arabia

Tell us about your warehouses and price lists

Tell us how many warehouses, products and reps you have and what issues your invoices today. We will say honestly whether Odoo, custom or a ready-made product fits, and quote in writing.

  • 30-minute consultation
  • No commitment required
  • Response within 24 hours
  1. Book a call30 minutes with the team.
  2. Get a clear planSteps, timeline and a cost range for your setup.
  3. DecideGo ahead with us, or take the plan with you.
Chat on WhatsApp