Hiring guide · Custom Software

Hire PHP Developers: Rates, Vetting and Engagement Models

The short answer

For most companies, expect $25 to $55 per hour offshore, $60 to $110 per hour in Eastern Europe or Latin America, and $95 to $175 per hour onshore in the US or UK for a mid to senior PHP developer, with Laravel and legacy rescue specialists at the top of each band. Those are the bands Digital Heroes quotes and competes against. If you are maintaining and extending a live PHP application that already earns money, the engagement model that fails least often is staff augmentation or a small agency pod: you get a second reviewer, holiday cover, and someone who has seen your exact framework version before. Hire in-house once the codebase is the business and you need someone who owns it for years, not sprints.

PHP developers get hired because something already exists

PHP developers rarely get hired to start something. They get hired because something is already running, it is making money, and it is scaring everyone. A Laravel app on 8.x that nobody has upgraded since the original contractor left. A WooCommerce store with 40 plugins and a checkout that intermittently double charges. A twelve year old CodeIgniter admin panel that the operations team lives in eight hours a day. That is the real job: reading someone else's decisions and changing them without breaking revenue.

Take a Laravel 6 marketplace we inherited. About 90,000 lines of application code, a 400 line controller method handling order placement, and no queue worker. Every order fired a synchronous call to a shipping API inside the request cycle. When the shipping vendor got slow, PHP-FPM ran out of workers, and the whole site went down: checkout, admin, everything. The client thought they had a hosting problem and had already upsized the server twice. They had a code problem, specifically blocking I/O in a web request, no jobs table, and no timeout on the Guzzle client. A developer who has run production PHP sees that in twenty minutes. A developer who has only built greenfield CRUD apps sees a server that needs more RAM.

That is the gap you are hiring across. PHP is easy to write badly and the language will not stop you. It will happily let someone put database queries inside a Blade loop, ship an N+1 that runs 800 queries per page, store passwords with md5 because a Stack Overflow answer from 2011 said so, and interpolate request input straight into a raw query. The bad hire is not the person who cannot code. It is the person who codes fluently in the exact style that created your current mess.

Where hiring goes wrong, specifically: buyers screen for "PHP" and get someone who knows one framework's syntax but not PHP itself. Laravel has an enormous surface of conveniences, and you can be productive in it for years without understanding what an ORM is doing, what a service container resolves, or why your Eloquent relationship just loaded the entire table into memory. Ask about the framework and you learn nothing. Ask what happens between the request hitting Nginx and the response leaving, and the room sorts itself out fast.

Engagement models: what each one is honestly for

In-house hire. Right when the PHP app is your product and will be for years, and you have enough work to keep someone busy every week. The value is accumulated context: after six months a good in-house PHP developer knows why that weird nullable column exists and which cron job actually matters. The cost is that you are also buying recruiting, onboarding, management, and single-person risk. One PHP developer alone is a bus factor of one, and PHP codebases are unusually good at hiding tribal knowledge in undocumented helper files.

Freelancer. Right for bounded, well-specified work: build this WooCommerce plugin, integrate this payment provider, upgrade Laravel 9 to 11. Genuinely good when the scope has edges. It falls apart on open-ended maintenance, because a freelancer with three other clients will always deprioritise your Tuesday incident, and because nobody is reviewing their pull requests. The failure we see most: a freelancer builds something that works, disappears, and nobody can extend it because it uses a pattern nobody else on the team recognises.

Agency. Right when you need the whole outcome, not the hands: someone to decide the architecture, do the work, test it, deploy it, and be accountable if it breaks. You are paying for a team that includes review and QA. It is worse than freelancing when your scope is a two week task, because agency overhead is real and you will pay for process you did not need.

Staff augmentation. Right when you have technical leadership already and need capacity that behaves like your team. The developer sits in your standups, uses your repo, follows your conventions. This is where most PHP work should land, because most PHP work is ongoing maintenance and extension of a live system, which needs continuity but not a permanent headcount. The catch is that you have to actually lead them. Augmentation with no technical owner on your side turns into a very expensive freelancer.

Rates and what it really costs

These are the bands we quote and the bands we lose deals against. They move a lot by region and seniority, so treat them as shape, not price list.

Offshore, meaning India, Pakistan, Bangladesh, Vietnam, the range runs roughly $25 to $55 per hour for mid to senior. Eastern Europe and Latin America land around $60 to $110. Onshore in the US, UK or Western Europe, $95 to $175, with the higher end for people who do Laravel performance work, payment integrations, or legacy rescue. Junior PHP is cheap everywhere and is almost always a false economy on a live revenue system, because what you save on the rate you spend twice on the incident.

The band matters less than the specialisation. A generalist who "does PHP" and a person who has upgraded four Laravel majors and knows what Laravel Shift will and will not handle are not the same purchase, even at the same rate. Framework depth compresses timelines more than raw seniority does.

On in-house total cost, the salary is the headline and not the number. Benefits, payroll taxes, insurance, equipment, software licences and desk overhead push the fully loaded cost well above base rather than near it. Then add recruiting, which is either a placement fee tied to first year salary or your own engineering team's hours spent screening. Then add ramp. On a mature PHP codebase, especially a legacy one with thin tests, we do not expect a new hire to be shipping confidently for six to ten weeks. They spend the first month reading. Price that month, because you are paying for it either way.

The comparison people get wrong: they compare a contractor's hourly rate to a salaried developer's hourly equivalent and conclude the contractor is expensive. The real comparison is fully loaded cost plus recruiting amortised plus ramp plus the risk that you hire wrong and repeat the whole cycle in five months.

How to vet a PHP developer

Skip trivia. Nobody needs to recite the arguments of array_splice. What you are testing is whether they understand what PHP is doing underneath the framework, and whether they have operated code in production.

The request lifecycle question. Ask them to walk you from a browser request through Nginx, PHP-FPM, the framework bootstrap, to the response. Good answers mention FPM worker pools, that PHP is shared-nothing per request, that the framework boots on every request, and where OPcache fits. If they cannot describe FPM, they have never debugged a site that fell over under load.

The N+1 question. Give them a small Eloquent or Doctrine snippet that loops over orders and touches a relationship inside the loop. Ask what the database sees. Then ask them to fix it. You want eager loading named without prompting, and ideally a mention of Laravel Debugbar, Telescope, or query logging to find these rather than guessing.

The upgrade question. "We are on Laravel 8 and PHP 7.4. Take me through getting to Laravel 11 and PHP 8.3." Strong candidates talk about sequencing majors one at a time, running Rector or Laravel Shift as a starting point rather than a solution, checking every composer dependency for a compatible version first, the risk that an abandoned package blocks the whole chain, and doing all of it behind a test suite. Weak candidates say they will just update composer.json.

The security question. Ask what they do with user input that reaches a query. You want prepared statements and parameter binding, not "I escape it". Ask about mass assignment protection, CSRF, and how they store passwords. If they mention md5 or sha1 for passwords, or say they write raw queries with escaped strings, end it there. Ask what they would do if they found API keys committed in the repo, which happens in PHP projects constantly.

Take-home or portfolio review. Do not commission a fresh CRUD app, it tells you nothing. Give them a small, deliberately ugly slice of real-shaped legacy code: a fat controller with a database query, a business rule, and an external API call all tangled together, no tests. Ask them to refactor it and add tests, timeboxed to three or four hours, and pay them for it. What you are grading: do they extract the business logic somewhere testable, do they mock the external call, do they touch the database in the test or use a factory, do they leave the public behaviour identical. Then have them walk you through their reasoning live. The walkthrough matters more than the code.

If you are reviewing existing work instead, ask for a repo and go straight to composer.json to see how current their dependencies are, then look for a tests directory, then read one controller. Three files tell you almost everything. Also ask them to describe the worst production incident they caused. People who have operated PHP have a story and tell it plainly. People who have not, deflect.

Red flags

They say "PHP" but mean one framework. Someone who can only work inside Laravel's conventions will stall the moment your code does something unconventional, which legacy code does constantly. Ask instead: "What does the service container actually do when you type-hint a class in a constructor?" A shrug means they are using magic they cannot debug.

No mention of tests, ever. PHP's culture is split, and a large share of working PHP developers have genuinely never written a PHPUnit or Pest test. On a system you cannot afford to break, that is disqualifying. Ask instead: "How would you change the order total calculation without shipping a bug?" If the answer does not involve a test, they are proposing to change your billing logic on vibes.

The rewrite reflex. A developer who looks at your working legacy app and immediately proposes rebuilding it in Laravel is telling you they cannot read code they did not write. Rewrites of revenue systems are how six month projects become two year projects. Ask instead: "What is the smallest change that fixes the checkout bug without touching anything else?"

Ships to production by FTP or by editing files on the server. Still common, and it means no version control discipline, no rollback, no review. Ask instead: "Walk me through your deploy. What happens if the release is bad?" You want git, a deployment tool like Deployer or Envoyer or a CI pipeline, and a rollback answer.

WordPress plugin developer applying for application work. Not an insult, a mismatch. WordPress work is real skill, but it trains different instincts: global functions, hooks, plugin-first thinking. Dropping that person into a domain-heavy Laravel or Symfony codebase goes badly for both sides. Ask instead: "Tell me about a time you had to model business rules that did not fit a plugin." Then listen for whether they reach for architecture or for another plugin.

When to hire a PHP developer at all, and how we staff it

Hire PHP when you have PHP. That sounds obvious and it is the whole point. If a Laravel, Symfony, WordPress or legacy PHP application is already running your business, hire someone who knows that world deeply, because rewriting it in Node or Python to match your preferences is a business decision disguised as a technical one, and it usually costs a year.

Do not hire a PHP developer if your actual problem is elsewhere. If the pain is a slow, unindexed database, you may need a database specialist for two weeks, not a full-time PHP hire. If the pain is that your site falls over under traffic, that is often infrastructure and queue design as much as application code. If you are starting genuinely new and have no PHP investment, choose your stack on your hiring market and your team, not on this page. And if the app is a content site with a few forms, a WordPress specialist will serve you better and cheaper than an application developer.

How Digital Heroes staffs this: we read the code before quoting, because a PHP estimate made without seeing composer.json and one controller is a guess. We staff PHP work as a pod rather than a lone body, so there is a senior who owns the architecture and reviews every pull request, and a developer doing the day-to-day, which means your changes get a second reader and your project does not stop when one person takes leave. We match on the specific thing you have, so a WooCommerce checkout problem gets someone who has debugged WooCommerce checkouts, not a Laravel generalist learning on your money. And we sequence hard problems first: on legacy engagements the upgrade path, the security holes and the tests come before the feature roadmap, because features built on a cracked foundation get rebuilt anyway. Where the code needs to end up owned by your team, we write it to be handed over, with a test suite and a deploy pipeline, so you are not buying dependence on us.

Research & sources

The evidence behind this guide

Independent findings on why this investment pays off. Every link goes to the primary source.

  1. Median SaaS spend reached $9,455 per employee, and organizations leave an average of 36% of their SaaS licenses unused. Source: Zylo (2026) →
  2. Deloitte's research found that digitally advanced small businesses experienced revenue growth nearly 4x as high as the prior year, were about 3x as likely to have exported, were nearly 3x as likely to have created new jobs, and were more than 3x as likely to have seen more sales inquiries in the last year. Source: Deloitte (research summarized by Google) (2017) →
  3. Gallup reports global employee engagement fell to 20% in 2025 (its lowest since 2020, down from a 2022-2023 peak of 23%), and estimates low engagement costs the world economy an estimated $10 trillion in lost productivity, or 9% of global GDP. (Note: this figure appears in Gallup's evergreen State of the Global Workplace page, currently reflecting the 2026 edition reporting on 2025 data.). Source: Gallup (2025) →
  4. Mordor Intelligence sizes the field service management market at USD 6.26 billion in 2026, forecasting USD 9.87 billion by 2031 at a 9.54% CAGR, confirming sustained double-digit-adjacent demand for FSM software. Source: Mordor Intelligence (2026) →
Rohan Malhotra · Enterprise Software Consultant

Rohan advises mid-market and enterprise teams on ERP, CRM and custom software, and has led delivery on dozens of business-software builds.

Writes for Digital Heroes, shipping business software for 2,000+ brands across 55+ countries since 2017.

FAQ

Frequently asked questions

How much does it cost to hire a PHP developer?
From what Digital Heroes quotes and the deals we compete against, mid to senior PHP developers run roughly $25 to $55 per hour offshore, $60 to $110 per hour in Eastern Europe or Latin America, and $95 to $175 per hour onshore in the US or UK. Laravel upgrade specialists, payment integration work and legacy rescue sit at the top of each band. Rates vary widely by region, seniority and how specific your framework need is, so treat these as shape rather than a quote.
Should I hire a freelancer or an agency for PHP work?
Use a freelancer when the scope has hard edges, like building one WooCommerce plugin or integrating one payment provider. Use an agency or a staff augmentation pod when the work is ongoing maintenance of a live PHP application, because you need code review, holiday cover and someone accountable when checkout breaks at 2am. Most PHP work is the second kind, since PHP developers are usually hired to extend something that already exists and already earns money.
How do I test a PHP developer before hiring?
Give them a small, deliberately messy slice of legacy-shaped code, a fat controller with a database query, a business rule and an external API call tangled together, and ask them to refactor it and add tests in three or four hours. Pay them for it. Grade whether they extracted the business logic somewhere testable, mocked the external call, and kept the public behaviour identical. Then have them walk you through their reasoning live, because the explanation reveals more than the diff.
How long does it take to hire a PHP developer?
A full in-house hire realistically takes six to twelve weeks from posting to first day, then another six to ten weeks of ramp before they ship confidently on a mature codebase. Contract or staff augmentation moves much faster, often days to two weeks, because you are selecting from people already vetted. Budget the ramp either way, since PHP legacy systems hide a lot of knowledge in undocumented helper files and cron jobs.
Onshore or offshore for PHP developers, what is the real difference in cost?
Offshore PHP typically runs about a third to a half of onshore rates for comparable seniority, and PHP has one of the deepest offshore talent pools of any stack. The real difference is not skill, it is timezone overlap and screening burden, because the depth of the pool means the variance in quality is also wider. Specialisation matters more than geography: someone who has done four Laravel major upgrades saves you more time than someone senior who has done none.
Who owns the code if I hire a PHP developer through an agency?
You should own it outright, with a written work-for-hire or IP assignment clause in the contract before any code is written. Digital Heroes writes PHP engagements to be handed over, meaning your repo, your hosting, a test suite and a deploy pipeline you can run without us. Be wary of anyone who deploys to a server you cannot access or builds on a proprietary framework only they maintain.
Is PHP still worth hiring for?
Yes, if you already run PHP. A large share of the web runs on it, Laravel and Symfony are actively developed, and PHP 8.3 is a genuinely fast, modern language with typed properties and JIT. Rewriting a working, revenue-generating PHP application into another stack because it feels dated is usually a year-long project that ends with the same features you started with.
What is the difference between a PHP developer and a WordPress developer?
WordPress developers work inside a plugin and hook architecture with global functions and a fixed database schema, which is real skill but trains different instincts. Application PHP developers working in Laravel or Symfony model business rules, use dependency injection, and design their own data layer. Hiring a WordPress specialist for a domain-heavy Laravel codebase, or the reverse, goes badly for both sides, so match the person to the actual system you have.
Can one PHP developer maintain our whole application?
They can, but you are accepting a bus factor of one, and PHP codebases are unusually good at hiding tribal knowledge that leaves with the person. One developer also means nobody reviews their pull requests, which on a live billing system is where expensive bugs enter. A small pod with a senior reviewer and a day-to-day developer costs more per month and less per year.
How do we get years of data out of our old system and into the new one?
Treat migration as a planned sub-project: a field-mapping document, at least one dry run on a copy of your data, then a cutover with the old system kept read-only for 30 days as a safety net. On Digital Heroes projects it consumes 10 to 15% of the budget when the old system has an export, and more when data must be pulled out screen by screen. Ask any vendor to walk you through their last migration before you sign.
Who owns the code when an agency builds my software?
You should, completely, through a written intellectual property assignment that transfers everything on final payment; without that clause, copyright stays with whoever wrote the code by default. Insist that the repository lives in your own GitHub organization from day one and that hosting, domains, and third-party accounts are registered to you. Also check for licenses to the agency's proprietary frameworks buried in the contract, because those can make switching vendors practically impossible even when you own your own code.
Is it cheaper to customize Salesforce than to build a custom CRM from scratch?
If you use less than a third of what Salesforce does, a custom CRM is often cheaper by year three. Salesforce Enterprise lists at $165 per user per month, so 25 seats cost about $49,500 a year before admin and consultant fees, while a focused custom CRM runs $60,000 to $100,000 once plus 15 to 20% a year in maintenance. If you genuinely need Salesforce's ecosystem, reporting, and app marketplace, customizing it beats rebuilding it; the mistake is paying enterprise prices to use it as a glorified contact list.
How long does it take to build a custom web or mobile app from scratch?
Plan on 8 to 16 weeks for a focused first version and 4 to 9 months for a larger platform, which is the typical spread across Digital Heroes builds. The first 2 to 3 weeks go to discovery and design before any production code ships. The two things that stretch timelines most are integrations with legacy systems and slow feedback from your side, not developer speed.
What is a discovery phase, and is it worth paying for separately?
Pay for it, and treat the output as yours. A discovery phase runs two to three weeks, typically 5 to 10% of the eventual build budget, and produces a written scope, wireframes, and a fixed quote you can take to any vendor, including a competitor of the agency that wrote it. Skipping it is how projects end up quoted from a two-paragraph email and delivered at twice the price.
How many SaaS seats do we need before building custom becomes cheaper?
The crossover usually shows up between 20 and 50 seats on premium tiers. Salesforce Enterprise lists at $165 per user per month, so 40 users cost about $79,000 a year in subscriptions, which is real money against a custom system you would own outright. Run the comparison over three years: if subscription spend beats the build cost plus 15-20% annual maintenance, custom wins on price before you even count workflow fit.
What questions should I ask a development agency on the first call?
Ask who exactly will build it, what happens when scope changes mid-project, what their maintenance terms are after launch, and what they will need from you every week. Then ask them to describe a project that went wrong and what they changed afterward; teams that have shipped at real volume have war stories, and teams claiming a perfect record are hiding something. The scope-change answer matters most: a disciplined shop describes a written change-order process, not a vague promise to be flexible.
How do I calculate whether custom software will pay for itself?
Divide the build cost by the monthly benefit, where benefit is hours saved times loaded hourly cost, plus subscription fees replaced, plus any revenue the software unlocks. Three staff saving 10 hours a week each at a $40 loaded rate is about $62,000 a year, which pays back a $60,000 build in roughly 12 months. Across Digital Heroes internal-tool projects, 12 to 24 months is the normal payback range, and anything projecting under 6 months usually means the spreadsheet is hiding costs.
How long does it take from first call to software my team can actually use?
Plan for four to six months: two to three weeks of discovery, two to four weeks of design, then a 10 to 16 week build with testing. In Digital Heroes delivery experience the schedule killer is not engineering speed but decision lag; a client who takes two weeks to approve wireframes adds two weeks to launch. Book a weekly 30-minute decision slot before kickoff and most of that risk disappears.
What are the biggest mistakes first-time software buyers make?
Choosing the lowest bid, paying more than 30-40% upfront instead of on milestones, skipping a written specification, and having no maintenance plan for after launch. The most expensive of the four in Digital Heroes rescue projects is the missing spec: without written acceptance criteria, done becomes an argument instead of a checklist, and every disagreement resolves in the vendor's favor. Fix those four and you have avoided most of the ways these projects fail.
What happens if I stop paying for maintenance after launch?
Nothing breaks on day one, which is what makes it dangerous. Within 6 to 18 months, unpatched dependencies accumulate known vulnerabilities, an integrated API like Stripe ships a breaking change, and the first fix requires a developer to relearn a stale codebase at full price. Budget 15 to 20% of the build cost per year for upkeep; it is the difference between a $500 patch and a $15,000 emergency.
Keep reading
let's build

Build something worth launching.

A plan, a team, a timeline, within 24 hours. No decks, no discovery calls. Tell us what you're building and we'll come back with a real scope and a real number.

message us directly · we reply within one business day

mission briefing

Monthly dispatch

Playbooks, real build costs, and what we're shipping. One email a month. No fluff.

visit us

New York HQ

1140 Broadway, Suite 704 · New York, NY 10001

Get directions
Online now

Hey there 👋 How can we help you today?