ef53286dca7269650f337af1487be8de9d5d206a
first dated version. plugins were all sitting on 1.0.0, which said nothing about when a build was made or which of two copies is newer — the platform already uses YYYY.MM.DD.NN and this follows it. the version lives in manifest.ts because a plugin has no package.json; that is the field the marketplace publishes and the installer compares. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Invoices
Your InvoiceShelf books, inside Officer — invoices, estimates, customers and payments, with the credentials held server-side.
What you get
- Invoices — list, filter by status, open one and see its lines
- Estimates — the same, before they become invoices
- Customers and their history
- Payments recorded against invoices
- Multiple companies — add several sets of books and switch between them
Requirements
A running InvoiceShelf instance Officer can reach, and credentials for it.
Setup
Install the plugin, open /invoices, and add an account: a label, the URL, and the credentials. They are encrypted at rest and never sent to the browser. Mark one active.
The plugin does not install or supervise InvoiceShelf. Point it at one you already run.
Permissions
One permission, invoices, grantable per role like any other app permission.
Notes
- The plugin is named
invoices, notinvoiceshelf— named for what it shows rather than the daemon behind it, which is what keeps the URL/invoices. SeePLUGIN.md.
Languages
TypeScript
100%