Permissions
Collects has four permissions (OAuth scopes). When you connect, the app asks for the ones it uses, and Collects offers only those your role in Collects can use. Every call also checks your role and plan, as the Collects app does, so a permission never lets a connection do more than you can do in the app.
| Permission | What it allows | Offered to |
|---|---|---|
collect:read | Read the organisation, overdue invoices, invoice status, resolution outcomes and recent events, the activity summaries and the briefing, the AR overview and the settings. | Read only, Team member, Admin, Owner |
collect:write | Change things in Collects: list, create and delete webhook subscriptions (a target URL can be a credential, so listing them needs this scope too); pause reminders, record a promise to pay, log a call or note, and set Do Not Disturb on a customer; log a dispute and act on it (comment, assign, approve, evidence); open, hold, reject or resolve a Workbench task. Starting a resolution, resuming reminders, marking a promise missed, clearing Do Not Disturb, resolving a dispute, rejecting a dispute's pause, messaging the debtor about a dispute, releasing or approving a Workbench task, accepting or dismissing an AI suggestion, and ignoring, marking fixed or re-checking a failing check need collect:send as well. | Team member, Admin, Owner |
collect:send | Make Collects contact a debtor: start a resolution, resume reminders, mark a promise to pay missed, clear Do Not Disturb, send the debtor an email (Send now, after its preview), resolve a dispute or reject its pause, message the debtor about a dispute, release or approve a Workbench task, accept or dismiss an AI suggestion, ignore, mark fixed or re-check a failing check (each with collect:write). Offered to owners, admins and team members, as in Collects: Send now is for owners and admins, and a team member may message the debtor about a dispute; each operation still checks the role. | Team member, Admin, Owner |
collect:admin | Team, organisation and integration settings: the organisation's details and collection emails switch, the AI thresholds, the Team page's actions, the import retries and the disconnects. Offered to owners and admins. | Admin, Owner |
A call missing a permission answers 403 insufficient_scope with one WWW-Authenticate challenge naming every permission it needs; reconnect and grant them. The permission names used before these four are still accepted.
Every operation
| Operation | Route | Permissions | Roles | Plan | MCP tool |
|---|---|---|---|---|---|
getAccount | GET /me | collect:read | Every role | Every plan | collects_account |
listOverdueInvoices | GET /invoices/overdue | collect:read | Every role | Every plan | list_overdue_invoices |
getInvoiceStatus | GET /invoices/{invoice_id} | collect:read | Every role | Every plan | get_invoice_status |
startResolution | POST /invoices/{invoice_id}/resolutions | collect:write collect:send | Admin, Owner | Collect | start_resolution |
getResolutionOutcome | GET /resolutions/{resolution_id} | collect:read | Every role | Every plan | get_resolution_outcome |
listWebhookSubscriptions | GET /webhooks | collect:write | Team member, Admin, Owner | Every plan | |
createWebhookSubscription | POST /webhooks | collect:write | Team member, Admin, Owner | Every plan | |
createSingleEventSubscription | POST /webhooks/events/{event_type} | collect:write | Team member, Admin, Owner | Every plan | |
deleteWebhookSubscription | DELETE /webhooks/{subscription_id} | collect:write | Team member, Admin, Owner | Every plan | |
listRecentEvents | GET /events | collect:read | Every role | Every plan | |
listInvoices | GET /invoices | collect:read | Every role | Every plan | |
getAttachmentLink | GET /attachments/{attachment_id} | collect:read | Every role | Every plan | |
listDebtors | GET /debtors | collect:read | Every role | Every plan | |
listCreditTermsGaps | GET /debtors/credit-terms-gaps | collect:read | Every role | Every plan | |
getDebtor | GET /debtors/{debtor_id} | collect:read | Every role | Every plan | |
listDebtorEmails | GET /debtors/{debtor_id}/emails | collect:read | Every role | Every plan | |
listDisputes | GET /disputes | collect:read | Every role | Every plan | |
listDisputeAssignees | GET /disputes/assignees | collect:read | Every role | Every plan | |
listTasks | GET /tasks | collect:read | Every role | Every plan | |
getTask | GET /tasks/{task_id} | collect:read | Every role | Every plan | |
getTaskEmailPreview | GET /tasks/{task_id}/email-preview | collect:read | Every role | Every plan | |
getTaskReplyEmail | GET /tasks/{task_id}/reply-email | collect:read | Every role | Every plan | |
getActivity | GET /activity | collect:read | Every role | Every plan | collects_activity |
getValue | GET /value | collect:read | Every role | Every plan | collects_value |
getBriefing | GET /briefing | collect:read | Every role | Every plan | collects_briefing |
getArOverview | GET /overview | collect:read | Every role | Every plan | collects_ar_overview |
listPriorityInvoices | GET /overview/priority-invoices | collect:read | Every role | Every plan | |
exportPriorityInvoices | GET /overview/priority-invoices/export | collect:read | Every role | Every plan | |
getOrganisationSettings | GET /settings/organisation | collect:read | Every role | Every plan | |
getFrequencySettings | GET /settings/frequency | collect:read | Every role | Every plan | |
getCollectionRules | GET /settings/collection-rules | collect:read | Every role | Every plan | |
getCreditTermsSettings | GET /settings/credit-terms | collect:read | Every role | Every plan | |
getTeam | GET /team | collect:read | Every role | Every plan | |
getIntegrations | GET /integrations | collect:read | Every role | Every plan | |
listSyncLogs | GET /integrations/xero/sync-logs | collect:read | Every role | Every plan | |
listConnectedApps | GET /connected-apps | collect:read | Every role | Every plan | |
pauseReminders | POST /invoices/{invoice_id}/pause | collect:write | Admin, Owner | Collect | collects_pause_reminders |
resumeReminders | POST /invoices/{invoice_id}/resume | collect:write collect:send | Admin, Owner | Collect | |
liftFinancialDifficultyPause | POST /invoices/{invoice_id}/financial-difficulty-pause/lift | collect:write collect:send | Admin, Owner | Collect | |
recordPromise | POST /invoices/{invoice_id}/promise | collect:write | Admin, Owner | Collect | |
markPromiseMissed | POST /invoices/{invoice_id}/promise/missed | collect:write collect:send | Admin, Owner | Collect | |
logInvoiceNote | POST /invoices/{invoice_id}/notes | collect:write | Admin, Owner | Collect | collects_log_note |
setDebtorDoNotContact | POST /debtors/{debtor_id}/do-not-contact | collect:write | Admin, Owner | Collect | |
clearDebtorDoNotContact | DELETE /debtors/{debtor_id}/do-not-contact | collect:write collect:send | Admin, Owner | Collect | |
previewDebtorEmail | POST /invoices/{invoice_id}/email/preview | collect:write collect:send | Admin, Owner | Collect | collects_preview_debtor_email |
sendDebtorEmail | POST /invoices/{invoice_id}/email | collect:write collect:send | Admin, Owner | Collect | collects_send_debtor_email |
setOrgChasing | POST /settings/organisation/collection-emails | collect:admin | Admin, Owner | Collect | collects_set_org_chasing |
updateOrganisationDetails | POST /settings/organisation | collect:admin | Admin, Owner | Every plan | |
updateDebtorContact | POST /settings/organisation/debtor-contact | collect:admin | Admin, Owner | Every plan | collects_update_debtor_contact |
setAiThresholds | POST /settings/organisation/ai-thresholds | collect:admin | Admin, Owner | Collect | collects_set_ai_thresholds |
inviteTeamMember | POST /team/invitations | collect:admin | Admin, Owner | Every plan | |
resendTeamInvitation | POST /team/invitations/{invitation_id}/resend | collect:admin | Admin, Owner | Every plan | |
cancelTeamInvitation | POST /team/invitations/{invitation_id}/cancel | collect:admin | Admin, Owner | Every plan | |
deactivateTeamMember | POST /team/members/{user_id}/deactivate | collect:admin | Admin, Owner | Every plan | |
reactivateTeamMember | POST /team/members/{user_id}/reactivate | collect:admin | Admin, Owner | Every plan | |
retryXeroImport | POST /integrations/xero/import/retry | collect:admin | Admin, Owner | Every plan | |
retryMailboxImport | POST /integrations/mailbox/import/retry | collect:admin | Admin, Owner | Every plan | |
refreshCreditTerms | POST /settings/credit-terms/refresh | collect:admin | Owner | Every plan | |
getCreditTermsRefresh | GET /settings/credit-terms/refresh/{run_id} | collect:read | Every role | Every plan | |
disconnectConnectedApp | POST /connected-apps/{connection_id}/disconnect | collect:write | Team member, Admin, Owner | Every plan | |
disconnectXero | POST /integrations/xero/disconnect | collect:admin | Admin, Owner | Every plan | |
disconnectMailbox | POST /integrations/mailbox/disconnect | collect:admin | Admin, Owner | Every plan | |
getConnectLink | GET /integrations/{integration}/connect-link | collect:read | Admin, Owner | Every plan | collects_connect_integration |
openDispute | POST /invoices/{invoice_id}/dispute | collect:write | Admin, Owner | Collect | collects_open_dispute |
addDisputeComment | POST /invoices/{invoice_id}/dispute/comments | collect:write | Team member, Admin, Owner | Collect | |
assignDispute | POST /invoices/{invoice_id}/dispute/assignee | collect:write | Admin, Owner | Collect | |
resolveDispute | POST /invoices/{invoice_id}/dispute/resolve | collect:write collect:send | Admin, Owner | Collect | |
approveDispute | POST /invoices/{invoice_id}/dispute/approve | collect:write | Admin, Owner | Collect | |
rejectDispute | POST /invoices/{invoice_id}/dispute/reject | collect:write collect:send | Admin, Owner | Collect | |
createEvidenceUploadUrl | POST /invoices/{invoice_id}/dispute/evidence/upload-url | collect:write | Team member, Admin, Owner | Every plan | |
attachDisputeEvidence | POST /invoices/{invoice_id}/dispute/evidence | collect:write | Team member, Admin, Owner | Every plan | |
messageDisputeDebtor | POST /invoices/{invoice_id}/dispute/messages | collect:write collect:send | Team member, Admin, Owner | Collect | collects_message_dispute_debtor |
markTaskInReview | POST /workbench/tasks/{task_id}/review | collect:write | Team member, Admin, Owner | Collect | |
holdTask | POST /workbench/tasks/{task_id}/hold | collect:write | Team member, Admin, Owner | Collect | |
releaseTask | POST /workbench/tasks/{task_id}/release | collect:write collect:send | Team member, Admin, Owner | Collect | |
approveTask | POST /workbench/tasks/{task_id}/approve | collect:write collect:send | Admin, Owner | Collect | |
rejectTask | POST /workbench/tasks/{task_id}/reject | collect:write | Admin, Owner | Collect | |
resolveTask | POST /workbench/tasks/{task_id}/resolve | collect:write | Admin, Owner | Collect | |
acceptAiSuggestion | POST /workbench/tasks/{task_id}/accept | collect:write collect:send | Team member, Admin, Owner | Collect | |
dismissAiSuggestion | POST /workbench/tasks/{task_id}/dismiss | collect:write collect:send | Team member, Admin, Owner | Collect | |
ignoreCheck | POST /invoices/{invoice_id}/checks/{check}/ignore | collect:write collect:send | Team member, Admin, Owner | Every plan | |
markCheckFixed | POST /invoices/{invoice_id}/checks/{check}/mark-fixed | collect:write collect:send | Team member, Admin, Owner | Collect | |
recheckCheck | POST /invoices/{invoice_id}/checks/{check}/recheck | collect:write collect:send | Team member, Admin, Owner | Collect |