Changelog
What changed for anyone connecting Claude, Zapier, Make or their own code to Collects, newest first. Each dated version is selected with the Collects-Version header; the Versioning page of the developer docs gives the policy.
2026-10-30
The first dated version, and the meanings the API keeps from go-live. Before go-live there were no customers on the API, so a field that disagreed with what the Collects app shows was corrected in place rather than versioned. From now on a change of meaning ships as a new dated version, and a removal is announced here and marked with Deprecation and Sunset at least 180 days before it happens.
Versions
- Send
Collects-Version: 2026-10-30to choose this version. Every response names the version that served it in the same header. A request without the header is served 2026-10-30; an unknown version is refused with 400invalid_request. - A webhook subscription is pinned to the version of the request that created it (
api_versionon the subscription), and every delivery carriesCollects-Versionwith that version.
Events and webhooks
- Every event is a thin notification:
{ id, type, created_at, data }, wheredataholds only ids (invoice_id,debtor_id,resolution_id,task_id). Fetch the details with your own token, so your role, an erasure and the retention period apply when you read them. The fieldseventandoccurred_atare nowtypeandcreated_at. - Deliveries are signed with Standard Webhooks headers (
webhook-id,webhook-timestamp,webhook-signature), keyed with the subscription secret.X-Webhook-Signatureis no longer sent. - A receiver that answers 410 Gone ends the subscription.
invoice.collectedfires once per invoice, for every invoice, when Collects records it as collected: paid, in full or in part, on a day after Collects first acted on it.resolution_idis empty for an invoice with no resolution.- Fifteen events for every invoice, each fired when the Collects app shows the change: a payment received, a dispute logged or resolved, a reply received, reminders paused or resumed on an invoice or a customer, a promise to pay recorded, kept or missed, an email sent or bounced, an invoice becoming overdue, and a new Workbench task.
GET /eventsfilters bytype(repeatable) and pages with one cursor across the chosen types.- Zapier and Make have a trigger for every event.
- An event is delivered, and listed by
GET /events, only to a connection whose person can see that change in the Collects app. - Webhook subscriptions belong to the connection and the person that created them, end with the connection, and are listed by
GET /webhooks. Settings › Integrations › Connected apps shows each app's subscriptions.
Doing what the Collects app does
- Reminders: pause and resume reminders on an invoice, lift the AI's financial-difficulty pause, record a promise to pay or mark it missed, log a note or a call, and pause or resume reminders for a whole customer.
- Send now: preview the email to the debtor, then send it.
- Disputes: log one, comment, assign, resolve, approve or reject, add evidence, and message the debtor.
- Workbench: review, hold, release, approve, reject or resolve a task, accept or dismiss an AI suggestion; ignore a failing check, mark it fixed or check it again.
- Settings: the organisation's details and its Send collection emails switch, who debtors can contact, the AI thresholds, the Team page's actions, the import retries, the credit-terms refresh, and disconnecting Xero, the mailbox or a connected app. Connecting Xero or a mailbox is a link into Collects.
- Each runs the same checks as the button in the Collects app, for the same roles and plans. Collects shows who did it and through which app: "by <person> via <app>" on the invoice, and each app's recent actions under Settings › Integrations › Connected apps.
- Anything that emails a debtor, adds a person or stops collection is two calls: a preview of what will happen, then the action with the preview's token. A token is refused with 409
confirmation_mismatch,confirmation_expiredorconfirmation_used.
Reading what the Collects app shows
- Search and read the whole ledger (every status), debtors with their contacts, payments, promises and correspondence, disputes, Workbench tasks, the dashboard, the Activity and Value summaries, the briefing and the Settings pages.
GET /mesays who the connection acts as, the role, the plan and subscription status, the mailbox and Xero, and for every action whether this connection can run it now and, if not, why.- Text written by people outside your organisation (a debtor's email or reply, a dispute note) arrives as an
untrusted_textobject, never a bare string. - Reads are served whatever the state of Xero.
Fields that now mean what the Collects app shows
days_overduecounts UK (Europe/London) days.master_categoryis the Invoices list's status:PAID,VOIDED,WRITTEN_OFF,BLOCKED,IN_DISPUTE,WARNING,SUPPRESSED,ACTIVE.statusgainsclosed, and readsin_resolutionwhenever Collects' reminders are running.amount_originalis the invoice total, or empty when Xero sent none.- The overdue list leaves out written-off invoices.
Permissions and connections
- Four permissions:
collect:read,collect:write,collect:send,collect:admin. Signing in asks for the first three only;collect:admin(team and organisation settings) is asked for when a call needs it. The consent page offers only those your role can use. A call missing one answers 403insufficient_scopenaming every permission it needs. The earlier permission names are still accepted. - A connection acts as the person who connected it, with their role, checked on every call, and can be set to Read only (403
connection_read_onlyon a write). - Starting a resolution needs an owner or admin.
- Signing in with Xero asks for your two-step code when two-step is on. Turning two-step on, a password reset, deactivation or deleting your login ends your connections.
- A suspended organisation can still read; every write answers 403
account_suspended. plan_requirednames the owner as the person who changes the plan and links to collects.io. There is no card check.- Each connection has its own rate limits, stated on every response in the
RateLimitandRateLimit-Policyheaders. - MCP: served on protocol revisions 2025-11-25 and 2026-07-28. With a token,
tools/listshows only the tools your permissions, role and Read only setting allow. Tool errors carry{ code, message }.
Additions to 2026-10-30
Additive changes need no new version, so they are listed here under the version they arrived in, newest first.
- 2 November 2026: the last action on an invoice now also reflects a manual send and an action a person took. -
invoiceCore.list:last_action.typegainsmanual_send, and the event
type of a person's act, such as invoice.payment_arrangement_recorded, invoice.call_note_logged or dispute.opened. last_action.at is always an ISO 8601 UTC timestamp, and may come from the send or from the act. - The dashboard list's last_action label gains "Manual reminder sent" and act titles such as "Promise to pay recorded".