Back to Blog

Scoping a Contract NetSuite Developer on Time and Materials (With a Not-to-Exceed That Actually Means Something)

ERPIT HiringStaffing Firm

Last updated: October 24, 2026

Scope a contract NetSuite developer by turning the backlog into estimated hours per item, multiplying by the bill rate, and setting a not-to-exceed budget cap the CFO approves, tracked with a weekly burn report. KORE1-placed ERP and NetSuite consultants bill $73 to $123 an hour, median $91 (KORE1 Contract Rate Index 2026-Q4, n=15).

A controller I worked with once tried to do this math out loud on a call, no spreadsheet open, just vibes and a dollar figure she’d heard somewhere. It did not go well. Forty minutes later she had a number nobody trusted and a CFO asking why a “simple scripting project” needed six figures. The backlog wasn’t the problem. The lack of a number she could defend was.

That’s the gap this post closes. Not how to hire a NetSuite developer, and not what one costs per hour in general. How to take an actual pile of SuiteScript requests, SuiteFlow tickets, and half-finished integration asks, and turn it into an hours estimate with a dollar ceiling attached, the kind a controller can defend in the budget meeting without sweating.

Where I sit in this: my consulting group builds NetSuite environments, including the scoping work this post describes. KORE1, whose site you’re reading, places the contract SOW staffing services and contract NetSuite developer staffing side of that same equation. We get paid either way you go. I tried to keep the numbers honest regardless.

Controller sorting colorful backlog cards into estimate category piles on an office conference table

Watch How to Scope a Contract NetSuite Developer on Time and Materials

Scoping a Contract NetSuite Developer on Time and Materials video - KORE1

Video chapters

Read full transcript

You’ve got a NetSuite backlog and a CFO who wants a number. Saved searches, workflows, a few scripts, an integration or two. And an hourly contract developer to clear it. Tell finance 3 things. Estimated hours per item. The bill rate. And a not-to-exceed cap the CFO approves, tracked with a weekly burn report. KORE1-placed ERP and NetSuite consultants bill $73 to $123 an hour. The median is $91, from 15 placements in the 2026 Contract Rate Index. Read it as the center of a range, not a quote for your city.

Sort every backlog item into a type first. The type decides who estimates it and which seat does the work. Saved searches and dashboards are fast and cheap. SuiteFlow workflows take longer, since every approval path is another branch to test. SuiteScript takes real engineering judgment. Integrations mean dealing with someone else’s API. Hours per item come from whoever’s built something similar before. Not a rate card, not a forum average. Ask the person doing the work, and build in a range. A point estimate is a guess wearing a suit. And match the seat to the item. A saved search doesn’t need a senior engineer.

A not-to-exceed is a dollar ceiling on top of hourly billing. The developer still bills actual hours at the agreed rate. Total spend just can’t cross the cap without someone signing off on more. It’s a budget trigger, not a price for the work. And it’s not a fixed bid in disguise. Hitting the cap doesn’t stop the work. It starts a conversation. Descope, extend the cap, or pause. That decision happens on purpose, before month 4, instead of when finance notices the invoice total.

Weekly, not monthly. A monthly report is how a project gets 80% of the way to its cap before anyone outside the developer’s head notices. A weekly one catches drift in week 3 instead of week 11. Hours used against the estimate. Backlog items closed versus open. And a forecast of where spend lands against the cap at the current burn rate. Keep it to one page.

$150 an hour sounds high until you see what’s underneath it. Employer burden is the part that gets left out. That’s payroll taxes, required insurance, and California paid sick leave. $100 an hour in pay, plus 24% burden, is $124 an hour loaded. A bill rate around $150 to $160 covers that plus recruiting, account management and margin. That’s a worked example, not a quote. Quoted markups are where comparisons go sideways. Does the percentage sit on the pay rate or on the loaded cost? Same percentage, two very different bill rates. Ask which base before you compare two quotes.

A much cheaper estimate usually didn’t find a smarter way to do the work. It left something out. Testing. Documentation. Release regression. Those come back later as scope creep, or as a production bug that costs more to fix than it would have to test. On regulated work, validation ran about 30% of base hours in one firm benchmark. Take that out of a quote and the number drops fast. So ask every vendor what’s in scope for testing, and get the answer in writing.

Nothing breaks on day 1. That’s the trap. The saved search someone relies on at month-end starts returning stale data. The almost-finished approval workflow leaves invoices in limbo another week every cycle. And the person who understood the request has usually changed teams. If the backlog has sat for more than a quarter, clear the top 5 items as their own mini-project with their own cap.

Conversion usually comes once the backlog is cleared and the work shifts to maintenance. KORE1’s median contract assignment runs 116 days, and there’s no conversion fee after 1,040 hours. But if new integrations keep arriving faster than old ones close, you probably need a permanent seat, not another renewal. You might be wondering what happens if the project hits the cap before the backlog’s done. Work pauses, or the client approves more budget. Either way, somebody decides. It’s not a surprise on an invoice. And do testing hours get their own line? Yes. Bundle them with build hours and the quote looks cheaper than it is. Sort your backlog into those 4 types before the next budget meeting, and set the cap before the work starts. Then send the backlog to KORE1 at KORE1.com for a bill rate quote.

How do you turn a NetSuite backlog into an hours estimate?

Pull the backlog out of whatever it’s living in right now. Jira, a spreadsheet tab nobody’s touched since March, a Slack channel full of “can you also look at.” Doesn’t matter. What matters is sorting every item into a type, because type determines who estimates it and what seat does the work.

Four types cover almost everything. Saved searches and dashboards are the cheapest and fastest. A few hours each, light logic, no governance limits to worry about. SuiteFlow workflows take longer because every approval path and record state is another branch to test. SuiteScript customizations are where real engineering judgment enters, on purpose. Scripted logic against governance units is a different discipline than configuring a workflow in the UI. Integrations are their own category entirely, because you’re now negotiating with someone else’s API, not just NetSuite’s.

Hours per item come from whoever actually built similar things before. Not a vendor’s rate card, not an average pulled off a forum, and if nobody on your team has estimated a SuiteScript map/reduce script before, go ask the person who’s actually going to build it rather than guessing from a conference room, and build in a range, not a point estimate. A point estimate is a guess wearing a suit.

Backlog item typeEstimating basisTypical seatKORE1 median bill rate
Saved searches & dashboardsHours per report, filter complexityNetSuite consultant, all levels$91/hr (n=15, multi-state)
SuiteFlow workflowsHours per workflow, states × approval branchesNetSuite consultant, all levels$91/hr (n=15, multi-state)
SuiteScript customizationsHours per script, governance-unit budget per runSenior NetSuite/ERP developer$106/hr (national, modeled on BLS wages)
REST/SOAP integrationsHours per endpoint, plus auth and retry handlingSoftware engineer, all levels$105/hr (n=16, primarily Southern California)
Multi-system integration buildsHours per integration, senior design review built inSenior software engineer$120/hr (n=7, primarily Southern California)

Notice none of those seats are interchangeable. A saved search doesn’t need a senior engineer, and a SuiteScript project that touches governance limits shouldn’t get handed to whoever’s cheapest. Mismatch the seat to the work and you either overpay or ship something that breaks the first time volume climbs.

What is a not-to-exceed on time and materials, and what is it not?

A not-to-exceed, or NTE, is a dollar ceiling layered on top of hourly billing. The developer bills actual hours at the agreed rate, same as any T&M engagement, but total spend can’t cross the cap without someone signing off on more. That’s the whole mechanism, a budget trigger sitting on top of billing you’d already be doing anyway, not a separate price tag attached to the work itself. Simple as that.

KORE1 partner Devin Hornick put it this way when I asked him why staffing firms don’t typically structure engagements around budget caps: “Generally staffing firms don’t get into that. That’s a professional services thing. That’s a consulting group thing.” He’s right, and it’s worth sitting with why. A staffing firm places the seat and bills the hours. A consulting group owns the scope, which is what makes an NTE a natural fit for how my side of the business operates, and a less natural one for a pure staffing engagement.

What an NTE is not: a fixed bid in disguise. Nobody “eats the overrun” on a properly structured NTE, because hitting the cap doesn’t mean the work stops or someone absorbs a loss. It means you have a conversation. Do we descope, extend the cap, or pause? That conversation is the entire point of setting the cap in the first place. It forces the budget decision to happen on purpose, before month four, instead of by accident when finance notices the invoice total.

What goes in the weekly burn report?

Three numbers. Hours used against the estimate. Backlog items closed versus open. And a forecast of where spend lands against the cap at the current burn rate.

Weekly, not monthly. Monthly burn reports are how a project is 80% of the way to its cap before anyone outside the developer’s own head notices. A controller reviewing a weekly number catches drift in week three instead of week eleven.

  • Hours billed this week, and cumulative hours against the original estimate
  • Backlog items closed this week, with a one-line note on anything that took meaningfully longer or shorter than estimated
  • Remaining budget against the NTE, and a plain-language forecast: “on pace,” “trending over by roughly X hours,” or “ahead of pace”

Keep it to one page. If the burn report needs its own meeting to interpret, it’s failed at its job.

Analyst reviewing a one-page weekly burn report with a small bar chart at a standing desk

What’s actually in the hourly bill rate?

$150 an hour sounds high until you see what’s underneath it. Devin walked me through the arithmetic on a call recently: take a contractor paid $100 an hour. Add roughly 24% in employer burden. Payroll taxes, required workers’ comp and liability insurance, and California paid sick leave where it applies. That’s $124 an hour loaded, before the staffing firm has recruited anyone, managed the account, or carried any margin at all. A bill rate in the $150 to $160 range is what covers the loaded cost plus everything else a staffing firm actually does.

Here’s where the quoted-markup conversation usually goes sideways. A vendor quotes “20% markup” and it sounds reasonable, until you realize they never said whether that 20% sits on top of the $100 pay rate or the $124 loaded cost. Those are two very different bill rates wearing the same percentage. Ask which base the markup applies to before you compare two quotes on markup percentage alone. The number means nothing without it.

Why is a much cheaper estimate usually cheaper by exclusion?

Nine times out of ten, a quote that undercuts everyone else didn’t find a smarter way to do the work. It left something out. Testing, documentation, release regression. These don’t disappear because a competing bid skipped them. They show up later as scope creep nobody budgeted for, or as a production bug six weeks after go-live that costs more to fix than it would have to test properly up front.

On regulated work, this isn’t theoretical. In a benchmark from a validation-heavy environment I’ve worked in, testing and validation accounted for close to 30% of total build hours. Strip that out of a quote and the number drops fast, and so does the odds the thing holds up under an audit or a serious load. A materially cheaper proposal is usually cheaper by exclusion, not by efficiency. Before you compare two totals, ask each vendor what’s in scope for testing, and get it in writing.

What breaks if the customization backlog stalls?

Nothing breaks on day one. That’s the trap. A stalled backlog feels fine right up until the saved search someone’s relying on for month-end starts returning stale data, or the approval workflow that was “almost done” means invoices sit in limbo for an extra week every cycle. Backlogs don’t announce when they become urgent. They just quietly get more expensive to clear the longer they sit, because the person who understood the original request six months ago has usually moved teams by the time anyone picks it back up.

If your backlog has sat for more than a quarter, treat clearing the top five items as its own mini-project with its own NTE, separate from whatever’s currently “in progress.” Don’t let it keep sliding into next quarter’s priorities list. It never actually gets there on its own.

When does the contract developer convert to a full-time hire?

Typically after the backlog’s cleared and the engagement shifts from project work to ongoing maintenance. That’s usually the signal a company’s ready to bring the role in-house rather than keep renewing a contract. Across KORE1’s contract placements, the median assignment runs 116 days before a conversion or close-out decision gets made (n=1,887 placements). Most NetSuite developer engagements on a defined backlog land somewhere in that range, though a backlog with ongoing integration work tends to run longer before the conversion conversation happens.

There’s no fee if that conversion happens after 1,040 hours on the clock. If your backlog is genuinely bottomless, where new integrations keep appearing faster than the old ones close, that’s usually the sign you need a permanent seat, not another round of NTE renewal.

Things people actually ask before signing off on this

So what exactly is a not-to-exceed budget cap?

A not-to-exceed is a dollar ceiling on hourly time-and-materials billing that triggers a conversation once spend approaches it, not a fixed price for the work. The developer still bills actual hours at the agreed rate. The cap just forces a decision (descope, extend, or pause) before spend runs past what finance approved.

How often should the burn report actually land in someone’s inbox?

Weekly. A monthly cadence means a project can be most of the way to its cap before anyone outside the developer notices drift. Weekly reporting catches it in week three instead of week eleven, which is usually the difference between a quiet budget adjustment and an awkward one.

What happens if the project hits the not-to-exceed before the backlog’s done?

Work pauses, or the client approves more budget, and it is never a situation where the developer quietly eats the overage, because that would turn a time-and-materials engagement into a fixed bid wearing a T&M label, and the two work on completely different mechanics underneath. The NTE exists specifically so that moment happens on purpose, in a budget conversation, rather than as a surprise on an invoice.

Is $91 an hour the real number, or is that a lowball?

$91 is the median across 15 KORE1-placed ERP and NetSuite contract consultants from 2023 to 2026, spanning multiple states rather than one metro, which is exactly why it shouldn’t be read as a quote for your specific city or your specific scope. The real range runs $73 to $123 an hour depending on seniority and specialization, and senior SuiteScript work on a national modeled basis lands closer to $106. Treat $91 as the center of a range, not a quote.

Do we really need to separate testing hours from build hours in the estimate?

Yes, every time. Bundling them is exactly how a quote ends up looking cheaper than it actually is. On validation-heavy builds, testing alone has run close to 30% of total hours. Leave it out of the estimate and the number you compared vendors on was never apples to apples in the first place.

Pull your backlog into a list before the next budget meeting. Sort it against the four types above, price each seat off the contract staffing cost calculator, and set the cap before the work starts, not after the first invoice lands. Then write the rate, the cap, and the approver into one document with the time-and-materials SOW template. Figures throughout are pulled from the 2026 Contract Rate Card, built on the KORE1 Contract Rate Index methodology. If you’ve already got a backlog and want it priced against the index, send it to KORE1’s team for a bill rate quote. Hit me up if you want a second set of eyes on the scoping itself.