Skip to main content

PBJ Suite — Phase 13: invoices that start from a ticket, and a public front door

PBJ Invoicing 1.16.0 and PBJ Helpdesk 2.15.0 are out. Raise an invoice from any ticket — open or closed — save the description you write under the line items, invoice a business without naming a person at it, and re-open a settled invoice on the record. Plus the help desk’s first public front door.

August 11, 2026

PBJ Invoicing 1.16.0 and PBJ Helpdesk 2.15.0 are available now. They ship together because most of what is new is one plugin reaching into the other: this is the release where a ticket and an invoice finally know about each other.

Raise an invoice from a ticket — including a closed one

Every ticket now carries a Create an invoice button, and it works on a ticket you have already closed. That last part is the point. Deciding to bill a job after you closed the ticket is the ordinary way round, not an edge case — and until now nothing on a ticket led to an invoice at all, so the job went on a list somewhere and got typed in again later, or did not.

Press it and the invoice editor opens with that customer already chosen. It sits next to the “book this in” button PBJ Dispatch adds, and the two are independent: having one add-on and not the other never hides the other’s button.

A description you can write once

There is a new box underneath the line items for the paragraph that explains what the work actually was — the sentence a customer reads to make sense of the numbers above it. It is separate from the Notes block, which stays your closing message at the bottom of the document.

Most jobs of a given kind get described the same way every time, so the box has a Save for reuse action beside it. Press it and the wording joins a list you can pick from on the next invoice. Nothing is ever saved by accident: typing in the box affects that one document, and the wording joins the list when you ask it to.

A business can be the only recipient

If a business has its own email address in the CRM, you no longer have to name somebody at it before you can invoice it. That was never a rule about billing — it was a rule about delivery, and it produced a dead end that had nothing to do with the invoice: a company you genuinely bill as a company, whose staff are not in your contact book, could not be invoiced at all.

A company-only invoice is now a normal document. If there is neither a ticked person nor an address on the business the save still refuses — and it now tells you both ways to fix it rather than only one. Recurring profiles follow the same rule.

Terms you can actually see

Two changes to one box, both fixing the same problem: that “empty” was ambiguous. Leaving the terms box blank has always meant “print my site-wide default terms”, and there was no way to tell that from the screen — so blank read as no terms. The box now shows those defaults as greyed-out placeholder text, so what the invoice will say is right there in front of you.

And there is now a starter set of general terms with a Use the standard terms button that drops them in as ordinary editable text, to be rewritten into your own words. It is a starting point, not a lock — and if you have already typed something, the button asks before replacing it.

Re-opening a settled invoice, on the record

Managers and above get a Re-open button on a paid invoice. It asks for a reason, will not proceed without one, and writes that reason into the invoice’s own activity — so why a settled invoice was opened up again lives with the invoice rather than in somebody’s memory. People below that rung do not see it, and the server refuses the request regardless of what the screen shows.

The part to read twice: a re-opened invoice now stays open. It will not walk itself back to Paid on the next nightly run the way it used to. A person decides when it closes again. An invoice that stays open too long is visible and somebody fixes it; an invoice that quietly re-closes itself is invisible and reaches nobody — so we chose the visible failure.

The help desk gets a front door

Until this release, every way into PBJ Helpdesk required a login. That was deliberate, which is why opening the first public way in is also deliberate: 2.15.0 adds a public ticket-intake seam, and its first user is the public invoice page. A customer looking at their invoice can ask a question about it, and it arrives as a ticket — no account, no password.

Worth being precise about what that does and does not mean:

Nothing on your site becomes publicly reachable just by updating. The seam is a socket. With nothing plugged into it, nothing happens.

It is a place things plug into, not one fixed form. What a good general-purpose public contact form should look like is still an open question, so rather than guess we built the socket properly. A form arrives later and plugs in with no change to the help desk.

The defences belong to the help desk, not to whatever plugs in. The rate limits, the spam trap and the confirm step are all applied centrally, so nothing that registers against the seam can switch them off — by accident or otherwise.

A stranger’s typed-in name does not go into your contact book. By default nothing the visitor types reaches the fields that would create a customer record. Their details arrive on the ticket, where an agent reads them and adds the person deliberately.

Updating

Both updates are offered through your WordPress updates screen as usual. PBJ Invoicing 1.16.0 carries a database update — two new columns, applied automatically. It is checked before it is recorded as done, a site left half-finished by an earlier attempt repairs itself on the next page load, and a host that refuses the change is retried a bounded number of times and then reported on screen, rather than retried on every page view for ever. PBJ Helpdesk 2.15.0 has no database change.

The two work best together, but neither requires the other: the ticket button needs both installed to appear, and each plugin is perfectly happy on its own without it. Both require PBJ CRM.

Full entries: the PBJ Invoicing changelog and the PBJ Helpdesk changelog.

Latest Articles