Odoo Development
Custom Odoo modules, tested and fully yours.
We build Odoo modules in Python, OWL and QWeb for Odoo 16 to 19, Community and Enterprise. Each one starts from a written specification, carries a fixed price, ships with automated tests and lands in your own Git repository.
- Python & OWL
- Odoo 16–19
- Community & Enterprise
- Automated tests
- Code in your repo
- Odoo versions we develop for
- Source code handed to you
- Apps of our own on the Odoo Apps Store
- Reply time on business days
What we build
Odoo development across models, screens and reports.
Every module we write extends standard Odoo through inheritance instead of editing it, so the next version is a porting job rather than a rewrite. These are the pieces custom development usually covers.
New models and apps
Business documents Odoo does not have, such as progress claims, rental contracts or lab results, with their own menus, access rights and chatter.
OWL front-end components
Field widgets, dashboards and client actions written in OWL, Odoo's own JavaScript framework, so they behave like the rest of the web client.
QWeb reports
Tax invoices, delivery slips, quotations and certificates in your layout, in Thai, English or both, rendered to PDF from QWeb templates.
Controllers and REST endpoints
HTTP and JSON routes for your website, mobile app or trading partners, protected by API keys and Odoo's access rules.
Scheduled jobs and queues
Cron jobs and queue workers for nightly price updates, batch imports, reminders and anything too slow to run while a user waits.
Portal and website features
Customer portal pages for orders, invoices and documents, and vendor pages for confirming purchase orders and delivery dates.
Point of Sale extensions
POS screens, receipts, loyalty rules and payment flows extended in OWL for retail counters and restaurants.
Localization gaps
Withholding tax certificates, PND 3 and PND 53 files and e-Tax Invoice output for Thailand, plus US sales tax and India GST fields where the standard package stops.
Porting to Odoo 18 and 19
Custom modules from older versions rewritten for the current ORM and OWL, with tests that prove the business rules still hold.
How we write code
Code that survives the next Odoo upgrade.
Odoo releases a major version every year and supports only the three most recent, so custom code has to move with it. Ours extends standard models through inheritance, keeps business rules in tested Python rather than in views, and never patches core files. It is the same discipline behind our two apps on the Odoo Apps Store.
- Inheritance, never core patches
- Tests run on every commit
- Written spec before the first line
- Handover notes in your repository
Specify
Fields, rules, screens and tests agreed in writing, with a fixed price.
Build
Python, OWL and XML in a separate module that inherits core.
Test
Unit and UI tour tests pass in CI before you see a demo.
Hand over
Module, tests and README pushed to your Git repository.
Examples
What a custom module looks like in practice.
Progress claims with retention
Percent complete on each BOQ line becomes a customer invoice with retention held back, posted against the project's analytic account.
Delivery zones and truck loads
Sales orders pick up a delivery zone from the customer address, and the warehouse sees tomorrow's deliveries grouped by truck and route.
Lot results and certificates
Quality checks record test results per lot, block the delivery order when a result fails, and print a certificate of analysis for the buyer.
By industry
Where standard Odoo usually needs a module.
These sectors run on a core document that standard Odoo does not model, so a custom module usually sits at the center of the rollout.
- ConstructionBOQ lines, progress claims, retention and subcontractor certificates.
- ManufacturingCosting rules, machine data capture and shop-floor screens for MRP.
- Real EstateUnits, booking deposits, installment plans and handover checklists.
- Freight & LogisticsShipment files, job costing and carrier charges per consignment.
- AutomotiveJob cards, parts lookup by vehicle and rental agreements.
- InsurancePolicies, renewals, claims and agent commissions.
- EducationAdmissions, fee schedules and term billing per student.
- Loan ManagementLoan applications, repayment schedules and collections.
How we work
From written spec to merged module.
1. Walk the process
We sit with the people who will use the module and write down what happens today, exceptions included.
2. Specify and price
A written specification lists fields, rules, screens and tests, with one fixed price for the module.
3. Build on staging
Development runs on a branch of your repository with a staging database, and a written status note arrives every week.
4. Test and accept
Automated tests pass in CI, then your team runs acceptance tests on staging with real records.
5. Release and support
We deploy to production, document the module and stay close through the first month-end close.
Toolbox
The stack behind every module we ship.
- Python
- OWL
- JavaScript
- XML
- QWeb
- SCSS
- PostgreSQL
- Odoo ORM
- OCA modules
- Git
- GitHub Actions
- Docker
- Odoo.sh
- XML-RPC
Our terms
Commitments we put in writing.
We do not publish client counts, ratings or speed claims. These are the terms every development engagement runs on.
Get a fixed quote- Price per module, agreed up front
- Written status note
- Consultant from first call to release
- Specs, demos and documentation
- Offices: Bangkok, New York, Delhi NCR
FAQ
Questions clients ask first
How much does custom Odoo development cost?
Each module gets a fixed price against a written specification, so you know the cost before work starts. The price depends on the models, screens, reports and integrations involved, not on hours logged. Odoo licensing is separate: Community is free, and Enterprise is billed by Odoo directly, never marked up by us.
Do you develop for Odoo Community or Enterprise?
Both, on Odoo 16 through 19. We check early which Enterprise apps a module depends on, such as Studio, Quality or Field Service, and keep Community builds free of Enterprise dependencies so they install cleanly.
Who owns the code you write?
You do. Every module, test and README is committed to your own Git repository, with nothing obfuscated or tied to our servers. If you later move to another provider or an in-house team, they start from the full source.
Will custom modules break when we upgrade Odoo?
Some porting is always needed between major versions, but it stays a small job when modules inherit core instead of patching it. Our tests show exactly which rules changed behavior, and we can port the modules ourselves as part of an upgrade project.
Can you fix modules another developer wrote?
Yes. We start with a code review against the Odoo version you run, list what is risky or duplicated, and quote the fixes separately from new features. You keep the written review whether or not we do the work.
Can you build an app we can sell on the Odoo Apps Store?
Yes. We publish our own apps there, the Shopify Odoo Connector and TechAfterMe Dashboard, so we know the packaging, versioning and listing requirements. We build the module, its description page and screenshots, and you publish it under your own vendor account.
Get started
Tell us what Odoo should do next.
Send the process, the screenshots or the spreadsheet you want replaced. We reply within one business day, and after a short call you get a written specification with a fixed price.
- Reply within one business day
- Fixed price per module, in writing
- Code, tests and docs in your repo
Prefer to talk first? Call us or WhatsApp us.