Airbase and Procurify When Every Purchase Ties to a Client Project
For a software shop that bills by client project, Airbase tags each purchase to a project at the card swipe, while Procurify asks for the project in the request before approving anything. Either way, every tool, contractor and license needs a project code, because someone must decide whether it is rebilled to the client or absorbed as overhead.
Neither platform was built specifically for project-based billing, but they get you there in different ways: one through tagging at the card level, the other through a purchase request that already asks which project a cost belongs to before it approves anything.
Vendors Covered in this Article
Disclosure: We may earn a commission if you buy through some links on this page. It doesn't change what we recommend.
Why do costs lose track of their client project?
On a fixed-bid engagement, every dollar spent that can't be traced to a specific client project is a dollar that quietly erodes the margin you quoted. A project lead spins up a testing environment for two weeks, a contractor bills for a sprint of QA work, or someone buys a one-off design tool license to mock up a client deliverable, and none of it shows up anywhere except a general ledger line called software and contractors. By the time the project closes, finance can't tell you whether that engagement made money or just felt busy.
The fix isn't a better spreadsheet. It's making the project code part of the purchase itself, captured at the moment someone spends, not reconstructed afterward from memory and old email threads.
Airbase: Tag It When the Card Swipes
Airbase lets you attach a custom field, like a project code, to a card transaction as it happens, and route the approval to that project's lead instead of a generic department head. For a shop running a dozen small engagements at once, that means a QA contractor's software purchase gets tagged to the right client project the moment it happens, not weeks later when someone tries to reconstruct the bill. The tradeoff is discipline: if the person swiping the card skips the project field, the transaction still goes through, and you're back to reconstructing it by hand.
Procurify: Name the Project Before the Money Moves
Procurify pushes the project question earlier, into the request itself. Nobody gets a purchase order approved without naming the client project and, ideally, whether the cost is billable or absorbed as overhead. That upfront friction is exactly what a shop with strict client-billing rules wants, because it forces the classification decision onto the person who actually knows the answer, the project lead, rather than leaving it for finance to guess at close.
The cost is speed. A contractor who needs same-day access to a tool has to wait for that request to clear, which can be a real problem when a client deadline is measured in hours, not days.
Fixed-Bid Shops Want One Thing; Time-and-Materials Shops Want Another
If most of your revenue comes from time-and-materials contracts, every reimbursable cost you can document turns directly into billable revenue, so a tool that makes it easy to log a cost against a project the moment it happens, Airbase's approach, tends to recover more of what you're actually owed. If most of your revenue is fixed-bid, the priority flips: you care less about rebilling and more about knowing, project by project, whether you're staying under the budget you quoted, which is where Procurify's request-first budget check earns its keep.
A shop running both contract types at once often ends up applying stricter rules on the time-and-materials side and looser ones on fixed-bid work, rather than picking one platform's default behavior for everything.
How do you build a project-code list before automating?
Whichever tool you choose, none of this works without a clean list of active project codes that matches what's in your time-tracking or project-accounting system, kept current as engagements open and close. Build that list first. Then decide who owns the classification call, billable or overhead, for each purchase: usually the project lead, not finance, because they're the one who knows whether a client actually agreed to reimburse a given cost.
Once that's in place, review flagged mismatches monthly, a purchase with no project code, or one tagged to a project that closed two months ago, rather than waiting for a client invoice dispute to surface it for you.
Set up project codes in this order:
- Build a clean list of active project codes that matches your time-tracking or project-accounting system.
- Name the person who owns the billable-or-overhead call for each purchase, usually the project lead rather than finance.
- Make the project code a required field at the moment of purchase instead of reconstructing it later.
- Close each code when the engagement ends, so later purchases cannot be charged to a finished project.
A Common Mistake: Project Codes That Outlive the Project
A shop that sets up project codes carefully at kickoff often forgets to close them at the other end. Six weeks after a client engagement wraps, a departing contractor's laptop insurance renewal, a staging environment nobody decommissioned, or a design tool seat still gets tagged to that same project code, because the code is still sitting there in the dropdown and closing it out was never anyone's job. Finance only catches it when a client asks why a closed engagement still shows activity, or when the margin report for a project that closed profitably three months ago suddenly looks worse.
The fix is a short closeout step, not a new tool: when a project lead marks an engagement done, someone (usually the PM or a project accountant) archives the project code the same week, so it drops out of the active list in Airbase or Procurify and can't absorb stray charges by accident. Pair that with a monthly scan for purchases tagged to a project that closed more than 30 days ago; those are almost always billing errors waiting to be found by the client instead of by you.
What Good Looks Like
A well-run project-based dev shop can tell you, for any closed engagement, exactly what it spent on tools and contractors, and whether that cost was billed to the client or absorbed, without anyone reconstructing it from memory.
Building The Capability (5-Stage Skill Ladder)
How to Get Started
Disclosure: We may earn a commission if you buy through some links on this page. It doesn't change what we recommend.
Contractor invoices that arrive outside the platform, from a specialist a project lead hired directly, still need an approval trail before payment, and BILL's invoice workflow is the place to route those so they don't slip past the project-code requirement.
A shop that leans on 1099 contractors project by project needs a clean W-9 and TIN check before the first invoice, not after the first payment, and Tax1099 catches that at intake.
Running separate sub-accounts by active project inside Mercury makes it easier to see, at a glance, which engagements are burning cash faster than they're billing.
Frequently Asked Questions
Should overhead software, like our own project management tool, get a project code at all?
No. Tag only costs that could plausibly be billed to or absorbed by a specific client engagement. Your own internal tools, like the project management system every team uses, belong under general overhead, not a project code, or you'll spend more time debating the tag than the cost is worth.
What happens when a contractor buys something without going through either tool?
It becomes an unclassified cost that finance has to chase down at month end, which is the exact problem both platforms exist to prevent. The practical fix is a policy that contractors get provisioned inside the platform from their first day, not added later once someone notices a gap.
Can we run different rules for fixed-bid versus time-and-materials clients in the same platform?
Yes, both platforms support different approval routing by project or client, so you can require billability tagging on time-and-materials engagements while keeping fixed-bid purchases on a simpler budget-check workflow.
About the numbers
This guide doesn't quote a sourced benchmark. Figures in it are estimates or general guidance, so check them against your own numbers.
Related Guides
Audit Tool Pitfalls for Custom Software Development Firms
The specific mistakes custom software and product engineering firms make choosing between FloQast and AuditBoard for WIP, capitalized costs and SOX readiness.
Software Development Firms: Cube vs Mosaic for Project Margin
How Cube and Mosaic differ for a custom software shop: tracking fixed-bid margin, capitalized development hours, and utilization by sprint.
BILL vs Tipalti for Custom Software and Product Engineering Shops
Development shops that lean on outsourced or overseas engineers face a different AP problem than in-house teams. Here's how BILL and Tipalti compare for that.
Ramp vs Brex for Custom Software Shops Billing by Project
How Ramp and Brex compare for custom software and product engineering shops that need to track spend against fixed-bid and time-and-materials contracts.
Setting Up Equity Software Before Your First Priced Round
A step-by-step look at when a custom software and product engineering shop needs Pulley or Carta for option grants, fair market value and vesting records.
Choosing a 409A Platform When You're Building Your Own Product
A custom software or product engineering shop weighing Carta against Shareworks, especially the moment it starts building its own IP.