← All articles

Blog

Odoo Customization Cost in Indonesia: Hour vs Project Pricing

Honest cost ranges for Odoo customization in Indonesia in 2026, plus when hourly billing actually wins over fixed-price project quotes — and the reverse.

5 min read
  • bottom

Three vendors quote the same Odoo customization. One says Rp 18 juta fixed. One says Rp 35 juta fixed. One says “around Rp 250 per hour, probably 80–120 hours”. You’d be forgiven for thinking the cheap one is a steal. In practice, the cheap fixed quote and the hourly quote often end up at the same final number — and the middle quote sometimes saves you the most.

Here’s how the pricing actually breaks down in Indonesia in 2026, and how to read a quote without getting burned.

Typical hourly rates by tier

Three rough brackets exist in the Jakarta / Bandung / Surabaya market:

Freelance individual developer: Rp 150–300 per hour. Usually one person, often moonlighting. Fastest to start, cheapest, no continuity if they get hit by a bus or a better offer.

Small studio (3–15 people): Rp 300–600 per hour. A senior who scopes plus a mid-level who does most of the build. This is where most of the actual customization work in Indonesia happens.

Established consultancy: Rp 700–1.5 juta per hour. Includes proper project management, code review, documentation. Worth it if you have something complex or audited, overkill for small tweaks.

For comparison, offshore international rates (Vietnam, Philippines) usually land Rp 800 per hour and up; rates in Singapore-headquartered firms run Rp 2–4 juta per hour for the same Indonesian developers wearing a different badge.

Project pricing for common scopes

Some patterns are common enough to have stable price ranges. These are full-cycle numbers including discovery, build, testing, and basic training:

  • Simple report or PDF template: Rp 4–12 juta. Maybe 1–3 days of work.
  • Custom field plus form changes on an existing module: Rp 6–18 juta.
  • New module with one or two workflows (approval routing, custom inventory rule): Rp 25–80 juta.
  • Multi-warehouse picking logic with barcode integration: Rp 60–150 juta.
  • Custom POS extension with hardware integration (scale, label printer): Rp 35–90 juta.
  • Tokopedia / Shopee two-way sync (orders, stock, status): Rp 80–200 juta depending on edge cases.
  • e-Faktur CSV export with NPWP validation and bukti potong report: Rp 25–60 juta.
  • Manufacturing routing with quality control gates and traceability: Rp 100–300 juta.

These are real ranges, not aspirational ones. If a vendor quotes you half the bottom of the range, ask exactly what’s not included. If they quote you double the top, ask what extra value you’re paying for — sometimes it’s a real reason (audited financial sector, multi-language localization), sometimes it’s just a markup.

When hourly beats fixed

Hourly pricing wins when the scope is genuinely unclear. A vendor giving you a confident fixed quote on a fuzzy requirement is either padding heavily (you overpay) or going to come back asking for change orders (you overpay differently). The honest version of that conversation is “I don’t know yet — let’s bill the discovery phase by the hour, and once we have a clear spec, we’ll quote the build fixed.”

Hourly also wins on ongoing maintenance. After go-live, you’ll want a few hours a month for bug fixes, small enhancements, user questions. Forcing this into fixed-scope tickets creates friction. A retainer of 20–40 hours a month at a known rate is cleaner.

The risk with hourly is the ceiling. We’ve seen Jakarta retailers spend Rp 400 juta over six months on something that should have been a Rp 120 juta fixed project, because no one ever drew a line and said “we should be done by week 12”. You manage this with a not-to-exceed clause: “billed hourly, capped at X hours, beyond that we re-scope together”.

When fixed beats hourly

Fixed pricing wins when the requirement is clear, written down, and signed off. Migrating from an old system into Odoo with a defined data set, building an integration where the external API is documented and stable, replicating a report that already exists in another system — these are all fixed-price territory.

The trap is calling something “clear” when it isn’t. If your spec says “syncs with Tokopedia” without specifying what happens to cancelled orders or out-of-stock SKUs during a sync, you don’t have a specification. You have a wish. Fixed pricing against a wish either produces a result you don’t like or a change order pipeline.

A practical pattern: pay for two to four weeks of discovery work hourly, produce a tight functional spec, then sign a fixed contract for the build. The discovery cost is real (Rp 15–40 juta typically), but it dramatically reduces the risk of the build going wrong.

What an honest quote looks like

The numbers themselves matter less than the structure of the quote. A serious vendor breaks down their estimate into discovery, design, development, testing, deployment, and training, with hour estimates for each. They tell you which assumptions the price depends on and what happens when assumptions break. They name the developers who will do the work and their seniority. They show you sample deliverables from past projects.

A weak quote is a single line item, “Odoo customization”, and a number. If you can’t see the assumptions, you can’t tell whether the price is fair, and you definitely can’t predict what change requests will cost.

A short decision checklist

Before signing anything, ask the vendor to walk you through: a specific past project of similar size, who handles the work if the original developer leaves, how change requests get priced, what the warranty period after go-live looks like, and whether the code becomes your property when paid. The answers to those five questions tell you more than the quoted price does.

If you want a sanity check on a quote you’ve received — or help building the spec before you go shopping for quotes — we’ll do a free one-hour call. Bring the actual document if you have one; we’ll read it with you and point out what’s missing.