Skip to main content
A job offer is the formal proposal you put to a chosen candidate — the role, the start date, the salary, the terms — wrapped up as a letter the candidate can read and respond to. In Hitaji 360 the offer is also the hinge between recruitment and employment: when the candidate accepts, the system automatically creates their employee record and employment contract, fires the onboarding process, and moves them out of recruitment and into your people directory. That makes the offer the single most consequential document in the recruitment funnel, so it has its own composer and a careful set of guard rails. This page covers building an offer, the offer letter, sending it, the statuses an offer moves through, and what happens when it is accepted or declined. You’ll find this at: /hr/recruitment/offers/new (composer), /hr/recruitment/offers/:id (detail)
📷 Screenshot: Prepare Offer composer with the live letter preview — to be added.

Before you start

  • Which business am I in? Offers belong to the business selected in the switcher, and the offer carries the candidate’s salary, so it stays isolated to that business. An offer cannot be raised against a candidate or opening that belongs to a different business.
  • Start from the candidate. The cleanest path is Prepare Offer from the applicant detail page — it carries the applicant and their opening through to the composer. You can also open the composer directly and pick the candidate.
  • One live offer per candidate. A candidate can only have one non-cancelled offer at a time. If there’s already an active offer (draft, sent, accepted, or declined), you must cancel it before raising another.
  • You can’t offer to a rejected candidate. If the applicant has been Rejected, the system refuses the offer.

The offer lifecycle (statuses)

An offer carries both a workflow stage (drafted → sent) and a response status. Two things to hold onto:
  • Sending requires approval. Composing and saving a draft is a :write action, but sending the offer to the candidate (and recording their Accept/Decline) needs hr-recruitment:approve.
  • An accepted offer can’t be cancelled. Once accepted, the employee exists — to undo it you terminate the employee, not cancel the offer.

Building an offer (the composer)

The Prepare Offer page is a two-pane composer: the form on the left, a live letter preview on the right showing exactly what the candidate will receive (watermarked DRAFT until sent).
📷 Screenshot: Prepare Offer — left form, right live preview — to be added.
At the top, a candidate banner shows who the offer is for, the linked opening, and — if they’ve been interviewed — their average interview score and interview count, pulled straight from their interviews. If you opened the composer without a candidate, pick one from the Candidate selector first. The form is organised in steps:

1 · Role & department

The employment type and place of work are shown for context, taken from the job opening.

2 · Compensation & timeline

To help you pitch the right number, compensation rails appear when the data exists: the opening’s salary band, the candidate’s salary expectation, and a chip telling you whether your figure is below, within, or above the band — plus quick-fill buttons for the band minimum, midpoint, and the candidate’s ask.

3 · Key terms

Pull a set of terms from an offer term template (the dropdown lists your templates), then tailor each line, or add term lines by hand. Each line is a term and its value (e.g. “Annual leave” → “21 days”). These print as a list on the letter.

4 · Letter content

A rich-text opening paragraph and a terms & conditions block. An Insert standard clauses button drops in a boilerplate conditions block (probation, confidentiality, contingencies) you can then edit.

Saving & sending

  • Save draft (needs hr-recruitment:write) — saves the offer as a draft and opens its detail page.
  • Save & send (needs hr-recruitment:approve) — saves the draft and immediately sends it to the candidate.
You need a candidate and an offer date before either button will save.

The offer detail page

The detail page renders the finished letter (the same document the candidate sees) alongside a status & actions rail.
📷 Screenshot: Offer detail with the letter and the actions rail — to be added.
  • Status tracker — Drafted → Sent to candidate → Accepted / Declined / Awaiting response.
  • Candidate card — name, email, phone, with a link to the applicant.
  • Summary — position, offer date, expected start, basic salary.
  • Print / PDF — print the letter (use your browser’s “Save as PDF”).
The action buttons depend on where the offer is:
  • Send to candidate — on a draft (needs :approve).
  • Accept (create employee) and Mark declined — while Awaiting Response (need :approve).
  • Cancel offer — while Awaiting Response (needs :write).

Accepting an offer (this creates the employee)

This is the load-bearing moment. Choosing Accept (create employee) and confirming will:
  1. Create a new employee from the candidate’s details (and invite/link a self-service account where the candidate has an email).
  2. Create an employment contract for that employee, using the opening’s employment type, the offer’s start date, position, unit, and currency. This goes through the exact same path as manually adding an employment record, so it automatically fires off the employment-contract e-signature envelope too — see The e-signature envelope. If the business hasn’t configured a template/signatory yet, the contract is still created fine; the envelope just shows “Not sent” until someone sends it (manually, or via the settings-page backfill).
  3. Seed a salary assignment from the offer’s base salary and suggested structure where both are present, so the next payroll run can pick the new hire up.
  4. Mark the applicant Accepted and link the offer to the new employee and contract.
  5. Fire the onboarding process (see Onboarding) and audit-log the conversion.
This is the confirmation of employment itself; it’s separate from the job offer letter above, which is the pre-hire proposal. See Appointment letters for how post-acceptance confirmation has changed.
After accepting, the detail page shows an “Employee & contract created” card with an Open new employee button that deep-links to their new employee profile. A few safeguards:
  • You cannot accept twice — once an applicant is Accepted with a linked employee, a second accept is refused (it would create a duplicate person).
  • If contract creation fails after the employee is created, the system rolls the employee back so you don’t end up with an orphaned record.
⚠️ Current state: If the offer has no salary structure suggestion or no positive base salary, the accept still succeeds and the employee + contract are created, but no salary assignment is seeded — the new hire will be skipped by payroll until you assign a salary structure to them manually. Watch for this when accepting offers that were saved without a base salary.

Declining an offer

Mark declined records that the candidate said no. The applicant is marked Rejected. This is reversible in spirit — they can be re-offered later if it was a mistake (cancel any leftover offer first, since one live offer per candidate is enforced).

Permissions

Note: the offer routes themselves load for anyone with hr-recruitment:read; the individual save/send/respond buttons are gated by the finer permissions above, so a read-only user sees the offer but no action buttons.