Invoices
The Invoices API allows partner applications to create, list, retrieve, update, and delete invoices and related documents in COUNT.
Invoices are a core entity used to represent billable work, sales, or services provided to customers. This API supports automated billing workflows, including:
- Listing and filtering invoices (pagination, dates, customer, draft flag, type, search)
- Creating invoices from external systems (CRM, job management, POS)
- Credit memos (
invoiceType: 'memo') with apply-to-invoice flows - Attachments (URL-based or multipart upload)
- Shareable public payment links
- Recurring invoice templates (separate
/partners/recurring-invoice-templatesroutes) - Draft and approved lifecycles, send, and approve actions
Invoices created through this API behave the same as invoices created in the COUNT UI.
Authentication
All /partners/invoices endpoints require both authentication mechanisms:
- HMAC Authentication — headers:
x-client-id,x-signature - OAuth Bearer Token —
Authorization: Bearer YOUR_ACCESS_TOKEN
Requests missing either authentication method will be rejected.
Identifiers (UUIDs)
Partner responses expose id as the invoice UUID (numeric database keys are not returned on invoice objects). Path parameters such as {uuid} use that same UUID.
If duplicate UUIDs exist for the same workspace (legacy data), the API may respond with 409 until data is corrected.
Invoice Relationships
An invoice references other core entities by UUID:
- Customer – Who the invoice is billed to (
customerUuidon create) - Products / Services – Line items (product UUIDs in the payload)
- Tags – Optional (
tagUuids)
Derived status (Partner API)
On Partner invoice routes, responses include a computed status field (e.g. draft, approved, sent, paid, partial, overdue, estimate-specific values). Use status as the primary lifecycle indicator; raw fields (isDraft, isSent, paymentStatus, etc.) remain available.
Invoice Lifecycle (summary)
- Draft – Editable; use
isDraft/status/ list filterisDraft=true - Approved – Sent and payment states are modeled via
statusand related fields; editing is field-specific (invalid updates return 400 with a message, not necessarily one generic “locked” code) - Send –
POST /partners/invoices/{uuid}/sendafter requirements are met
Most automated workflows should create invoices as approved when they are ready to post.
Invoice Types
invoice– Standard billing documentestimate– Cost estimate / customer-facing estimate flowmemo– Credit memo (see dedicated Credit memo section in this docs project)
(Other product-specific types may exist; use invoiceType on create/list as documented in the OpenAPI/section specs.)
Required Dependencies
Before creating invoices, ensure the following exist in COUNT:
- Customers (via Customers API)
- Products with assigned category accounts
- Optional tags for categorization
Invoices cannot be created if required references are missing.
Available Endpoints (Partner)
- List invoices —
GET /partners/invoices - Create invoice or memo —
POST /partners/invoices - Get / update / delete —
GET | PATCH | DELETE /partners/invoices/{uuid} - Approve —
PATCH /partners/invoices/{uuid}/approve - Send —
POST /partners/invoices/{uuid}/send - Attachments —
POST /partners/invoices/{uuid}/attachments(JSON URLs),POST .../attachments/upload(multipartdocuments) - Public link —
GET /partners/invoices/{uuid}/public-link - Credit apply / remove —
PATCH .../apply-multiple-credit-to-invoice,PATCH .../apply-credit-to-multiple-invoices,PATCH .../remove-credit - Audit log —
GET /partners/invoices/{uuid}/audit-log - Recurring templates — under
/partners/recurring-invoice-templates(list, create, get, patch, delete, pause, resume)
See Partners documentation (docs/partners-docu) for a single-page summary of the same behavior.
For credit memos only (invoiceType: 'memo', apply-to-invoice, list filter invoiceType=memo), open the dedicated Credit memo page in this API reference (sidebar, or folder api-reference/credit-memo).
Endpoints
partners/invoices/{uuid}
partners/invoices
partners/invoices/{uuid}
partners/invoices/{uuid}