# Bill an extra service you did on the day

> add_adhoc_service creates the job, prices it, and routes it by the client's cadence — immediate draft invoice for per-job clients, accrual to the period for consolidated clients, no invoice for manual. Add the ad-hoc BEFORE completing the month's last scheduled job so both land on one invoice.

URL: https://biloh.com.au/docs/how-to/bill-an-extra-service-done-on-the-day
Category: How-to guides | Audience: operator | Updated: 2026-08-28

Use `add_adhoc_service`. It creates the job, prices it, and routes it into whatever invoicing cadence that client is already on — you do not choose where it lands, and you should not have to.

The classic case: you are on site for the scheduled monthly clean, the client asks you to clear the gutters while you are there, you do it, and now it needs to be on the bill.

## One call

```
add_adhoc_service
  client_id, site_id
  service_id            ← from your catalogue
  scheduled_date        ← the day you actually did it
  client_rate_cents     ← EX-GST, integer cents. $140.00 = 14000
  performed_by          ← 'self' or 'contractor'
  contractor_id, contractor_rate_cents   ← required when performed_by is 'contractor'
  client_line_description                ← what the client reads on the invoice
  unit_basis            ← 'per visit', 'per hour', 'per panel'…
  idempotency_key       ← replay-safe
```

That replaces the manual sequence of creating a job, working out which invoice it belongs to, adding the line, and creating the contractor payable.

## Where the money goes is decided for you

The billing route follows the client's existing cadence:

| Client's cadence | What happens |
|---|---|
| Per job on completion | A draft invoice is created immediately for the extra service |
| Consolidated per period | The job accrues to the period. If a draft consolidated invoice already exists, the line is appended to it. If that invoice has already been sent or paid, a supplementary invoice is created |
| Manual | The job is created as approved. No invoice — you raise it yourself |

The response tells you which route it took (`billing: "accrued_to_period"`, for example) and gives you the invoice id if one was created.

This is the behaviour that makes it safe to add extras casually. You cannot accidentally raise a second invoice for a client you meant to bill once a month, and you cannot accidentally silently append to an invoice the client has already paid.

## The contractor gets paid automatically

Set `performed_by: 'contractor'` with a contractor id and rate, and the payable is created — grossed up to GST-inclusive for GST-registered contractors, per platform convention.

Set `performed_by: 'self'` and no payable is created, because you are not paying yourself through accounts payable.

If your own crew is modelled as a contractor entity on a passthrough rate — a common pattern for keeping work in house — use `'contractor'` with that entity so the job books consistently with the rest of the line's history.

## Getting the extra onto a consolidated invoice, in order

Sequence matters if the visit is also the month's last scheduled job.

1. **Add the ad-hoc service first.** It accrues to the period.
2. **Then complete the scheduled job** with `record_completion`.

Completing the month's last job is what triggers the consolidated invoice to assemble. Do it in that order and both lines land on one invoice. Do it in the other order and the ad-hoc lands on a supplementary invoice, because the first one was already raised.

Use `completed_on` on `record_completion` to record the day the work was actually done, which may not be the day you are entering it. The invoice period derives from the scheduled date, so a date-honest completion record never shifts billing months.

## Say something on the line itself

`client_line_description` renders under the service name on the invoice. It is the right place for the one-sentence context that stops a client ringing you to ask what the extra charge was for — and for anything you noticed on site and want on the record.

Keep it factual and keep it short. Anything conversational belongs in the email that carries the invoice, not on the tax document.

## Related

- [When completing a job bills the client](/docs/concepts/when-completing-a-job-bills-the-client)
- [Amending a proposal after you have sent it](/docs/how-to/amend-a-proposal-after-sending)
