openapi: 3.1.0 info: title: FreeAgent BankAccounts Invoices API description: 'FreeAgent is UK-focused cloud accounting software. The API is RESTful and exposes contacts, invoices, bank accounts, projects, expenses, bills, timeslips, tax timeline, and more. OAuth 2.0 (authorization code) is required for access. JSON and XML responses are supported. Sandbox base URL: https://api.sandbox.freeagent.com ' version: '2' contact: name: FreeAgent API Support url: https://dev.freeagent.com/ servers: - url: https://api.freeagent.com/v2 description: Production - url: https://api.sandbox.freeagent.com/v2 description: Sandbox security: - oauth2: [] tags: - name: Invoices paths: /invoices: get: summary: List invoices operationId: listInvoices tags: - Invoices parameters: - name: view in: query schema: type: string enum: - all - recent_open_or_overdue - open - overdue - draft - paid - name: contact in: query schema: type: string format: uri - name: project in: query schema: type: string format: uri - name: nested_invoice_items in: query schema: type: boolean - name: updated_since in: query schema: type: string format: date-time - $ref: '#/components/parameters/page' - $ref: '#/components/parameters/per_page' responses: '200': description: Invoices list. post: summary: Create invoice operationId: createInvoice tags: - Invoices responses: '201': description: Invoice created. /invoices/{id}: parameters: - $ref: '#/components/parameters/id' get: summary: Get invoice operationId: getInvoice tags: - Invoices responses: '200': description: Invoice. put: summary: Update invoice operationId: updateInvoice tags: - Invoices responses: '200': description: Updated. delete: summary: Delete invoice operationId: deleteInvoice tags: - Invoices responses: '204': description: Deleted. /invoices/{id}/pdf: parameters: - $ref: '#/components/parameters/id' get: summary: Get invoice as PDF operationId: getInvoicePdf tags: - Invoices responses: '200': description: PDF document. content: application/pdf: {} /invoices/{id}/transitions/mark_as_sent: parameters: - $ref: '#/components/parameters/id' put: summary: Mark invoice as sent operationId: invoiceMarkAsSent tags: - Invoices responses: '200': description: Status updated. /invoices/{id}/transitions/mark_as_scheduled: parameters: - $ref: '#/components/parameters/id' put: summary: Schedule invoice for sending operationId: invoiceMarkAsScheduled tags: - Invoices responses: '200': description: Status updated. /invoices/{id}/transitions/mark_as_draft: parameters: - $ref: '#/components/parameters/id' put: summary: Revert invoice to draft operationId: invoiceMarkAsDraft tags: - Invoices responses: '200': description: Status updated. /invoices/{id}/transitions/mark_as_cancelled: parameters: - $ref: '#/components/parameters/id' put: summary: Cancel invoice operationId: invoiceMarkAsCancelled tags: - Invoices responses: '200': description: Status updated. /invoices/{id}/duplicate: parameters: - $ref: '#/components/parameters/id' post: summary: Duplicate invoice operationId: duplicateInvoice tags: - Invoices responses: '201': description: Duplicate created. /invoices/{id}/send_email: parameters: - $ref: '#/components/parameters/id' post: summary: Email invoice operationId: emailInvoice tags: - Invoices responses: '200': description: Email queued. /invoices/timeline: get: summary: Invoice activity timeline operationId: invoicesTimeline tags: - Invoices responses: '200': description: Timeline. components: parameters: id: name: id in: path required: true schema: type: string per_page: name: per_page in: query schema: type: integer minimum: 1 maximum: 100 page: name: page in: query schema: type: integer minimum: 1 securitySchemes: oauth2: type: oauth2 description: 'OAuth 2.0 authorization code flow. Access tokens valid for ~1 hour; refresh tokens used to obtain new access tokens. ' flows: authorizationCode: authorizationUrl: https://api.freeagent.com/v2/approve_app tokenUrl: https://api.freeagent.com/v2/token_endpoint refreshUrl: https://api.freeagent.com/v2/token_endpoint scopes: {}