OpenAPI Specification
openapi: 3.1.0
info:
title: Sage Accounting Bank Accounts Sales Invoices API
description: 'Sage Accounting API (v3.1) is a RESTful web service that connects software to Sage''s cloud accounting platform. Supports Sage Business Cloud Accounting and Sage Business Cloud Start products. Covers contacts, sales and purchase invoices, payments, bank accounts, ledger accounts, products/services, and financial reporting. Uses OAuth 2.0 for authentication. Rate limits apply: 1,296,000 daily requests, 150 concurrent, 100 per minute per company.'
version: 3.1.0
contact:
name: Sage Developer Support
url: https://developer.sage.com/support/
license:
name: Sage Developer Agreement
url: https://developer.sage.com/
servers:
- url: https://api.accounting.sage.com/v3.1
description: Sage Accounting API v3.1
security:
- OAuth2: []
tags:
- name: Sales Invoices
description: Sales invoice creation and management
paths:
/sales_invoices:
get:
operationId: listSalesInvoices
summary: List Sales Invoices
description: Returns a paginated list of sales invoices.
tags:
- Sales Invoices
parameters:
- name: contact_id
in: query
schema:
type: string
description: Filter by customer contact ID
- name: status_id
in: query
schema:
type: string
enum:
- DRAFT
- SENT
- PAID
- VOID
- name: from_date
in: query
schema:
type: string
format: date
- name: to_date
in: query
schema:
type: string
format: date
- name: page
in: query
schema:
type: integer
default: 1
- name: items_per_page
in: query
schema:
type: integer
default: 20
responses:
'200':
description: Sales invoice list
content:
application/json:
schema:
$ref: '#/components/schemas/SalesInvoiceList'
post:
operationId: createSalesInvoice
summary: Create Sales Invoice
description: Creates a new sales invoice for a customer.
tags:
- Sales Invoices
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/CreateSalesInvoiceRequest'
responses:
'201':
description: Sales invoice created
content:
application/json:
schema:
$ref: '#/components/schemas/SalesInvoice'
/sales_invoices/{key}:
get:
operationId: getSalesInvoice
summary: Get Sales Invoice
description: Returns a specific sales invoice by ID.
tags:
- Sales Invoices
parameters:
- name: key
in: path
required: true
schema:
type: string
responses:
'200':
description: Sales invoice details
content:
application/json:
schema:
$ref: '#/components/schemas/SalesInvoice'
put:
operationId: updateSalesInvoice
summary: Update Sales Invoice
description: Updates a draft sales invoice.
tags:
- Sales Invoices
parameters:
- name: key
in: path
required: true
schema:
type: string
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/UpdateSalesInvoiceRequest'
responses:
'200':
description: Invoice updated
content:
application/json:
schema:
$ref: '#/components/schemas/SalesInvoice'
delete:
operationId: deleteSalesInvoice
summary: Delete Sales Invoice
description: Voids or deletes a sales invoice.
tags:
- Sales Invoices
parameters:
- name: key
in: path
required: true
schema:
type: string
responses:
'204':
description: Invoice deleted
components:
schemas:
LineItem:
type: object
properties:
id:
type: string
description:
type: string
quantity:
type: number
unit_price:
type: number
net_amount:
type: number
tax_amount:
type: number
total_amount:
type: number
ledger_account:
$ref: '#/components/schemas/LedgerAccountRef'
tax_rate:
$ref: '#/components/schemas/TaxRateRef'
SalesInvoice:
type: object
properties:
id:
type: string
displayed_as:
type: string
date:
type: string
format: date
due_date:
type: string
format: date
reference:
type: string
status:
$ref: '#/components/schemas/StatusRef'
contact:
$ref: '#/components/schemas/ContactRef'
line_items:
type: array
items:
$ref: '#/components/schemas/LineItem'
net_amount:
type: number
tax_amount:
type: number
total_amount:
type: number
outstanding_amount:
type: number
currency:
$ref: '#/components/schemas/CurrencyRef'
LineItemInput:
type: object
required:
- description
- quantity
- unit_price
- ledger_account_id
properties:
description:
type: string
quantity:
type: number
default: 1
unit_price:
type: number
format: double
ledger_account_id:
type: string
tax_rate_id:
type: string
SalesInvoiceList:
type: object
properties:
$items:
type: array
items:
$ref: '#/components/schemas/SalesInvoice'
$total:
type: integer
$page:
type: integer
CurrencyRef:
type: object
properties:
id:
type: string
displayed_as:
type: string
TaxRateRef:
type: object
properties:
id:
type: string
displayed_as:
type: string
StatusRef:
type: object
properties:
id:
type: string
displayed_as:
type: string
UpdateSalesInvoiceRequest:
type: object
properties:
sales_invoice:
type: object
properties:
date:
type: string
format: date
due_date:
type: string
format: date
reference:
type: string
line_items:
type: array
items:
$ref: '#/components/schemas/LineItemInput'
ContactRef:
type: object
properties:
id:
type: string
displayed_as:
type: string
CreateSalesInvoiceRequest:
type: object
properties:
sales_invoice:
type: object
required:
- contact_id
- date
- line_items
properties:
contact_id:
type: string
date:
type: string
format: date
due_date:
type: string
format: date
reference:
type: string
line_items:
type: array
items:
$ref: '#/components/schemas/LineItemInput'
LedgerAccountRef:
type: object
properties:
id:
type: string
displayed_as:
type: string
securitySchemes:
OAuth2:
type: oauth2
flows:
authorizationCode:
authorizationUrl: https://www.sageone.com/oauth2/auth
tokenUrl: https://oauth.accounting.sage.com/token
scopes:
full_access: Full read/write access to all accounting data
readonly: Read-only access to accounting data