1. Overview

1.1. Version information

Version : 1.8

1.2. URI scheme

Host : app.freefinance.at
BasePath : /api/1.1
Schemes : HTTPS

1.3. Tags

  • Accounting - Rebook

  • Bank Statements

  • Cash Register - Daily closing

  • Cash Register - Receipt

  • Cash Register - Setup

  • Core Services

  • Financial Setup

  • Incoming and outgoing invoices (accounting) - Incoming invoice

  • Incoming and outgoing invoices (accounting) - Outgoing invoice

  • Invoices and documents - Credit memo

  • Invoices and documents - Delivery note

  • Invoices and documents - Invoice

  • Invoices and documents - Offer

  • Invoices and documents - Order confirmation

  • Invoices and documents - Setup

  • Item Management

  • Master Data Management - Customer

  • Master Data Management - Supplier

  • Notifications

2. Examples

2.1. Authentication

To obtain a JWT for authenticating over the API, your application has to be authorized over OAuth2 first.
Depending on the type of your app, one of these flows can be used:

  • Auth code flow: You redirect the user to our application for a log-in and get a code returned to a predetermined URL of your choice.
    This code can then be exchanged for a JWT and a refresh token.
    This method is recommended for web-based apps that can handle URL redirects.

  • Pairing flow: The user starts a pairing process in the web UI of our application and enters the displayed pairing code in your app.
    You can then exchange this pairing code directly for a JWT and refresh token.
    This method is available for locally installed and native apps.

  • Trusted servers can generate a signed JWT themselves and exchange it for a valid login JWT.
    This method does not use refresh tokens and is only available to trusted partners.

2.1.1. Authorization code flow

First, you redirect the user to the Oauth2 endpoint of our application and supply your app credentials as query parameters.

Request
GET <host>/oauth2/auth?response_type=code&client_id=APP_ID&redirect_uri=REDIRECT_URI&state=STATE

Provide the following parameters:

  • APP_ID: The key of your app that you received as part of the key/secret pair from us.

  • REDIRECT_URI: One of the exact redirect URIs (URL-encoded) that you registered with us for your app.
    Our application will return the authorization code to this URI.

  • STATE: A custom string of your choice.
    Our application will return this string together with the authorization code.
    You can use this for example to pass your session or user identifiers so you can map the return call to your internal user later.

Once the user has logged in and authorized your app, he will be redirected to the callback URI with the query parameters code and state.
The state is the string you supplied for the state parameter (if any).
You can then exchange the code for tokens:

Request
POST <host>/oauth2/token
Content-Type: application/x-www-form-urlencoded
grant_type=authorization_code&
code=AUTH_CODE&
client_id=APP_ID&
client_secret=APP_SECRET

Provide the following parameters:

  • AUTH_CODE: The code you received as parameter in the callback from our application to your redirect URI.

  • APP_ID: The key of your app that you received as part of the key/secret pair from us and used to obtain the auth code.

  • APP_SECRET: The secret you have been given from us as part of the key/secret pair.
    Note that only server-based web apps receive a secret - if you have a client-based app, you were not given a secret and must not provide this parameter.

Response
HTTP/1.1 200 OK
Content-Type: application/json
{
    "access_token":"eyJhbGciOiJ...",
    "refresh_token":"myq....",
    "expires_in":3600
}

The access_token is a JWT that can be used for API calls and is valid as the expires_in field indicates (typically one hour).
The refresh token can be used to obtain a new access token when it expires - see the "Using a refresh token" example.

2.1.2. Pairing flow

One the user has started a pairing process in our application, a short pairing code will be shown.
The user then enters the pairing code in your app, and you can exchange it for tokens with the API.
The code is valid for five minutes.

The Oauth2 password flow is used, but the password parameter is a temporary, randomly generated code:

Request
POST <host>/oauth2/token
Content-Type: application/x-www-form-urlencoded
grant_type=password&
username=USERNAME&
password=PAIRING_CODE&
client_id=APP_ID

Provide the following parameters:

  • USERNAME: The name of the user account that was used in our application to obtain the pairing code.

  • PAIRING_CODE: The pairing code displayed to the user - not his actual password! Do not ask the user for his password or provide it as parameter - it will not be accepted.

  • APP_ID: The key of your app that you received from us and that your user selected when obtaining the pairing code.

Response
HTTP/1.1 200 OK
Content-Type: application/json
{
    "access_token":"eyJhbGciOiJ...",
    "refresh_token":"myq....",
    "expires_in":3600
}

2.1.3. Using a refresh token

A returned refresh token is valid for one month and can be used to obtain a new access and refresh token.

Request
POST <host>/oauth2/token
Content-Type: application/x-www-form-urlencoded
grant_type=refresh_token&
refresh_token=REFRESH_TOKEN&
client_id=APP_ID

The server will return an access token and a new refresh token.The old refresh token expires with a successful call.

Response
HTTP/1.1 200 OK
Content-Type: application/json
{
    "access_token":"eyJhbGciOiJ...",
    "refresh_token":"af3....",
    "expires_in":3600
}

2.1.4. JWT authentication

Trusted issuers have their public keys registered with the application and can issue a JWT which can be used as an OAuth credential.The JWT must have the following structure:

{
    "iss":"ISSUER_ID", (1)
    "sub":"USERNAME", (2)
    "iat":14...30,
    "nbf":14...30,
    "exp":14...30,
    "cid":"APPLICATION_CLIENT_ID", (3)
    "jti":"9ed...6f89" (4)
 }
  1. The issuing client id (referred to as client_id in other flows) registered with the application.The JWT must be signed with the key assigned to this issuer.

  2. The user name of the target user for which this JWT is issued.The user must have allowed access for this client.

  3. The application client id for which the user has access rights.This is the 4-digit id visible in the web UI.
    The issued jwt will be authorized for this client id only.

  4. An optional id field which can be used to identify the token.

The nbf and exp must be valid timestamps and the token not be expired.The application may reject tokens with unusually large validity timespans (weeks or months).

A signed, encoded JWT is then supplied in the JWT bearer authentication flow.

Request
POST <host>/oauth2/token
Content-Type: application/x-www-form-urlencoded
grant_type=urn:ietf:params:oauth:grant-type:jwt-bearer&
assertion=eyJhbGci...oGgnCiw

The assertion field contains the JWT.
Note that unlike other flows no client_id is supplied since it is already part of the JWT.

The server will respond with an access token.
Since the issuer can always generate new JWTs, no request token is returned.

Response
HTTP/1.1 200 OK
Content-Type: application/json
{
    "access_token": "eyJhbGc....XmTEjg",
    "expires_in": 3600
}

2.2. Incoming and outgoing invoices (accounting)

Incoming and outgoing invoices are the primary method of creating incomes and expenses.
Two types exist: incoming invoices define expenses, and outgoing invoices define incomes.

An invoice may have none, one or several bookings, and each booking in turn has a journal.
Journals are realized incomes and outgos and created implicitly by the backend when required.

Payment works differently depending on the type of your bookkeeping registered with the client:

  • For single-entry accounting, an unpaid invoice does not yet create a booking.
    The booking (and its journal) is created once the invoice is marked as paid.
    Invoices can only be marked as paid in full - there are no partial payments.

  • In double-entry accounting, every invoice automatically creates a booking and journal against an unpaid contra account (payables and receivables).
    The invoice can then have one or several payments, which create rebooks from this account to the payment account.
    Invoices can be paid incrementally or in full.

2.2.1. Single-entry accounting (Einnahmen Ausgaben Rechnung)

Create a new incoming invoice

This example creates an unpaid incoming invoice with the minimal set of required fields.
No booking is created, and the invoice does not have a sequence number yet.

Request
POST /api/1.1/incoming_invoices
Content-Type: application/json
Authorization: Bearer eyJhbGci...Vm-yw
{
  "invoiceDate": "2020-12-31",
  "lines": [
    {
      "account": "7200", (1)
      "amount": 12,
      "amountType": "N"
    }
  ]
}
  1. The /accounts API returns available account codes for use.
    Incoming invoices commonly use the A account type.

Response
HTTP/1.1 200 OK
Content-Type: application/json;charset=UTF-8
{
  "result": {
    "id": "b40e3353-0da4-49f8-9c67-33e633316f26",
    "invoiceSequence": "",
    "invoiceDate": "2020-12-31",
    "netTotal": 12.00,
    "taxTotal": 2.40,
    "total": 14.40,
    "remainingTotal": 14.40,
    "remainingTotalInMainCurrency": 14.40,
    "currency": "EUR",
    "currencyRate": 1,
    "lines": [
      {
        "amount": 12,
        "amountType": "N",
        "account": "7200",
        "taxEntry": "020",
        "netAmount": 12.00,
        "taxAmount": 2.40,
        "totalAmount": 14.40
      }
    ],
    "bookings": []
  },
  "warnings": [],
  "infos": []
}

This example creates a paid incoming invoice with a supplier from the /suppliers resource.

Request
POST /api/1.1/incoming_invoices
Content-Type: application/json
Authorization: Bearer eyJhbGci...Vm-yw
{
  "invoiceDate": "2020-10-31",
  "supplier": "5c2289bb-402f-4eef-8ac2-9d1ac5601e83", (1)
  "invoiceReference": "API-TEST",
  "dueDate": "2020-11-24",
  "paidContraAccount": "2700",
  "paidDate": "2020-10-31", (2)
  "description": "API-TEST",
  "currency": "EUR",
  "currencyRate": "1",
  "lines": [
    {
      "account": "7200",
      "amount": 12,
      "amountType": "N"
    }
  ]
}
  1. Use the /suppliers API to find available suppliers.

  2. When the date of payment is present, the invoice will be marked as paid in full, a booking will be created, and a sequence number assigned.

Response
HTTP/1.1 200 OK
Content-Type: application/json;charset=UTF-8
{
  "result": {
    "id": "98a69029-4e88-4ced-ac54-addfa4cd75e3",
    "invoiceSequence": "ER2020 7",
    "invoiceDate": "2020-10-31",
    "dueDate": "2020-11-24",
    "paidDate": "2020-10-31",
    "paidContraAccount": "2700",
    "supplier": "5c2289bb-402f-4eef-8ac2-9d1ac5601e83",
    "supplierName": "MediaMarkt",
    "partnerName": "MediaMarkt",
    "invoiceReference": "API-TEST",
    "description": "API-TEST",
    "netTotal": 12.00,
    "taxTotal": 2.40,
    "total": 14.40,
    "remainingTotal": 0,
    "remainingTotalInMainCurrency": 0,
    "currency": "EUR",
    "currencyRate": 1,
    "lines": [
      {
        "amount": 12,
        "amountType": "N",
        "account": "7200",
        "taxEntry": "020",
        "netAmount": 12.00,
        "taxAmount": 2.40,
        "totalAmount": 14.40
      }
    ],
    "bookings": [
      {
        "id": "8a13ce73-49e5-413f-ad82-7472c4c467fe",
        "type": "InvoiceInitialBooking",
        "number": 1,
        "cancelled": false,
        "reconciled": false,
        "journalNumber": "A2020 7",
        "contraAccount": "2700"
      }
    ]
  },
  "warnings": [],
  "infos": [
    "Der Rechnung wurde die Nummer ER2020 7 vergeben. ",
    "Buchung A2020 7 wurde erstellt."
  ]
}
Search for an invoice

Get all incoming invoices between from-date and to-date (required) and with a keyword or state (optional)

Request
GET /api/1.1/incoming_invoices?from=2020-01-01&to=2020-12-31&search_text=API
Content-Type: application/json
Authorization: Bearer eyJhbGci...Vm-yw
Response
HTTP/1.1 200 OK
Content-Type: application/json;charset=UTF-8
[
  {
    "id": "98a69029-4e88-4ced-ac54-addfa4cd75e3",
    "invoiceSequence": "ER2020 7",
    "invoiceDate": "2020-10-31",
    "dueDate": "2020-11-24",
    "paidDate": "2020-10-31",
    "paidContraAccount": "2700",
    "supplier": "5c2289bb-402f-4eef-8ac2-9d1ac5601e83",
    "supplierName": "MediaMarkt",
    "partnerName": "MediaMarkt",
    "invoiceReference": "API-TEST",
    "description": "API-TEST",
    "netTotal": 12.00,
    "taxTotal": 2.40,
    "total": 14.40,
    "remainingTotal": 0,
    "remainingTotalInMainCurrency": 0,
    "currency": "EUR",
    "currencyRate": 1
  }
]
Cancel an incoming invoice
Request
POST /api/1.1/incoming_invoices/98a69029-4e88-4ced-ac54-addfa4cd75e3/cancel
Content-Type: application/json
Authorization: Bearer eyJhbGci...Vm-yw
{
  "cancelReason": "API-cancel",
  "cancelDate": "2020-12-31"
}
Response
HTTP/1.1 200 OK
Content-Type: application/json;charset=UTF-8
{
  "result": {
    "id": "98a69029-4e88-4ced-ac54-addfa4cd75e3",
    "invoiceSequence": "ER2020 7",
    "invoiceDate": "2020-10-31",
    "dueDate": "2020-11-24",
    "paidDate": "2020-10-31",
    "paidContraAccount": "2700",
    "cancelledReason": "API-cancel",
    "cancelledDate": "2020-12-31",
    "supplier": "5c2289bb-402f-4eef-8ac2-9d1ac5601e83",
    "supplierName": "MediaMarkt",
    "partnerName": "MediaMarkt",
    "invoiceReference": "API-TEST",
    "description": "API-TEST",
    "netTotal": 12.00,
    "taxTotal": 2.40,
    "total": 14.40,
    "remainingTotal": 0,
    "remainingTotalInMainCurrency": 0,
    "currency": "EUR",
    "currencyRate": 1,
    "lines": [
      {
        "amount": 12,
        "amountType": "N",
        "account": "7200",
        "taxEntry": "020",
        "netAmount": 12.00,
        "taxAmount": 2.40,
        "totalAmount": 14.40
      }
    ],
    "bookings": [
      {
        "id": "8a13ce73-49e5-413f-ad82-7472c4c467fe",
        "type": "InvoiceInitialBooking",
        "number": 1,
        "cancelled": true,
        "reconciled": false,
        "journalNumber": "A2020 7",
        "contraAccount": "2700"
      },
      {
        "id": "4ed0e5e1-3476-4cd1-967b-fc9aea22c645",
        "type": "InvoiceCancellationBooking",
        "number": 1,
        "cancelled": false,
        "reconciled": false,
        "journalNumber": "A2020 8",
        "cancelledDate": "2020-12-31",
        "cancelledReason": "API-cancel",
        "cancelledBooking": "8a13ce73-49e5-413f-ad82-7472c4c467fe"
      }
    ]
  },
  "warnings": [],
  "infos": [
    "Buchung A2020 7 wurde storniert."
  ]
}
Mark an invoice as paid

Note that there are no partial payments for EAR accounting.
The invoice is always paid in full.

Request
POST /api/1.1/incoming_invoices/3f930320-b548-4c34-91f0-7f06c4798a17/pay
Content-Type: application/json
Authorization: Bearer eyJhbGci...Vm-yw
{
  "contraAccount" : "2700",
  "paymentDate": "2020-12-31"
}
Response
HTTP/1.1 200 OK
Content-Type: application/json;charset=UTF-8
{
  "result": {
    "id": "3f930320-b548-4c34-91f0-7f06c4798a17",
    "invoiceSequence": "ER2020 8",
    "invoiceDate": "2020-10-31",
    "dueDate": "2020-11-24",
    "paidDate": "2020-12-31",
    "paidContraAccount": "2700",
    "supplier": "5c2289bb-402f-4eef-8ac2-9d1ac5601e83",
    "supplierName": "MediaMarkt",
    "partnerName": "MediaMarkt",
    "invoiceReference": "API-TEST",
    "description": "API-TEST",
    "netTotal": 12.00,
    "taxTotal": 2.40,
    "total": 14.40,
    "remainingTotal": 0,
    "remainingTotalInMainCurrency": 0,
    "currency": "EUR",
    "currencyRate": 1,
    "lines": [
      {
        "amount": 12,
        "amountType": "N",
        "account": "7200",
        "taxEntry": "020",
        "netAmount": 12.00,
        "taxAmount": 2.40,
        "totalAmount": 14.40
      }
    ],
    "bookings": [
      {
        "id": "1814ef84-7ede-41ab-bbba-3d9648389f61",
        "type": "InvoiceInitialBooking",
        "number": 1,
        "cancelled": false,
        "reconciled": false,
        "journalNumber": "A2020 9",
        "contraAccount": "2700"
      }
    ]
  },
  "warnings": [],
  "infos": [
    "Der Rechnung wurde die Nummer ER2020 8 vergeben. ",
    "Buchung A2020 9 wurde erstellt."
  ]
}

2.2.2. Double-entry accounting (Doppelte Buchhaltung)

In double-entry accounting, creating an invoice also creates a booking.
The paidContraAccount for unpaid invoices refers to accounts for payables and receivables and is not updated when the invoice is paid.

Paid incoming invoices where the invoice and paid date are the same do not follow this rule - in this case, no additional payment booking will be generated, the initial booking and paidContraAccount are instead set to the account which made or received the payment.

Incoming invoices with different invoice and paid dates and outgoing invoices always create an unpaid initial booking, and may create additional payment bookings (either immediately or with a later payment).

Create a new incoming invoice
Request
POST /api/1.1/incoming_invoices
Content-Type: application/json
Authorization: Bearer eyJhbGci...Vm-yw
{
  "invoiceDate": "2020-12-31",
  "lines": [
    {
      "account": "7200",
      "amount": 12,
      "amountType": "N"
    }
  ]
}
Response
HTTP/1.1 200 OK
Content-Type: application/json;charset=UTF-8
{
  "result": {
    "id": "0d148e77-a31e-4cab-9f9b-7f02b4509098",
    "invoiceSequence": "ER2020 1",
    "invoiceDate": "2020-12-31",
    "paidContraAccount": "3300",
    "netTotal": 12.00,
    "taxTotal": 2.40,
    "total": 14.40,
    "remainingTotal": 14.40,
    "remainingTotalInMainCurrency": 14.40,
    "currency": "EUR",
    "currencyRate": 1,
    "lines": [
      {
        "amount": 12,
        "amountType": "N",
        "account": "7200",
        "taxEntry": "020",
        "netAmount": 12.00,
        "taxAmount": 2.40,
        "totalAmount": 14.40
      }
    ],
    "bookings": [
      {
        "id": "abb796ee-fe3b-4ade-974d-50bf71a93e55",
        "type": "InvoiceInitialBooking",
        "number": 1,
        "cancelled": false,
        "reconciled": false,
        "journalNumber": "A2020 1",
        "contraAccount": "3300"
      }
    ]
  },
  "warnings": [],
  "infos": [
    "Der Rechnung wurde die Nummer ER2020 1 vergeben. ",
    "Buchung A2020 1 wurde erstellt."
  ]
}

This example has invoice and paid dates that differ, which results in a booking to the unpaid contra account and an additional payment booking.

Request
POST /api/1.1/incoming_invoices
Content-Type: application/json
Authorization: Bearer eyJhbGci...Vm-yw
{
  "invoiceDate": "2020-09-15",
  "paidContraAccount": "2700",
  "paidDate": "2020-10-31",
  "lines": [
    {
      "account": "7200",
      "amount": 12,
      "amountType": "N"
    }
  ]
}
Response
HTTP/1.1 200 OK
Content-Type: application/json;charset=UTF-8
{
  "result": {
    "id": "5ad4b274-dc38-43f8-8694-37296db42316",
    "invoiceSequence": "ER2020 2",
    "invoiceDate": "2020-09-15",
    "paidDate": "2020-10-31",
    "paidContraAccount": "3300",
    "netTotal": 12.00,
    "taxTotal": 2.40,
    "total": 14.40,
    "remainingTotal": 0,
    "remainingTotalInMainCurrency": 0,
    "currency": "EUR",
    "currencyRate": 1,
    "lines": [
      {
        "amount": 12,
        "amountType": "N",
        "account": "7200",
        "taxEntry": "020",
        "netAmount": 12.00,
        "taxAmount": 2.40,
        "totalAmount": 14.40
      }
    ],
    "bookings": [
      {
        "id": "5444a386-0f93-45c7-8bbd-19ac4ffbe35e",
        "type": "InvoiceInitialBooking",
        "number": 1,
        "cancelled": false,
        "reconciled": false,
        "journalNumber": "A2020 2",
        "contraAccount": "3300"
      },
      {
        "id": "b871b98e-5cf1-4532-9f92-32596b1a2f07",
        "type": "InvoicePaymentBooking",
        "number": 2,
        "cancelled": false,
        "reconciled": false,
        "journalNumber": "U2020 1",
        "paymentType": "PAYMENT",
        "paymentDate": "2020-10-31",
        "paymentAmount": 14.40,
        "paymentAmountInMainCurrency": 14.40,
        "paymentContraAccount": "2700",
        "paymentCurrencyRate": 1
      }
    ]
  },
  "warnings": [],
  "infos": [
    "Der Rechnung wurde die Nummer ER2020 2 vergeben. ",
    "Buchung A2020 2 wurde erstellt.",
    "Buchung U2020 1 wurde erstellt."
  ]
}
Search for an invoice

Get all incoming invoices between a from-date and to-date (required) and with a search_text or state (optional).

Request
GET /api/1.1/incoming_invoices?from=2020-01-01&to=2020-12-31
Content-Type: application/json
Authorization: Bearer eyJhbGci...Vm-yw
Response
HTTP/1.1 200 OK
Content-Type: application/json;charset=UTF-8
[
  {
    "id": "5ad4b274-dc38-43f8-8694-37296db42316",
    "invoiceSequence": "ER2020 2",
    "invoiceDate": "2020-09-15",
    "paidDate": "2020-10-31",
    "paidContraAccount": "3300",
    "netTotal": 12.00,
    "taxTotal": 2.40,
    "total": 14.40,
    "remainingTotal": 0,
    "remainingTotalInMainCurrency": 0,
    "currency": "EUR",
    "currencyRate": 1
  },
  {
    "id": "0d148e77-a31e-4cab-9f9b-7f02b4509098",
    "invoiceSequence": "ER2020 1",
    "invoiceDate": "2020-12-31",
    "paidContraAccount": "3300",
    "netTotal": 12.00,
    "taxTotal": 2.40,
    "total": 14.40,
    "remainingTotal": 14.40,
    "remainingTotalInMainCurrency": 14.40,
    "currency": "EUR",
    "currencyRate": 1
  }
]
Cancel an incoming invoice

All open payment bookings (if any) must be cancelled first before the entire invoice can be cancelled.
A booking can be cancelled from the incoming_invoices/<invoice_id>/bookings/<booking_id>/cancel resource.

Request
POST /api/1.1/incoming_invoices/0d148e77-a31e-4cab-9f9b-7f02b4509098/cancel
Content-Type: application/json
Authorization: Bearer eyJhbGci...Vm-yw
{
  "cancelReason": "API-cancel",
  "cancelDate": "2020-12-31"
}
Response
HTTP/1.1 200 OK
Content-Type: application/json;charset=UTF-8
{
  "result": {
    "id": "0d148e77-a31e-4cab-9f9b-7f02b4509098",
    "invoiceSequence": "ER2020 1",
    "invoiceDate": "2020-12-31",
    "paidContraAccount": "3300",
    "cancelledReason": "API-cancel",
    "cancelledDate": "2020-12-31",
    "netTotal": 12.00,
    "taxTotal": 2.40,
    "total": 14.40,
    "remainingTotal": 0,
    "remainingTotalInMainCurrency": 0,
    "currency": "EUR",
    "currencyRate": 1,
    "lines": [
      {
        "amount": 12,
        "amountType": "N",
        "account": "7200",
        "taxEntry": "020",
        "netAmount": 12.00,
        "taxAmount": 2.40,
        "totalAmount": 14.40
      }
    ],
    "bookings": [
      {
        "id": "abb796ee-fe3b-4ade-974d-50bf71a93e55",
        "type": "InvoiceInitialBooking",
        "number": 1,
        "cancelled": true,
        "reconciled": false,
        "journalNumber": "A2020 1",
        "contraAccount": "3300"
      },
      {
        "id": "5df32e27-e809-44cd-9eb4-a6e7b8867a0a",
        "type": "InvoiceCancellationBooking",
        "number": 1,
        "cancelled": false,
        "reconciled": false,
        "journalNumber": "A2020 3",
        "cancelledDate": "2020-12-31",
        "cancelledReason": "API-cancel",
        "cancelledBooking": "abb796ee-fe3b-4ade-974d-50bf71a93e55"
      }
    ]
  },
  "warnings": [],
  "infos": [
    "Buchung A2020 1 wurde storniert."
  ]
}
Pay an incoming invoice
Request
POST /api/1.1/incoming_invoices/4d55b15d-62f7-42ad-867a-a3706f52039c/pay
Content-Type: application/json
Authorization: Bearer eyJhbGci...Vm-yw
{
  "paymentAmount": 14.4,
  "contraAccount" : "2700",
  "paymentDate": "2020-12-31",
  "paymentDescription": "",
  "paymentAmountInMainCurrency": 14.4
}
Response
HTTP/1.1 200 OK
Content-Type: application/json;charset=UTF-8
{
  "result": {
    "id": "4d55b15d-62f7-42ad-867a-a3706f52039c",
    "invoiceSequence": "ER2020 3",
    "invoiceDate": "2020-12-31",
    "paidDate": "2020-12-31",
    "paidContraAccount": "3300",
    "netTotal": 12.00,
    "taxTotal": 2.40,
    "total": 14.40,
    "remainingTotal": 0.00,
    "remainingTotalInMainCurrency": 0.00,
    "currency": "EUR",
    "currencyRate": 1,
    "lines": [
      {
        "amount": 12,
        "amountType": "N",
        "account": "7200",
        "taxEntry": "020",
        "netAmount": 12.00,
        "taxAmount": 2.40,
        "totalAmount": 14.40
      }
    ],
    "bookings": [
      {
        "id": "b9220963-133e-43c1-9b30-12696bbd376f",
        "type": "InvoiceInitialBooking",
        "number": 1,
        "cancelled": false,
        "reconciled": false,
        "journalNumber": "A2020 4",
        "contraAccount": "3300"
      },
      {
        "id": "b36a5557-7098-489c-9ff2-b1d682db09f4",
        "type": "InvoicePaymentBooking",
        "number": 2,
        "cancelled": false,
        "reconciled": false,
        "journalNumber": "U2020 2",
        "paymentType": "PAYMENT",
        "paymentDate": "2020-12-31",
        "paymentAmount": 14.4,
        "paymentAmountInMainCurrency": 14.4,
        "paymentContraAccount": "2700",
        "paymentCurrencyRate": 1,
        "paymentDescription": ""
      }
    ]
  },
  "warnings": [],
  "infos": [
    "Buchung U2020 2 wurde erstellt."
  ]
}
Pay the rest of an incoming invoice

If an invoice needs to be paid out without an actual payment, a rest payment can be created - either for discounts or irrecoverable receivables.

For invoices in a different currency, any currency difference will be paid out automatically with the last payment.

Request
POST /api/1.1/incoming_invoices/c478ec4f-e438-4412-bb52-04177ca3252b/pay_rest
Content-Type: application/json
Authorization: Bearer eyJhbGci...Vm-yw
{
  "type": "DISCOUNT",
  "paymentDate": "2020-12-31",
  "paymentDescription": "Test Rest"
}
Response
HTTP/1.1 200 OK
Content-Type: application/json;charset=UTF-8
{
  "result": {
    "id": "c478ec4f-e438-4412-bb52-04177ca3252b",
    "invoiceSequence": "ER2020 5",
    "invoiceDate": "2020-12-31",
    "paidDate": "2020-12-31",
    "paidContraAccount": "3300",
    "netTotal": 12.00,
    "taxTotal": 2.40,
    "total": 14.40,
    "remainingTotal": 0,
    "remainingTotalInMainCurrency": 0.00,
    "currency": "EUR",
    "currencyRate": 1,
    "lines": [
      {
        "amount": 12,
        "amountType": "N",
        "account": "7200",
        "taxEntry": "020",
        "netAmount": 12.00,
        "taxAmount": 2.40,
        "totalAmount": 14.40
      }
    ],
    "bookings": [
      {
        "id": "c37ca27c-2689-4096-a911-1505782b9646",
        "type": "InvoiceInitialBooking",
        "number": 1,
        "cancelled": false,
        "reconciled": false,
        "journalNumber": "A2020 6",
        "contraAccount": "3300"
      },
      {
        "id": "2b6e91a5-b796-4100-b1b3-c2184b36dfa7",
        "type": "InvoicePaymentBooking",
        "number": 2,
        "cancelled": false,
        "reconciled": false,
        "journalNumber": "U2020 4",
        "paymentType": "PAYMENT",
        "paymentDate": "2020-12-31",
        "paymentAmount": 13.0,
        "paymentAmountInMainCurrency": 13.0,
        "paymentContraAccount": "2700",
        "paymentCurrencyRate": 1,
        "paymentDescription": ""
      },
      {
        "id": "f9a3829f-972f-4fe5-b436-b4c8dac23c26",
        "type": "InvoicePaymentBooking",
        "number": 3,
        "cancelled": false,
        "reconciled": false,
        "journalNumber": "A2020 7",
        "paymentType": "DISCOUNT",
        "paymentDate": "2020-12-31",
        "paymentAmount": 1.40,
        "paymentAmountInMainCurrency": 1.40,
        "paymentContraAccount": "3300",
        "paymentCurrencyRate": 1,
        "paymentDescription": "Test Rest"
      }
    ]
  },
  "warnings": [],
  "infos": [
    "Buchung A2020 7 wurde erstellt."
  ]
}

2.2.3. Outgoing invoice

The endpoints (/outgoing_invoices) are the same as their counterpart for incoming invoices, with some minor differences in available fields and a different class of accounts for the invoice lines.
Operations like payment and cancellation also work the same way.

Unlike incoming invoices, outgoing invoices always have an unpaid initial booking.

Create an outgoing invoice

This example creates an unpaid outgoing invoice with the minimal set of required fields.

Request
POST /api/1.1/outgoing_invoices
Content-Type: application/json
Authorization: Bearer eyJhbGci...Vm-yw
{
  "invoiceDate": "2020-10-31",
  "lines": [
    {
      "account": "4000", (1)
      "amount": 12,
      "amountType": "N"
    }
  ]
}
  1. The /accounts API returns available account codes for use.
    Outgoing invoices commonly use the E account type.

Response
HTTP/1.1 200 OK
Content-Type: application/json;charset=UTF-8
{
  "result": {
    "id": "b3309f52-ddf8-4322-9398-66c469c302e6",
    "invoiceSequence": "AR2020 1",
    "invoiceDate": "2020-10-31",
    "paidContraAccount": "2000",
    "netTotal": 12.00,
    "taxTotal": 2.40,
    "total": 14.40,
    "remainingTotal": 14.40,
    "remainingTotalInMainCurrency": 14.40,
    "currency": "EUR",
    "currencyRate": 1,
    "lines": [
      {
        "amount": 12,
        "amountType": "N",
        "account": "4000",
        "taxEntry": "020",
        "netAmount": 12.00,
        "taxAmount": 2.40,
        "totalAmount": 14.40
      }
    ],
    "bookings": [
      {
        "id": "aedd6040-d101-46a3-ab57-11e4b62e532f",
        "type": "InvoiceInitialBooking",
        "number": 1,
        "cancelled": false,
        "reconciled": false,
        "journalNumber": "E2020 1",
        "contraAccount": "2000"
      }
    ]
  },
  "warnings": [],
  "infos": [
    "Der Rechnung wurde die Nummer AR2020 1 vergeben. ",
    "Buchung E2020 1 wurde erstellt."
  ]
}

This example creates a paid outgoing invoice with a customer from the /customers resource in USD.

Request
POST /api/1.1/outgoing_invoices
Content-Type: application/json
Authorization: Bearer eyJhbGci...Vm-yw
{
  "invoiceDate": "2020-10-31",
  "paidDate": "2020-11-30",
  "customer": "d0287f29-6661-4004-afa8-2a9b7436333a",
  "invoiceReference": "API-TEST",
  "dueDate": "2020-11-22",
  "paidContraAccount": "2700",
  "description": "TestDescription",
  "currency": "USD",
  "currencyRate": "2",
  "lines": [
    {
      "account": "4000",
      "amount": 12,
      "amountType": "N"
    }
  ]
}
Response
HTTP/1.1 200 OK
Content-Type: application/json;charset=UTF-8
{
  "result": {
    "id": "2c7d084a-99a7-483a-91cc-a90099d21723",
    "customer": "d25a9e1b-fce6-4edf-9d14-dbdc8c3c21a8",
    "customerName": "Testkunde, Herbert Demomann",
    "partnerName": "Testkunde, Herbert Demomann",
    "invoiceSequence": "AR2020 2",
    "invoiceReference": "API-TEST",
    "invoiceDate": "2020-10-31",
    "dueDate": "2020-11-22",
    "paidDate": "2020-11-30",
    "paidContraAccount": "2000",
    "description": "TestDescription",
    "netTotal": 12.00,
    "taxTotal": 2.40,
    "total": 14.40,
    "remainingTotal": 0,
    "remainingTotalInMainCurrency": 0,
    "currency": "USD",
    "currencyRate": 2,
    "lines": [
      {
        "amount": 12,
        "amountType": "N",
        "account": "4000",
        "taxEntry": "020",
        "netAmount": 12.00,
        "taxAmount": 2.40,
        "totalAmount": 14.40
      }
    ],
    "bookings": [
      {
        "id": "3c0bab67-d5bb-42b3-9c36-662d43ed6ea6",
        "type": "InvoiceInitialBooking",
        "number": 1,
        "cancelled": false,
        "reconciled": false,
        "journalNumber": "E2020 2",
        "contraAccount": "2000"
      },
      {
        "id": "a69d006b-9bd1-4c5c-a284-83c1fba0bbb6",
        "type": "InvoicePaymentBooking",
        "number": 2,
        "cancelled": false,
        "reconciled": false,
        "journalNumber": "U2020 5",
        "paymentType": "PAYMENT",
        "paymentDate": "2020-11-30",
        "paymentAmount": 14.40,
        "paymentAmountInMainCurrency": 28.80,
        "paymentContraAccount": "2700",
        "paymentCurrencyRate": 2,
        "paymentDescription": "TestDescription"
      }
    ]
  },
  "warnings": [],
  "infos": [
    "Der Rechnung wurde die Nummer AR2020 2 vergeben. ",
    "Buchung E2020 2 wurde erstellt.",
    "Buchung U2020 5 wurde erstellt."
  ]
}

2.3. Invoices and documents

With Invoices new invoices in the invoices and documents modul can be created, payments been applied and all information and status been selected.

2.3.1. Create invoices

Invoices in staging status

A minimal set of values to create a new invoice for staging.
Note that default texts will be applied from the layout setup if they are not set explicitly.

Request
POST /api/1.1/invoices
Content-Type: application/json
Authorization: Bearer eyJhbGci...Vm-yw
{
    "state": "STAGING",
    "date": "2016-10-21",
    "customerName": "manubu GmbH", (1)
    "lines": [
        {
          "name": "REST Item",
          "itemPrice": 53.24, (2)
          "itemPriceType": "N", (2)
          "account": "4000", (3)
          "taxClassEntry": "020", (3)
          "amount": 1.00,
          "netPrice": 53.24,
          "taxPrice": 10.65,
          "totalPrice": 63.89
        }
    ]
}
  1. Alternatively, set a customer with the id to reference an existing customer.

  2. Alternatively, reference an item.
    Note that the name, account and tax class entry still have to be set to prevent a mismatch between expected and calculated prices.

  3. Use the /accounts API to make sure that the account exists and that it allows the specified tax class.

Response
HTTP/1.1 200 OK
Content-Type: application/json;charset=UTF-8
{
  "uuid": "830ed1cc-d2c1-4fb8-8579-fa6fb8f1e399",
  "description": "Nachfolgend finden Sie die Detailaufstellung zur Rechnung.",
  "date": "2016-10-21",
  "state": "STAGING",
  "netAmount": 53.24,
  "taxAmount": 10.65,
  "totalAmount": 63.89,
  "remainingAmount": 63.89,
  "currency": "EUR",
  "currencyRate": 1,
  "customerName": "manubu GmbH",
  "sequenceGroup": "e11693d5-15e6-42c3-b23c-1c01c0146d6b",
  "updatedAt": "2020-09-22T12:59:26.720Z",
  "lines": [
    {
      "id": 1,
      "name": "REST Item",
      "type": "LINE",
      "itemPrice": 53.24,
      "itemPriceType": "N",
      "netPrice": 53.24,
      "taxPrice": 10.65,
      "totalPrice": 63.89,
      "remainingAmount": 63.89,
      "discount": 0,
      "discountMode": "CONSTANT",
      "amount": 1.00,
      "account": "4000",
      "taxClassEntry": "020"
    }
  ],
  "paymentTerm": "96c758c7-98ae-42b4-b742-5d30bd62e79c",
  "paid": false,
  "dueDate": "2016-11-04"
}
Finalized invoices

A finalized invoice requires the totals to be set to prevent a mismatch between displayed and server-calculated prices.

Request
POST /api/1.1/invoices
Content-Type: application/json
Authorization: Bearer eyJhbGci...Vm-yw
{
    "state": "FINALIZED",
    "date": "2016-10-21",
    "customerName": "manubu GmbH",
    "netAmount": 106.48,
    "taxAmount": 21.30,
    "totalAmount": 127.78,
    "layoutSetup": "e7b189b1-f0ae-4c71-8dc7-3108c1e46b34", (1)
    "lines": [
        {
          "name": "REST Item",
          "itemPrice": 53.24,
          "itemPriceType": "N",
          "account": "4000",
          "taxClassEntry": "020",
          "amount": 2.00,
          "netPrice": 106.48,
          "taxPrice": 21.30,
          "totalPrice": 127.78,
          "itemDefaulting": false
        }
    ]
}
  1. Can be omitted if a default layout setup is present and to be used.

Response
HTTP/1.1 200 OK
Content-Type: application/json;charset=UTF-8
{
  "id": "R 2020 4",
  "uuid": "801744c4-b612-4107-8e82-4bdd8cb42939",
  "description": "Nachfolgend finden Sie die Detailaufstellung zur Rechnung.",
  "date": "2020-10-21",
  "state": "FINALIZED",
  "netAmount": 106.48,
  "taxAmount": 21.30,
  "totalAmount": 127.78,
  "remainingAmount": 127.78,
  "currency": "EUR",
  "currencyRate": 1,
  "footer": "Diese Rechnung wurde sowohl im Format PDF als auch als ebInterface XML erstellt.",
  "customerName": "manubu GmbH",
  "layoutSetup": "e7b189b1-f0ae-4c71-8dc7-3108c1e46b34",
  "sequenceGroup": "e11693d5-15e6-42c3-b23c-1c01c0146d6b",
  "updatedAt": "2020-09-22T13:09:32.818Z",
  "lines": [
    {
      "id": 1,
      "name": "REST Item",
      "type": "LINE",
      "itemPrice": 53.24,
      "itemPriceType": "N",
      "netPrice": 106.48,
      "taxPrice": 21.30,
      "totalPrice": 127.78,
      "remainingAmount": 127.78,
      "discount": 0,
      "discountMode": "CONSTANT",
      "amount": 2.00,
      "account": "4000",
      "taxClassEntry": "020"
    }
  ],
  "paymentTerm": "96c758c7-98ae-42b4-b742-5d30bd62e79c",
  "paid": false,
  "dueDate": "2020-11-04"
}
External invoices

External documents require the id-field to be set.
Layout information is not needed since no PDF will be generated.

Request
POST /api/1.1/invoices
Content-Type: application/json
Authorization: Bearer eyJhbGci...Vm-yw
{
  "id": "ER 2016-0001",
  "date": "2016-10-21",
  "state": "EXTERNAL",
  "netAmount": 95.83,
  "taxAmount": 19.17,
  "totalAmount": 115.00,
  "currency": "EUR",
  "currencyRate": 1,
  "customerName": "manubu GmbH",
  "lines": [
    {
      "id": 1,
      "name": "REST Item",
      "itemPrice": 53.24,
      "itemPriceType": "N",
      "netPrice": 95.83,
      "taxPrice": 19.17,
      "totalPrice": 115.00,
      "discount": 10,
      "discountMode": "RATE",
      "amount": 2,
      "account": "4000",
      "taxClassEntry": "020"
    }
  ],
  "paymentTerm": "96c758c7-98ae-42b4-b742-5d30bd62e79c", (1)
  "deliveryFromDate": "2016-10-21",
  "deliveryToDate": "2016-10-30"
}
  1. Can be omitted if the default payment term is to be used.
    Note that the payment term sets the due date of the invoice.

Response
HTTP/1.1 200 OK
Content-Type: application/json;charset=UTF-8
{
  "id": "ER 2016-0001",
  "uuid": "bbf2cfa4-0555-40f4-bae6-df02b8ee8ffd",
  "description": "",
  "date": "2016-10-21",
  "state": "EXTERNAL",
  "netAmount": 95.83,
  "taxAmount": 19.17,
  "totalAmount": 115.00,
  "remainingAmount": 115.00,
  "currency": "EUR",
  "currencyRate": 1,
  "footer": "",
  "customerName": "manubu GmbH",
  "updatedAt": "2020-09-22T13:15:07.742Z",
  "lines": [
    {
      "id": 1,
      "name": "REST Item",
      "type": "LINE",
      "itemPrice": 53.24,
      "itemPriceType": "N",
      "netPrice": 95.83,
      "taxPrice": 19.17,
      "totalPrice": 115.00,
      "remainingAmount": 115.00,
      "discount": 10,
      "discountMode": "RATE",
      "amount": 2,
      "account": "4000",
      "taxClassEntry": "020"
    }
  ],
  "paymentTerm": "96c758c7-98ae-42b4-b742-5d30bd62e79c",
  "deliveryFromDate": "2016-10-21",
  "deliveryToDate": "2016-10-30",
  "paid": false,
  "dueDate": "2016-11-04"
}

2.3.2. Create payments for invoices

A simple payment subtracts the paid amount from the remaining amount.The invoice is marked as paid once the remaining amount reaches zero.

Request
POST /api/1.1/invoices/R 2016-0001/payments
Content-Type: application/json
Authorization: Bearer eyJhbGci...Vm-yw
{
  "amount": 2000.00,
  "date": "2016-10-21",
  "payingAccount": "2800"
}
Response
HTTP/1.1 200 OK
Content-Type: application/json;charset=UTF-8
[
  {
    "date": "2016-10-21",
    "type": "PAYED",
    "amount": 10.00,
    "cancelled": false
  }
]

A payment can also define a restType if the remaining amount after the payment is to be marked as completed.In this case two payment history entries are created.

Request
POST /api/1.1/invoices/R 2016-0001/payments
Content-Type: application/json
Authorization: Bearer eyJhbGci...Vm-yw
{
  "amount": 10.00,
  "currencyRate" : 1,
  "note": "REST payment",
  "date": "2016-10-21",
  "payingAccount": "2800",
  "restType": "UNCOLLECTABLE"
}
Response
HTTP/1.1 200 OK
Content-Type: application/json;charset=UTF-8
[
  {
    "date": "2016-10-21",
    "type": "PAYED",
    "note": "REST payment",
    "amount": 10.00,
    "cancelled": false
  },
  {
    "date": "2016-10-21",
    "type": "UNCOLLECTABLE",
    "note": "REST payment",
    "amount": 97.78,
    "cancelled": false
  }
]

2.4. Item management

Item management are in master data management and used for invoicing and documents or cash register.

2.4.1. Search for items

Request
GET /api/1.1/items?search=Test
Content-Type: application/json
Authorization: Bearer eyJhbGci...Vm-yw

The search parameter filters results matching the name, description, number, or barcode of the item.

Response
HTTP/1.1 200 OK
Content-Type: application/json;charset=UTF-8
{
    "id": "ea108755-2580-476b-a41b-a5ee32ce77d5",
    "name": "Testprodukt 1",
    "unitOfMeasure": "PC",
    "description": "<p><b>Beschreibung</b> des <i>Produktes</i></p>",
    "descriptionFormatted": "Beschreibung des Produktes\r\n\r\n",
    "sellingPrice": 998.82,
    "amountType": "N",
    "currency": "EUR",
    "marginMode": "CONSTANT",
    "additionalChargeMode": "CONSTANT",
    "itemCategory": "967c6658-8b1c-4268-a2ca-33c09d493c32",
    "account": "4000",
    "taxClassEntry": "020",
    "color": "b51010"
  }

2.4.2. Create items

Request
POST /api/1.1/items
Content-Type: application/json
Authorization: Bearer eyJhbGci...Vm-yw
{
    "itemCategory": "967c6658-8b1c-4268-a2ca-33c09d493c32", (1)
    "itemCategoryDefaulting": true, (2)
    "sellingPrice": 12,
    "name": "API",
    "amountType": "N"
}
  1. Use an item category id from the item_category API to add the item to this category.

  2. If set to true and when no account and taxClassEntry are supplied, they will be defaulted from the item category.
    You can omit itemCategoryDefaulting (or set to false) to disable this behavior.
    Tax rate and account then become mandatory fields.

Response
HTTP/1.1 200 OK
Content-Type: application/json;charset=UTF-8
{
  "id": "401025ed-300e-45dc-8d2a-f3a3ad147ff3",
  "name": "API",
  "sellingPrice": 12,
  "amountType": "N",
  "currency": "EUR",
  "marginMode": "CONSTANT",
  "additionalChargeMode": "CONSTANT",
  "itemCategory": "967c6658-8b1c-4268-a2ca-33c09d493c32",
  "account": "4000",
  "taxClassEntry": "020",
  "color": "2bc25d"
}

2.5. Cash register

The cash register apis are used for the cash register according to austrian law.

2.5.1. Income receipts

Income receipts are the most common type and can be created with or without item references.

Request
POST /api/1.1/cash_registers/1/receipts
Content-Type: application/json
Authorization: Bearer eyJhbGci...Vm-yw
{
  "type": "INCOME",
  "totalAmount": 120.00, (1)
  "lines": [
    {
      "itemPrice": 100.00,
      "itemPriceType": "N", (2)
      "totalPrice": 120.00,
      "account": "4000", (3)
      "taxClassEntry": "020"
    }
  ]

}
  1. The total amount of the receipts must match the total sum of all lines, otherwise an error will be returned.

  2. Indicates if the item unit price is net (N) or total (T)

  3. Use the /accounts API to make sure that the account exists and that it allows the specified tax class.

Response
HTTP/1.1 200 OK
Content-Type: application/json;charset=UTF-8
{
  "id": "2017.0001",
  "type": "INCOME",
  "dateTime": "2017-01-12T14:51:48.813",
  "creationDateTime": "2017-01-12T14:51:48.832",
  "totalAmount": 120.00,
  "qrCode": "_R1-AT1_1_2017.0001_2017-03-24T08:57:23_120,00_0,00_0,00_0,00_0,00_0DT1DvvW5Co=_6A729B85_WZ5OYdVFEgU=_MARh3Qa7KjAJmzh9DCmljZmYs7uKkZ82OZglC9+c8q6W1xfUeP8fOFCBTqvUjih3+esFtH+FUbT3A4NK7cMiWA==",
  "lines": [
    {
      "id": 1,
      "itemPrice": 100.00,
      "itemPriceType": "N",
      "netPrice": 100.00,
      "taxPrice": 20.00,
      "totalPrice": 120.00,
      "discount": 0,
      "discountMode": "CONSTANT",
      "amount": 1,
      "account": "4000",
      "taxClassEntry": "020"
    }
  ]
}

Alternatively, an item from the /items API can be supplied to default most fields.

Request
POST /api/1.1/cash_registers/1/receipts
Content-Type: application/json
Authorization: Bearer eyJhbGci...Vm-yw
{
  "type": "INCOME",
  "totalAmount": 344.88, (1)
  "lines": [
    {
      "item": "1383b0e0-f3c8-761b-b103-e6adc5eeb24b",
      "totalPrice": 114.96 (1)
    },
    {
      "item": "1383b0e0-f3c8-761b-b103-e6adc5eeb24b",
      "amount": 2,
      "totalPrice": 229.92
    }
  ]

}
  1. Even with item references the line and receipt totals must be supplied.

Response
HTTP/1.1 200 OK
Content-Type: application/json;charset=UTF-8
{
  "id": "2017.0002",
  "type": "INCOME",
  "dateTime": "2017-01-12T14:55:31.361",
  "creationDateTime": "2017-01-12T14:55:31.381",
  "totalAmount": 344.88,
  "qrCode": "_R1-AT1_3_2017.0006_2017-03-24T08:57:23_120,00_0,00_0,00_0,00_0,00_0DT1DvvW5Co=_6A729B85_WZ5OYdVFEgU=_MARh3Qa7KjAJmzh9DCmljZmYs7uKkZ82OZglC9+c8q6W1xfUeP8fOFCBTqvUjih3+esFtH+FUbT3A4NK7cMiWA==",
  "lines": [
    {
      "id": 1,
      "itemNumber": "KASHA001",
      "item": "1383b0e0-f3c8-761b-b103-e6adc5eeb24b",
      "itemName": "Kasse-System Sharp XE-A217B",
      "itemPrice": 114.96,
      "itemPriceType": "T",
      "unitOfMeasure": "EUR",
      "netPrice": 95.80,
      "taxPrice": 19.16,
      "totalPrice": 114.96,
      "discount": 0,
      "discountMode": "CONSTANT",
      "amount": 1,
      "account": "4000",
      "taxClassEntry": "020"
    },
    {
      "id": 2,
      "itemNumber": "KASHA001",
      "item": "1383b0e0-f3c8-761b-b103-e6adc5eeb24b",
      "itemName": "Kasse-System Sharp XE-A217B",
      "itemPrice": 114.96,
      "itemPriceType": "T",
      "unitOfMeasure": "EUR",
      "netPrice": 191.60,
      "taxPrice": 38.32,
      "totalPrice": 229.92,
      "discount": 0,
      "discountMode": "CONSTANT",
      "amount": 2,
      "account": "4000",
      "taxClassEntry": "020"
    }
  ]
}

2.5.2. Cash rebooks

A rebook is a special type of receipt that has a cash or bank account (U-type in the /accounts API).
Instead of lines, a single total amount is provided.

Request
POST /api/1.1/cash_registers/1/receipts
Content-Type: application/json
Authorization: Bearer eyJhbGci...Vm-yw
{
  "type": "REBOOK",
  "totalAmount": 120.00,
  "fromAccount": "2800" (1)
}
  1. For a negative rebook (reducing the register balance), supply the toAccount instead.

Response
HTTP/1.1 200 OK
Content-Type: application/json;charset=UTF-8
{
  "id": "U2017.0001",
  "type": "REBOOK",
  "dateTime": "2017-01-12T14:58:43.188",
  "creationDateTime": "2017-01-12T14:58:43.194",
  "totalAmount": 120.00,
  "lines": [
    {
      "id": 1,
      "itemName": "Bargeld-Einlage",
      "itemPrice": 120.00,
      "itemPriceType": "T",
      "netPrice": 120.00,
      "taxPrice": 0,
      "totalPrice": 120.00,
      "amount": 1,
      "account": "2800",
      "taxClassEntry": "000"
    }
  ]
}

2.5.3. Daily closings

The latest daily closing for a register can be obtained quickly with the last-path instead of the date as id.

Request
GET /api/1.1/cash_registers/1/daily_closings/last
Authorization: Bearer eyJhbGci...Vm-yw
Response
HTTP/1.1 200 OK
Content-Type: application/json;charset=UTF-8
{
  "id": "2017-01-12",
  "creationDate": "2017-01-12T13:51:48.851Z",
  "state": "OPEN",
  "openingBalance": 415.99,
  "closingBalance": 1000.87, (1)
  "incomeCount": 2,
  "rebookCount": 1,
  "otherCount": 0,
  "totalCount": 3, (1)
  "monthlyClosing": false,
  "yearlyClosing": false
}
  1. Closing balance and total receipt count must be supplied to finalize a daily closing at the end of each day.
    This step verifies that the user has seen and confirmed the final balance.

Request
POST /api/1.1/cash_registers/1/daily_closings/last/finalize
Content-Type: application/json
Authorization: Bearer eyJhbGci...Vm-yw
{
  "closingBalance": 1000.87,
  "totalCount": 3
}
Response
HTTP/1.1 200 OK
Content-Type: application/json;charset=UTF-8
{
  "id": "2017-01-12",
  "creationDate": "2017-01-12T13:51:48.851Z",
  "state": "FINALIZED",
  "openingBalance": 415.99,
  "closingBalance": 1000.87,
  "incomeCount": 2,
  "rebookCount": 1,
  "otherCount": 0,
  "totalCount": 3,
  "monthlyClosing": false,
  "yearlyClosing": false
}

Once a full month has passed, the last daily closing must also close the month, which is done automatically when creating a new receipt.

If required, the month can also be closed manually.
This is done with a simple POST-call, and can be mirrored for the yearly closing.

Request
POST /api/1.1/cash_registers/1/daily_closings/last/close_month
Content-Type: application/json
Authorization: Bearer eyJhbGci...Vm-yw
Response
HTTP/1.1 200 OK
Content-Type: application/json;charset=UTF-8
{
  "id": "2017-01-12",
  "creationDate": "2017-01-12T13:51:48.851Z",
  "state": "FINALIZED",
  "openingBalance": 415.99,
  "closingBalance": 1000.87,
  "incomeCount": 2,
  "rebookCount": 1,
  "otherCount": 1,
  "totalCount": 4,
  "monthlyClosing": true,
  "yearlyClosing": false
}

2.6. Accounting

Core modul for all accounting purpose.
Bookings and payments from invoice and documents or incoming and outgoing invoices are booked into the accounting module.
In Addition direct booking functionality can be done.

2.6.1. Create a rebook

Create a new booking to an account

Request
POST /api/1.1/rebooks
Content-Type: application/json
Authorization: Bearer eyJhbGci...Vm-yw
{
  "type": "REBOOK", (1)
  "amount": 1200.00,
  "account": "2800",
  "contraAccount": "2700",
  "description": "",
  "reference": "",
  "date": "2020-01-01" (2)
}
  1. Possible types are REBOOK, CORRECTION and FINALIZATION.
    The type determines the available accounts - use the /accounts API to search for valid accounts for the type.

  2. If no date is set, the booking will be defaulted to the current date.

Response
HTTP/1.1 200 OK
Content-Type: application/json;charset=UTF-8
{
  "id": "U2020 2",
  "rebookType": "REBOOK",
  "account": "2800",
  "contraAccount": "2700",
  "currencyRate": 1,
  "payedDate": "2020-01-01",
  "cancelled": false,
  "description": "",
  "currencyCode": "EUR",
  "invoiceReference": "",
  "journalTotPrice": 1200.00,
  "invoiceDate": "2020-01-01"
}

2.7. Financial Setup

Getting and setting basic financial settings.

2.7.1. Get account balances

Returns a list of accounts and the current balance, determined by the sum of all bookings within the specified time period.

Request
GET /api/1.1/accounts/balances?from=2020-01-01&to=2020-12-31&type=E
Authorization: Bearer eyJhbGci...Vm-yw
  • from & to: Time period to use.
    Defaults to the current fiscal year.

  • type: To filter by a specific account type.
    Examples are E (revenue), A (expenses), U (cash, rebooks, etc.)

Response
HTTP/1.1 200 OK
Content-Type: application/json;charset=UTF-8
[
  {
    "accountCode": "4000",
    "accountName": "Einnahmen (Erlöse)",
    "sum": 92.55
  }
]

2.7.2. Get bank accounts

Returns a list of bank accounts or with bank_accounts/{id} you will get the bank account with the id you send.

Request
GET /api/1.1/bank_accounts
Authorization: Bearer eyJhbGci...Vm-yw
Response
HTTP/1.1 200 OK
Content-Type: application/json;charset=UTF-8
[
  {
    "id": "d56d96c4-3v3d-29c6-ecb7-74ab91da6510",
    "name": "Volksbank Wien",
    "bankName": "Volksbank",
    "accountOwnerName": "Max Mustermann",
    "bic": "VBOEATWW",
    "iban": "AT411120000237571999",
    "accountCode": "2800",
    "currencyCode": "EUR"
  }
]

2.8. Master data management

2.8.1. Additional addresses

Get the main address for a selected customer (/customers)

2.8.2. Get a customer

Request
GET /api/1.1/customers/6bce13cf-e928-4af3-8075-e89c503e3bb0
Content-Type: application/json
Authorization: Bearer eyJhbGci...Vm-yw
Response
HTTP/1.1 200 OK
Content-Type: application/json;charset=UTF-8
{
    "id": "6bce13cf-e928-4af3-8075-e89c503e3bb0",
    "title": "Ing",
    "firstName": "Max",
    "lastName": "Mustermann",
    "compSalutationCode": "Herr",
    "companyName": "free",
    "streetName": "Mustermanngasse",
    "streetNumber": "12",
    "zipCode": "1230",
    "city": "Wien",
    "emailAddress": "max.mustermann@free.com",
    "telNumber": "0165421564",
    "skype": "",
    "noVatNumber": false,
    "country": "AT",
    "region": "WIEN",
    "supplierNumber": "12",
    "myCustomerNumber": "6"
}

2.8.3. Create a customer

Request
POST /api/1.1/customers
Content-Type: application/json
Authorization: Bearer eyJhbGci...Vm-yw
{
  "customerNumber": "12345",
  "companyName": "TestCustomer 1",
  "firstName": "Max",
  "lastName": "Mustermann",
  "taxNumber": "TAXNR1"
}
Response
HTTP/1.1 200 OK
Content-Type: application/json;charset=UTF-8
{
  "id": "9cb7ab78-de86-43c3-b3ce-d477b629f30c",
  "taxNumber": "TAXNR1",
  "firstName": "Max",
  "lastName": "Mustermann",
  "companyName": "TestCustomer 1",
  "noVatNumber": false,
  "country": "AT",
  "customerNumber": "12345"
}

2.8.4. Create a customer and a contra account (double-entry accounting)

This creates a customer and a contra account (receivables) in one step.

Request
POST /api/1.1/customers
Content-Type: application/json
Authorization: Bearer eyJhbGci...Vm-yw
{
  "customerNumber": "12345",
  "companyName": "TestCustomer 1",
  "firstName": "Max",
  "lastName": "Mustermann",
  "contraAccount": "20012",
  "createContraAccount": true,
  "taxNumber": "TAXNR1"
}
Response
HTTP/1.1 200 OK
Content-Type: application/json;charset=UTF-8
{
  "id": "82008731-4824-4012-8ee5-00bcdad38419",
  "taxNumber": "TAXNR1",
  "firstName": "Max",
  "lastName": "Mustermann",
  "companyName": "TestCustomer 1",
  "noVatNumber": false,
  "country": "AT",
  "contraAccount": "20012",
  "customerNumber": "12345"
}

2.8.5. Get additional addresses

Request
GET /api/1.1/customers/6bce13cf-e928-4af3-8075-e89c503e3bb0/additional_addresses
Content-Type: application/json
Authorization: Bearer eyJhbGci...Vm-yw
Response
HTTP/1.1 200 OK
Content-Type: application/json;charset=UTF-8
[
  {
    "id": "79ca5835-133f-4668-8ea0-d4d4e9377ef8",
    "identifier": "",
    "addressType": "INVOICE_AND_DELIVERY_ADDRESS",
    "streetName": "Wollstrasse",
    "streetNumber": "120",
    "zipCode": "2800",
    "city": "Wien",
    "country": "AT",
    "region": "WIEN",
    "addressBranchNo": "1",
    "emailAddress": "",
    "copyEmailType": "BCC",
    "telNumber": "5646545",
    "faxNumber": "546541",
    "mobileNumber": "564651",
    "skype": "",
    "webAddress": "",
    "description": ""
  },
  {
    "id": "8a5f3725-e6a7-430a-b27c-be5d7f2fcd79",
    "identifier": "Zweitadresse",
    "addressType": "INVOICE_AND_DELIVERY_ADDRESS",
    "streetName": "Andere Teststraße",
    "streetNumber": "120",
    "zipCode": "2800",
    "city": "Wien",
    "country": "AT",
    "region": "WIEN",
    "addressBranchNo": "56456465",
    "emailAddress": "test@otherdomain.com",
    "copyEmailType": "BCC",
    "telNumber": "5646545",
    "faxNumber": "546541",
    "mobileNumber": "564651",
    "skype": "",
    "webAddress": "",
    "description": ""
  }
]

2.8.6. Create a new additional address

Create a new additional address for the selected supplier/customer.

Request
POST /api/1.1/customers/6bce13cf-e928-4af3-8075-e89c503e3bb0/additional_addresses/
Content-Type: application/json
Authorization: Bearer eyJhbGci...Vm-yw
{
  "identifier": "Zweitadresse",
  "streetName": "Teststrasse",
  "streetNumber": 1,
  "zipCode": "1040",
  "city": "Wien",
  "country": "AT",
  "region": "WIEN",
  "addressBranchNo": "",
  "emailAddress": "test@testdomain.at",
  "telNumber": "",
  "faxNumber": "",
  "mobileNumber": "",
  "skype": "",
  "webAddress": "",
  "description": "",
  "copyEmailType": "",
  "addressType": ""
}
Response
HTTP/1.1 200 OK
Content-Type: application/json;charset=UTF-8
{
    "id": "0f5c87a3-550c-4b5d-ae58-270ca5c3cc19",
    "identifier": "Zweitadresse",
    "addressType": "INVOICE_AND_DELIVERY_ADDRESS",
    "streetName": "Teststraße",
    "streetNumber": "1",
    "zipCode": "1040",
    "city": "Wien",
    "country": "AT",
    "region": "WIEN",
    "addressBranchNo": "",
    "emailAddress": "test@testdomain.at",
    "copyEmailType": "BCC",
    "telNumber": "",
    "faxNumber": "",
    "mobileNumber": "",
    "skype": "",
    "webAddress": "",
    "description": ""
}

2.9. Bank Statements

Creating and adding bank statement transactions to the bank statement module.

2.9.1. Get a bank statement header

This returns only the head data of the statement.
To get all lines, see the /bank_statements/<id>/lines resource.

Request
GET /api/1.1/bank_statements
Authorization: Bearer eyJhbGci...Vm-yw
Response
HTTP/1.1 200 OK
Content-Type: application/json;charset=UTF-8
[
  {
    "id": "1961d46e-d7e4-4b95-9e27-9053e43ef97b",
    "bankAccount": "2850",
    "fileName": "API",
    "currencyCode": "EUR",
    "statementDate": "2021-03-16",
    "valueDateFrom": "1983-05-27",
    "valueDateTo": "2099-12-31",
    "status": "NEW",
    "bankAccountName": "Test"
  }
]

2.9.2. Create a bank statement header

A bank statement header is linked to a bank account, see the /bank_accounts resource.

Request
POST /api/1.1/bank_statements
Authorization: Bearer eyJhbGci...Vm-yw
[
  {
    "bankAccount": "d56d96c4-3b3d-29c6-ecb7-74cb91da6510",
    "fileName": "test_api"
  }
]
Response
HTTP/1.1 200 OK
Content-Type: application/json;charset=UTF-8
{
  "id": "62e9dcdf-5640-4d53-8cfc-2f728aeabd94",
  "bankAccount": "2800",
  "fileName": "test_api",
  "currencyCode": "EUR",
  "statementDate": "2021-03-18",
  "valueDateFrom": "2021-03-18",
  "valueDateTo": "2021-03-18",
  "status": "NEW",
  "bankAccountName": "Volksbank Wien"
}

2.9.3. Create bank statement lines for an existing header

The returnLines parameter determines if only counts are returned (false) or all created lines (true)

Request
POST /api/1.1/bank_statements/1961d46e-d7e4-4b95-9e27-9053e43ef97b/lines
Authorization: Bearer eyJhbGci...Vm-yw
{
  "returnLines": false,
  "bankStatementLines": [
    {
      "valueDate": "2020-10-31",
      "amount": -2000,
      "bookingDate": "2020-10-31"
    },
    {
      "valueDate": "2020-10-31",
      "amount": 4000,
      "bookingDate": "2020-10-31"
    }
  ]
}
Response
HTTP/1.1 200 OK
Content-Type: application/json;charset=UTF-8
{
  "addedCount": 2,
  "duplicatesCount": 0
}

2.9.4. Create bank statement lines for a bank account

You can append new lines to a header related directly to a bank account.
If no header exists, it will be created.

This is useful for a continuous stream of new lines to an account, for example with payment processors like PayPal.

Lines that were already added in previous calls (and have the same transaction_id) will be ignored.

Request
POST /api/1.1/bank_statements/by_bank_account/40e2f246-8998-3dec-b51c-4edf7f688d4a/lines
Authorization: Bearer eyJhbGci...Vm-yw
{
  "returnLines": true,
  "bankStatementLines": [
    {
      "description": "Test-Api-test",
      "valueDate": "2020-10-31",
      "amount": -2000,
      "bookingDate": "2020-10-31",
      "transactionId": "9001"
    },
    {
      "description": "Test-Api2",
      "valueDate": "2020-10-31",
      "amount": -9000,
      "bookingDate": "2020-10-31",
      "originatorBankReference": "testo",
      "originatorBankCode": "mio",
      "originatorAccountNumber": "jusaya",
      "transactionId": "645216159451239"
    },
    {
      "description": "Test-Api3",
      "valueDate": "2020-10-31",
      "amount": 4000,
      "bookingDate": "2020-10-31",
      "transactionId": "9001"
    },
    {
      "description": "Test-Api4",
      "valueDate": "2020-10-31",
      "amount": 4000,
      "bookingDate": "2020-10-31"
    }
  ]
}
Response
HTTP/1.1 200 OK
Content-Type: application/json;charset=UTF-8
{
  "addedCount": 3,
  "duplicatesCount": 1,
  "addedLines": [
    {
      "id": 1,
      "description": "Test-Api-test",
      "valueDate": "2020-10-31",
      "amount": -2000,
      "currencyCode": "EUR",
      "bookingDate": "2020-10-31",
      "transactionId": "9001",
      "status": "NEW",
      "remainingAmount": -2000
    },
    {
      "id": 2,
      "description": "Test-Api2",
      "valueDate": "2020-10-31",
      "amount": -9000,
      "currencyCode": "EUR",
      "bookingDate": "2020-10-31",
      "originatorBankReference": "testo",
      "originatorBankCode": "mio",
      "originatorAccountNumber": "jusaya",
      "transactionId": "645216159451239",
      "status": "NEW",
      "remainingAmount": -9000
    },
    {
      "id": 3,
      "description": "Test-Api4",
      "valueDate": "2020-10-31",
      "amount": 4000,
      "currencyCode": "EUR",
      "bookingDate": "2020-10-31",
      "status": "NEW",
      "remainingAmount": 4000
    }
  ],
  "duplicateTransactionIds": [
    "9001"
  ]
}

3. Resources

3.1. Accounting - Rebook

3.1.1. create new rebook

POST /rebooks
Parameters
Type Name Description Schema

Body

body
required

Create rebook

RebookCreationDto

Responses
HTTP Code Description Schema

200

successful operation

RebookJournalDto

404

input invalid, see detailed message

RestError

Consumes
  • application/json

Produces
  • application/json

Security
Type Name

apiKey

JWT

3.2. Bank Statements

3.2.1. Create a new bank statement header

POST /bank_statements
Description

Lines are created in a separate call.

Parameters
Type Name Description Schema

Body

body
required

statement header to create

BankStatementHeaderDto

Responses
HTTP Code Description Schema

200

successful operation

BankStatementHeaderDto

400

input invalid, see detailed message

RestError

Consumes
  • application/json

Produces
  • application/json

Security
Type Name

apiKey

JWT

3.2.2. Get all bank statement headers

GET /bank_statements
Description

Only headers created by the API are accessible.

Responses
HTTP Code Description Schema

200

successful operation

< BankStatementHeaderDto > array

Consumes
  • application/json

Produces
  • application/json

Security
Type Name

apiKey

JWT

3.2.3. Create new lines for a singular bank account header

POST /bank_statements/by_bank_account/{bank_account}/lines
Description

Appends lines to a singular statement tied to a bank account. If no header exists, it will be created. If more than one header exists, an error will be returned.

Parameters
Type Name Description Schema

Path

bank_account
required

bank account id

string

Body

body
required

Lines to append

BankStatementRequestDto

Responses
HTTP Code Description Schema

200

successful operation

BankStatementLineResultDto

400

input invalid, see detailed message

RestError

Consumes
  • application/json

Produces
  • application/json

Security
Type Name

apiKey

JWT

3.2.4. Get a single bank statement header

GET /bank_statements/{header_id}
Parameters
Type Name Description Schema

Path

header_id
required

bank statement id

string

Responses
HTTP Code Description Schema

200

successful operation

BankStatementHeaderDto

404

bank account not found

RestError

Consumes
  • application/json

Produces
  • application/json

Security
Type Name

apiKey

JWT

3.2.5. Create new lines for a bank statement header

POST /bank_statements/{header}/lines
Description

Lines will be appended and numbered automatically.

Parameters
Type Name Description Schema

Path

header
required

bank statement header id

string

Body

body
required

Lines to append

BankStatementRequestDto

Responses
HTTP Code Description Schema

200

successful operation

BankStatementLineResultDto

400

input invalid, see detailed message

RestError

Consumes
  • application/json

Produces
  • application/json

Security
Type Name

apiKey

JWT

3.3. Cash Register - Daily Closing

3.3.1. Get all daily closings for a cash register

GET /cash_registers/{cash_register}/daily_closings
Parameters
Type Name Description Schema

Path

cash_register
required

Cash register number

integer (int32)

Query

from
optional

Minimum date for returned daily closings, ignored if invalid

string

Query

to
optional

Maximum date for returned daily closings, ignored if invalid

string

Responses
HTTP Code Description Schema

200

successful operation

< DailyClosingDto > array

400

cash register not found

RestError

Consumes
  • application/json

Produces
  • application/json

Security
Type Name

apiKey

JWT

3.3.2. Get the last daily closing for a cash register

GET /cash_registers/{cash_register}/daily_closings/last
Parameters
Type Name Description Schema

Path

cash_register
required

Cash register number

integer (int32)

Responses
HTTP Code Description Schema

200

successful operation

DailyClosingDto

400

cash register not found

RestError

404

daily closing not found

RestError

Consumes
  • application/json

Produces
  • application/json

Security
Type Name

apiKey

JWT

3.3.3. Close the month with the last daily closing

POST /cash_registers/{cash_register}/daily_closings/last/close_month
Description

The daily closing must be finalized and not already closing the month

Parameters
Type Name Description Schema

Path

cash_register
required

Cash register number

integer (int32)

Responses
HTTP Code Description Schema

200

successful operation

DailyClosingDto

400

input invalid, see detailed message

RestError

404

daily closing not found

RestError

Consumes
  • application/json

Produces
  • application/json

Security
Type Name

apiKey

JWT

3.3.4. Close the year with the last daily closing

POST /cash_registers/{cash_register}/daily_closings/last/close_year
Description

The daily closing must be finalized and not already closing the year

Parameters
Type Name Description Schema

Path

cash_register
required

Cash register number

integer (int32)

Responses
HTTP Code Description Schema

200

successful operation

DailyClosingDto

400

input invalid, see detailed message

RestError

404

daily closing not found

RestError

Consumes
  • application/json

Produces
  • application/json

Security
Type Name

apiKey

JWT

3.3.5. Finalize the last daily closing

POST /cash_registers/{cash_register}/daily_closings/last/finalize
Description

The daily closing must be open

Parameters
Type Name Description Schema

Path

cash_register
required

Cash register number

integer (int32)

Body

body
optional

Finalization confirmation

DailyClosingFinalizationDto

Responses
HTTP Code Description Schema

200

successful operation

DailyClosingDto

400

input invalid, see detailed message

RestError

404

daily closing not found

RestError

Consumes
  • application/json

Produces
  • application/json

Security
Type Name

apiKey

JWT

3.3.6. Get a specific daily closing for a cash register

GET /cash_registers/{cash_register}/daily_closings/{daily_closing}
Parameters
Type Name Description Schema

Path

cash_register
required

Cash register number

integer (int32)

Path

daily_closing
required

Daily closing date

string

Responses
HTTP Code Description Schema

200

successful operation

DailyClosingDto

400

cash register not found

RestError

404

daily closing not found

RestError

Consumes
  • application/json

Produces
  • application/json

Security
Type Name

apiKey

JWT

3.4. Cash Register - Receipt

3.4.1. Create a new receipt for the cash register

POST /cash_registers/{cash_register}/receipts
Parameters
Type Name Description Schema

Path

cash_register
required

Cash register number

integer (int32)

Body

body
required

the receipt to create

ReceiptDto

Responses
HTTP Code Description Schema

200

successful operation

ReceiptDto

400

input invalid, see detailed message

RestError

Consumes
  • application/json

Produces
  • application/json

Security
Type Name

apiKey

JWT

3.4.2. Get all receipts for a cash register

GET /cash_registers/{cash_register}/receipts
Parameters
Type Name Description Schema

Path

cash_register
required

Cash register number

integer (int32)

Query

from
optional

Minimum date for returned receipts, ignored if invalid

string

Query

to
optional

Maximum date for returned receipts, ignored if invalid

string

Responses
HTTP Code Description Schema

200

successful operation

< ReceiptDto > array

400

cash register not found

RestError

Consumes
  • application/json

Produces
  • application/json

Security
Type Name

apiKey

JWT

3.4.3. Get a specific receipt for a cash register

GET /cash_registers/{cash_register}/receipts/{receipt}
Parameters
Type Name Description Schema

Path

cash_register
required

Cash register number

integer (int32)

Path

receipt
required

the sequence number of the receipt

string

Responses
HTTP Code Description Schema

200

successful operation

ReceiptDto

400

cash register not found

RestError

404

receipt not found

RestError

Consumes
  • application/json

Produces
  • application/json

Security
Type Name

apiKey

JWT

3.4.4. Cancel a receipt for the cash register

POST /cash_registers/{cash_register}/receipts/{receipt}/cancel
Description

the receipt cannot be cancelled or a cancel receipt

Parameters
Type Name Description Schema

Path

cash_register
required

Cash register number

integer (int32)

Path

receipt
required

the sequence number of the receipt

string

Responses
HTTP Code Description Schema

200

successful operation

ReceiptDto

400

input invalid, see detailed message

RestError

Consumes
  • application/json

Produces
  • application/json

Security
Type Name

apiKey

JWT

3.4.5. Get the current PDF of a receipt

GET /cash_registers/{cash_register}/receipts/{receipt}/document
Parameters
Type Name Description Schema Default

Header

referer
optional

string

Path

cash_register
required

Cash register number

integer (int32)

Path

receipt
required

the number of the receipt

string

Query

type
optional

set content-disposition

enum (inline, attachment)

"attachment"

Responses
HTTP Code Description Schema

400

cash register not found

RestError

404

receipt not found

RestError

Consumes
  • application/json

Produces
  • application/octet-stream

Security
Type Name

apiKey

JWT

3.4.6. Get a specific receipt for a cash register in the star print layout

GET /cash_registers/{cash_register}/receipts/{receipt}/layout/star
Parameters
Type Name Description Schema

Path

cash_register
required

Cash register number

integer (int32)

Path

receipt
required

the sequence number of the receipt

string

Query

width
optional

the width of fixed-size elements like tables

integer (int32)

Responses
HTTP Code Description Schema

200

successful operation

StarPrintReceipt

Consumes
  • application/json

Produces
  • application/json

Security
Type Name

apiKey

JWT

3.4.7. Send an e-mail with the receipt

POST /cash_registers/{cash_register}/receipts/{receipt}/send_mail
Description

The mail address must be provided. The selected customer may have one saved, but it must still be supplied for verification

Parameters
Type Name Description Schema

Path

cash_register
required

Cash register number

integer (int32)

Path

receipt
required

the sequence number of the receipt

string

Body

body
required

the recipient

MailRecipientDto

Responses
HTTP Code Description Schema

200

successful operation

ReceiptDto

400

input invalid, see detailed message

RestError

Consumes
  • application/json

Produces
  • application/json

Security
Type Name

apiKey

JWT

3.5. Cash Register - Setup

3.5.1. Get all active cash registers

GET /cash_registers
Description

The register number must be supplied when creating cash payments for invoices

Responses
HTTP Code Description Schema

200

successful operation

< CashRegisterDto > array

Consumes
  • application/json

Produces
  • application/json

Security
Type Name

apiKey

JWT

3.5.2. Get a specific cash register

GET /cash_registers/{cash_register}
Parameters
Type Name Description Schema

Path

cash_register
required

Cash register number

integer (int32)

Responses
HTTP Code Description Schema

200

successful operation

CashRegisterDto

404

cash register not found

RestError

Consumes
  • application/json

Produces
  • application/json

Security
Type Name

apiKey

JWT

3.5.3. Get the current print layout setup of a specific cash register

GET /cash_registers/{cash_register}/layout
Parameters
Type Name Description Schema

Path

cash_register
required

Cash register number

integer (int32)

Responses
HTTP Code Description Schema

200

successful operation

CashRegisterLayoutDto

404

cash register not found

RestError

Consumes
  • application/json

Produces
  • application/json

Security
Type Name

apiKey

JWT

3.6. Core Services

3.6.1. Revoke the active session

DELETE /session
Parameters
Type Name Description Schema

Query

refresh_token
required

current refresh token of the session

string

Responses
HTTP Code Description Schema

default

successful operation

No Content

Consumes
  • application/json

Produces
  • application/json

Security
Type Name

apiKey

JWT

3.7. Financial Setup

3.7.1. Get all accounts

GET /accounts
Description

Accounts are required for business document lines and can be optionally added to items. Every account has one or multiple tax class entries, such an entry is also required for a business document line.

Parameters
Type Name Description Schema

Query

type
optional

Account type code to filter, examples are E (revenue), M (revenue gastronomy), A (expenses), L (assets), S (miscellaneous), U (cash, rebooks, etc.)

enum (E, A, L, W, G, Z, S, F, U, C)

Responses
HTTP Code Description Schema

200

successful operation

< AccountDto > array

Consumes
  • application/json

Produces
  • application/json

Security
Type Name

apiKey

JWT

3.7.2. Get account balances over the specified time period

GET /accounts/balances
Description

calculated as the sum of all bookings

Parameters
Type Name Description Schema

Query

from
optional

Effective date of accounts, defaults to today

string

Query

method
optional

Calculation method to use, default is N (net)

enum (N, T)

Query

to
optional

Effective date of accounts, defaults to today

string

Query

type
optional

Account type code to filter, examples are E (revenue), M (revenue gastronomy), A (expenses), L (assets), S (miscellaneous), U (cash, rebooks, etc.)

enum (E, A, L, W, G, Z, S, F, U, C)

Responses
HTTP Code Description Schema

200

successful operation

< AccountBalanceDto > array

Consumes
  • application/json

Produces
  • application/json

Security
Type Name

apiKey

JWT

3.7.3. Get account balances for each month over a fiscal year

GET /accounts/balances_per_month
Description

calculated as the sum of all bookings

Parameters
Type Name Description Schema

Query

closing_entries
optional

If closing entries should be included in the calculation

boolean

Query

fiscal_year
required

The fiscal year as basis for the balance calculation

integer (int32)

Query

method
optional

Calculation method to use (net or total), default is N (net)

enum (N, T)

Query

opening_balances
optional

If opening balances should be included in the calculation

boolean

Query

totals
optional

If totals should be calculated for each account

boolean

Responses
HTTP Code Description Schema

200

successful operation

< AccountLineDto > array

Consumes
  • application/json

Produces
  • application/json

Security
Type Name

apiKey

JWT

3.7.4. Get all accounts allowed for rebooking

GET /accounts/rebook_accounts
Description

Returns all accounts that are available as the from-account in rebooks, depending on type.

Parameters
Type Name Description Schema

Query

date
optional

Effective date of accounts, defaults to today

string

Query

search
optional

Additional filter string, optional

string

Query

type
required

Rebook type

enum (REBOOK, CORRECTION, FINALIZATION)

Responses
HTTP Code Description Schema

200

successful operation

< AccountDto > array

400

Invalid input

RestError

Consumes
  • application/json

Produces
  • application/json

Security
Type Name

apiKey

JWT

3.7.5. Get all accounts relevant to cash register receipts

GET /accounts/receipt_accounts
Description

Returns all accounts that can be used for item lines in cash register receipts. This includes income and receivables accounts.

Responses
HTTP Code Description Schema

200

successful operation

< AccountDto > array

Consumes
  • application/json

Produces
  • application/json

Security
Type Name

apiKey

JWT

3.7.6. Get a specific account

GET /accounts/{account}
Parameters
Type Name Description Schema

Path

account
required

Account code

string

Responses
HTTP Code Description Schema

200

successful operation

AccountDto

404

account not found

RestError

Consumes
  • application/json

Produces
  • application/json

Security
Type Name

apiKey

JWT

3.7.7. Get all contra accounts allowed for rebooking

GET /accounts/{account}/rebook_contra_accounts
Description

Returns all accounts that are available as the to-account, depending on the type and from-account.

Parameters
Type Name Description Schema

Path

account
required

Account code

string

Query

date
optional

Effective date of accounts, defaults to today

string

Query

search
optional

Additional filter string, optional

string

Query

type
required

Rebook type

enum (REBOOK, CORRECTION, FINALIZATION)

Responses
HTTP Code Description Schema

200

successful operation

< AccountDto > array

400

Invalid input

RestError

Consumes
  • application/json

Produces
  • application/json

Security
Type Name

apiKey

JWT

3.7.8. Get all tax class entries for an account

GET /accounts/{account}/tax_class_entries
Description

A tax class entry references a specific tax rate for a business document line or item.

Parameters
Type Name Description Schema

Path

account
required

Account code

string

Responses
HTTP Code Description Schema

200

successful operation

< TaxClassEntryDto > array

400

account not found

RestError

Consumes
  • application/json

Produces
  • application/json

Security
Type Name

apiKey

JWT

3.7.9. Get a specific tax class entry for an account

GET /accounts/{account}/tax_class_entries/{tax_class_entry}
Parameters
Type Name Description Schema

Path

account
required

Account code

string

Path

tax_class_entry
required

Tax class entry code

string

Responses
HTTP Code Description Schema

200

successful operation

TaxClassEntryDto

400

account not found

RestError

404

tax class entry not found

RestError

Consumes
  • application/json

Produces
  • application/json

Security
Type Name

apiKey

JWT

3.7.10. Get all bank accounts

GET /bank_accounts
Responses
HTTP Code Description Schema

200

successful operation

< BankAccountDto > array

Consumes
  • application/json

Produces
  • application/json

Security
Type Name

apiKey

JWT

3.7.11. Get a specific bank account by id

GET /bank_accounts/{bank_account}
Parameters
Type Name Description Schema

Path

bank_account
required

Bank account id

string

Responses
HTTP Code Description Schema

200

successful operation

BankAccountDto

404

bank account not found

RestError

Consumes
  • application/json

Produces
  • application/json

Security
Type Name

apiKey

JWT

3.7.12. Get all countries

GET /countries
Responses
HTTP Code Description Schema

200

successful operation

< CountryDto > array

Consumes
  • application/json

Produces
  • application/json

Security
Type Name

apiKey

JWT

3.7.13. Get a specific country

GET /countries/{country}
Parameters
Type Name Description Schema

Path

country
required

Country code

string

Responses
HTTP Code Description Schema

200

successful operation

CountryDto

404

country not found

RestError

Consumes
  • application/json

Produces
  • application/json

Security
Type Name

apiKey

JWT

3.7.14. Get all regions for a country

GET /countries/{country}/regions
Parameters
Type Name Description Schema

Path

country
required

Country code

string

Responses
HTTP Code Description Schema

200

successful operation

< RegionDto > array

400

country not found

RestError

Consumes
  • application/json

Produces
  • application/json

Security
Type Name

apiKey

JWT

3.7.15. Get a specific region for a country

GET /countries/{country}/regions/{region}
Parameters
Type Name Description Schema

Path

country
required

Country code

string

Path

region
required

Region code

string

Responses
HTTP Code Description Schema

200

successful operation

RegionDto

400

country not found

RestError

404

region not found

RestError

Consumes
  • application/json

Produces
  • application/json

Security
Type Name

apiKey

JWT

3.8. Incoming And Outgoing Invoices (accounting) - Incoming Invoice

3.8.1. Create an incoming invoice

POST /incoming_invoices
Parameters
Type Name Description Schema

Body

body
required

Create incoming invoice

IncomingInvoiceDto

Responses
HTTP Code Description Schema

200

successful operation

ApiResultIncomingInvoiceDto

400

input invalid, see detailed message

RestError

404

invoice not found

RestError

Consumes
  • application/json

Produces
  • application/json

Security
Type Name

apiKey

JWT

3.8.2. Get all incoming invoices with search parameters

GET /incoming_invoices
Parameters
Type Name Schema

Query

from
required

string

Query

search_text
optional

string

Query

state
optional

string

Query

to
required

string

Responses
HTTP Code Description Schema

200

successful operation

IncomingInvoiceDto

Consumes
  • application/json

Produces
  • application/json

Security
Type Name

apiKey

JWT

3.8.3. Get an incoming invoice by id

GET /incoming_invoices/{invoice}
Parameters
Type Name Description Schema

Path

invoice
required

Invoice id

string

Responses
HTTP Code Description Schema

200

successful operation

IncomingInvoiceDto

404

invoice not found

RestError

Consumes
  • application/json

Produces
  • application/json

Security
Type Name

apiKey

JWT

3.8.4. Delete an unpaid invoice (only for EA-booking)

DELETE /incoming_invoices/{invoice}
Parameters
Type Name Description Schema

Path

invoice
required

Invoice id

string

Responses
HTTP Code Description Schema

404

input invalid, see detailed message

RestError

Consumes
  • application/json

Produces
  • application/json

Security
Type Name

apiKey

JWT

3.8.5. Get all bookings from an invoice

GET /incoming_invoices/{invoice}/bookings
Parameters
Type Name Description Schema

Path

invoice
required

Invoice id

string

Responses
HTTP Code Description Schema

200

successful operation

IncomingInvoiceDto

404

invoice not found

RestError

Consumes
  • application/json

Produces
  • application/json

Security
Type Name

apiKey

JWT

3.8.6. Get a booking from an invoice

GET /incoming_invoices/{invoice}/bookings/{booking}
Parameters
Type Name Description Schema

Path

booking
required

booking id

string

Path

invoice
required

Invoice id

string

Responses
HTTP Code Description Schema

200

successful operation

IncomingInvoiceDto

404

invoice or booking not found

RestError

Consumes
  • application/json

Produces
  • application/json

Security
Type Name

apiKey

JWT

3.8.7. Cancel a booking

POST /incoming_invoices/{invoice}/bookings/{booking}/cancel
Parameters
Type Name Description Schema

Path

booking
required

booking id

string

Path

invoice
required

Invoice id

string

Body

body
required

CancellationDto

Responses
HTTP Code Description Schema

200

successful operation

ApiResultIncomingInvoiceDto

400

input invalid, see detailed message

RestError

404

invoice or booking not found

RestError

Consumes
  • application/json

Produces
  • application/json

Security
Type Name

apiKey

JWT

3.8.8. Cancel an incoming invoice

POST /incoming_invoices/{invoice}/cancel
Parameters
Type Name Description Schema

Path

invoice
required

Invoice id

string

Body

body
required

CancellationDto

Responses
HTTP Code Description Schema

200

successful operation

ApiResultIncomingInvoiceDto

400

input invalid, see detailed message

RestError

404

invoice not found

RestError

Consumes
  • application/json

Produces
  • application/json

Security
Type Name

apiKey

JWT

3.8.9. Get a journal from an invoice booking by journal number

GET /incoming_invoices/{invoice}/journals/{journal}
Parameters
Type Name Description Schema

Path

invoice
required

Invoice id

string

Path

journal
required

Journal id

string

Responses
HTTP Code Description Schema

200

successful operation

IncomingInvoiceDto

404

incoming invoice not found

RestError

Consumes
  • application/json

Produces
  • application/json

Security
Type Name

apiKey

JWT

3.8.10. Pay an incoming invoice

POST /incoming_invoices/{invoice}/pay
Parameters
Type Name Description Schema

Path

invoice
required

Invoice id

string

Body

body
required

CbiPaymentDto

Responses
HTTP Code Description Schema

200

successful operation

ApiResultIncomingInvoiceDto

400

input invalid, see detailed message

RestError

404

invoice not found

RestError

Consumes
  • application/json

Produces
  • application/json

Security
Type Name

apiKey

JWT

3.8.11. Pay the rest of an incoming invoice

POST /incoming_invoices/{invoice}/pay_rest
Parameters
Type Name Description Schema

Path

invoice
required

Invoice id

string

Body

body
required

RestPaymentDto

Responses
HTTP Code Description Schema

200

successful operation

ApiResultIncomingInvoiceDto

400

input invalid, see detailed message

RestError

404

invoice not found

RestError

Consumes
  • application/json

Produces
  • application/json

Security
Type Name

apiKey

JWT

3.9. Incoming And Outgoing Invoices (accounting) - Outgoing Invoice

3.9.1. Create an outgoing invoice

POST /outgoing_invoices
Parameters
Type Name Description Schema

Body

body
required

Create rebook

OutgoingInvoiceDto

Responses
HTTP Code Description Schema

200

successful operation

ApiResultOutgoingInvoiceDto

400

input invalid, see detailed message

RestError

404

invoice not found

RestError

Consumes
  • application/json

Produces
  • application/json

Security
Type Name

apiKey

JWT

3.9.2. Get all outgoing invoices with search parameters

GET /outgoing_invoices
Parameters
Type Name Schema

Query

from
required

string

Query

search_text
optional

string

Query

state
optional

string

Query

to
required

string

Responses
HTTP Code Description Schema

200

successful operation

OutgoingInvoiceDto

Consumes
  • application/json

Produces
  • application/json

Security
Type Name

apiKey

JWT

3.9.3. Get an outgoing invoice by id

GET /outgoing_invoices/{invoice}
Parameters
Type Name Description Schema

Path

invoice
required

Invoice id

string

Responses
HTTP Code Description Schema

200

successful operation

OutgoingInvoiceDto

404

outgoing invoice not found

RestError

Consumes
  • application/json

Produces
  • application/json

Security
Type Name

apiKey

JWT

3.9.4. Delete an unpaid invoice (only for EA-booking)

DELETE /outgoing_invoices/{invoice}
Parameters
Type Name Description Schema

Path

invoice
required

Invoice id

string

Responses
HTTP Code Description Schema

404

invoice not found

RestError

Consumes
  • application/json

Produces
  • application/json

Security
Type Name

apiKey

JWT

3.9.5. Get all bookings by invoice id

GET /outgoing_invoices/{invoice}/bookings
Parameters
Type Name Description Schema

Path

invoice
required

Invoice id

string

Responses
HTTP Code Description Schema

200

successful operation

OutgoingInvoiceDto

404

invoice not found

RestError

Consumes
  • application/json

Produces
  • application/json

Security
Type Name

apiKey

JWT

3.9.6. Get a booking from an invoice

GET /outgoing_invoices/{invoice}/bookings/{booking}
Parameters
Type Name Description Schema

Path

booking
required

booking id

string

Path

invoice
required

Invoice id

string

Responses
HTTP Code Description Schema

200

successful operation

OutgoingInvoiceDto

404

invoice or booking not found

RestError

Consumes
  • application/json

Produces
  • application/json

Security
Type Name

apiKey

JWT

3.9.7. Cancel a booking

POST /outgoing_invoices/{invoice}/bookings/{booking}/cancel
Parameters
Type Name Description Schema

Path

booking
required

booking id

string

Path

invoice
required

Invoice id

string

Body

body
required

CancellationDto

Responses
HTTP Code Description Schema

200

successful operation

ApiResultOutgoingInvoiceDto

400

input invalid, see detailed message

RestError

404

invoice or booking not found

RestError

Consumes
  • application/json

Produces
  • application/json

Security
Type Name

apiKey

JWT

3.9.8. Cancel an outgoing invoice

POST /outgoing_invoices/{invoice}/cancel
Parameters
Type Name Description Schema

Path

invoice
required

Invoice id

string

Body

body
required

CancellationDto

Responses
HTTP Code Description Schema

200

successful operation

ApiResultOutgoingInvoiceDto

400

input invalid, see detailed message

RestError

404

invoice not found

RestError

Consumes
  • application/json

Produces
  • application/json

Security
Type Name

apiKey

JWT

3.9.9. Get a journal from an invoice booking by journal number

GET /outgoing_invoices/{invoice}/journals/{journal}
Parameters
Type Name Description Schema

Path

invoice
required

Invoice id

string

Path

journal
required

Journal id

string

Responses
HTTP Code Description Schema

200

successful operation

OutgoingInvoiceDto

404

incoming invoice not found

RestError

Consumes
  • application/json

Produces
  • application/json

Security
Type Name

apiKey

JWT

3.9.10. Pay an outgoing invoice

POST /outgoing_invoices/{invoice}/pay
Parameters
Type Name Description Schema

Path

invoice
required

Invoice id

string

Body

body
required

CbiPaymentDto

Responses
HTTP Code Description Schema

200

successful operation

ApiResultOutgoingInvoiceDto

400

input invalid, see detailed message

RestError

404

invoice not found

RestError

Consumes
  • application/json

Produces
  • application/json

Security
Type Name

apiKey

JWT

3.9.11. Pay the rest of an outgoing invoice

POST /outgoing_invoices/{invoice}/pay_rest
Parameters
Type Name Description Schema

Path

invoice
required

Invoice id

string

Body

body
required

RestPaymentDto

Responses
HTTP Code Description Schema

200

successful operation

ApiResultOutgoingInvoiceDto

400

input invalid, see detailed message

RestError

404

invoice not found

RestError

Consumes
  • application/json

Produces
  • application/json

Security
Type Name

apiKey

JWT

3.10. Invoices And Documents - Credit Memo

3.10.1. Create a new credit memo

POST /credit_memos
Description

Depending on the supplied state, credit memos are either created for staging (and completed manually) or immediately finalized. Once finalized, a number is assigned and the PDF created. If a number is coming from an external system, the external state and an id must be set. External documents cannot be edited and no PDF is created.

Parameters
Type Name Description Schema

Body

body
required

Credit memo to create

CreditMemoDto

Responses
HTTP Code Description Schema

200

successful operation

CreditMemoDto

400

input invalid, see detailed message

RestError

Consumes
  • application/json

Produces
  • application/json

Security
Type Name

apiKey

JWT

3.10.2. Get all finalized and external credit memos

GET /credit_memos
Description

Documents created for staging are only visible in the application

Parameters
Type Name Description Schema

Query

paid
optional

return only paid (true) or unpaid (false) credit memos

boolean

Query

updated_since
optional

return only documents updated after this timestamp in milliseconds (Instant.now().toEpochMilli())

integer (int64)

Responses
HTTP Code Description Schema

200

successful operation

< CreditMemoDto > array

Consumes
  • application/json

Produces
  • application/json

Security
Type Name

apiKey

JWT

3.10.3. Get a specific credit memo

GET /credit_memos/{credit_memo}
Parameters
Type Name Description Schema

Path

credit_memo
required

Credit memo number

string

Responses
HTTP Code Description Schema

200

successful operation

CreditMemoDto

404

credit memo not found

RestError

Consumes
  • application/json

Produces
  • application/json

Security
Type Name

apiKey

JWT

3.10.4. Get all non-payment bookings for a specific credit memo

GET /credit_memos/{credit_memo}/bookings
Parameters
Type Name Description Schema

Path

credit_memo
required

Credit memo number

string

Responses
HTTP Code Description Schema

200

successful operation

< PaymentHistoryDto > array

404

credit memo not found

RestError

Consumes
  • application/json

Produces
  • application/json

Security
Type Name

apiKey

JWT

3.10.5. Cancel a specific credit memo

POST /credit_memos/{credit_memo}/cancel
Description

Only finalized or external documents can be cancelled.

Parameters
Type Name Description Schema

Path

credit_memo
required

Credit memo number

string

Body

body
optional

Additional cancel info

BusinessDocumentCancelDto

Responses
HTTP Code Description Schema

200

successful operation

CreditMemoDto

400

input invalid, see detailed message

RestError

404

credit memo not found

RestError

Consumes
  • application/json

Produces
  • application/json

Security
Type Name

apiKey

JWT

3.10.6. Get the current pdf document of a specific credit memo as download

GET /credit_memos/{credit_memo}/document
Parameters
Type Name Description Schema

Path

credit_memo
required

Credit memo number

string

Responses
HTTP Code Description Schema

400

credit memo not found

RestError

404

credit memo document not found

RestError

Consumes
  • application/json

Produces
  • application/octet-stream

Security
Type Name

apiKey

JWT

3.10.7. Create a new payment for a credit memo

POST /credit_memos/{credit_memo}/payments
Parameters
Type Name Description Schema

Path

credit_memo
required

Credit memo number

string

Body

body
required

Payment to create

CreditMemoPaymentDto

Responses
HTTP Code Description Schema

200

successful operation

< PaymentHistoryDto > array

400

input invalid, see detailed message

RestError

Consumes
  • application/json

Produces
  • application/json

Security
Type Name

apiKey

JWT

3.10.8. Get all payments for a specific credit memo

GET /credit_memos/{credit_memo}/payments
Parameters
Type Name Description Schema

Path

credit_memo
required

Credit memo number

string

Responses
HTTP Code Description Schema

200

successful operation

< PaymentHistoryDto > array

404

credit memo not found

RestError

Consumes
  • application/json

Produces
  • application/json

Security
Type Name

apiKey

JWT

3.11. Invoices And Documents - Delivery Note

3.11.1. Create a new delivery note

POST /delivery_notes
Description

Depending on the supplied state, delivery notes are either created for staging (and completed manually) or immediately finalized. Once finalized, a number is assigned and the PDF created. If a number is coming from an external system, the external state and an id must be set. External documents cannot be edited and no PDF is created.

Parameters
Type Name Description Schema

Body

body
required

Delivery note to create

DeliveryNoteDto

Responses
HTTP Code Description Schema

200

successful operation

DeliveryNoteDto

400

input invalid, see detailed message

RestError

Consumes
  • application/json

Produces
  • application/json

Security
Type Name

apiKey

JWT

3.11.2. Get all finalized and external delivery notes

GET /delivery_notes
Description

Documents created for staging are only visible in the application

Parameters
Type Name Description Schema

Query

updated_since
optional

return only documents updated after this timestamp in milliseconds (Instant.now().toEpochMilli())

integer (int64)

Responses
HTTP Code Description Schema

200

successful operation

< PaymentHistoryDto > array

Consumes
  • application/json

Produces
  • application/json

Security
Type Name

apiKey

JWT

3.11.3. Get a specific delivery note

GET /delivery_notes/{delivery_note}
Parameters
Type Name Description Schema

Path

delivery_note
required

Delivery note number

string

Responses
HTTP Code Description Schema

200

successful operation

DeliveryNoteDto

404

delivery note not found

RestError

Consumes
  • application/json

Produces
  • application/json

Security
Type Name

apiKey

JWT

3.11.4. Cancel a specific delivery note

POST /delivery_notes/{delivery_note}/cancel
Description

Only finalized or external documents can be cancelled.

Parameters
Type Name Description Schema

Path

delivery_note
required

Delivery note number

string

Body

body
optional

Additional cancel info

BusinessDocumentCancelDto

Responses
HTTP Code Description Schema

200

successful operation

DeliveryNoteDto

400

input invalid, see detailed message

RestError

404

delivery note not found

RestError

Consumes
  • application/json

Produces
  • application/json

Security
Type Name

apiKey

JWT

3.11.5. Complete a specific delivery note

POST /delivery_notes/{delivery_note}/complete
Description

Only finalized can be completed.

Parameters
Type Name Description Schema

Path

delivery_note
required

string

Body

body
optional

Additional complete info

BusinessDocumentCompleteDto

Responses
HTTP Code Description Schema

200

successful operation

DeliveryNoteDto

400

input invalid, see detailed message

RestError

404

delivery note not found

RestError

Consumes
  • application/json

Produces
  • application/json

Security
Type Name

apiKey

JWT

3.11.6. Get the current pdf document of a specific delivery note as download

GET /delivery_notes/{delivery_note}/document
Parameters
Type Name Description Schema

Path

delivery_note
required

Delivery note number

string

Responses
HTTP Code Description Schema

400

delivery note not found

RestError

404

delivery note document not found

RestError

Consumes
  • application/json

Produces
  • application/octet-stream

Security
Type Name

apiKey

JWT

3.12. Invoices And Documents - Invoice

3.12.1. Create a new invoice

POST /invoices
Description

Depending on the supplied state, invoices are either created for staging (and completed manually) or immediately finalized. Once finalized, a number is assigned and the PDF created. If a number is coming from an external system, the external state and an id must be set. External documents cannot be edited and no PDF is created.

Parameters
Type Name Description Schema

Body

body
required

Invoice to create

InvoiceDto

Responses
HTTP Code Description Schema

200

successful operation

InvoiceDto

400

input invalid, see detailed message

RestError

Consumes
  • application/json

Produces
  • application/json

Security
Type Name

apiKey

JWT

3.12.2. Get all finalized and external invoices

GET /invoices
Description

Documents created for staging are only visible in the application

Parameters
Type Name Description Schema

Query

paid
optional

return only paid (true) or unpaid (false) invoices

boolean

Query

updated_since
optional

return only invoices updated after this timestamp in milliseconds (Instant.now().toEpochMilli())

integer (int64)

Responses
HTTP Code Description Schema

200

successful operation

< InvoiceDto > array

Consumes
  • application/json

Produces
  • application/json

Security
Type Name

apiKey

JWT

3.12.3. Get a specific invoice

GET /invoices/{invoice}
Parameters
Type Name Description Schema

Path

invoice
required

Invoice number

string

Responses
HTTP Code Description Schema

200

successful operation

InvoiceDto

404

invoice not found

RestError

Consumes
  • application/json

Produces
  • application/json

Security
Type Name

apiKey

JWT

3.12.4. Get all non-payment bookings for a specific invoice

GET /invoices/{invoice}/bookings
Parameters
Type Name Description Schema

Path

invoice
required

Invoice number

string

Responses
HTTP Code Description Schema

200

successful operation

< PaymentHistoryDto > array

400

invoice not found

RestError

Consumes
  • application/json

Produces
  • application/json

Security
Type Name

apiKey

JWT

3.12.5. Cancel a specific invoice

POST /invoices/{invoice}/cancel
Description

Only finalized or external documents can be cancelled.

Parameters
Type Name Description Schema

Path

invoice
required

Invoice number

string

Body

body
optional

Additional cancel info

BusinessDocumentCancelDto

Responses
HTTP Code Description Schema

200

successful operation

InvoiceDto

400

input invalid, see detailed message

RestError

404

invoice not found

RestError

Consumes
  • application/json

Produces
  • application/json

Security
Type Name

apiKey

JWT

3.12.6. Get the current pdf document of a specific invoice as download

GET /invoices/{invoice}/document
Parameters
Type Name Description Schema

Path

invoice
required

Invoice number

string

Responses
HTTP Code Description Schema

400

invoice not found

RestError

404

invoice document not found

RestError

Consumes
  • application/json

Produces
  • application/octet-stream

Security
Type Name

apiKey

JWT

3.12.7. Create a new payment for an invoice

POST /invoices/{invoice}/payments
Parameters
Type Name Description Schema

Path

invoice
required

Invoice number

string

Body

body
required

Payment to create

InvoicePaymentDto

Responses
HTTP Code Description Schema

200

successful operation

< PaymentHistoryDto > array

400

input invalid, see detailed message

RestError

Consumes
  • application/json

Produces
  • application/json

Security
Type Name

apiKey

JWT

3.12.8. Get all payments for a specific invoice

GET /invoices/{invoice}/payments
Parameters
Type Name Description Schema

Path

invoice
required

Invoice number

string

Responses
HTTP Code Description Schema

200

successful operation

< PaymentHistoryDto > array

400

invoice not found

RestError

Consumes
  • application/json

Produces
  • application/json

Security
Type Name

apiKey

JWT

3.13. Invoices And Documents - Offer

3.13.1. Create a new offer

POST /offers
Description

Depending on the supplied state, offers are either created for staging (and completed manually) or immediately finalized. Once finalized, a number is assigned and the PDF created. If a number is coming from an external system, the external state and an id must be set. External documents cannot be edited and no PDF is created.

Parameters
Type Name Description Schema

Body

body
required

Offer to create

OfferDto

Responses
HTTP Code Description Schema

200

successful operation

OfferDto

400

input invalid, see detailed message

RestError

Consumes
  • application/json

Produces
  • application/json

Security
Type Name

apiKey

JWT

3.13.2. Get all finalized and external offers

GET /offers
Parameters
Type Name Description Schema

Query

updated_since
optional

return only documents updated after this timestamp in milliseconds (Instant.now().toEpochMilli())

integer (int64)

Responses
HTTP Code Description Schema

200

successful operation

< OfferDto > array

Consumes
  • application/json

Produces
  • application/json

Security
Type Name

apiKey

JWT

3.13.3. Get a specific offer

GET /offers/{offer}
Parameters
Type Name Description Schema

Path

offer
required

Offer number

string

Responses
HTTP Code Description Schema

200

successful operation

OfferDto

404

offer not found

RestError

Consumes
  • application/json

Produces
  • application/json

Security
Type Name

apiKey

JWT

3.13.4. Cancel a specific offer

POST /offers/{offer}/cancel
Description

Only finalized or external documents can be cancelled.

Parameters
Type Name Description Schema

Path

offer
required

string

Body

body
optional

Additional cancel info

BusinessDocumentCancelDto

Responses
HTTP Code Description Schema

200

successful operation

OfferDto

400

input invalid, see detailed message

RestError

404

offer not found

RestError

Consumes
  • application/json

Produces
  • application/json

Security
Type Name

apiKey

JWT

3.13.5. Complete a specific offer

POST /offers/{offer}/complete
Description

Only finalized can be completed.

Parameters
Type Name Description Schema

Path

offer
required

string

Body

body
optional

Additional complete info

BusinessDocumentCompleteDto

Responses
HTTP Code Description Schema

200

successful operation

OfferDto

400

input invalid, see detailed message

RestError

404

offer not found

RestError

Consumes
  • application/json

Produces
  • application/json

Security
Type Name

apiKey

JWT

3.13.6. Get the current pdf document of a specific offer as download

GET /offers/{offer}/document
Parameters
Type Name Description Schema

Path

offer
required

Offer number

string

Responses
HTTP Code Description Schema

400

offer not found

RestError

404

offer document not found

RestError

Consumes
  • application/json

Produces
  • application/octet-stream

Security
Type Name

apiKey

JWT

3.14. Invoices And Documents - Order Confirmation

3.14.1. Create new order confirmation

POST /order_confirmations
Description

Depending on the supplied state, order confirmations are either created for staging (and completed manually) or immediately finalized. Once finalized, a number is assigned and the PDF created. If a number is coming from an external system, the external state and an id must be set. External documents cannot be edited and no PDF is created.

Parameters
Type Name Description Schema

Body

body
required

Order confirmation to create

OrderConfirmationDto

Responses
HTTP Code Description Schema

200

successful operation

OrderConfirmationDto

400

input invalid, see detailed message

RestError

Consumes
  • application/json

Produces
  • application/json

Security
Type Name

apiKey

JWT

3.14.2. Get all finalized and external order confirmations

GET /order_confirmations
Parameters
Type Name Description Schema

Query

updated_since
optional

return only documents updated after this timestamp in milliseconds (Instant.now().toEpochMilli())

integer (int64)

Responses
HTTP Code Description Schema

200

successful operation

< OrderConfirmationDto > array

Consumes
  • application/json

Produces
  • application/json

Security
Type Name

apiKey

JWT

3.14.3. Get a specific order confirmation

GET /order_confirmations/{order_confirmation}
Parameters
Type Name Description Schema

Path

order_confirmation
required

Order confirmation number

string

Responses
HTTP Code Description Schema

200

successful operation

OrderConfirmationDto

404

order confirmation not found

RestError

Consumes
  • application/json

Produces
  • application/json

Security
Type Name

apiKey

JWT

3.14.4. Cancel a specific order confirmation

POST /order_confirmations/{order_confirmation}/cancel
Description

Only finalized or external documents can be cancelled.

Parameters
Type Name Description Schema

Path

order_confirmation
required

Order confirmation number

string

Body

body
optional

Additional cancel info

BusinessDocumentCancelDto

Responses
HTTP Code Description Schema

200

successful operation

OrderConfirmationDto

400

input invalid, see detailed message

RestError

404

order confirmation not found

RestError

Consumes
  • application/json

Produces
  • application/json

Security
Type Name

apiKey

JWT

3.14.5. Complete a specific order confirmation

POST /order_confirmations/{order_confirmation}/complete
Description

Only finalized can be completed.

Parameters
Type Name Description Schema

Path

order_confirmation
required

string

Body

body
optional

Additional complete info

BusinessDocumentCompleteDto

Responses
HTTP Code Description Schema

200

successful operation

OrderConfirmationDto

400

input invalid, see detailed message

RestError

404

order confirmation not found

RestError

Consumes
  • application/json

Produces
  • application/json

Security
Type Name

apiKey

JWT

3.14.6. Get the current pdf document of a specific order confirmation as download

GET /order_confirmations/{order_confirmation}/document
Parameters
Type Name Description Schema

Path

order_confirmation
required

Order confirmation number

string

Responses
HTTP Code Description Schema

400

order confirmation not found

RestError

404

order confirmation document not found

RestError

Consumes
  • application/json

Produces
  • application/octet-stream

Security
Type Name

apiKey

JWT

3.15. Invoices And Documents - Setup

3.15.1. Get all layout setups

GET /layout_setups
Description

A layout setup can be optionally defined for creating finalized documents.

Responses
HTTP Code Description Schema

200

successful operation

< LayoutSetupDto > array

Consumes
  • application/json

Produces
  • application/json

Security
Type Name

apiKey

JWT

3.15.2. Get all payment terms

GET /payment_terms
Description

A payment term can be supplied for creating finalized and external invoices

Responses
HTTP Code Description Schema

200

successful operation

< PaymentTermDto > array

Consumes
  • application/json

Produces
  • application/json

Security
Type Name

apiKey

JWT

3.15.3. Get all sequence groups

GET /sequence_groups
Description

A sequence group can be supplied for creating finalized invoices

Responses
HTTP Code Description Schema

200

successful operation

< SequenceGroupDto > array

Consumes
  • application/json

Produces
  • application/json

Security
Type Name

apiKey

JWT

3.16. Item Management

3.16.1. Create a new item category

POST /item_categories
Parameters
Type Name Description Schema

Body

body
required

Item category to create

ItemCategoryDto

Responses
HTTP Code Description Schema

200

successful operation

ItemCategoryDto

400

input invalid, see detailed message

RestError

Consumes
  • application/json

Produces
  • application/json

Security
Type Name

apiKey

JWT

3.16.2. Get all item categories

GET /item_categories
Responses
HTTP Code Description Schema

200

successful operation

< ItemCategoryDto > array

Consumes
  • application/json

Produces
  • application/json

Security
Type Name

apiKey

JWT

3.16.3. Get a specific item category

GET /item_categories/{item_category}
Parameters
Type Name Description Schema

Path

item_category
required

Item category id

string

Responses
HTTP Code Description Schema

200

successful operation

ItemCategoryDto

404

item category not found

RestError

Consumes
  • application/json

Produces
  • application/json

Security
Type Name

apiKey

JWT

3.16.4. Update an existing item category

PUT /item_categories/{item_category}
Parameters
Type Name Description Schema

Path

item_category
required

Item category id

string

Body

body
required

Complete item category to update

ItemCategoryDto

Responses
HTTP Code Description Schema

200

successful operation

ItemCategoryDto

400

input invalid, see detailed message

RestError

404

item category not found

RestError

Consumes
  • application/json

Produces
  • application/json

Security
Type Name

apiKey

JWT

3.16.5. Delete an existing item category

DELETE /item_categories/{item_category}
Parameters
Type Name Description Schema

Path

item_category
required

Item category id

string

Responses
HTTP Code Description Schema

400

input invalid, see detailed message

RestError

404

item category not found

RestError

Consumes
  • application/json

Produces
  • application/json

Security
Type Name

apiKey

JWT

3.16.6. Create a new item

POST /items
Parameters
Type Name Description Schema

Body

body
required

Item to create

ItemDto

Responses
HTTP Code Description Schema

200

successful operation

ItemDto

400

input invalid, see detailed message

RestError

Consumes
  • application/json

Produces
  • application/json

Security
Type Name

apiKey

JWT

3.16.7. Get all items

GET /items
Parameters
Type Name Description Schema

Query

category
optional

item category id

string

Query

limit
optional

return max. entry count

integer (int32)

Query

search
optional

search text

string

Responses
HTTP Code Description Schema

200

successful operation

< ItemDto > array

Consumes
  • application/json

Produces
  • application/json

Security
Type Name

apiKey

JWT

3.16.8. Get a specific item

GET /items/{item}
Parameters
Type Name Description Schema

Path

item
required

Item id

string

Responses
HTTP Code Description Schema

200

successful operation

ItemDto

404

item not found

RestError

Consumes
  • application/json

Produces
  • application/json

Security
Type Name

apiKey

JWT

3.16.9. Update an existing item

PUT /items/{item}
Parameters
Type Name Description Schema

Path

item
required

Item id

string

Body

body
required

Complete item to upgrade

ItemDto

Responses
HTTP Code Description Schema

200

successful operation

ItemDto

400

input invalid, see detailed message

RestError

404

item not found

RestError

Consumes
  • application/json

Produces
  • application/json

Security
Type Name

apiKey

JWT

3.16.10. Delete an existing item

DELETE /items/{item}
Parameters
Type Name Description Schema

Path

item
required

Item id

string

Responses
HTTP Code Description Schema

404

item not found

RestError

Consumes
  • application/json

Produces
  • application/json

Security
Type Name

apiKey

JWT

3.17. Master Data Management - Customer

3.17.1. Create a new customer

POST /customers
Parameters
Type Name Description Schema

Body

body
required

Customer to create

CustomerDto

Responses
HTTP Code Description Schema

200

successful operation

CustomerDto

400

input invalid, see detailed message

RestError

Consumes
  • application/json

Produces
  • application/json

Security
Type Name

apiKey

JWT

3.17.2. Get all customers

GET /customers
Parameters
Type Name Description Schema

Query

limit
optional

return max. entry count

integer (int32)

Query

search
optional

search text

string

Responses
HTTP Code Description Schema

200

successful operation

< CustomerDto > array

Consumes
  • application/json

Produces
  • application/json

Security
Type Name

apiKey

JWT

3.17.3. Create or replace a customer by customerNumber.

PUT /customers/by_number
Description

An exception will be thrown if the number is not unique to one customer.

Parameters
Type Name Description Schema

Body

body
required

Customer to create or replace

CustomerDto

Responses
HTTP Code Description Schema

200

successful operation

CustomerDto

400

input invalid, see detailed message.

RestError

Consumes
  • application/json

Produces
  • application/json

Security
Type Name

apiKey

JWT

3.17.4. Get a specific customer

GET /customers/{customer}
Parameters
Type Name Description Schema

Path

customer
required

Customer id

string

Responses
HTTP Code Description Schema

200

successful operation

CustomerDto

404

customer not found

RestError

Consumes
  • application/json

Produces
  • application/json

Security
Type Name

apiKey

JWT

3.17.5. Update an existing customer

PUT /customers/{customer}
Parameters
Type Name Description Schema

Path

customer
required

Customer id

string

Body

body
required

Complete customer to update

CustomerDto

Responses
HTTP Code Description Schema

200

successful operation

CustomerDto

400

input invalid, see detailed message

RestError

404

customer not found

RestError

Consumes
  • application/json

Produces
  • application/json

Security
Type Name

apiKey

JWT

3.17.6. Delete an existing customer

DELETE /customers/{customer}
Parameters
Type Name Description Schema

Path

customer
required

Customer id

string

Responses
HTTP Code Description Schema

404

customer not found

RestError

Consumes
  • application/json

Produces
  • application/json

Security
Type Name

apiKey

JWT

3.17.7. Add an address

POST /customers/{customer}/additional_addresses
Parameters
Type Name Description Schema

Path

customer
required

Customer id

string

Body

body
required

Address to create

AdditionalAddressDto

Responses
HTTP Code Description Schema

200

successful operation

AdditionalAddressDto

400

Input invalid, see detailed message

RestError

Consumes
  • application/json

Produces
  • application/json

Security
Type Name

apiKey

JWT

3.17.8. Get all additional addresses from a customer

GET /customers/{customer}/additional_addresses
Parameters
Type Name Description Schema

Path

customer
required

Customer id

string

Responses
HTTP Code Description Schema

200

successful operation

< CustomerDto > array

Consumes
  • application/json

Produces
  • application/json

Security
Type Name

apiKey

JWT

3.17.9. Get a specific address

GET /customers/{customer}/additional_addresses/{address}
Parameters
Type Name Description Schema

Path

address
required

Address id

string

Path

customer
required

Customer id

string

Responses
HTTP Code Description Schema

200

successful operation

AdditionalAddressDto

404

address not found

RestError

Consumes
  • application/json

Produces
  • application/json

Security
Type Name

apiKey

JWT

3.17.10. Update an existing address

PUT /customers/{customer}/additional_addresses/{address}
Parameters
Type Name Description Schema

Path

address
required

Address id

string

Path

customer
required

Customer id

string

Body

body
required

Complete address to update

AdditionalAddressDto

Responses
HTTP Code Description Schema

200

successful operation

AdditionalAddressDto

400

Input invalid, see detailed message

RestError

404

customer or address not found

RestError

Consumes
  • application/json

Produces
  • application/json

Security
Type Name

apiKey

JWT

3.17.11. Delete an existing address

DELETE /customers/{customer}/additional_addresses/{address}
Parameters
Type Name Description Schema

Path

address
required

Address id

string

Path

customer
required

Customer id

string

Responses
HTTP Code Description Schema

404

customer or address not found

RestError

Consumes
  • application/json

Produces
  • application/json

Security
Type Name

apiKey

JWT

3.17.12. Make an address the default for its type

POST /customers/{customer}/additional_addresses/{address}/default
Parameters
Type Name Description Schema

Path

address
required

Address id

string

Path

customer
required

Customer id

string

Responses
HTTP Code Description Schema

404

customer or address not found

RestError

Consumes
  • application/json

Produces
  • application/json

Security
Type Name

apiKey

JWT

3.17.13. Remove an address' default-state, making the main address the default again

DELETE /customers/{customer}/additional_addresses/{address}/default
Parameters
Type Name Description Schema

Path

address
required

Address id

string

Path

customer
required

Customer id

string

Responses
HTTP Code Description Schema

404

customer or address not found

RestError

Consumes
  • application/json

Produces
  • application/json

Security
Type Name

apiKey

JWT

3.17.14. Make an contra account default for the customer

POST /customers/{customer}/create_contra_account
Description

Only available for double-entry accounting

Parameters
Type Name Description Schema

Path

customer
required

Customer id

string

Body

body
optional

contraAccount

CustomerSupplierContraAccountCreationDto

Responses
HTTP Code Description Schema

200

successful operation

CustomerDto

400

Input invalid, see detailed message

RestError

404

customer not found

RestError

Consumes
  • application/json

Produces
  • application/json

Security
Type Name

apiKey

JWT

3.17.15. Make a customer’s main address the default

POST /customers/{customer}/default_address
Parameters
Type Name Description Schema

Path

customer
required

Customer id

string

Responses
HTTP Code Description Schema

404

customer not found

RestError

Consumes
  • application/json

Produces
  • application/json

Security
Type Name

apiKey

JWT

3.18. Master Data Management - Supplier

3.18.1. Create a new supplier

POST /suppliers
Parameters
Type Name Description Schema

Body

body
required

Supplier to create

SupplierDto

Responses
HTTP Code Description Schema

200

successful operation

SupplierDto

400

supplier id already exists

RestError

Consumes
  • application/json

Produces
  • application/json

Security
Type Name

apiKey

JWT

3.18.2. Get all suppliers

GET /suppliers
Parameters
Type Name Description Schema

Query

limit
optional

return max. entry count

integer (int32)

Query

search
optional

search text

string

Responses
HTTP Code Description Schema

200

successful operation

< SupplierDto > array

Consumes
  • application/json

Produces
  • application/json

Security
Type Name

apiKey

JWT

3.18.3. Create or replace a supplier by supplierNumber.

PUT /suppliers/by_number
Description

An exception will be thrown if the number is not unique to one supplier.

Parameters
Type Name Description Schema

Body

body
required

Supplier to create or replace

SupplierDto

Responses
HTTP Code Description Schema

200

successful operation

SupplierDto

400

input invalid, see detailed message

RestError

Consumes
  • application/json

Produces
  • application/json

Security
Type Name

apiKey

JWT

3.18.4. Get a specific supplier

GET /suppliers/{supplier}
Parameters
Type Name Description Schema

Path

supplier
required

Supplier id

string

Responses
HTTP Code Description Schema

200

successful operation

SupplierDto

404

supplier not found

RestError

Consumes
  • application/json

Produces
  • application/json

Security
Type Name

apiKey

JWT

3.18.5. Update an existing supplier

PUT /suppliers/{supplier}
Parameters
Type Name Description Schema

Path

supplier
required

Supplier id

string

Body

body
required

Complete supplier to update

SupplierDto

Responses
HTTP Code Description Schema

200

successful operation

SupplierDto

400

input invalid, see detailed message

RestError

404

supplier not found

RestError

Consumes
  • application/json

Produces
  • application/json

Security
Type Name

apiKey

JWT

3.18.6. Delete an existing supplier

DELETE /suppliers/{supplier}
Parameters
Type Name Description Schema

Path

supplier
required

Supplier id

string

Responses
HTTP Code Description Schema

404

supplier not found

RestError

Consumes
  • application/json

Produces
  • application/json

Security
Type Name

apiKey

JWT

3.18.7. Create a new contra account for the supplier

POST /suppliers/{supplier}/create_contra_account
Description

Only available for double-entry accounting

Parameters
Type Name Description Schema

Path

supplier
required

Supplier id

string

Body

body
optional

contraAccount

CustomerSupplierContraAccountCreationDto

Responses
HTTP Code Description Schema

200

successful operation

SupplierDto

400

Input invalid, see detailed message

RestError

404

supplier not found

RestError

Consumes
  • application/json

Produces
  • application/json

Security
Type Name

apiKey

JWT

3.19. Notifications

3.19.1. Get all unread notifications and mark them as read

POST /notifications
Responses
HTTP Code Description Schema

200

successful operation

< NotificationDto > array

Consumes
  • application/json

Produces
  • application/json

Security
Type Name

apiKey

JWT

4. Security

4.1. JWT

Type : apiKey
Name : Authorization
In : HEADER

5. Definitions

5.1. AccountBalanceDto

Name Description Schema

accountCode
optional

numeric account code
Example : "4000"

string

accountName
optional

Example : "revenue"

string

sum
optional

account sum
Example : 147.0

number

5.2. AccountDto

Name Description Schema

defaultTaxClassEntry
optional

default tax class entry id
Example : "020"

string

id
optional

the numeric account code
Example : "4000"

string

name
optional

localized name
Example : "Einnahmen (Erlöse)"

string

type
optional

account type code
Example : "E"

string

5.3. AccountLineDto

Name Description Schema

account
required

string

accountClass
required

The class to which this account belongs

enum (GROUP_0, GROUP_1, GROUP_2, GROUP_3, GROUP_4, GROUP_4_CHANGES, GROUP_5, GROUP_6, GROUP_7, GROUP_8_GAINS, GROUP_8_LOSSES, GROUP_8_OTHER, GROUP_9)

accountName
required

string

balanceSum
optional

If closing_entries set to true, closing entries will be included in the calculation

number

monthSums
required

A list of sums sorted by month

< AccountMonthLineDto > array

openingBalance
optional

If opening_balances set to true, opening balances will be included in the calculation

number

totalSum
optional

If totals set to true, total will be calculated

number

5.4. AccountMonthLineDto

Name Schema

month
required

integer (int32)

sum
required

number

year
required

integer (int32)

5.5. AdditionalAddressDto

Name Description Schema

addressBranchNo
optional

string

addressType
optional

defaults to INVOICE_AND_DELIVERY_ADDRESS

string

city
optional

string

copyEmailAddress
optional

string

copyEmailType
optional

ignored if copyEmailAddress is not set, defaults to BBC

string

country
optional

country code, defaulted to AT
Example : "AT"

string

description
optional

string

emailAddress
optional

string

faxNumber
optional

string

firstName
optional

string

id
optional
read-only

string

identifier
optional

string

lastName
optional

string

mobileNumber
optional

string

region
optional

region code, must belong to the country
Example : "STMK"

string

skype
optional

string

streetName
optional

string

streetNumber
optional

string

telNumber
optional

string

title
optional

string

webAddress
optional

string

zipCode
optional

string

5.6. ApiResult

Name Schema

infos
optional

< string > array

result
optional

object

warnings
optional

< string > array

5.7. ApiResultIncomingInvoiceDto

Name Schema

infos
optional

< string > array

result
optional

IncomingInvoiceDto

warnings
optional

< string > array

5.8. ApiResultOutgoingInvoiceDto

Name Schema

infos
optional

< string > array

result
optional

OutgoingInvoiceDto

warnings
optional

< string > array

5.9. BankAccountDto

Name Schema

accountCode
optional
read-only

string

accountOwnerName
optional
read-only

string

accountReserved
optional
read-only

string

accountUserDescription
optional
read-only

string

bankName
optional
read-only

string

bic
optional
read-only

string

currencyCode
optional
read-only

string

iban
optional
read-only

string

id
optional
read-only

string

name
optional
read-only

string

5.10. BankStatementHeaderDto

Name Description Schema

bankAccount
optional

A bank account uuid returned by the /bank_accounts resource.
Minimum length : 1
Example : "40e2f246-8998-3dec-b51c-4edf7f688d4a"

string

bankAccountName
optional
read-only

string

currencyCode
optional
read-only

string

fileName
optional

A file name for the bank statement header (for exports etc.). Will be sanitized.
Minimum length : 1
Example : "test_file"

string

id
optional
read-only

string

statementDate
optional

string (date)

status
optional
read-only

enum (NEW, RECONCILED, IN_PROGRESS, NOT_RECONCILED, DELETED)

valueDateFrom
optional
read-only

string (date)

valueDateTo
optional
read-only

string (date)

5.11. BankStatementLineDto

Name Description Schema

additionalText
optional

string

amount
required

number

bookingDate
required

string (date)

currencyCode
optional
read-only

string

customerData
optional

string

description
optional

string

id
optional
read-only

integer (int32)

note
optional

string

originator
optional

string

originatorAccountNumber
optional

string

originatorBankCode
optional

string

originatorBankReference
optional

string

partnerAccountNumber
optional

string

partnerBankCode
optional

string

partnerName
optional

string

reasonForTransfer
optional

string

reasonForTransfer1
optional

string

reasonForTransfer2
optional

string

reasonForTransfer3
optional

string

reasonForTransfer4
optional

string

reasonForTransfer5
optional

string

reconciliationStatus
optional
read-only

enum (NEW, SKIPPED, RECONCILED, BOOKED, IN_PROGRESS, BOOKED_AND_SKIPPED, NOT_RECONCILED)

remainingAmount
optional
read-only

number

status
optional
read-only

enum (ACTIVE, POTENTIALLY_DUPLICATED, DELETED)

transactionId
optional

optional: a transaction id is unique. lines with duplicated transaction ids are filtered out as duplicates.

string

valueDate
required

string (date)

5.12. BankStatementLineResultDto

Name Description Schema

addedCount
optional
read-only

Number of lines that were created.

integer (int32)

addedLines
optional

All lines that were appended as a result of this operation. Only returned if returnLines in the request was set.

< BankStatementLineDto > array

duplicateTransactionIds
optional

A distinct list of duplicate transaction ids that were ignored. Only returned if returnLines in the request was set.

< string > array

duplicatesCount
optional
read-only

Number of lines that were detected as duplicates and skipped.

integer (int32)

5.13. BankStatementRequestDto

Name Description Schema

bankStatementLines
optional

The bank statement lines to append.

< BankStatementLineDto > array

returnLines
optional

Set to true if a list of created lines (and found duplicates) is to be included. Otherwise, only the counts will be returned.

boolean

5.14. BusinessDocumentCancelDto

Name Description Schema

cancellationDate
optional

date of cancellation, defaulted with today.

string (date)

layoutSetup
optional

layout setup id, is defaulted with configured default setup. ignored if the business document is of type EXTERNAL
Example : "e7083036-8779-d492-0c78-332cfde21b68"

string

5.15. BusinessDocumentCompleteDto

Name Description Schema

completionDate
optional

string (date)

completionState
optional

indicates if the delivery note is IN_PREPARATION or DELIVERED

enum (ACCEPTED, REJECTED, IN_PROGRESS, DONE, IN_PREPARATION, DELIVERED)

5.16. BusinessDocumentLineDto

Name Description Schema

account
optional

account code. always required even if item is set.
Example : "4000"

string

amount
required

total item amount. maximum of 10 digits and 5 fractional digits.
Example : 10.0

number

description
optional

string

discount
optional

discount in total or %, must be set with discount mode. maximum of 10 digits and 5 fractional digits.
Example : 10.0

number

discountMode
optional

indicates if discount is total (CONSTANT) or % (RATE), must be set with discount
Example : "CONSTANT"

enum (RATE, CONSTANT, CONSTANT_TOTAL)

id
optional
read-only

automatically assigned line number

integer (int32)

item
optional

item id. defaults description, item net price, item number and unit of measure if present
Example : "e7083036-8779-d492-0c78-332cfde21b68"

string

itemDefaulting
optional

Default is true, the tax rate and account are set from the item, unless other values are sent, if false, no values will be defaulted and you must send the tax rate and account for the item
Example : true

boolean

itemNumber
optional

item number, is defaulted if item is set
Example : "A12345"

string

itemPrice
optional

single item price. must be present if item is not set.
Example : 10.0

number

itemPriceType
optional

if the item price is without tax (N) or total (T). must be present if item is not set.
Example : "N"

enum (N, T)

name
optional

name of the item for this line
Example : "Testprodukt"

string

netPrice
required

line total net price. always required. maximum of 10 digits and 5 fractional digits.
Example : 100.0

number

remainingAmount
optional
read-only

unpaid amount

number

taxClassEntry
optional

tax class entry code. always required even if item is set.
Example : "020"

string

taxPrice
required

line total tax price. always required. maximum of 10 digits and 5 fractional digits.
Example : 20.0

number

totalPrice
required

line total price, must match net + tax price. always required. maximum of 10 digits and 5 fractional digits.
Example : 120.0

number

type
optional
read-only

indicates if this is a special line

enum (LINE, DUNNING_FEE, CASH_IN_CM, ON_ACCT, CREDIT_MEMO)

unitOfMeasure
optional

short code for unit type (PC=pieces, M=months, D=days, U=units, MI=minutes, EUR, METER, KG, KM etc.)
Example : "PC"

string

5.17. CancellationDto

Name Schema

cancelDate
required

string (date)

cancelReason
required

string

5.18. CashRegisterDto

Name Description Schema

allowPastIncome
optional

indicates if backdating receipts is allowed

boolean

bankAccountId
optional

string

currentBalance
optional

number

defaultRegister
optional

indicates if this is the default cash register

boolean

enableDrawback
optional

indicates if this register has the drawback/cashback function enabled

boolean

group
optional

Optional register group

string

id
optional

integer (int32)

name
optional

string

state
optional

enum (NEW, ACTIVE, LOCKED, TEST)

5.19. CashRegisterLayoutDto

Name Description Schema

amountType
optional

enum (N, T)

backgroundColor
optional

string

cancelDisplaySubject
optional

string

description
optional

string

displaySubject
optional

string

fontColor
optional

string

fontType
optional

string

footer
optional

string

header
optional

string

layoutPrintType
optional

enum (STANDARD, CUSTOM_PAPER, CUSTOM_TEMPLATE, STANDARD_PAPER, STANDARD_BON, SMALL_BON, APP_SMALL_BON, APP_BON)

logo
optional

base64-encoded image

string

logoContentType
optional

enum (JPG, JPEG, PNG)

positionFooter
optional

enum (LEFT, RIGHT, CENTER)

positionHeader
optional

enum (LEFT, RIGHT, CENTER)

positionLogo
optional

enum (LEFT, RIGHT, CENTER)

postLinesText
optional

string

preLinesText
optional

string

printDiscount
optional

boolean

5.20. CbiPaymentDto

Name Description Schema

contraAccount
required

the account that made/received the payment
Example : "2700"

string

currencyRate
optional

currency rate at the payment date, defaulted with 1
Example : 1.0

number

paymentAmount
optional

total paid amount in invoice currency
Example : 10.0

number

paymentAmountInMainCurrency
optional

total paid amount in the accounting currency (usually EUR)
Example : 10.0

number

paymentDate
required

date of the payment itself.
Example : "2020-12-31"

string (date)

paymentDescription
optional

string

5.21. CountryDto

Name Description Schema

id
optional

the 2-letter country code
Example : "AT"

string

name
optional

localized name of the country
Example : "Österreich"

string

5.22. CreditMemoDto

Name Description Schema

additionalAddress
optional

additional address id

string

currency
optional

currency code, defaulted with EUR
Example : "EUR"

string

currencyRate
optional

currency rate, defaulted with 1
Example : 1.0

number

customer
optional

customer id
Example : "e7083036-8779-d492-0c78-332cfde21b68"

string

customerName
optional

customer name, ignored if customer id is set
Example : "Doe Inc."

string

date
required

string (date)

deliveryFromDate
optional

defaulted with configured delivery date range setting

string (date)

deliveryToDate
optional

defaulted with configured delivery date range setting

string (date)

description
optional

defaulted with configured layout (if not external)

string

ebInterfaceVersion
optional

must be set if EB interface creation is configured
Example : "V4_P2"

enum (NONE, V6_P0, V5_P0, V4_P3, V4_P2, V4_P1, V4_P0, V3_P02, V3_P0)

footer
optional

defaulted with configured layout (if not external)

string

id
optional

number of the business document. will be ignored if EXTERNAL is not set for the state. required if EXTERNAL is set for the state.
Example : "R 2016-0001"

string

internalDescription
optional

string

layoutSetup
optional

layout setup id, is defaulted with configured default setup. ignored if FINALIZED is not set
Example : "e7083036-8779-d492-0c78-332cfde21b68"

string

lines
required

< BusinessDocumentLineDto > array

netAmount
optional

total net amount, must match the net line sum if document is FINALIZED or EXTERNAL. Maximum of 10 digits and 2 fractional digits.
Example : 100.0

number

normalizeRoundingErrors
optional

Determine if rounding errors between the supplied document totals and lines should be corrected

boolean

paid
optional
read-only

boolean

paidDate
optional
read-only

string (date)

referenceDate
optional

string (date)

referenceText
optional

string

remainingAmount
optional
read-only

unpaid amount

number

sequenceGroup
optional

sequence group id, is defaulted with configured default setup.
Example : "e7083036-8779-d492-0c78-332cfde21b68"

string

signed
optional

indicates if the document is to be signed after finalization

boolean

state
required

the state after creation. STAGING leaves the document open for editing, FINALIZED completes it, EXTERNAL if a number is already set.
Example : "EXTERNAL"

enum (STAGING, FINALIZED, EXTERNAL, CANCELLED)

taxAmount
optional

total tax amount, must match the tax line sum if document is FINALIZED or EXTERNAL. Maximum of 10 digits and 2 fractional digits.
Example : 20.0

number

totalAmount
optional

total amount, must match the total line sum if document is FINALIZED or EXTERNAL. Maximum of 10 digits and 2 fractional digits.
Example : 120.0

number

updatedAt
optional
read-only

timestamp of the last update

integer (int64)

uuid
optional

unique identifier of the business document.

string

5.23. CreditMemoPaymentDto

Name Description Schema

additionalAddressId
optional

string

cashRegister
optional

the cash register number that is to process the payment. the test register (id 0) cannot be used. either this or payingAccount must be set.

integer (int32)

currencyRate
optional

current currency rate, defaulted with 1
Example : 1.0

number

date
required

string (date)

note
optional

string

payingAccount
optional

the account that received the payment. must be of the cash account type (U) and not be reserved (e.g. from a cash register). either this or cashRegister must be set
Example : "2800"

string

restType
optional

indicates if the unpaid amount should be flagged as complete (DISCOUNT, CORRECTION, UNCOLLECTABLE, ONACCOUNT, CREDIT_CASHED). must not be set if amount is to remain (partial payment)
Example : "UNCOLLECTABLE"

enum (RECEIVABLES, RECEIVABLES_DUNNING, PAYED, DISCOUNT, UNCOLLECTABLE, CANCELLED, ONACCOUNT, CURRENCY_DIFFERENCE, ROUNDING_DIFFERENCE, CORRECTION, CREDIT_FOR_INVOICE, CREDIT_CASHED)

5.24. CustomerDto

Name Description Schema

accountNumber
optional

string

accountOwner
optional

string

addressBranchNo
optional

string

attribute1
optional

string

attribute2
optional

string

attribute3
optional

string

attribute4
optional

string

attribute5
optional

string

bankBranchNumber
optional

string

bankName
optional

string

bic
optional

string

city
optional

string

compSalutationCode
optional

string

companyName
optional

either first/last name or company name must be set
Example : "Doe Inc."

string

contraAccount
optional

account code for the (unpaid) contra account. will be used for new incoming/outgoing invoices.
Example : "2000"

string

country
optional

country code, defaulted to AT
Example : "AT"

string

createContraAccount
optional

If true, a new contra account will be created, optionally with a specified code (contraAccount).

boolean

customerNumber
optional

ignored if auto numbering is enabled

string

defaultAccount
optional

account code for the default account. will be used for new incoming/outgoing invoices.
Example : "4000"

string

defaultDeliveryAddress
optional
read-only

address id for the default address to use for deliveries
Example : "de4dbeef-af57-4666-ab1d-4b420c69ab7f"

string

defaultInvoiceAddress
optional
read-only

address id for the default address to use for invoices
Example : "de4dbeef-af57-4666-ab1d-4b420c69ab7f"

string

defaultTaxClassEntry
optional

tax class entry code for the default tax class entry. will be used for new incomes/outgos.
Example : "020"

string

description
optional

string

duns
optional

string

emailAddress
optional

string

faxNumber
optional

string

firstName
optional

either first/last name or company name must be set
Example : "John"

string

gln
optional

string

iban
optional

string

id
optional
read-only

string

lastName
optional

either first/last name or company name must be set
Example : "Doe"

string

mobileNumber
optional

string

mySupplierNumber
optional

string

noVatNumber
optional

determines if customer/supplier is private (no UID tax). Defaulted to false.

boolean

otherIdentifier
optional

string

rating
optional

integer (int32)

region
optional

region code, must belong to the country
Example : "STMK"

string

salutationCode
optional

string

shortcut
optional

string

skype
optional

string

streetName
optional

string

streetNumber
optional

string

taxNumber
optional

string

telNumber
optional

string

title
optional

string

webAddress
optional

string

zipCode
optional

string

5.25. CustomerSupplierContraAccountCreationDto

Name Schema

contraAccount
optional

string

5.26. DailyClosingDto

Name Schema

closingBalance
optional

number

creationDate
optional

integer (int64)

id
optional

string (date)

incomeCount
optional

integer (int32)

monthlyClosing
optional

boolean

openingBalance
optional

number

otherCount
optional

integer (int32)

rebookCount
optional

integer (int32)

state
optional

enum (OPEN, FINALIZED, BOOKED)

totalCount
optional

integer (int32)

yearlyClosing
optional

boolean

5.27. DailyClosingFinalizationDto

Name Description Schema

closingBalance
required

The daily closing balance as provided by the API or calculated. Must match the backend closing balance for confirmation.

number

totalCount
required

The daily total receipt count as provided by the API or calculated. Must match the backend closing balance for confirmation.

integer (int32)

5.28. DeliveryNoteDto

Name Description Schema

additionalAddress
optional

additional address id

string

completionDate
optional

string (date)

completionState
optional

indicates if the delivery note is IN_PREPARATION or DELIVERED

enum (ACCEPTED, REJECTED, IN_PROGRESS, DONE, IN_PREPARATION, DELIVERED)

currency
optional

currency code, defaulted with EUR
Example : "EUR"

string

currencyRate
optional

currency rate, defaulted with 1
Example : 1.0

number

customer
optional

customer id
Example : "e7083036-8779-d492-0c78-332cfde21b68"

string

customerName
optional

customer name, ignored if customer id is set
Example : "Doe Inc."

string

date
required

string (date)

description
optional

defaulted with configured layout (if not external)

string

footer
optional

defaulted with configured layout (if not external)

string

id
optional

number of the business document. will be ignored if EXTERNAL is not set for the state. required if EXTERNAL is set for the state.
Example : "R 2016-0001"

string

internalDescription
optional

string

layoutSetup
optional

layout setup id, is defaulted with configured default setup. ignored if FINALIZED is not set
Example : "e7083036-8779-d492-0c78-332cfde21b68"

string

lines
required

< BusinessDocumentLineDto > array

netAmount
optional

total net amount, must match the net line sum if document is FINALIZED or EXTERNAL. Maximum of 10 digits and 2 fractional digits.
Example : 100.0

number

normalizeRoundingErrors
optional

Determine if rounding errors between the supplied document totals and lines should be corrected

boolean

referenceDate
optional

string (date)

referenceText
optional

string

remainingAmount
optional
read-only

unpaid amount

number

sequenceGroup
optional

sequence group id, is defaulted with configured default setup.
Example : "e7083036-8779-d492-0c78-332cfde21b68"

string

state
required

the state after creation. STAGING leaves the document open for editing, FINALIZED completes it, EXTERNAL if a number is already set.
Example : "EXTERNAL"

enum (STAGING, FINALIZED, EXTERNAL, CANCELLED)

taxAmount
optional

total tax amount, must match the tax line sum if document is FINALIZED or EXTERNAL. Maximum of 10 digits and 2 fractional digits.
Example : 20.0

number

totalAmount
optional

total amount, must match the total line sum if document is FINALIZED or EXTERNAL. Maximum of 10 digits and 2 fractional digits.
Example : 120.0

number

updatedAt
optional
read-only

timestamp of the last update

integer (int64)

uuid
optional

unique identifier of the business document.

string

5.29. IncomingInvoiceDto

Name Description Schema

bookings
optional

< InvoiceBookingDto > array

cancelledDate
optional

string (date)

cancelledReason
optional

string

currency
optional

currency code, defaulted with EUR
Example : "EUR"

string

currencyRate
optional

currency rate, defaulted with 1
Example : 1.0

number

description
optional

string

dueDate
optional

Example : "2020-12-31"

string (date)

id
optional

invoice id
Example : "e7083036-8779-d492-0c78-332cfde21b68"

string

invoiceDate
optional

required for double entry accounting.
Example : "2020-12-31"

string (date)

invoiceReference
optional

reference to other receipts, invoices, etc.

string

invoiceSequence
optional

sequence number
Example : "ER2020 68"

string

lines
optional

< InvoiceLineDto > array

netTotal
optional

net amount of the invoice

number

paidContraAccount
optional