Candis Exports API
Export approved invoices and postings to accounting/ERP systems.
Export approved invoices and postings to accounting/ERP systems.
openapi: 3.0.0
info:
title: Candis Core Data Exports API
description: Candis API for exporting approved invoices and postings, managing master core data (contacts, general ledger accounts, cost dimensions, delivery costs), and reading invoice, reimbursement item, and purchase request data. Reconstructed by the API Evangelist enrichment pipeline from the per-operation OpenAPI fragments embedded in the Candis ReadMe developer reference (developer.candis.io).
version: 1.0.0
contact:
name: Candis
url: https://developer.candis.io/
x-apievangelist:
method: searched
source: Reconstructed from per-operation OpenAPI fragments published in the Candis developer reference (https://developer.candis.io/reference/*) via ReadMe; merged and filtered to Candis /v1/organizations operations by the API Evangelist enrichment pipeline.
generated: '2026-07-18'
servers:
- url: https://api.candis.io
description: Production
security:
- bearerAuth: []
tags:
- name: Exports
description: Export approved invoices and postings to accounting/ERP systems.
paths:
/v1/organizations/{organizationId}/exports:
post:
operationId: createExport
summary: Create an Export
description: Create an Export and return basic details. Initial status of the Export will be "EXPORTING".
parameters:
- name: organizationId
required: true
in: path
description: The organization ID.
example: alpha-organization
schema:
format: slug
type: string
requestBody:
required: false
content:
application/json:
schema:
type: object
properties:
entityType:
type: string
description: Posting Type for which you need to create an Export for.
example: DOCUMENT
default: DOCUMENT
enum:
- DOCUMENT
- REIMBURSEMENT_ITEM
- CARD_TRANSACTION
nullable: true
responses:
'201':
description: ''
content:
application/json:
schema:
type: object
properties:
id:
type: string
description: The unique identifier of the export.
example: 86e29aff-ba75-492d-85f6-80d802c4fe69
postingsCount:
type: number
description: The number of postings in the export.
example: 10
status:
type: string
description: 'Current status of the export.<br><br>EXPORTING: The export is in progress.'
example: EXPORTING
enum:
- EXPORTING
createdAt:
format: date-time
type: string
description: The date and time when the export was initiated.
example: '2021-08-31T12:00:00Z'
required:
- id
- postingsCount
- status
- createdAt
'400':
description: ''
content:
application/json:
schema:
type: object
properties:
errorCode:
type: string
description: The Error Code assigned to the issue encountered
enum:
- UNAUTHORIZED
- FORBIDDEN
- BAD_REQUEST
- SERVICE_UNAVAILABLE
- INTERNAL_SERVER_ERROR
- MISSING_REQUESTER_ID
- BAD_INPUT
- NOT_FOUND
- EXPORTABLE_POSTINGS_NOT_FOUND
- TOO_MANY_REQUEST
- FAILED_TO_FETCH_DOWNLOAD_URL
- FILE_NOT_FOUND
message:
type: string
description: Description about the issue encountered
requestId:
type: string
description: This is the unique identifier for the request.
errors:
description: This is an optional output that can provide more details about the input parameters that may have caused an issue.
type: array
items:
type: object
properties:
index:
type: string
description: This identifies the index of the payload that has an issue.
property:
type: string
description: This identifies the parameter that has an issue.
messages:
description: This provides more details about the parameter that has an issue.
type: array
items:
type: string
required:
- property
- messages
required:
- errorCode
- message
'503':
description: ''
content:
application/json:
schema:
type: object
properties:
errorCode:
type: string
description: The Error Code assigned to the issue encountered
enum:
- UNAUTHORIZED
- FORBIDDEN
- BAD_REQUEST
- SERVICE_UNAVAILABLE
- INTERNAL_SERVER_ERROR
- MISSING_REQUESTER_ID
- BAD_INPUT
- NOT_FOUND
- EXPORTABLE_POSTINGS_NOT_FOUND
- TOO_MANY_REQUEST
- FAILED_TO_FETCH_DOWNLOAD_URL
- FILE_NOT_FOUND
message:
type: string
description: Description about the issue encountered
requestId:
type: string
description: This is the unique identifier for the request.
required:
- errorCode
- message
tags:
- Exports
security:
- bearer: []
get:
operationId: getExports
summary: Get a list Exports
description: Get a list of past Exports in the Organization.
parameters:
- name: offset
required: false
in: query
description: The offset of the first element in the list.
example: 0
schema:
minimum: 0
default: 0
type: number
- name: limit
required: false
in: query
description: The maximum number of elements to return.
example: 50
schema:
minimum: 1
default: 50
type: number
- name: organizationId
required: true
in: path
description: The organization ID.
example: alpha-organization
schema:
format: slug
responses:
'200':
description: ''
content:
application/json:
schema:
type: object
properties:
exports:
description: List of exports.
type: array
items:
type: object
properties:
id:
type: string
description: The unique identifier of the export.
example: 86e29aff-ba75-492d-85f6-80d802c4fe69
postingsCount:
type: number
description: The number of postings in the export.
example: 10
status:
type: string
description: 'Current status of the export.<br><br>EXPORTING: The export processing is still in progress.<br>EXPORTED: The export is completed.<br>FAILED: The export failed.<br>PARTIALLY_EXPORTED: The export was partially successful.'
example: EXPORTED
enum:
- EXPORTING
- EXPORTED
- FAILED
- PARTIALLY_EXPORTED
createdAt:
format: date-time
type: string
description: The date and time when the export was initiated.
example: '2024-01-01T12:00:00Z'
required:
- id
- postingsCount
- status
- createdAt
pagination:
description: Pagination Data providing information and the record count, page size and total count
allOf:
- type: object
properties:
pageCount:
type: number
example: 10
description: This is the total number of pages available with records
pageSize:
type: number
example: 50
description: This is the length of size of the current page
totalCount:
type: number
example: 500
description: This is the total count of export records available
required:
- pageCount
- pageSize
- totalCount
required:
- exports
- pagination
'400':
description: ''
content:
application/json:
schema:
type: object
properties:
errorCode:
type: string
description: The Error Code assigned to the issue encountered
enum:
- UNAUTHORIZED
- FORBIDDEN
- BAD_REQUEST
- SERVICE_UNAVAILABLE
- INTERNAL_SERVER_ERROR
- MISSING_REQUESTER_ID
- BAD_INPUT
- NOT_FOUND
- EXPORTABLE_POSTINGS_NOT_FOUND
- TOO_MANY_REQUEST
- FAILED_TO_FETCH_DOWNLOAD_URL
- FILE_NOT_FOUND
message:
type: string
description: Description about the issue encountered
requestId:
type: string
description: This is the unique identifier for the request.
errors:
description: This is an optional output that can provide more details about the input parameters that may have caused an issue.
type: array
items:
type: object
properties:
index:
type: string
description: This identifies the index of the payload that has an issue.
property:
type: string
description: This identifies the parameter that has an issue.
messages:
description: This provides more details about the parameter that has an issue.
type: array
items:
type: string
required:
- property
- messages
required:
- errorCode
- message
'503':
description: ''
content:
application/json:
schema:
type: object
properties:
errorCode:
type: string
description: The Error Code assigned to the issue encountered
enum:
- UNAUTHORIZED
- FORBIDDEN
- BAD_REQUEST
- SERVICE_UNAVAILABLE
- INTERNAL_SERVER_ERROR
- MISSING_REQUESTER_ID
- BAD_INPUT
- NOT_FOUND
- EXPORTABLE_POSTINGS_NOT_FOUND
- TOO_MANY_REQUEST
- FAILED_TO_FETCH_DOWNLOAD_URL
- FILE_NOT_FOUND
message:
type: string
description: Description about the issue encountered
requestId:
type: string
description: This is the unique identifier for the request.
required:
- errorCode
- message
tags:
- Exports
security:
- bearer: []
/v1/organizations/{organizationId}/files/{fileId}:
get:
operationId: downloadFile
summary: Download file by ID
description: Download PDF or XML file by ID.
parameters:
- name: fileId
required: true
in: path
description: File ID
schema:
type: string
- name: organizationId
required: true
in: path
description: The organization ID.
example: alpha-organization
schema: {}
responses:
'200':
content:
application/json:
schema:
type: string
format: binary
description: ''
'400':
description: ''
content:
application/json:
schema:
type: object
properties:
errorCode:
type: string
description: The Error Code assigned to the issue encountered
enum:
- UNAUTHORIZED
- FORBIDDEN
- BAD_REQUEST
- SERVICE_UNAVAILABLE
- INTERNAL_SERVER_ERROR
- MISSING_REQUESTER_ID
- BAD_INPUT
- NOT_FOUND
- EXPORTABLE_POSTINGS_NOT_FOUND
- TOO_MANY_REQUEST
- FAILED_TO_FETCH_DOWNLOAD_URL
- FILE_NOT_FOUND
message:
type: string
description: Description about the issue encountered
requestId:
type: string
description: This is the unique identifier for the request.
errors:
description: This is an optional output that can provide more details about the input parameters that may have caused an issue.
type: array
items:
type: object
properties:
index:
type: string
description: This identifies the index of the payload that has an issue.
property:
type: string
description: This identifies the parameter that has an issue.
messages:
description: This provides more details about the parameter that has an issue.
type: array
items:
type: string
required:
- property
- messages
required:
- errorCode
- message
'503':
description: ''
content:
application/json:
schema:
type: object
properties:
errorCode:
type: string
description: The Error Code assigned to the issue encountered
enum:
- UNAUTHORIZED
- FORBIDDEN
- BAD_REQUEST
- SERVICE_UNAVAILABLE
- INTERNAL_SERVER_ERROR
- MISSING_REQUESTER_ID
- BAD_INPUT
- NOT_FOUND
- EXPORTABLE_POSTINGS_NOT_FOUND
- TOO_MANY_REQUEST
- FAILED_TO_FETCH_DOWNLOAD_URL
- FILE_NOT_FOUND
message:
type: string
description: Description about the issue encountered
requestId:
type: string
description: This is the unique identifier for the request.
required:
- errorCode
- message
security:
- bearer: []
tags:
- Exports
/v1/organizations/{organizationId}/exports/{exportId}:
get:
operationId: getExport
summary: Get an Export
description: Get an Export details by ID.
parameters:
- name: exportId
required: true
in: path
description: The export ID.
example: 86e29aff-ba75-492d-85f6-80d802c4fe69
schema:
type: string
- name: organizationId
required: true
in: path
description: The organization ID.
example: alpha-organization
schema:
type: string
responses:
'200':
description: ''
content:
application/json:
schema:
type: object
properties:
id:
type: string
description: The unique identifier of the export.
example: 86e29aff-ba75-492d-85f6-80d802c4fe69
postingsCount:
type: number
description: The number of postings in the export.
example: 10
status:
type: string
description: 'Current status of the export.<br><br>EXPORTING: The export processing is still in progress.<br>EXPORTED: The export is completed.<br>FAILED: The export failed.<br>PARTIALLY_EXPORTED: The export was partially successful.'
example: EXPORTED
enum:
- EXPORTING
- EXPORTED
- FAILED
- PARTIALLY_EXPORTED
createdAt:
format: date-time
type: string
description: The date and time when the export was initiated.
example: '2024-01-01T12:00:00Z'
required:
- id
- postingsCount
- status
- createdAt
'400':
description: ''
content:
application/json:
schema:
type: object
properties:
errorCode:
type: string
description: The Error Code assigned to the issue encountered
enum:
- UNAUTHORIZED
- FORBIDDEN
- BAD_REQUEST
- SERVICE_UNAVAILABLE
- INTERNAL_SERVER_ERROR
- MISSING_REQUESTER_ID
- BAD_INPUT
- NOT_FOUND
- EXPORTABLE_POSTINGS_NOT_FOUND
- TOO_MANY_REQUEST
- FAILED_TO_FETCH_DOWNLOAD_URL
- FILE_NOT_FOUND
message:
type: string
description: Description about the issue encountered
requestId:
type: string
description: This is the unique identifier for the request.
errors:
description: This is an optional output that can provide more details about the input parameters that may have caused an issue.
type: array
items:
type: object
properties:
index:
type: string
description: This identifies the index of the payload that has an issue.
property:
type: string
description: This identifies the parameter that has an issue.
messages:
description: This provides more details about the parameter that has an issue.
type: array
items:
type: string
required:
- property
- messages
required:
- errorCode
- message
'404':
description: ''
content:
application/json:
schema:
type: object
properties:
errorCode:
type: string
description: The Error Code assigned to the issue encountered
enum:
- UNAUTHORIZED
- FORBIDDEN
- BAD_REQUEST
- SERVICE_UNAVAILABLE
- INTERNAL_SERVER_ERROR
- MISSING_REQUESTER_ID
- BAD_INPUT
- NOT_FOUND
- EXPORTABLE_POSTINGS_NOT_FOUND
- TOO_MANY_REQUEST
- FAILED_TO_FETCH_DOWNLOAD_URL
- FILE_NOT_FOUND
message:
type: string
description: Description about the issue encountered
requestId:
type: string
description: This is the unique identifier for the request.
errors:
description: This is an optional output that can provide more details about the input parameters that may have caused an issue.
type: array
items:
type: object
properties:
index:
type: string
description: This identifies the index of the payload that has an issue.
property:
type: string
description: This identifies the parameter that has an issue.
messages:
description: This provides more details about the parameter that has an issue.
type: array
items:
type: string
required:
- property
- messages
required:
- errorCode
- message
'503':
description: ''
content:
application/json:
schema:
type: object
properties:
errorCode:
type: string
description: The Error Code assigned to the issue encountered
enum:
- UNAUTHORIZED
- FORBIDDEN
- BAD_REQUEST
- SERVICE_UNAVAILABLE
- INTERNAL_SERVER_ERROR
- MISSING_REQUESTER_ID
- BAD_INPUT
- NOT_FOUND
- EXPORTABLE_POSTINGS_NOT_FOUND
- TOO_MANY_REQUEST
- FAILED_TO_FETCH_DOWNLOAD_URL
- FILE_NOT_FOUND
message:
type: string
description: Description about the issue encountered
requestId:
type: string
description: This is the unique identifier for the request.
required:
- errorCode
- message
tags:
- Exports
security:
- bearer: []
/v1/organizations/{organizationId}/exports/{exportId}/postings:
get:
operationId: getExportPostings
summary: Get a list of Export Postings
description: Get a list of Postings that were exported in the Export.
parameters:
- name: exportId
required: true
in: path
description: The export ID.
example: 86e29aff-ba75-492d-85f6-80d802c4fe69
schema:
type: string
- name: organizationId
required: true
in: path
description: The organization ID.
example: alpha-organization
schema:
type: string
responses:
'200':
description: ''
content:
application/json:
schema:
type: object
properties:
successfulPostings:
type: array
description: Successfully exported invoices
items:
oneOf:
- title: Invoice Posting
type: object
properties:
id:
type: string
description: Unique identifier of Entity
example: e4cf0d1b-8514-4437-9b7f-2648b87ec8f5
entityGuid:
type: string
description: Candis Unique identifier of the posting.
example: e4cf0d1b-8514-4437-9b7f-2648b87ec8f5
status:
type: string
description: 'Status of the posting.<br>Exported: The posting was successfully exported.'
enum:
- EXPORTED
example: EXPORTED
amount:
description: Total Amount information of the posting.
allOf:
- type: object
properties:
value:
type: number
description: Total amount of the posting.
example: 100
currencyCode:
type: string
description: ISO 4217 currency code.
example: EUR
required:
- value
- currencyCode
contact:
description: Contact information.
allOf:
- type: object
properties:
accountsPayableNumber:
type: string
description: Accounts payable number.
example: '7000001'
accountsReceivableNumber:
type: string
description: Accounts receivable number.
example: '7000004'
name:
type: string
description: Name of the contact.
example: John Doe
invoiceId:
type: string
description: Invoice ID / Invoice Number mentioned on the invoice.
example: '1234'
invoiceDate:
type: string
format: date-time
description: Date of the posting.
example: '2024-01-01T00:00:00Z'
purchaseOrder:
description: Purchase Order Information.
allOf:
- type: object
properties:
orderNumber:
type: string
description: Purchase Order number attached to the Posting.
example: PO-001
required:
- orderNumber
files:
description: Downloadable files information.
type: array
items:
type: object
properties:
id:
type: string
description: File id
example: 60ace9d227d897fc64add503
url:
type: string
description: Download URL of the file.
example: https://api.candis.io/v1/organization/org-id/files/60ace9d227d897fc64add503
name:
type: string
description: Name of the file.
example: invoice.pdf
type:
type: string
enum:
- AUDIT_TRAIL
- ATTACHMENT
- INVOICE
- XRECHNUNG
description: 'Type of the file.<br><br>AUDIT_TRAIL: Contains all the activity related to processing of the posting.<br>ATTACHMENT: Contains additional information related to the posting.<br>INVOICE: The invoice pdf document.<br>XRECHNUNG: The XRechnung xml document.'
example: INVOICE
required:
- id
- url
- name
- type
url:
type: string
description: Candis URL of the posting.
example: https://my.candis.io/alpha-organization/archive/e4cf0d1b-8514-4437-9b7f-2648b87ec8f5
accountingArea:
description: Accounting Area Information.
allOf:
- type: object
properties:
name:
type: string
description: Accounting Area attached to the Posting.
example: AA-001
description:
type: string
description: Description of Accounting Area attached to the Posting.
example: Accounting Area 1
required:
- name
- description
deliveryDate:
# --- truncated at 32 KB (85 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/candis/refs/heads/main/openapi/candis-exports-api-openapi.yml