Sales

Customer-facing documents: invoices, estimates, recurring invoices, credit notes, and stock referenced on invoice lines.

← Back to entity map hub

Relationship diagram

flowchart TB
  Contact[Contact]
  Project[Project]
  BankAccount[Bank_account]
  RecurringInvoice[Recurring_invoice]
  Property[Property]
  Invoice[Invoice]
  InvoiceItem[Invoice_item]
  Estimate[Estimate]
  EstimateItem[Estimate_item]
  CreditNote[Credit_note]
  CreditNoteReconciliation[Credit_note_reconciliation]
  StockItem[Stock_item]
  Category[Category]
  Timeslip[Timeslip]
  Contact -->|contact| Invoice
  Contact -->|contact| Estimate
  Contact -->|contact| RecurringInvoice
  Contact -->|contact| CreditNote
  Invoice -.->|project| Project
  Invoice -.->|bank_account| BankAccount
  Invoice -.->|property| Property
  Invoice -.->|recurring_invoice| RecurringInvoice
  Invoice -->|invoice_items| InvoiceItem
  InvoiceItem -.->|category| Category
  InvoiceItem -.->|project| Project
  InvoiceItem -.->|stock_item| StockItem
  Estimate -.->|project| Project
  Estimate -.->|property| Property
  Estimate -->|estimate_items| EstimateItem
  EstimateItem -.->|category| Category
  Estimate -.->|invoice| Invoice
  CreditNote -.->|project| Project
  CreditNote -.->|bank_account| BankAccount
  CreditNoteReconciliation -->|invoice| Invoice
  CreditNoteReconciliation -->|credit_note| CreditNote
  Timeslip -.->|billed_on_invoice| Invoice
  StockItem -.->|cost_of_sale_category| Category

Invoice items and credit note items are nested on their parent resource pages (no separate top-level docs URL for invoice items). Estimate items have a dedicated endpoint.

Resource catalogue

Resource Official docs SDK
Invoices Invoices client.Invoices
Estimates Estimates client.Estimates
Recurring invoices Recurring invoices client.RecurringInvoices
Credit notes Credit notes client.CreditNotes
Credit note reconciliations Credit note reconciliations client.CreditNoteReconciliations
Stock items Stock items client.StockItems
Price list items Price list items client.PriceListItems

Key URI fields

Invoice

Field Target Required on create?
contact Contact Yes
project Project No
bank_account Bank account No
property Property No (landlord companies only)
recurring_invoice Recurring invoice Read-only when generated

Invoice items (item_type includes Hours, Expenses, Bills, Stock, and others) may set category, project, and stock_item.

List filters: ?contact=, ?project=

Estimate

Field Target Required on create?
contact Contact Yes
project Project No
property Property No (landlord companies only)

List filters: ?contact=, ?project=, ?invoice= (estimates linked to an invoice)

Recurring invoice

Inherits invoice attributes plus scheduling fields. Requires contact on create.

List filter: ?contact=

Credit note

Field Target Required on create?
contact Contact Yes
project Project No
bank_account Bank account No

List filters: ?contact=, ?project=

Credit note reconciliation

Field Target Required on create?
invoice Invoice Yes
credit_note Credit note Yes

Resources in other clusters that point to invoices:

From cluster Resource Field
Projects and time Timeslip billed_on_invoice
Purchases Bill rebilled_on_invoice_item
Purchases Expense rebilled_on_invoice
Banking Bank transaction explanation paid_invoice (invoice receipt / credit note refund)

SDK sequencing note

Invoices need only Contacts on create. Categories and Projects are implemented for optional line-item category URIs and invoice project links. Bank accounts remain optional until the Banking cluster is implemented (BankAccountReference supports remittance URIs on writes). Credit notes and reconciliations logically follow invoices.

Sales cluster SDK patterns

Invoices establishes patterns that sibling Sales stories should reuse:

Pattern SDK surface Sibling resources
Status transitions Mark*Async methods calling PUT .../transitions/{action} Estimates, credit notes
Nested line items Add/update/delete via parent Update*Async payload (id, _destroy) Estimates, credit notes
PDF download Get*PdfAsync decoding { pdf: { content } } base64 wrapper Estimates
Email action Send*EmailAsync with typed email request Estimates
Company default text Get/Update/DeleteDefaultAdditionalTextAsync under resource path Estimates (if documented)
Linked references ContactReference, ProjectReference, CategoryReference, BankAccountReference All Sales documents

Copyright © Mark Heydon. Distributed under the MIT licence.

This site uses Just the Docs, a documentation theme for Jekyll.