Light v1 - Invoice Payables API
The v1 - Invoice Payables API from Light — 17 operation(s) for v1 - invoice payables.
The v1 - Invoice Payables API from Light — 17 operation(s) for v1 - invoice payables.
openapi: 3.0.1
info:
title: Light Authorization v1 - Invoice Payables API
version: 1.0.0
security:
- apiKeyAuth: []
- bearerAuth: []
tags:
- name: v1 - Invoice Payables
paths:
/v1/bff/invoice-payables:
get:
tags:
- v1 - Invoice Payables
summary: List invoice payables
description: Returns a paginated list of invoice payables
operationId: listInvoicePayables
parameters:
- name: sort
in: query
schema:
type: string
description: "Sort string in the format `field:direction`. To provide multiple sort fields, separate them with commas.\n\nAvailable directions: `asc`, `desc`. \n\nAvailable fields: `amount`, `canceledAt`, `companyEntityName`, `description`, `dueDate`, `fromAccountName`, `createdAt`, `invoiceNumber`, `issuedDate`, `ocrCompletedAt`, `paymentAt`, `senderEmail`, `state`, `vendorName`, `businessPartnerName`, `nextApproverName`."
example: amount:desc,createdAt:asc
- name: filter
in: query
schema:
type: string
description: "Filter string in the format `field:operator:value`. To provide multiple filters, separate them with commas.\n\nAvailable operators: `eq`, `ne`, `in`, `not_in`, `gt`, `gte`, `lt`, `lte`.\n - For `in` and `not_in` operators, provide multiple values separated by the pipe character (`|`). \n\nAvailable fields: `approverUserId`, `id`, `vendorId`, `userId`, `companyEntityId`, `senderBankAccountId`, `amount`, `description`, `documentNumber`, `dueDate`, `issuedDate`, `paymentAt`, `createdAt`, `updatedAt`, `state`, `vendorName`, `userFirstName`, `userLastName`, `type`."
example: state:in:IN_DRAFT|SCHEDULED|PAID,amount:gte:500,vendorId:ne:null
- name: limit
in: query
description: Maximum number of items to return. Default is 50, maximum is 200.
schema:
maximum: 200
type: integer
format: int32
- name: offset
in: query
description: Number of items to skip before starting to collect the result set. Deprecated, use 'cursor' instead.
deprecated: true
schema:
type: integer
format: int64
- name: cursor
in: query
description: 'The cursor position to start returning results from.
To opt-in into cursor-based pagination, provide `0` for the initial request.
For subsequent requests, use `nextCursor` and `prevCursor` from the previous response to navigate.
Cursor values are opaque and should not be constructed manually.'
schema:
type: string
- name: include
in: query
schema:
uniqueItems: true
type: array
items:
type: string
description: ⚠️ This enum is not exhaustive; new values may be added in the future.
enum:
- REIMBURSEMENT
responses:
default:
description: default response
content:
application/json;charset=UTF-8:
schema:
$ref: '#/components/schemas/ExternalPaginatedResponseV1ModelExternalBffInvoicePayableV1Model'
/v1/invoice-payables/{invoicePayableId}/approve:
post:
tags:
- v1 - Invoice Payables
summary: Approve invoice payable
description: Approves an invoice payable for payment processing
operationId: approveInvoicePayable
parameters:
- name: invoicePayableId
in: path
required: true
schema:
type: string
format: uuid
requestBody:
content:
application/json;charset=UTF-8:
schema:
$ref: '#/components/schemas/ExternalApproveInvoicePayableRequestV1Model'
responses:
default:
description: default response
content:
application/json;charset=UTF-8:
schema:
$ref: '#/components/schemas/ExternalInvoicePayableV1Model'
/v1/invoice-payables/{invoicePayableId}/cancel:
post:
tags:
- v1 - Invoice Payables
summary: Cancel invoice payable
description: Cancels an invoice payable
operationId: cancelInvoicePayable
parameters:
- name: invoicePayableId
in: path
required: true
schema:
type: string
format: uuid
requestBody:
content:
application/json;charset=UTF-8:
schema:
$ref: '#/components/schemas/ExternalCancelInvoicePayableRequestV1Model'
responses:
default:
description: default response
content:
application/json;charset=UTF-8:
schema:
$ref: '#/components/schemas/ExternalInvoicePayableV1Model'
/v1/invoice-payables:
post:
tags:
- v1 - Invoice Payables
summary: Create invoice payable
description: Creates a new invoice payable document. Supports inline line items via the `lineItems` field for single-request creation.
operationId: createInvoicePayableDetails
requestBody:
content:
application/json;charset=UTF-8:
schema:
$ref: '#/components/schemas/ExternalCreateInvoicePayableRequestV1Model'
responses:
default:
description: default response
content:
application/json;charset=UTF-8:
schema:
$ref: '#/components/schemas/ExternalInvoicePayableV1Model'
/v1/invoice-payables/{invoicePayableId}/document/upload-url:
post:
tags:
- v1 - Invoice Payables
summary: Generate document upload URL
description: Generates a secure upload URL for invoice payable documents
operationId: createInvoicePayableDocumentUploadUrl
parameters:
- name: invoicePayableId
in: path
required: true
schema:
type: string
format: uuid
requestBody:
content:
application/json;charset=UTF-8:
schema:
$ref: '#/components/schemas/ExternalUploadInvoicePayableDocumentRequestV1Model'
responses:
default:
description: default response
content:
application/json;charset=UTF-8:
schema:
$ref: '#/components/schemas/ExternalInvoicePayableUploadUrlResponseV1Model'
/v1/invoice-payables/{invoicePayableId}/line-items:
post:
tags:
- v1 - Invoice Payables
summary: Create invoice payable line item
description: Creates an invoice payable line item
operationId: createInvoicePayableLineItem
parameters:
- name: invoicePayableId
in: path
required: true
schema:
type: string
format: uuid
requestBody:
content:
application/json;charset=UTF-8:
schema:
$ref: '#/components/schemas/ExternalCreateInvoicePayableLineItemRequestV1Model'
responses:
default:
description: default response
content:
application/json;charset=UTF-8:
schema:
$ref: '#/components/schemas/ExternalInvoicePayableLineItemV1Model'
/v1/invoice-payables/{invoicePayableId}/decline:
post:
tags:
- v1 - Invoice Payables
summary: Decline invoice payable
description: Declines an invoice payable
operationId: declineInvoicePayable
parameters:
- name: invoicePayableId
in: path
required: true
schema:
type: string
format: uuid
requestBody:
content:
application/json;charset=UTF-8:
schema:
$ref: '#/components/schemas/ExternalDeclineInvoicePayableRequestV1Model'
responses:
default:
description: default response
content:
application/json;charset=UTF-8:
schema:
$ref: '#/components/schemas/ExternalInvoicePayableV1Model'
/v1/invoice-payables/{invoicePayableId}/line-items/{lineItemId}:
get:
tags:
- v1 - Invoice Payables
summary: Get invoice payable line item
description: Gets an invoice payable line item
operationId: getInvoicePayableLineItem
parameters:
- name: invoicePayableId
in: path
required: true
schema:
type: string
format: uuid
- name: lineItemId
in: path
required: true
schema:
type: string
format: uuid
responses:
default:
description: default response
content:
application/json;charset=UTF-8:
schema:
$ref: '#/components/schemas/ExternalInvoicePayableLineItemV1Model'
put:
tags:
- v1 - Invoice Payables
summary: Update invoice payable line item
description: Updates an invoice payable line item
operationId: updateInvoicePayableLineItem
parameters:
- name: invoicePayableId
in: path
required: true
schema:
type: string
format: uuid
- name: lineItemId
in: path
required: true
schema:
type: string
format: uuid
requestBody:
content:
application/json;charset=UTF-8:
schema:
$ref: '#/components/schemas/ExternalUpdateInvoicePayableLineItemRequestV1Model'
responses:
default:
description: default response
content:
application/json;charset=UTF-8:
schema:
$ref: '#/components/schemas/ExternalInvoicePayableLineItemV1Model'
delete:
tags:
- v1 - Invoice Payables
summary: Delete invoice payable line item
description: Deletes an invoice payable line item
operationId: deleteInvoicePayableLineItem
parameters:
- name: invoicePayableId
in: path
required: true
schema:
type: string
format: uuid
- name: lineItemId
in: path
required: true
schema:
type: string
format: uuid
responses:
default:
description: default response
content:
application/json;charset=UTF-8: {}
/v1/invoice-payables/{invoicePayableId}:
get:
tags:
- v1 - Invoice Payables
summary: Get invoice payable
description: Returns a specific invoice payable by ID
operationId: getInvoicePayableDetails
parameters:
- name: invoicePayableId
in: path
required: true
schema:
type: string
format: uuid
- name: includeOutstandingBalance
in: query
schema:
type: boolean
responses:
default:
description: default response
content:
application/json;charset=UTF-8:
schema:
$ref: '#/components/schemas/ExternalInvoicePayableV1Model'
patch:
tags:
- v1 - Invoice Payables
summary: Update invoice payable
description: Updates an existing invoice payable document header
operationId: updateInvoicePayable
parameters:
- name: invoicePayableId
in: path
required: true
schema:
type: string
format: uuid
requestBody:
content:
application/json;charset=UTF-8:
schema:
$ref: '#/components/schemas/ExternalUpdateInvoicePayablePatchRequestV1Model'
responses:
default:
description: default response
content:
application/json;charset=UTF-8:
schema:
$ref: '#/components/schemas/ExternalInvoicePayableV1Model'
/v1/invoice-payables/{invoicePayableId}/document:
get:
tags:
- v1 - Invoice Payables
summary: Get invoice document
description: Returns the attached document for an invoice payable
operationId: getInvoicePayableDocument
parameters:
- name: invoicePayableId
in: path
required: true
schema:
type: string
format: uuid
- name: documentType
in: query
schema:
type: string
description: ⚠️ This enum is not exhaustive; new values may be added in the future.
enum:
- ORIGINAL
- GENERATED
responses:
default:
description: default response
content:
application/pdf: {}
/v1/invoice-payables/{invoicePayableId}/credit-notes:
get:
tags:
- v1 - Invoice Payables
summary: Get linked credit notes
description: Returns all credit notes linked to the invoice payable
operationId: getLinkedCreditNotes
parameters:
- name: invoicePayableId
in: path
required: true
schema:
type: string
format: uuid
responses:
default:
description: default response
content:
application/json;charset=UTF-8:
schema:
type: array
items:
$ref: '#/components/schemas/ExternalCreditNoteInvoicePayableV1Model'
/v1/invoice-payables/{invoicePayableId}/payments:
get:
tags:
- v1 - Invoice Payables
summary: List invoice payable payments
description: Returns all clearings (bank payments and credit notes) linked to the invoice payable. Each entry carries a `type` discriminator (`BP` for bank payments, `CN` for credit notes) so consumers can filter client-side if only one kind is needed. Reversed clearings are excluded.
operationId: listInvoicePayablePayments
parameters:
- name: invoicePayableId
in: path
required: true
schema:
type: string
format: uuid
responses:
default:
description: default response
content:
application/json;charset=UTF-8:
schema:
type: array
items:
$ref: '#/components/schemas/ExternalInvoicePayablePaymentV1Model'
/v1/invoice-payables/{invoicePayableId}/mark-as-paid:
post:
tags:
- v1 - Invoice Payables
summary: Mark invoice payable as paid
description: Marks an invoice payable as paid by recording a bank payment that clears it. Use `paymentOption=FULL` to clear the remaining outstanding balance, or `paymentOption=PARTIAL` to record an installment. The invoice transitions to `PAID` (full) or `PARTIALLY_PAID` (partial).
operationId: markInvoicePayableAsPaid
parameters:
- name: invoicePayableId
in: path
required: true
schema:
type: string
format: uuid
requestBody:
content:
application/json;charset=UTF-8:
schema:
$ref: '#/components/schemas/ExternalMarkInvoicePayableAsPaidRequestV1Model'
responses:
default:
description: default response
content:
application/json;charset=UTF-8:
schema:
$ref: '#/components/schemas/ExternalInvoicePayableV1Model'
/v1/invoice-payables/{invoicePayableId}/post:
post:
tags:
- v1 - Invoice Payables
summary: Post invoice payable without approval
description: Posts an invoice payable directly to the ledger without going through the approval workflow. The invoice must be in `IN_DRAFT` state. After posting, linked credit notes are applied and unlinked credit notes may be auto-allocated. If the invoice is fully cleared by credit notes, it transitions to `COMPLETED`; otherwise it transitions to `UNPAID`.
operationId: postInvoicePayable
parameters:
- name: invoicePayableId
in: path
required: true
schema:
type: string
format: uuid
responses:
default:
description: default response
content:
application/json;charset=UTF-8:
schema:
$ref: '#/components/schemas/ExternalInvoicePayableV1Model'
/v1/invoice-payables/{invoicePayableId}/reverse-clearing:
post:
tags:
- v1 - Invoice Payables
summary: Reverse invoice payable payment
description: Reverses a clearing applied to an invoice payable — either a bank payment (`BP`) or a credit note (`CN`) — identified by its accounting document ID. Use the `List invoice payable payments` endpoint to obtain the `accountingDocumentId` and `type` of the clearing to reverse. Reversing removes the clearing's effect from the ledger and transitions the invoice back to `UNPAID` or `PARTIALLY_PAID` depending on the remaining outstanding balance. Optionally set `shouldArchiveClearingDocument` to also archive the underlying bank payment or credit note.
operationId: reverseInvoicePayableClearing
parameters:
- name: invoicePayableId
in: path
required: true
schema:
type: string
format: uuid
requestBody:
content:
application/json;charset=UTF-8:
schema:
$ref: '#/components/schemas/ExternalReverseInvoicePayableClearingRequestV1Model'
responses:
default:
description: default response
content:
application/json;charset=UTF-8:
schema:
$ref: '#/components/schemas/ExternalInvoicePayableV1Model'
/v1/invoice-payables/{invoicePayableId}/submit-for-approval:
post:
tags:
- v1 - Invoice Payables
summary: Submit for approval
description: Submits an invoice for approval
operationId: submitInvoicePayableForApproval
parameters:
- name: invoicePayableId
in: path
required: true
schema:
type: string
format: uuid
requestBody:
content:
application/json;charset=UTF-8:
schema:
$ref: '#/components/schemas/ExternalSubmitForApprovalRequestV1Model'
responses:
'200':
description: 'Invoice approval submitted successfully. The invoice state will change to `APPROVAL_REQUESTED`. You must poll the invoice to check when it changes to `APPROVAL_PENDING`.
If the invoice fails to submit for approval, the state will change back to `IN_DRAFT` and the `failureContext` field will be populated with the error details.'
content:
application/json;charset=UTF-8:
schema:
$ref: '#/components/schemas/ExternalInvoicePayableV1Model'
/v1/invoice-payables/{invoicePayableId}/custom-properties:
patch:
tags:
- v1 - Invoice Payables
summary: Update the custom properties of a posted invoice payable
description: Replaces all custom fields on an invoice payable after it has been posted/approved (e.g. ready for payment release, scheduled, unpaid, partially paid, completed). Any custom property group not included in the request is removed. Use this to set fields such as a reconciliation link once the invoice has left the inbox. Editing is locked while approval is actively pending.
operationId: updateInvoicePayableCustomProperties
parameters:
- name: invoicePayableId
in: path
required: true
schema:
type: string
format: uuid
requestBody:
content:
application/json;charset=UTF-8:
schema:
$ref: '#/components/schemas/ExternalUpdateInvoicePayableCustomPropertiesRequestV1Model'
responses:
default:
description: default response
content:
application/json;charset=UTF-8:
schema:
$ref: '#/components/schemas/ExternalInvoicePayableV1Model'
components:
schemas:
ExternalPropertyObjectValueV1Model:
type: object
properties:
propertyId:
type: string
format: uuid
value:
type: string
valueId:
type: string
format: uuid
ExternalInvoicePayableLineItemV1Model:
type: object
properties:
id:
type: string
description: ID of the invoice payable line item.
format: uuid
invoicePayableId:
type: string
description: ID of the invoice payable this line item belongs to.
format: uuid
type:
type: string
description: 'Type of the invoice payable line item (vendor invoice or reimbursement).
⚠️ This enum is not exhaustive; new values may be added in the future.'
nullable: false
deprecated: false
enum:
- REIMBURSEMENT
- VENDOR_INVOICE
metadata:
$ref: '#/components/schemas/ExternalInvoicePayableLineItemMetadataV1Model'
amount:
type: integer
description: Amount in cents, including tax. When `lineItemsIncludeTax` is true, `amount` represents the full tax-inclusive amount for this line.
format: int64
nullable: true
netAmount:
type: integer
description: Net line amount in cents, excluding tax. When `lineItemsIncludeTax` is false, `netAmount` represents the base amount on which tax is calculated.
format: int64
nullable: true
description:
type: string
description: Description of this invoice payable line item.
nullable: true
taxCodeId:
type: string
description: ID of the tax code applied to this line item.
format: uuid
nullable: true
taxAmount:
type: integer
description: Tax amount in cents for this line item.
format: int64
nullable: true
accountId:
type: string
description: ID of the ledger account used to book this line item.
format: uuid
nullable: true
costCenterId:
type: string
description: ID of the cost center associated with this line item, if applicable.
format: uuid
nullable: true
amortizationStartDate:
type: string
description: Start date for amortization of this line item.
format: date
nullable: true
amortizationEndDate:
type: string
description: End date for amortization of this line item.
format: date
nullable: true
amortizationTemplateId:
type: string
description: ID of the amortization template to use for this line item within Light Ledger.
format: uuid
nullable: true
customPropertiesOld:
$ref: '#/components/schemas/ExternalCustomPropertiesObjectValuesV1Model'
aiValueSuggestions:
type: array
description: AI-generated suggestions for line item values (e.g. account, cost center, tax code).
nullable: true
items:
$ref: '#/components/schemas/ExternalAiValueSuggestionV1Model'
customProperties:
type: array
description: Custom properties set on this invoice payable line item.
nullable: true
items:
$ref: '#/components/schemas/ExternalCustomPropertyV1Model'
createdAt:
type: string
description: Timestamp when this invoice payable line item was created.
format: date-time
updatedAt:
type: string
description: Timestamp when this invoice payable line item was last updated.
format: date-time
ExternalInvoicePayablePaymentCreditNoteEntryV1Model:
title: Credit note
type: object
allOf:
- $ref: '#/components/schemas/ExternalInvoicePayablePaymentEntryV1Model'
- type: object
properties:
accountingDocumentId:
type: string
description: ID of the accounting document
format: uuid
amount:
type: integer
description: Credit note amount in smallest denomination
format: int64
nullable: true
documentNumber:
type: string
description: Document number
nullable: true
ExternalApproveInvoicePayableRequestV1Model:
type: object
properties:
note:
type: string
description: Optional note.
nullable: true
ExternalInvoicePayableLineItemMetadataV1Model:
type: object
properties:
type:
type: string
description: 'Type of the invoice payable line item (vendor invoice or reimbursement).
⚠️ This enum is not exhaustive; new values may be added in the future.'
nullable: false
deprecated: false
enum:
- REIMBURSEMENT
- VENDOR_INVOICE
description: Metadata for the invoice payable line item (ERP-specific fields and context).
discriminator:
propertyName: type
ExternalUpdateInvoicePayableCustomPropertiesRequestV1Model:
type: object
properties:
customProperties:
type: array
description: 'The full set of custom properties for the invoice payable. This replaces all existing custom properties: any group not included is removed, and sending an empty `valueIds`/`inlineValues` for a group clears that group. Can be used after the invoice has been posted/approved.'
items:
$ref: '#/components/schemas/ExternalSetCustomPropertyRequestV1Model'
ExternalInvoicePayablePaymentEntryV1Model:
type: object
properties:
type:
type: string
description: '- `BP` - Bank payment
- `CN` - Credit note
⚠️ This enum is not exhaustive; new values may be added in the future.'
enum:
- BP
- CN
description: Type of payment entry for an invoice payable payment
nullable: true
discriminator:
propertyName: type
oneOf:
- $ref: '#/components/schemas/ExternalInvoicePayablePaymentBankPaymentEntryV1Model'
- $ref: '#/components/schemas/ExternalInvoicePayablePaymentCreditNoteEntryV1Model'
ExternalMarkInvoicePayableAsPaidRequestV1Model:
type: object
properties:
amount:
type: integer
description: Amount paid in cents, in the invoice's currency. Must be greater than zero.
format: int64
bankAccountId:
type: string
description: ID of the bank account the payment was made from.
format: uuid
paymentAt:
type: string
description: Date/time the payment was made. Defaults to now if omitted.
format: date-time
nullable: true
comment:
type: string
description: Optional comment describing the payment.
nullable: true
paymentOption:
type: string
description: 'Whether to mark the invoice as fully paid or partially paid. Use `FULL` to clear the remaining outstanding balance regardless of `amount`, or `PARTIAL` to record an installment.
⚠️ This enum is not exhaustive; new values may be added in the future.'
nullable: false
deprecated: false
enum:
- FULL
- PARTIAL
ExternalCreateInvoicePayableRequestV1Model:
type: object
properties:
vendorId:
type: string
description: ID of the vendor.
format: uuid
nullable: true
amount:
type: integer
description: Invoice total amount in cents.
format: int64
nullable: true
currency:
type: string
nullable: true
example: USD
processingMode:
type: string
description: 'How the invoice should be processed (skip AI Parse or AI Parse + merge).
⚠️ This enum is not exhaustive; new values may be added in the future.'
nullable: false
deprecated: false
enum:
- DATA_ONLY
- AI_PARSE_AND_MERGE
companyEntityId:
type: string
description: ID of the company entity.
format: uuid
nullable: true
invoiceNumber:
type: string
description: Invoice number.
nullable: true
description:
type: string
description: Invoice description.
nullable: true
issuedDate:
type: string
description: Issue date of the original vendor invoice.
format: date
nullable: true
dueDate:
type: string
description: Payment due date of the invoice payable.
format: date
nullable: true
paymentAt:
type: string
description: Date/time when payment is scheduled or was executed for this invoice payable.
format: date-time
nullable: true
senderBankAccountId:
type: string
description: ID of the sender bank account from which this invoice payable will be paid.
format: uuid
nullable: true
lineItemsIncludeTax:
type: boolean
description: Whether invoice line item amounts are entered as tax-inclusive. When true, line item `amount` is expected to be the gross amount including tax; when false, line item `netAmount` is expected to be the base amount excluding tax.
nullable: true
lineItems:
type: array
description: List of line items to create with the invoice. This allows creating the invoice header and its line items in a single request.
nullable: true
items:
$ref: '#/components/schemas/ExternalCreateInvoicePayableLineItemRequestV1Model'
customProperties:
type: array
description: List of custom properties to set on the invoice.
nullable: true
items:
$ref: '#/components/schemas/ExternalSetCustomPropertyRequestV1Model'
localCurrencyFxRateOverride:
type: number
description: Custom FX rate for the ledger's local currency. If not provided, Light uses official ECB rates.
nullable: true
groupCurrencyFxRateOverride:
type: number
description: Custom FX rate for the ledger's group currency. If not provided, Light uses official ECB rates.
nullable: true
ExternalUpdateInvoicePayablePatchRequestV1Model:
type: object
properties:
vendorId:
type: string
description: ID of the vendor.
format: uuid
nullable: true
companyEntityId:
type: string
description: ID of the company entity.
format: uuid
nullable: true
invoiceNumber:
type: string
description: Invoice number.
nullable: true
amount:
type: integer
description: Invoice total amount in cents.
format: int64
nullable: true
currency:
type: string
nullable: true
example: USD
description:
type: string
description: Invoice description.
nullable: true
senderBankAccountId:
type: string
description: ID of the sender bank account from which this invoice payable will be paid.
format: uuid
nullable: true
fiNumber:
type: string
description: FI (Finnish reference) number associated with this invoice payable, if applicable.
nullable: true
norKidReference:
type: string
description: Norwegian KID reference associated with this invoice payable, if applicable.
nullable: true
swissPaymentReference:
type: string
description: Swiss payment reference (QR-Reference or Creditor Reference/SCOR) associated with this invoice payable, if applicable.
nullable: true
paymentAt:
type: string
description: Date/time when payment is scheduled or was executed for this invoice payable.
format: date-time
nullable: true
issuedDate:
type: string
description: Issue date of the original vendor invoice.
format: date
nullable: true
dueD
# --- truncated at 32 KB (97 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/light/refs/heads/main/openapi/light-v1-invoice-payables-api-openapi.yml