Sao Khuê 2025Ranked #1 software developer in Vietnam on Clutch - 4.9/5 from 50+ verified reviews.See the proof

Code audit services that end in merged fixes

A code audit is an independent read of software you already own: security, architecture, infrastructure. The output is a prioritised issue register with evidence and an effort estimate against every finding. InApps delivers it in two weeks. Then the same engineers fix what they found.

750+projects delivered
10+years shipping software
4.9/5Clutch, 50+ reviews
15+countries served
An InApps engineer working at a laptop in the open-plan Ho Chi Minh City office, with colleagues at their desks behind him

Trusted by engineering teams across 15+ countries - from startups to Fortune 500.

KFC Jollibee Prudential Techcombank Lotte MM Mega Market Fahasa ADM WorkPac Future Processing HVS Annam Pegas Baiond Fram Simban TS SG
Common challenges

Six things we hear on the first call

All six come from the same place. The code shipped faster than anyone could write down what it does.

01

Nobody can say what is actually in the codebase, or where it is exposed.

02

Vulnerabilities get found by users or by an auditor. Not by your team, and never cheaply.

03

Coverage is thin, so every deploy is a bet. A change in one place breaks something unrelated.

04

Technical debt nobody has quantified. You cannot estimate features or defend a roadmap without a number.

05

The engineers who wrote it have gone. The commit history is the documentation now.

06

An investor or an acquirer has asked for a technical review, and it is due in three weeks.

Service overview

What a code audit is, and what it is not

Inherited a codebase nobody can vouch for?

An outside read, with evidence against every finding

A code audit is a point-in-time review of an existing codebase by engineers who did not write it. It covers security, architecture and code quality, and the infrastructure the code runs on. It ends in a register, not a conversation.

That is the line between an audit and a code review. A code review is continuous and lives inside your pull request flow. An audit is a single systematic pass over the whole system, run by an independent team, and it produces a document you can hand to a board, an investor or an insurer.

Read-only repository access, under NDA, before anything starts
Every Critical and High finding cross-reviewed by a second engineer
Every finding carries a file path, a fix and an effort estimate
YOUR CODEBASE Security Architecture Infrastructure Prioritised issue register CRITICAL HIGH MEDIUM LOW

What we read

Everything that decides how the system behaves.

  • Source on every active branch, plus the commit history
  • Dependency manifests and lockfiles
  • CI/CD pipeline definitions and build config
  • Infrastructure as code and environment variables
  • Database schema, migrations and slow query logs
  • Existing tests and coverage reports

What we never touch

Named in the NDA, before access is granted.

  • Production data. We work from schema, never from rows
  • Customer PII, in any environment
  • Your production systems. The audit is read-only
  • Anything outside the scope you signed
  • Credentials. You provision access and you revoke it
What's included

Four workstreams, one engagement

They run in parallel, not in sequence. That is what makes two weeks possible.

One fixed fee for the audit. Remediation is quoted separately, after you have read the register. You are free to run it with your own team.
What moves the number
01

Security code audit

Dependency scan against live CVE data. Authentication and authorisation flow review. Secrets sitting in the repository: hardcoded credentials, exposed API keys. Input validation and injection risk. OWASP Top 10 coverage for anything web-facing.

02

Architecture and code quality

Structure and separation of concerns. Coupling, cohesion, and whether the pattern survives ten times the load. Antipatterns and technical debt, named and located rather than described. Dead code, duplication and complexity scored per module.

03

Infrastructure and deployment

CI/CD pipeline gaps. Environment configuration and secret handling. Database schema and query performance. Logging, monitoring and alerting coverage. This is the layer fast-shipped codebases skip entirely, and it is where the findings nobody expected tend to be.

04

Remediation execution

Fixes sequenced by risk tier and mapped onto your sprint cycles. Each fix reviewed before merge, by an engineer who is not the author. Handover documentation and an updated README when the tier closes.

Why InApps

Audit it yourself, hire a security firm, or call us

A code audit with InApps compared with an internal review by your own team and with a specialist security firm
CriterionInAppsInternal reviewSecurity firm
Codebase coverageSecurity, architecture and infrastructureWhatever there is time forSecurity layer only
Architecture reviewIncludedSometimesRarely in scope
Independent perspectiveYesNo. Same team that wrote itYes
Who executes the fixesThe same engineers who found themYour team, if it has capacityNot offered. Report only
Time to register12 to 14 daysSlips behind feature workFour to six weeks
What you receiveRegister, evidence, effort estimates, live walkthroughA ticket list, usuallyPDF and a debrief call
Cost shapeFixed fee for the auditYour senior engineers, off the roadmapDay rate, security scope only
Our process

From repository access to a register you can act on

01
Day 1 to 2

Scope and access

One call. What is in scope, what is off limits, and what you already suspect.

NDA signed before any access Read-only repository access, provisioned by you Known risk areas and team context Fixed fee agreed before work starts
02
Week 1 to 2

Systematic audit

Three workstreams in parallel. Tooling finds the patterns, engineers find the rest.

Security, architecture and infrastructure at once Static analysis plus manual senior review Every Critical and High cross-reviewed No automated result ships unread
03
Day 12 to 14

Register and walkthrough

You get the document, then you get the engineers who wrote it for ninety minutes.

Critical, High, Medium, Low Evidence and a recommended fix per finding Effort estimate in hours, per task Live call with your team, not just a PDF
04
Ongoing

Remediation

Optional, and quoted after you have read the register. Most clients start at Critical.

Fixes executed by risk tier Weekly progress against the register Each fix reviewed before merge Handover documentation on completion
InApps engineers reviewing code together in the Ho Chi Minh City office
Deliverables

What lands on day 14

Four things, all of them yours to keep and to forward. No portal, no licence, no expiry.

Issue register

Every finding with a severity, a file path, the evidence, a recommended fix and an effort estimate in hours. Sortable, so you can cut it by risk or by cost.

Executive summary

Two pages, written for a board or an investor rather than for engineers. This is the one that goes in the data room.

Remediation roadmap

The register sequenced into sprints. Risk first, effort second, and dependencies flagged so nothing is scheduled before the thing it depends on.

Live walkthrough

Ninety minutes with the engineers who did the work. Your team asks, they answer. Recorded if you want it for people who could not attend.

Deal work

Technical due diligence, from either side of the deal

Technical due diligence is a code audit with a deadline and a different reader. The buyer wants the risk quantified before the wire clears. The seller wants no surprises in the data room.

Buy side

You are acquiring or investing. We read the target's codebase, put a number on what it costs to run and to fix, and flag anything that should move the valuation.

Sell side

You are raising or exiting. We find what the buyer's team would find, and you fix it first. Vendor due diligence, run before anyone else asks the question.

Post deal

The deal closed and now the integration plan needs a real estimate. The register is where that starts, and our engineers can execute against it.

Same audit, same engineers, a different report. Ten working days for a codebase under 300,000 lines. If yours is larger we will say so at scoping, with a date, rather than after you have signed.
The team

Four named engineers, not one generalist

Security, architecture and infrastructure are three disciplines. We staff them as three people, and you get their names before the audit starts.

Role 1

Security engineer

  • Auth and authorisation flows
  • Dependencies and CVE exposure
  • Secrets, input validation, OWASP Top 10
Role 2

Senior software engineer

  • Architecture and separation of concerns
  • Code quality and antipatterns
  • Maintainability and complexity scoring
Role 3

Platform engineer

  • CI/CD and deployment
  • Database, schema and query performance
  • Environments and observability
Role 4

Technical lead

  • The register and the executive summary
  • Remediation roadmap and sequencing
  • The walkthrough call, and your escalation path
Cost

What moves the price of a code audit

We do not publish a rate card, because a 40,000-line Rails app and a 12-service Java estate are not the same job. Five things set the number. You will have it after one scoping call.

The five factors that set the price of a code audit, what we ask about each, and why it changes the number
DriverWhat we askWhy it moves the number
Codebase sizeLines of code, repositories, active branchesReading time scales with surface area, not with feature count
Stack breadthHow many languages, frameworks and runtimesEach one needs an engineer who has actually shipped in it
Depth of the security passScanning only, or manual review and a dynamic passA dependency scan is hours. A manual auth review is days
Infrastructure in scopeApplication only, or CI/CD, IaC and databases tooThe infra layer is usually where the unexpected findings are
RemediationRegister only, or we execute the fixesTwo engagements, quoted separately, and the second is optional

The audit is a fixed fee, agreed before access. Remediation is quoted after you have read the register, so you never buy fixes for problems you turn out not to have.

Tooling

The tools we run, and why none of them files a finding

Static analysis finds patterns. It does not find a broken authorisation check, and it reports plenty that turns out to be nothing. Every automated result is read by an engineer before it reaches your register.

Static analysis and quality

SonarQube and ESLint on every engagement, plus Semgrep rules written against your stack rather than the defaults. PHPStan, Bandit or ruff where the language calls for it.

Dependencies and security

Snyk and Trivy against live CVE data. Dependabot history for what has been alerted and ignored. Burp Suite for anything web-facing, and GitGuardian for secrets already pushed.

Pipeline and runtime

Your CI is part of the audit, whether that is GitHub Actions, GitLab CI or Jenkins. Sentry, or whatever you use in its place, tells us what is already failing in production.

SonarQubeESLintSnykTrivyDependabotBurp SuiteGitHub ActionsGitLab CIJenkinsSentry
Testimonials

Ask the people who stayed

Every quote below is from a verified review. None of them were written by us.

“They don’t just build what you ask for. They think about the end result, and then go beyond it.”

James Fitzgerald
CTO, computer software company

“They find the right developers fast, and actually listen when you push back. That combination is harder to find than it sounds.”

Arno Nederlof
Lead developer, healthtech company

“Clear expectations, rules that actually hold, delivered on time. And the people are genuinely easy to work with, not just professionally, but as humans.”

Karolina Kwaśniewska
External Resourcing Manager, Future Processing

4.9 / 5 Across 50+ verified reviews on Clutch, where reviewers are interviewed directly and we never see the draft.

Ranked #1 in Vietnam
Clutch verified
Is this a fit?

Worth the call, or worth a no

An audit is the wrong shape for plenty of good problems. Here is where it works and where we will point you somewhere else.

This works well if

  • You inherited a codebase, or the people who wrote it have left.
  • An investor, an acquirer or an enterprise customer has asked for a technical review.
  • You are a startup about to put a bigger team on code nobody has read end to end.
  • You want an independent code audit company, not the team that wrote it marking its own work.
  • You want the fixes executed, not just listed.

This is not a fit if

  • You want continuous review inside your pull request flow. That is staff augmentation or a dedicated team, not an audit, and we will say so.
  • You need a penetration test against a running system. We read source, not live traffic. Different engagement, and usually a different vendor.
  • You need SOC 2 or ISO 27001 certified. We can prepare the engineering evidence, but the certificate comes from an accredited auditor.
  • The codebase is three months old and one person wrote it. Ask them. It will be quicker and it will be free.
Common questions

Answered without the hedging

Not sure it is an audit you need?

Send the repository size and the stack. We will tell you whether an audit is the right shape for the problem, including when it is not.

Book a code audit call
What is a code audit?
A code audit is a systematic, point-in-time review of an existing codebase by engineers who did not write it. It covers security, architecture and code quality, and the infrastructure the code runs on. The output is a prioritised issue register: every finding carries a severity, a file path, evidence, a recommended fix and an effort estimate. It differs from a code review, which is continuous and happens inside your own pull request flow.
What do code audit services cost?
It is a fixed fee, set by five things: codebase size, how many languages and frameworks are in it, how deep the security pass goes, whether infrastructure is in scope, and whether we execute the remediation. We do not publish a rate card, because a 40,000-line Rails app and a twelve-service Java estate are not the same job. One scoping call gets you a number, and the number is agreed before anyone gets repository access.
How long does a code audit take?
Twelve to fourteen days from repository access to the register and the walkthrough call. Scope and access take the first day or two, the audit itself runs across weeks one and two with the three workstreams in parallel, and the report lands on day 12 to 14. Remediation is separate and open-ended, because it depends on what we find and on how much of it you want fixed.
What is technical due diligence, and is it the same thing?
Technical due diligence is a code audit run for a transaction. The work is the same read of security, architecture and infrastructure; what changes is the reader and the deadline. A due diligence report is written for an investment committee, quantifies what the codebase costs to run and to fix, and lands inside the deal timetable. An audit bought by a CTO is written for engineers and ends in a remediation roadmap. We run both, with the same team. See the deal work section for buy side, sell side and post deal.
Do you need access to our production environment?
No. The audit is read-only and works from source: repositories, dependency manifests, pipeline definitions, infrastructure as code, and database schema rather than data. We never touch production systems, production data or customer PII. You provision the access, you scope it, and you revoke it when the audit closes. The NDA is signed before any of it is granted.
What is actually in the code audit report?
Four artefacts. An issue register with a severity, file path, evidence, recommended fix and hour estimate against every finding. A two-page executive summary written for a board or an investor. A remediation roadmap that sequences the register into sprints by risk then effort. And a ninety-minute live walkthrough with the engineers who did the work. All of it is yours to keep and to forward. No portal and no expiry.
Can you fix what you find, or do we?
Either. The register is written so your own team can work from it without us, and plenty of clients do exactly that. If you want us to execute, it is quoted after you have read the register rather than before, so you are never buying fixes for problems you turn out not to have. Most teams start with the Critical tier and decide about the rest once it is closed. Every fix is reviewed before merge by an engineer who did not write it.
How is this different from a penetration test?
A penetration test attacks a running system from the outside and tells you what an attacker can reach today. A code audit reads the source and tells you why. They find different things: a pentest will not see a coupling problem that makes the next feature dangerous, and an audit will not see a misconfigured firewall. If you need the pentest, we will say so and point you at a specialist rather than sell you the wrong engagement.
Let's start

Send us the stack, not a brief

Repository size, languages, and what you already suspect is wrong. We come back with a scope and a fixed fee. If an audit is the wrong answer we will tell you that instead.

4.9 / 5 from 50+ verified reviews on Clutch
NDA before access Read-only, never production Scope and fee within 48 hours