SaaS · Saas

Recruitment Agency Vertical on Acumatica

Recruitment Agency Vertical on Acumatica: a practical Acumatica fit review focused on project budgets, time capture, utilization, billing rules, and scope change control. It separates documented product capability from configuration, integration, and customisation work.

John Kihiu12 min read

Permanent-placement recruitment agencies have a simpler Acumatica story than staffing firms, and it's worth separating the two even though people use the words interchangeably. A recruitment/placement firm's revenue event is a one-time placement fee (often a percentage of the candidate's first-year salary); a staffing firm's revenue is ongoing pay-and-bill for temp/contract workers on assignment, which is a materially different — and harder — accounting problem covered in the staffing post.

Placement fees are a straightforward AR/Sales Order pattern

A completed placement is close to a one-time Sales Order or a simple non-project AR invoice: a fee percentage against the agreed salary, sometimes staged (a portion on start date, a portion at 90 days), sometimes with a guarantee/replacement clause. Staged billing maps onto Acumatica's standard recurring/installment invoicing or a light Sales Order with multiple ship-and-bill-style lines; it does not need the Projects module unless the firm also wants per-recruiter performance tracking (see below).

STAGED PLACEMENT FEE — INVOICE SCHEDULE
Placement Fee: 20% of $90,000 base = $18,000
  Invoice 1: 50% ($9,000) on candidate start date
  Invoice 2: 50% ($9,000) on 90-day anniversary,
             contingent on candidate still employed
             (replacement guarantee clause — track manually
             or via a follow-up task, not a system-enforced hold)

The real integration problem: the ATS is the system of record for candidates, not Acumatica

Recruiters live in an applicant tracking system (Bullhorn, Greenhouse, JobAdder, etc.) — that is where candidates, requisitions, and pipeline stages actually get managed, and it should stay that way. Acumatica should not try to become a lightweight ATS; the integration boundary that works is: placement confirmed in the ATS triggers creation of the AR invoice/Sales Order in Acumatica via the REST API, one-directional, with the ATS placement ID stored on the Acumatica document for reconciliation. Trying to push the other direction — recruiters working pipeline stages inside Acumatica — is a recurring mistake that produces a system nobody wants to use.

Reconcile placement count, not just fee totals

Same lesson as the IT services PSA integration: a failed or duplicate webhook from the ATS either under-bills a client or double-invoices a placement, and a dollar-total reconciliation won't catch either reliably. Reconcile placement record count between the ATS and Acumatica on a schedule, and alert on mismatch before it reaches a client's inbox.

Recruiter commission and per-recruiter performance

If the firm wants per-recruiter placement performance (fees closed, pipeline value, commission owed), that's where modeling each open requisition as a lightweight Project earns its keep — not for cost tracking in the usual sense, but so the recruiter can be attached as the Project's owner/resource and a GI can roll up closed-fee totals per recruiter for commission calculation. For a small firm this is over-engineering; for one with a real commission plan and more than a handful of recruiters, it's the cleanest way to get the reporting without a bolt-on commission tool.

Wrapping up

Keep the ATS as the single source of truth for candidates and pipeline, and let Acumatica own only the billing event — a one-directional, reconciled sync from placement confirmation to AR invoice. Reach for the Projects module only if per-recruiter commission reporting is a real requirement, not by default.

John Kihiu
Acumatica ERP Developer · Laravel Engineer

Independent software engineer in Nairobi specialising in Acumatica customisations, Laravel backends, and tax fiscalisation integrations across East and Southern Africa.