OpenAPI Specification
openapi: 3.0.0
info:
title: Xentral Account Tax API
version: v0.1
description: Xentral is an ERP platform.
contact:
name: Xentral
url: https://xentral.com
email: api@xentral.com
servers:
- url: https://{xentralId}.xentral.biz
description: Your Xentral Instance
variables:
xentralId:
default: xentral
- url: https://{domain}
description: Xentral at a custom domain
variables:
domain:
default: xentral.com
security:
- BearerAuth: []
tags:
- name: Tax
description: Tax resource
paths:
/api/v1/tax:
get:
tags:
- Tax
operationId: tax.list.v1
summary: 🔒 List Tax Entries
description: 'This endpoint is currently in Beta and available for testing. It may contain bugs, and breaking changes can occur at any time without prior notice. We do not recommend using Beta endpoints in production environments. Should you choose to use it in production, you assume full responsibility for any resulting issues.
Retrieves a list of tax entries.'
parameters:
- name: filter
in: query
style: deepObject
description: Filter parameters
schema:
type: array
items:
type: object
additionalProperties: false
properties:
key:
type: string
enum:
- name
- taxType
- taxRate
- countryCode
- zipCode
- isDefault
- isStandard
- defaultRevenueAccountNumber
- validFrom
- validUntil
- createdAt
- updatedAt
example: name
op:
type: string
enum:
- equals
- notEquals
- in
- notIn
- exactlyIn
- allIn
- allNotIn
- contains
- notContains
- startsWith
- endsWith
- greaterThan
- lessThan
- is
- lessThanOrEquals
- greaterThanOrEquals
value:
oneOf:
- type: string
description: Used for the operations 'equals', 'notEquals', 'contains', 'notContains', 'startsWith', 'endsWith' and 'is'.
title: String
- type: array
description: Used for the operations 'in', 'notIn', 'exactlyIn', 'allIn' and 'allNotIn'.
title: Array
items:
type: string
- in: query
name: page
required: false
style: deepObject
schema:
type: object
additionalProperties: false
required:
- number
- size
properties:
number:
type: string
pattern: \d+
description: Page number should be an integer greater than or equal to 1
size:
type: string
pattern: \d+
description: Page size should usually be an integer between 10 and 50.
- name: order
in: query
style: deepObject
schema:
type: array
items:
type: object
additionalProperties: false
properties:
field:
type: string
enum:
- id
- name
- taxType
- taxRate
- countryCode
- zipCode
- isDefault
- isStandard
- defaultRevenueAccountNumber
- validFrom
- validUntil
- createdAt
- updatedAt
dir:
type: string
enum:
- asc
- desc
responses:
'200':
description: Successful operation
content:
application/json:
schema:
type: object
additionalProperties: false
properties:
data:
type: array
items:
type: object
additionalProperties: true
description: Tax entry
properties:
id:
description: Tax ID
type: string
example: '1'
name:
description: Tax name
type: string
maxLength: 20
example: VAT 19%
taxType:
description: Tax type
type: string
maxLength: 50
example: standard
taxRate:
description: Tax rate
type: number
format: float
example: 19
countryCode:
description: Country code in ISO 3166-1 alpha-2 format
type: string
minLength: 2
maxLength: 2
example: DE
zipCode:
description: ZIP code
type: string
maxLength: 10
example: ''
isDefault:
description: Is default tax
type: boolean
example: true
isStandard:
description: Is standard tax
type: boolean
example: true
defaultRevenueAccountNumber:
description: Default revenue account number
type: string
example: '8400'
defaultDebitTaxAccountNumber:
description: Default debit tax account number
type: string
nullable: true
example: null
defaultCreditTaxAccountNumber:
description: Default credit tax account number
type: string
nullable: true
example: null
defaultCostAccountNumber:
description: Default cost account number
type: string
nullable: true
example: null
validFrom:
description: Valid from date
type: string
format: date-time
example: '2022-01-01T00:00:00Z'
validUntil:
description: Valid until date
type: string
format: date-time
nullable: true
example: null
createdAt:
description: Created at timestamp
type: string
format: date-time
example: '2022-01-01T00:00:00Z'
updatedAt:
description: Updated at timestamp
type: string
format: date-time
example: '2022-01-01T00:00:00Z'
example:
id: '1'
name: VAT 19%
taxType: standard
taxRate: 19
countryCode: DE
zipCode: ''
isDefault: true
isStandard: true
defaultRevenueAccountNumber: '8400'
defaultDebitTaxAccountNumber: null
defaultCreditTaxAccountNumber: null
defaultCostAccountNumber: null
validFrom: '2022-01-01T00:00:00Z'
validUntil: null
createdAt: '2022-01-01T00:00:00Z'
updatedAt: '2022-01-01T00:00:00Z'
'400':
description: XGL Problem
content:
application/problem+json:
schema:
type: object
description: XGL Problem specification
properties:
type:
type: string
description: URL of the problem
example: https://api.xentral.biz/problems/xgl-error
title:
type: string
description: title of the error. It should be always XGL Error
example: XGL Error
errorCode:
type: integer
description: Error code regarding the request failure
enum:
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
example: 1
message:
type: string
description: General description about the failed request
enum:
- Error listing tax obligations
- Error creating tax obligation
- Error listing taxes
- Error getting account information
- Error getting account mapping information
- Error listing account mappings
- Error creating account mapping
- Error updating account mapping
- Error deleting account mapping
- Error creating tax
- Error updating tax
- Error getting general ledger
example: Error getting account information
details:
type: object
description: Object containing the fields and their specifications
additionalProperties:
type: string
example:
field: Additional error detail
'401':
description: Unable to authenticate the client
content:
application/json:
schema:
type: object
properties:
message:
type: string
description: Error message explaining why the request failed.
example: 'Missing required scopes: customer:create.'
example:
message: 'Missing required scopes: customer:create.'
text/html:
schema:
type: string
example: Unauthorized
'403':
description: Unable to authorize the client
'404':
description: XGL Problem
content:
application/problem+json:
schema:
type: object
description: XGL Problem specification
properties:
type:
type: string
description: URL of the problem
example: https://api.xentral.biz/problems/xgl-error
title:
type: string
description: title of the error. It should be always XGL Error
example: XGL Error
errorCode:
type: integer
description: Error code regarding the request failure
enum:
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
example: 1
message:
type: string
description: General description about the failed request
enum:
- Error listing tax obligations
- Error creating tax obligation
- Error listing taxes
- Error getting account information
- Error getting account mapping information
- Error listing account mappings
- Error creating account mapping
- Error updating account mapping
- Error deleting account mapping
- Error creating tax
- Error updating tax
- Error getting general ledger
example: Error getting account information
details:
type: object
description: Object containing the fields and their specifications
additionalProperties:
type: string
example:
field: Additional error detail
'429':
description: Too many API calls made.
'500':
description: XGL Problem
content:
application/problem+json:
schema:
type: object
description: XGL Problem specification
properties:
type:
type: string
description: URL of the problem
example: https://api.xentral.biz/problems/xgl-error
title:
type: string
description: title of the error. It should be always XGL Error
example: XGL Error
errorCode:
type: integer
description: Error code regarding the request failure
enum:
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
example: 1
message:
type: string
description: General description about the failed request
enum:
- Error listing tax obligations
- Error creating tax obligation
- Error listing taxes
- Error getting account information
- Error getting account mapping information
- Error listing account mappings
- Error creating account mapping
- Error updating account mapping
- Error deleting account mapping
- Error creating tax
- Error updating tax
- Error getting general ledger
example: Error getting account information
details:
type: object
description: Object containing the fields and their specifications
additionalProperties:
type: string
example:
field: Additional error detail
post:
tags:
- Tax
operationId: tax.create.v1
summary: 🔒 Create tax
description: 'This endpoint is currently in Beta and available for testing. It may contain bugs, and breaking changes can occur at any time without prior notice. We do not recommend using Beta endpoints in production environments. Should you choose to use it in production, you assume full responsibility for any resulting issues.
Creates a single tax entry.'
requestBody:
description: Create a tax object
content:
application/json:
schema:
type: object
additionalProperties: true
properties:
name:
type: string
maxLength: 20
description: Tax name
taxType:
type: string
maxLength: 50
default: standard
description: Tax type
taxRate:
type: number
format: float
description: Tax rate
countryCode:
type: string
minLength: 2
maxLength: 2
description: Country code in ISO 3166-1 alpha-2 format
zipCode:
type: string
maxLength: 10
default: ''
description: ZIP code
isDefault:
type: boolean
default: false
description: Is default tax
isStandard:
type: boolean
default: false
description: Is standard tax
defaultRevenueAccountNumber:
type: string
description: Default revenue account number
defaultDebitTaxAccountNumber:
type: string
nullable: true
description: Default debit tax account number
defaultCreditTaxAccountNumber:
type: string
nullable: true
description: Default credit tax account number
defaultCostAccountNumber:
type: string
nullable: true
description: Default credit tax account number
validFrom:
type: string
format: date-time
description: Valid from date
validUntil:
type: string
format: date-time
nullable: true
description: Valid until date
examples:
standard tax:
value:
name: VAT 19%
taxType: standard
taxRate: 19
countryCode: DE
zipCode: ''
isDefault: true
isStandard: true
defaultRevenueAccountNumber: '8400'
validFrom: '2022-01-01T00:00:00Z'
responses:
'201':
description: Created
content:
application/json:
schema:
type: object
additionalProperties: true
description: Tax entry
properties:
id:
description: Tax ID
type: string
example: '1'
name:
description: Tax name
type: string
maxLength: 20
example: VAT 19%
taxType:
description: Tax type
type: string
maxLength: 50
example: standard
taxRate:
description: Tax rate
type: number
format: float
example: 19
countryCode:
description: Country code in ISO 3166-1 alpha-2 format
type: string
minLength: 2
maxLength: 2
example: DE
zipCode:
description: ZIP code
type: string
maxLength: 10
example: ''
isDefault:
description: Is default tax
type: boolean
example: true
isStandard:
description: Is standard tax
type: boolean
example: true
defaultRevenueAccountNumber:
description: Default revenue account number
type: string
example: '8400'
defaultDebitTaxAccountNumber:
description: Default debit tax account number
type: string
nullable: true
example: null
defaultCreditTaxAccountNumber:
description: Default credit tax account number
type: string
nullable: true
example: null
defaultCostAccountNumber:
description: Default cost account number
type: string
nullable: true
example: null
validFrom:
description: Valid from date
type: string
format: date-time
example: '2022-01-01T00:00:00Z'
validUntil:
description: Valid until date
type: string
format: date-time
nullable: true
example: null
createdAt:
description: Created at timestamp
type: string
format: date-time
example: '2022-01-01T00:00:00Z'
updatedAt:
description: Updated at timestamp
type: string
format: date-time
example: '2022-01-01T00:00:00Z'
example:
id: '1'
name: VAT 19%
taxType: standard
taxRate: 19
countryCode: DE
zipCode: ''
isDefault: true
isStandard: true
defaultRevenueAccountNumber: '8400'
defaultDebitTaxAccountNumber: null
defaultCreditTaxAccountNumber: null
defaultCostAccountNumber: null
validFrom: '2022-01-01T00:00:00Z'
validUntil: null
createdAt: '2022-01-01T00:00:00Z'
updatedAt: '2022-01-01T00:00:00Z'
'400':
description: XGL Problem
content:
application/problem+json:
schema:
type: object
description: XGL Problem specification
properties:
type:
type: string
description: URL of the problem
example: https://api.xentral.biz/problems/xgl-error
title:
type: string
description: title of the error. It should be always XGL Error
example: XGL Error
errorCode:
type: integer
description: Error code regarding the request failure
enum:
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
example: 1
message:
type: string
description: General description about the failed request
enum:
- Error listing tax obligations
- Error creating tax obligation
- Error listing taxes
- Error getting account information
- Error getting account mapping information
- Error listing account mappings
- Error creating account mapping
- Error updating account mapping
- Error deleting account mapping
- Error creating tax
- Error updating tax
- Error getting general ledger
example: Error getting account information
details:
type: object
description: Object containing the fields and their specifications
additionalProperties:
type: string
example:
field: Additional error detail
'401':
description: Unable to authenticate the client
content:
application/json:
schema:
type: object
properties:
message:
type: string
description: Error message explaining why the request failed.
example: 'Missing required scopes: customer:create.'
example:
message: 'Missing required scopes: customer:create.'
text/html:
schema:
type: string
example: Unauthorized
'403':
description: Unable to authorize the client
'404':
description: XGL Problem
content:
application/problem+json:
schema:
type: object
description: XGL Problem specification
properties:
type:
type: string
description: URL of the problem
example: https://api.xentral.biz/problems/xgl-error
title:
type: string
description: title of the error. It should be always XGL Error
example: XGL Error
errorCode:
type: integer
description: Error code regarding the request failure
enum:
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
example: 1
message:
type: string
description: General description about the failed request
enum:
- Error listing tax obligations
- Error creating tax obligation
- Error listing taxes
- Error getting account information
- Error getting account mapping information
- Error listing account mappings
- Error creating account mapping
- Error updating account mapping
- Error deleting account mapping
- Error creating tax
- Error updating tax
- Error getting general ledger
example: Error getting account information
details:
type: object
description: Object containing the fields and their specifications
additionalProperties:
type: string
example:
field: Additional error detail
'415':
description: Resource representation send in the request is not supported.
'429':
description: Too many API calls made.
'500':
description: XGL Problem
content:
application/problem+json:
schema:
type: object
description: XGL Problem specification
properties:
type:
type: string
description: URL of the problem
example: https://api.xentral.biz/problems/xgl-error
title:
type: string
description: title of the error. It should be always XGL Error
example: XGL Error
errorCode:
type: integer
description: Error code regarding the request failure
enum:
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
example: 1
message:
type: string
description: General description about the failed request
enum:
- Error listing tax obligations
- Error creating tax obligation
- Error listing taxes
- Error getting account information
- Error getting account mapping information
- Error listing account mappings
- Error creating account mapping
- Error updating account mapping
- Error deleting account mapping
- Error creating tax
- Error updating tax
- Error getting general ledger
example: Error getting account information
details:
type: object
description: Object containing the fields and their specifications
additionalProperties:
type: string
example:
field: Additional error detail
/api/v1/tax/{id}:
get:
tags:
- Tax
operationId: tax.get.v1
summary: 🔒 Get Tax Entry by ID
description: 'This endpoint is currently in Beta and available for testing. It may contain bugs, and breaking changes can occur at any time without prior notice. We do not recommend using Beta endpoints in production environments. Should you choose to use it in production, you assume full responsibility for any resulting issues.
Retrieves a specific tax entry by its ID.'
parameters:
- name: id
in: path
required: true
description: The ID of the tax entry to retrieve.
schema:
type: string
responses:
'200':
description: Successful operation
content:
application/json:
schema:
type: object
additionalProperties: true
required:
- data
properties:
data:
type: object
additionalProperties: true
description: Tax entry
properties:
id:
description: Tax ID
type: string
example: '1'
name:
description: Tax name
type: string
maxLength: 20
example: VAT 19%
taxType:
description: Tax type
type: string
maxLength: 50
example: standard
taxRate:
description: Tax rate
type: number
format: float
example: 19
countryCode:
# --- truncated at 32 KB (53 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/xentral/refs/heads/main/openapi/xentral-tax-api-openapi.yml