Your margin is set by how you price and defend each deal. Cheap engineers will not save a shop that underprices. Most Ukrainian shops set their rates two or three years ago by gut, never compute a fully loaded cost per hour, and cannot say which clients make money. The number on the SOW is not the number you keep. Quote $60 an hour, collect on 80% of the hours you work, and you earned $48.
That gap between the number you quote and the number you keep has a name, and a set of numbers behind it. This is the pricing companion to the financial reports every IT services CEO should actually read, which defines utilization, realization, the effective rate, and per-project margin. Assume you already track them; if you do not, start there.
What shops like yours actually bill
Are we underpriced, and what do shops like mine charge EU and US clients in 2026? Answer that, then build your own number.
No Ukrainian government body publishes a private IT services rate card. Market and platform data exist, but every source measures a different thing. Read these as a compass, not a price list, and label each one by what it actually is.
| Offer | 2026 market signal | What it is, and the catch |
|---|---|---|
| Thin outstaffing, junior, client-managed | $25 to 35 per hour | Works only with low overhead and no hidden PM or QA load |
| Mid-level general engineering | $35 to 55 per hour | Healthy only if utilization and realization support it |
| Senior agency or managed team | $50 to 80 per hour | Target band for full-service foreign-client work; below $50 is thin |
| AI, ML, data, cloud, security senior | $70 to 100+ per hour | Defensible only with proof of scarce skill, risk control, and paid discovery |
Two of the most cited sources sit on different axes, and confusing them is how founders misjudge their own price.
- Lemon.io’s 2026 Ukraine rate calculator, based on active contract data, puts senior Ukrainian developer contract rates at $34 to 44 per hour, with Python, ML, MLOps, and LLM seniors reaching $50 to 90. That is close to what an individual vetted contractor earns.
- Aggregates from the Clutch directory (via Brainhub and Qubit) list many established providers in the $50 to 99 band. That is an agency profile band, higher because it carries project management, QA, delivery management, bench, and owner profit on top of the contractor.
- GoodFirms’ 2026 custom software survey reports that 56.3% of surveyed companies offer development in the $20 to 50 range, broad market context rather than a Ukraine-specific figure.
The owner-side point: your rate is set by the client’s alternative, not by your cost. A US client benchmarks against US onshore and pays the top of your band. A DACH client benchmarks against Western Europe and pays mid-band. A client benchmarking against South Asia is the wrong client for a Ukrainian shop and drags your realized price below any healthy floor. Segment your pipeline by where the client anchors, and stop quoting one rate to all three.
One 2026 pressure is new and worth naming. Buyers now expect AI to make work cheaper. Accelerance reports average outsourcing rates edged down by single digits across major regions in 2026, attributed to AI productivity. The exposure is uneven: a shop billing juniors by the hour is the most vulnerable, because that is exactly the work AI compresses. Senior-led, outcome-priced work holds. The defense is to stop selling junior hours and start selling scoped outcomes.
Build the rate from the ground up
The market sets your ceiling. Your cost sets the floor: loaded cost recovered over the hours you can realistically bill, not full capacity. Dividing annual cost by 2,080 hours and marking it up is the single most common way Ukrainian shops underprice. You never bill 2,080 hours. After bench, time off, and non-billable work, you bill far fewer, and the same cost has to be recovered over that smaller number.
The Ukrainian cost base
The part generic pricing guides miss is how a Ukrainian shop’s cost is built. Most billable engineers are engaged as sole traders (ФОП, romanized FOP), and the simplified-group-3 tax sits on the contractor, not on you.
For 2026, a FOP on group 3 pays a single tax of 5% of income (3% if VAT-registered), a military levy of 1% of income, and a minimum unified social contribution (ЄСВ) of ₴1,902.34 per month. That minimum ЄСВ is 22% of the 2026 minimum wage of ₴8,647, which rose from ₴8,000 on 1 January 2026. The group-3 annual income ceiling for 2026 is ₴10,091,049. Because the contractor carries that tax, a FOP keeps roughly 94% of each invoice, and your direct cost per head is close to the invoice itself.
The military levy on personal income, separately, rose from 1.5% to 5% from 1 December 2024. That matters if you pay engineers as Diia City gig specialists rather than through FOP invoices, because the gig profile is 5% personal income tax plus ЄСВ plus the 5% military levy, a heavier labor-tax load than FOP. Loaded cost shifts materially across FOP, employment, gig, and Diia City. We compare those structures in the Diia City versus LLC guide; for pricing, treat the structure as a cost input and do not reprice around it.
On top of the invoice or remuneration, loaded cost adds equipment, tools, software, recruiting, the share of management and PM time the engineer consumes, office, and the bench. The bench is the one founders forget, and it is what makes loaded cost higher than the bare invoice.
The formula, and the number it produces
Set the floor rate so loaded cost is recovered after utilization and realization take their cut, leaving the target margin:
required headline rate = (loaded monthly cost / available hours) / (target margin x utilization x realization)
Worked through for two roles, at a 50% delivery-margin target, 75% utilization, and 90% realization:
| Role | Loaded cost / month | Cost per hour (/160) | Required headline rate |
|---|---|---|---|
| Mid-level | $3,000 | $18.75 | $55.56 |
| Senior | $5,500 | $34.38 | $101.85 |
The senior formula asks for $102 an hour. The market for senior agency work pays $50 to 80. The required rate has landed above what the market will pay, and that gap is where the real decision sits. You do not ignore the formula and you do not pretend the market will pay it. You change something: the offer, the seniority mix, the scope, the delivery model, or the walk-away threshold. A full-service shop quoting senior work at $35 to 45 is selling either thin outstaffing or underpriced managed delivery, and the formula is what forces that distinction into the open.
Hold three rates in your head for every role, not one:
| Rate | Meaning | Rule |
|---|---|---|
| Floor | Covers loaded cost at realistic utilization and realization | Never sell below it without a written strategic reason |
| Target | Funds delivery margin plus overhead and owner profit | Use for new clients and renewals |
| Walk-away | Below it the client blocks better work or loses money after management load | Re-scope, cut service level, or exit |
A cleaner way to sanity-check any quote: the effective rate, which is revenue per delivery hour after discounts and overruns, should be at least twice your loaded cost per hour to clear a 50% delivery margin. Below roughly 1.5 times, the engagement is underwater once overhead is counted. The effective rate already nets out the discounts and overruns that the headline rate on the SOW hides.
Why a Ukrainian shop’s margin is tighter than the US rule implies
US agencies work to a rule of thumb: bill at three to four times salary, and the common bill-rate calculators default to a multiplier of four. That multiple does not transfer. Because the FOP model pushes payroll tax onto the contractor, your loaded cost sits close to the bare invoice, so your realized multiple of bill rate over loaded cost is structurally thinner, closer to two than to four. A 10% discount, an 85% realization rate, one bench engineer: each eats a larger share of a 2x multiple than it would of a 4x one. Tight margins are real margins, but they punish leaks harder.
Blended rates and currency
A single blended rate across all seniorities simplifies proposals and conceals under-recovery of senior time, because over-recovered junior time subsidizes it. Build a blended rate from a realistic role mix, not a guess: 20% senior at $85, 60% mid at $60, and 20% QA or PM at $50 gives an internal target near $63 before any risk premium. The trap is a client who buys at the blended price and then demands a senior-heavy team. If you need utilization above 75% just to break even at your blended rate, the constraint is the price, not the capacity.
You invoice in USD or EUR and pay part of your cost base in UAH, so margin moves with the exchange rate even when nothing else changes. Ukraine also requires export proceeds to be settled to a domestic account within a deadline set by the NBU, currently 365 days, which limits how long you can carry a client on terms before it becomes a compliance problem rather than only a cash one. On long retainers, write a rate-review or indexation date into the contract, because Ukrainian contract law allows a price change only where the contract or law provides for it.
Pick the model by who controls the unknown
You have your rates. The contract model decides who carries the risk around them, so match it to whoever controls the unknown. For Ukrainian-law contracts, the commercial terms have to be written in before delivery starts. The Civil Code lets parties set price by agreement (Article 632), allows a price change after signature only where the contract or law permits, and forbids a price change after performance. Amendment needs consent unless the contract says otherwise (Articles 651 and 654), and the customer pays in the amount and procedure the contract sets (Article 903). You cannot recover underpriced work with a later fairness conversation.
Fixed-price transfers all estimate risk to you. Under a firm fixed price, the buyer pays the agreed amount regardless of your cost, so every hour over budget comes out of margin (a long-standing principle PMI states plainly). To survive that, vendors build a contingency buffer into the price, which the client overpays whenever the project runs smoothly. Fixed-price fits repeatable work with clear scope, acceptance criteria, exclusions, and a signed change-order process. Without hard change control it is a margin loan to the client that you may never recover.
Time and materials puts overrun risk on the client, who pays for actual effort, so it runs slightly higher margin for you and removes the buffer guesswork. It fits evolving scope, frequent client review, and reliable time tracking. The catch is governance: T&M protects margin only if every delivery hour is logged and billed or explicitly written off. Untracked, it quietly becomes a discount you did not agree to.
Retainer or dedicated team is how many Ukrainian shops actually sell, and it is a retainer in disguise: the client pays for reserved capacity, which guarantees a utilization floor and predictable cash. It leaks when the included scope is undefined or unused hours roll forward forever, which turns it into deferred fixed-price work and hidden delivery debt. Define included hours, exclusions, response times, rollover expiry, and a rate-review date, and re-price it annually. These rates are the easiest to leave untouched for years because they feel like salary plus a markup.
Value-based pricing ties the fee to a measurable outcome and earns the highest margin when the outcome is measurable, attributable, and within your influence. For a sub-30 shop it is a narrow tool for a clean slice of work, not a model for the whole book. Never price on an outcome the client controls: if adoption, sales execution, or data access sits with them, you carry the downside without the steering wheel.
Stable, well-scoped, repeatable work goes fixed because you control it. Evolving work goes T&M because neither side controls it and you should not pretend otherwise. An ongoing relationship where you want a utilization floor goes on retainer. A narrow, measurable, high-leverage result can go value-based. Capped T&M, billing actuals against a ceiling, is the middle ground when procurement insists on a number.
Pricing AI and data work
AI and data projects are where model selection gets hardest. They break fixed-price because the unknowns sit outside coding effort: data access, data quality, labeling and cleaning, baseline model accuracy, evaluation criteria, security and compliance constraints, integration latency, and client-side adoption. Fixing scope and price before any of that is known is pricing a project that does not yet exist.
This is no longer a niche. The 2026 SPI professional services benchmark, drawn from 509 firms and reported via Rocketlane, found 27.1% of projects now incorporate generative AI, up from 19.3% in 2024, and 40% of firms actively sell AI-related services.
Structure the engagement in phases so the unknowns are resolved on the client’s budget, not yours:
- Fixed-price discovery, time-boxed. Bounded work with a bounded output: a data audit, a technical risk register, architecture options, a prototype or spike, a backlog, assumptions, acceptance criteria, and a budget range. Because the output is defined, fixed price fits it.
- T&M or capped T&M delivery, in short sprints. With the unknowns resolved, build on actuals.
- Optional fixed-price modules, only once discovery has turned specific unknowns into defined deliverables.
The discovery fee is not a giveaway. It is sold as a de-risking deliverable, a spec and prototype the client owns, and it filters tire-kickers before you sign a death-march bid on a guess. Capped T&M only works when the cap comes with scope-triage rights and client decision deadlines; without them the cap is a fixed-price project under another name. Discovery reduces unknowns. It does not remove delivery risk, and no contract structure does.
Where the margin leaks
Whatever model you pick, margin still leaks. Five places drain a services business, and each shows up in a specific number. Track all three core metrics, utilization, realization, and effective rate, monthly and per client, off time-tracking data.
| Leak | Where it shows up | The number |
|---|---|---|
| Under-scoping | Logged hours run past budget; margin drops before invoicing catches up | A 20% delivery overrun turns a 50% margin into 40% |
| Scope creep | Realization falls over a project’s life; requests never reach a change order | Healthy realization is 85 to 95% |
| Unbilled hours and write-offs | Gap between utilization and realization | SPI 2025 revenue leakage 4.5%, against a target below 5% |
| Reflex discounting | Effective rate dragged below list rate | A 10% discount at 40% margin cuts gross profit 25% |
| The bench | Utilization below the 75 to 85% band | SPI 2025 billable utilization 66.4%, a record low |
The diagnostic loop is simple. Utilization tells you whether the team was busy. Realization tells you whether you got paid for being busy. The effective rate tells you the price you actually realized after both. The bench is the live 2026 danger: SPI’s 2025 billable utilization of 66.4%, reported via Rocketlane, sits below the benchmark’s 70% minimum-healthy line. A single idle engineer at roughly $3,000 a month in loaded cost burns about $36,000 a year against no revenue.
Treat write-offs as pricing data, not delivery noise. A client or project type that needs the same write-off every month is giving you pricing data: raise the rate or end the relationship.
How to actually raise rates
Raise new clients first. They do not know the old price, so set them at the rate you actually want, and let the existing book converge upward at renewal over two or three cycles. That lifts the whole book without a single shock churn.
The discounting math is what gives you the spine to hold firm. The extra revenue needed to recover a discount is the discount divided by margin minus discount. At a 40% margin, a 10% discount needs 33% more volume just to stand still, a 20% discount needs 100% more, and a 30% discount needs 300% more. You cannot manufacture 33% more billable demand on command, so “give them 10% to close it” is almost never recoverable, and the discount resets the client’s anchor for next time. The 2026 SPI benchmark is consistent with this: high-performance firms discount less, 6.0% against 9.6% for the rest, and still win more bids, 56.5% against 45.1%.
For existing clients, run a deliberate process rather than a blanket increase:
- Rank clients by margin, realization, the senior capacity they consume, payment reliability, and strategic value.
- Start with the clients below target margin and the chronic scope-creep accounts. Do not raise everyone equally.
- Give written notice tied to the renewal or contract boundary. Commercial practice is 30 to 90 days, longer for enterprise accounts, but that is practice, not a Ukrainian legal entitlement. The governing contract controls, and for a foreign-law MSA the notice clause in that MSA controls.
- Lead with the value delivered, not your rising costs. This matters in 2026 specifically: Ukrainian senior salaries are flat to down (DOU’s winter 2026 report shows the senior median falling from $4,700 to $4,500), so “our costs went up” is a weak argument. Raise because you were underpriced, and say so through results.
- Offer a choice only when each option protects margin: a higher rate at the same scope, the same budget for reduced scope, a prepaid retainer, a longer commitment, or a different team mix.
- Offboard the clients who say no gracefully. A client who will not pay a fair rate is usually a margin drain you should release.
As internal decision rules: raise legacy clients below 40 to 45% delivery margin at renewal, re-scope or exit those below 30 to 35% unless there is a documented strategic reason, write 5 to 10% annual review language into long retainers, and never grant a discount without a trade in scope, seniority, prepayment, commitment, or response level.
The levers, ranked
Two questions about the levers get blurred: which has the most arithmetic leverage, and which one to fix first.
By arithmetic leverage, the order is rate, then realization, then utilization, then client mix. A rate increase flows almost directly to gross profit because cost is fixed in the short run. Realization is recovered margin on work you already did. Utilization is powerful but capped, since pushing past 85 to 90% trades margin for burnout and attrition. Client mix is slower but structural.
Operational urgency overrides that order depending on where you are bleeding:
- Realization below 85%: fix write-offs and change orders first. You are already doing unpaid work.
- Utilization below 70%: fix the bench and pipeline conversion first. Your cost per billable hour is structurally too high.
- Delivery margin below 40% at healthy utilization and realization: the rate card or the client mix is the problem. Delivery is already sound, so reprice or change who you sell to.
- A few clients below 30 to 35% margin: reprice, re-scope, or exit them before you hire.
What this is worth, in concrete terms. Take a 20-person shop billing $60,000 a month and move gross margin from 35% to 50%. Monthly gross profit goes from $21,000 to $30,000, and EBITDA goes from minus $1,500 to plus $8,000. The same team and revenue, with no new clients. The entire swing comes from pricing and leak control. Selling more of a 25 to 30% margin offer does the opposite: it scales the problem. Fix the price first, then sell more.
Frequently asked questions
What hourly rate should a Ukrainian IT services company charge in 2026?
Senior agency or managed-team work for foreign clients sits around $50 to 80 per hour, with AI, ML, and data seniors reaching $70 to 100 or more. The market rate is only a compass. Build your own floor from a fully loaded cost per hour recovered over the hours you can realistically bill, then set target and walk-away rates around it. A US client pays the top of your band, so segment your pipeline by where each client anchors.
How do you calculate a billable rate for software work?
Start from loaded monthly cost, not the bare salary or invoice. Divide by the hours you can realistically bill, not full capacity, then divide by your target margin times utilization times realization. At a 50% margin target, 75% utilization, and 90% realization, a $3,000-a-month mid-level engineer needs about $56 an hour and a $5,500 senior about $102. The effective rate should be at least twice your loaded cost per hour.
Time and materials or fixed price: which protects margin?
Match the model to who controls the unknown. Fixed price fits stable, well-scoped, repeatable work and transfers all estimate risk to you, so every hour over budget comes out of margin. Time and materials fits evolving scope and puts overrun risk on the client, but it leaks unless every delivery hour is logged and billed. For open-ended AI and data work, sell fixed-price discovery first, then T&M delivery.
How do you raise rates without losing clients?
Raise new clients first: they do not know the old price, so set them at the rate you want and let the existing book converge upward at renewal. For current clients, rank by margin and start with the accounts below target. Give written notice tied to the renewal, lead with the value you deliver rather than your rising costs, and offer a choice only when every option protects margin.
Where does margin leak in an IT services business?
Five places, each visible in a number: under-scoping shows as a delivery overrun, scope creep as falling realization, unbilled hours and write-offs as the gap between utilization and realization, reflex discounting as an effective rate below list, and the bench as utilization below the 75 to 85% band. Track utilization, realization, and the effective rate monthly and per client.