API-referentie
Volledige referentie van de NovaFisko-API v1, gegenereerd uit de OpenAPI-specificatie, met parameters, schema's en voorbeelden voor elke route.
Deze referentie wordt gegenereerd uit de OpenAPI 3.1-specificatie van NovaFisko. Ze beschrijft elke route met haar parameters, de verwachte body, de mogelijke antwoorden en een voorbeeldaanroep in curl, PHP, JavaScript en Python.
Alle routes zijn relatief ten opzichte van https://api.novafisko.com/v1 en vereisen, tenzij anders vermeld, de header Authorization: Bearer <token>. De routes zijn gegroepeerd per domein. De schema's klapt u met één klik open en elk voorbeeld kopieert u met de knop Kopiëren.
Werkt u liever in uw eigen tool? Download de specificatie in JSON of in YAML, of importeer de Postman-collectie.
Als u de API nog niet kent, begin dan met het overzicht, de authenticatie en de conventies. De use cases tonen hoe u de aanroepen op elkaar laat volgen.
Volledige referentie van de NovaFisko API v1.0.0: 240 endpoints, gegroepeerd per domein en gegenereerd uit de OpenAPI 3.1-specificatie. Klap een endpoint open voor de parameters, de body, de antwoorden en een voorbeeldaanroep.
De samenvattingen en beschrijvingen van de endpoints zijn in het Engels: ze komen rechtstreeks uit de specificatie.
https://api.novafisko.comGemeenschappelijke headers en parameters Idempotentie, optimistische vergrendeling, toestel, taal en ondertekende URL's: hier één keer beschreven.
| Naam | Type | Beschrijving |
|---|---|---|
Accept-Languageheader | string | Language of the translated messages and labels (fr, nl, en, de). The language of the authenticated user wins when it is set; several endpoints also accept ?lang=.fr nl en de |
X-Client-Mutation-Idheader | string | Idempotence key chosen by the client (64 characters max, a UUID is recommended). A request replayed with the same key returns the memorised result with status 200 and X-Idempotent-Replay: 1; nothing is executed twice.bv. b0a6f6f0-7d1c-4c5e-8a55-3f2b1c9d0e11 |
X-Base-Versionheader | integer | Optimistic lock (opt-in): the version of the record the client last read. When the record moved on the server the answer is 409 conflict with server_version and server_data, and nothing is changed.bv. 3 |
X-Operation-Idheader | string <uuid> | UUID grouping every change of the request in the history (generated when absent). Returned in the response when something was recorded: it is the handle of « undo ». |
X-Device-Idheader | string | Stable id of the app install or of the integration (64 characters max). Shown in the history and in the synchronisation status. bv. erp-connector-01 |
X-Device-Nameheader | string | Readable device name, percent-encoded (120 characters max). bv. ERP%20connector |
X-Occurred-Atheader | string <date-time> | ISO 8601 date of the action on the client. Bounded to ±24 h around the server time; used to rank conflicts. |
X-Originheader | string | offline_sync when the request replays an action made offline.offline_sync |
signaturequery | string | Signature of the URL (issued by the API). |
expiresquery | integer | Unix timestamp after which the signed URL is refused. |
Antwoordheaders
| Antwoordheader | Beschrijving |
|---|---|
X-Operation-Id | Operation id under which the changes of the request were recorded in the history. Present only when something was recorded. |
X-Trashed | 1 when the DELETE moved the record to the recycle bin (restorable) instead of destroying it. |
X-Idempotent-Replay | 1 when the answer is the memorised result of a previous request carrying the same X-Client-Mutation-Id. |
X-Export-Fingerprint | SHA-256 of the exported data set: two exports of the same data carry the same fingerprint. |
Content-Disposition | File name of the download (attachment; filename="…") or inline for previews. |
X-RateLimit-Limit | Maximum number of requests in the current window. |
X-RateLimit-Remaining | Requests left in the current window. |
Retry-After | Seconds to wait before the next attempt. |
Meta
Service status, connectivity probe and country packs.
GET/API root Openbaar
Name and version of the API.
Public endpoint: no bearer token.
Antwoorden
200OK
application/json
Schema object
namestringbv.NovaFisko APIversionstringbv.v1statusstringbv.ok
Voorbeeld
{
"name": "NovaFisko API",
"version": "v1",
"status": "ok"
}Voorbeeldaanroep
curl -X GET "https://api.novafisko.com/" \
-H "Accept: application/json"<?php
$client = new \GuzzleHttp\Client();
$response = $client->request('GET', 'https://api.novafisko.com/', [
'headers' => [
'Accept' => 'application/json',
],
]);
$data = json_decode((string) $response->getBody(), true);const response = await fetch("https://api.novafisko.com/", {
method: "GET",
headers: {
"Accept": "application/json",
},
});
if (!response.ok) {
const error = await response.json();
throw new Error(error.code ?? error.message);
}
const data = response.status === 204 ? null : await response.json();import os
import requests
response = requests.get(
"https://api.novafisko.com/",
headers={
"Accept": "application/json",
},
timeout=30,
)
response.raise_for_status()
data = response.json() if response.content else NoneGET/v1/statusService status Openbaar
Public endpoint: no bearer token.
Antwoorden
200OK
application/json
Schema object
okbooleantimestring <date-time>
Voorbeeld
{
"ok": true,
"time": "2026-03-15T09:41:00+00:00"
}Voorbeeldaanroep
curl -X GET "https://api.novafisko.com/v1/status" \
-H "Accept: application/json"<?php
$client = new \GuzzleHttp\Client();
$response = $client->request('GET', 'https://api.novafisko.com/v1/status', [
'headers' => [
'Accept' => 'application/json',
],
]);
$data = json_decode((string) $response->getBody(), true);const response = await fetch("https://api.novafisko.com/v1/status", {
method: "GET",
headers: {
"Accept": "application/json",
},
});
if (!response.ok) {
const error = await response.json();
throw new Error(error.code ?? error.message);
}
const data = response.status === 204 ? null : await response.json();import os
import requests
response = requests.get(
"https://api.novafisko.com/v1/status",
headers={
"Accept": "application/json",
},
timeout=30,
)
response.raise_for_status()
data = response.json() if response.content else NoneGET/v1/pingConnectivity probe Openbaar
Cheap probe without database access. The apps call it to leave offline mode; integrations can use it as a health check and to read the server clock.
Public endpoint: no bearer token.
Antwoorden
200OK
application/json
Schema object
okbooleanserver_timestring <date-time>
Voorbeeld
{
"ok": true,
"server_time": "2026-03-15T09:41:00+00:00"
}Voorbeeldaanroep
curl -X GET "https://api.novafisko.com/v1/ping" \
-H "Accept: application/json"<?php
$client = new \GuzzleHttp\Client();
$response = $client->request('GET', 'https://api.novafisko.com/v1/ping', [
'headers' => [
'Accept' => 'application/json',
],
]);
$data = json_decode((string) $response->getBody(), true);const response = await fetch("https://api.novafisko.com/v1/ping", {
method: "GET",
headers: {
"Accept": "application/json",
},
});
if (!response.ok) {
const error = await response.json();
throw new Error(error.code ?? error.message);
}
const data = response.status === 204 ? null : await response.json();import os
import requests
response = requests.get(
"https://api.novafisko.com/v1/ping",
headers={
"Accept": "application/json",
},
timeout=30,
)
response.raise_for_status()
data = response.json() if response.content else NoneGET/v1/country-packsAvailable country packs read
Country packs (chart of accounts, VAT codes, journals) a company file can be created with.
Integration tokens need the read ability.
Gemeenschappelijke headers: Accept-Language
Antwoorden
200OK
application/json
Schema object[]
Array van
codestringBEFRLUcurrencystringbv.EURvat_regimesstring[]monthlyquarterlyfranchiseexemptunit
Voorbeeld
[
{
"code": "BE",
"currency": "EUR",
"vat_regimes": [
"monthly"
]
}
]token_ability_missing, session_token_required), demo restriction (demo_mode) or invalid URL signature. ErrorVoorbeeldaanroep
curl -X GET "https://api.novafisko.com/v1/country-packs" \
-H "Accept: application/json" \
-H "Authorization: Bearer $NOVAFISKO_TOKEN"<?php
$client = new \GuzzleHttp\Client();
$response = $client->request('GET', 'https://api.novafisko.com/v1/country-packs', [
'headers' => [
'Accept' => 'application/json',
'Authorization' => 'Bearer '.getenv('NOVAFISKO_TOKEN'),
],
]);
$data = json_decode((string) $response->getBody(), true);const response = await fetch("https://api.novafisko.com/v1/country-packs", {
method: "GET",
headers: {
"Accept": "application/json",
"Authorization": `Bearer ${process.env.NOVAFISKO_TOKEN}`,
},
});
if (!response.ok) {
const error = await response.json();
throw new Error(error.code ?? error.message);
}
const data = response.status === 204 ? null : await response.json();import os
import requests
response = requests.get(
"https://api.novafisko.com/v1/country-packs",
headers={
"Accept": "application/json",
"Authorization": f"Bearer {os.environ['NOVAFISKO_TOKEN']}",
},
timeout=30,
)
response.raise_for_status()
data = response.json() if response.content else NoneAuth
Sign-in, account of the user, demo session.
POST/v1/auth/loginSign in Openbaar 20 / 1 min
Exchanges an e-mail and a password for a session token (all abilities). Novadesko fiduciary users sign in with their Novadesko credentials: firm, team and company files are mirrored at each sign-in. Ten failed attempts per IP lock the sign-in for five minutes.
Public endpoint: no bearer token.
Rate limit: 20 requests per minute (429 beyond, see Retry-After).
Body van de aanvraag
application/json
Schema object
emailstring <email>verplichtpasswordstringverplichtbv.••••••••device_namestringLabel of the token (100 characters max).bv.MacBook de Claire
Voorbeeld
{
"email": "claire.dumont@fiduciaire-dumont.be",
"password": "correct horse battery staple",
"device_name": "ERP connector"
}Antwoorden
201Signed in
Antwoordheaders X-RateLimit-Limit X-RateLimit-Remaining
application/json
Schema object
tokenstringBearer token, shown once.userUser
Voorbeeld
{
"token": "57|Qm9x2kL8vT4nR7sW1pZ5cY3hJ6dF0gA9bE2uI4oK",
"user": {
"id": 12,
"name": "Claire Dumont",
"email": "claire.dumont@fiduciaire-dumont.be",
"locale": "fr",
"email_verified": true,
"pending_email": null,
"is_platform_admin": false,
"is_demo": false,
"firms": [
{
"public_token": "NDTQVQU4AUAV",
"name": "Fiduciaire Dumont & Associés",
"role": "admin"
}
],
"managed_firms": [
{
"public_token": "NDTQVQU4AUAV",
"name": "Fiduciaire Dumont & Associés"
}
]
}
}errors maps each field to its messages; code is present when the refusal has a machine reason. ErrorVoorbeeldaanroep
curl -X POST "https://api.novafisko.com/v1/auth/login" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-d '{
"email": "claire.dumont@fiduciaire-dumont.be",
"password": "correct horse battery staple",
"device_name": "ERP connector"
}'<?php
$client = new \GuzzleHttp\Client();
$response = $client->request('POST', 'https://api.novafisko.com/v1/auth/login', [
'headers' => [
'Accept' => 'application/json',
],
'json' => [
'email' => 'claire.dumont@fiduciaire-dumont.be',
'password' => 'correct horse battery staple',
'device_name' => 'ERP connector',
],
]);
$data = json_decode((string) $response->getBody(), true);const response = await fetch("https://api.novafisko.com/v1/auth/login", {
method: "POST",
headers: {
"Accept": "application/json",
"Content-Type": "application/json",
},
body: JSON.stringify({
"email": "claire.dumont@fiduciaire-dumont.be",
"password": "correct horse battery staple",
"device_name": "ERP connector"
}),
});
if (!response.ok) {
const error = await response.json();
throw new Error(error.code ?? error.message);
}
const data = response.status === 204 ? null : await response.json();import os
import requests
response = requests.post(
"https://api.novafisko.com/v1/auth/login",
headers={
"Accept": "application/json",
},
json={
"email": "claire.dumont@fiduciaire-dumont.be",
"password": "correct horse battery staple",
"device_name": "ERP connector"
},
timeout=30,
)
response.raise_for_status()
data = response.json() if response.content else NonePOST/v1/auth/demoSign in to the demo Openbaar 10 / 1 min
Creates an ephemeral user attached to the demo firm (« Fiduciaire Démo », four realistic Belgian company files) and returns its token. Local bookkeeping is allowed (entries, lettering, VAT declarations, exports, history, recycle bin, synchronisation); every external effect answers 403 demo_mode: Peppol, Novadesko, e-mails and reminders, integrations, licence keys, team and firm management, company creation and deletion, webhooks and integration tokens, company lookups and VIES, uploads and analysis of the document importer, SEPA files (operations flagged x-demo-blocked). A demo user never reaches anything outside the demo firm (404). The demo data is reset every night and demo users are purged after 24 hours.
Public endpoint: no bearer token.
Rate limit: 10 requests per minute (429 beyond, see Retry-After).
Error codes (code):
demo_unavailable: the demo data set is not available right now
Body van de aanvraag optioneel
application/json
Schema object
localestringfrnlendedevice_namestring100 characters max.
Voorbeeld
{
"locale": "fr"
}Antwoorden
201Demo session opened
Antwoordheaders X-RateLimit-Limit X-RateLimit-Remaining
application/json
Schema object
tokenstringuserUserdemoobjectEigenschappen
firmobjectEigenschappen
public_tokenstringnamestringbv.Fiduciaire Démo
companiesobject[]Eigenschappen
public_tokenstringcodestringbv.COMPTOIRnamestringbv.Le Comptoir Montois SRL
expires_atstring <date-time>End of life of the demo user.resets_atstring <date-time>Next nightly reset of the demo data.
Voorbeeld
{
"token": "XBVD5O1L29HC",
"user": {
"id": 12,
"name": "Claire Dumont",
"email": "claire.dumont@fiduciaire-dumont.be",
"locale": "fr",
"email_verified": true,
"pending_email": "claire.dumont@fiduciaire-dumont.be",
"is_platform_admin": false,
"is_demo": false,
"firms": [
{
"public_token": "NDTQVQU4AUAV",
"name": "Fiduciaire Dumont & Associés",
"role": "admin"
}
],
"managed_firms": [
{
"public_token": "NDTQVQU4AUAV",
"name": "Fiduciaire Dumont & Associés"
}
]
},
"demo": {
"firm": {
"public_token": "XBVD5O1L29HC",
"name": "Fiduciaire Démo"
},
"companies": [
{
"public_token": "XBVD5O1L29HC",
"code": "COMPTOIR",
"name": "Le Comptoir Montois SRL"
}
],
"expires_at": "2026-03-15T09:41:00+00:00",
"resets_at": "2026-03-15T09:41:00+00:00"
}
}errors maps each field to its messages; code is present when the refusal has a machine reason. Error503The demo firm is not seeded (demo_unavailable).
application/json
Schema Error
Voorbeeld
{
"message": "La démonstration est momentanément indisponible.",
"code": "demo_unavailable"
}Voorbeeldaanroep
curl -X POST "https://api.novafisko.com/v1/auth/demo" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-d '{
"locale": "fr"
}'<?php
$client = new \GuzzleHttp\Client();
$response = $client->request('POST', 'https://api.novafisko.com/v1/auth/demo', [
'headers' => [
'Accept' => 'application/json',
],
'json' => [
'locale' => 'fr',
],
]);
$data = json_decode((string) $response->getBody(), true);const response = await fetch("https://api.novafisko.com/v1/auth/demo", {
method: "POST",
headers: {
"Accept": "application/json",
"Content-Type": "application/json",
},
body: JSON.stringify({
"locale": "fr"
}),
});
if (!response.ok) {
const error = await response.json();
throw new Error(error.code ?? error.message);
}
const data = response.status === 204 ? null : await response.json();import os
import requests
response = requests.post(
"https://api.novafisko.com/v1/auth/demo",
headers={
"Accept": "application/json",
},
json={
"locale": "fr"
},
timeout=30,
)
response.raise_for_status()
data = response.json() if response.content else NoneGET/v1/auth/meCurrent user read
User behind the token, with the firms it belongs to and is_demo.
Integration tokens need the read ability.
Gemeenschappelijke headers: Accept-Language
Antwoorden
200OK
application/json
Schema User
Voorbeeld
{
"id": 12,
"name": "Claire Dumont",
"email": "claire.dumont@fiduciaire-dumont.be",
"locale": "fr",
"email_verified": true,
"pending_email": null,
"is_platform_admin": false,
"is_demo": false,
"firms": [
{
"public_token": "NDTQVQU4AUAV",
"name": "Fiduciaire Dumont & Associés",
"role": "admin"
}
],
"managed_firms": [
{
"public_token": "NDTQVQU4AUAV",
"name": "Fiduciaire Dumont & Associés"
}
]
}token_ability_missing, session_token_required), demo restriction (demo_mode) or invalid URL signature. ErrorVoorbeeldaanroep
curl -X GET "https://api.novafisko.com/v1/auth/me" \
-H "Accept: application/json" \
-H "Authorization: Bearer $NOVAFISKO_TOKEN"<?php
$client = new \GuzzleHttp\Client();
$response = $client->request('GET', 'https://api.novafisko.com/v1/auth/me', [
'headers' => [
'Accept' => 'application/json',
'Authorization' => 'Bearer '.getenv('NOVAFISKO_TOKEN'),
],
]);
$data = json_decode((string) $response->getBody(), true);const response = await fetch("https://api.novafisko.com/v1/auth/me", {
method: "GET",
headers: {
"Accept": "application/json",
"Authorization": `Bearer ${process.env.NOVAFISKO_TOKEN}`,
},
});
if (!response.ok) {
const error = await response.json();
throw new Error(error.code ?? error.message);
}
const data = response.status === 204 ? null : await response.json();import os
import requests
response = requests.get(
"https://api.novafisko.com/v1/auth/me",
headers={
"Accept": "application/json",
"Authorization": f"Bearer {os.environ['NOVAFISKO_TOKEN']}",
},
timeout=30,
)
response.raise_for_status()
data = response.json() if response.content else NonePOST/v1/auth/logoutSign out write
Revokes the token used for the request.
Integration tokens need the write ability.
Gemeenschappelijke headers: Accept-Language
Antwoorden
204Token revoked.
Geen body.
token_ability_missing, session_token_required), demo restriction (demo_mode) or invalid URL signature. ErrorVoorbeeldaanroep
curl -X POST "https://api.novafisko.com/v1/auth/logout" \
-H "Accept: application/json" \
-H "Authorization: Bearer $NOVAFISKO_TOKEN"<?php
$client = new \GuzzleHttp\Client();
$response = $client->request('POST', 'https://api.novafisko.com/v1/auth/logout', [
'headers' => [
'Accept' => 'application/json',
'Authorization' => 'Bearer '.getenv('NOVAFISKO_TOKEN'),
],
]);
$data = json_decode((string) $response->getBody(), true);const response = await fetch("https://api.novafisko.com/v1/auth/logout", {
method: "POST",
headers: {
"Accept": "application/json",
"Authorization": `Bearer ${process.env.NOVAFISKO_TOKEN}`,
},
});
if (!response.ok) {
const error = await response.json();
throw new Error(error.code ?? error.message);
}
const data = response.status === 204 ? null : await response.json();import os
import requests
response = requests.post(
"https://api.novafisko.com/v1/auth/logout",
headers={
"Accept": "application/json",
"Authorization": f"Bearer {os.environ['NOVAFISKO_TOKEN']}",
},
timeout=30,
)
response.raise_for_status()
data = response.json() if response.content else NonePOST/v1/auth/forgot-passwordAsk for a password reset Openbaar 5 / 1 min
Always answers the same generic message, whether the account exists or not.
Public endpoint: no bearer token.
Rate limit: 5 requests per minute (429 beyond, see Retry-After).
Operatie-id auth.forgot-password
Body van de aanvraag
application/json
Schema object
emailstring <email>verplichtlocalestringfrnlende
Voorbeeld
{
"email": "claire.dumont@fiduciaire-dumont.be",
"locale": "fr"
}Antwoorden
200OK
Antwoordheaders X-RateLimit-Limit X-RateLimit-Remaining
application/json
Schema Message
Voorbeeld
{
"message": "Mot de passe modifié."
}errors maps each field to its messages; code is present when the refusal has a machine reason. ErrorVoorbeeldaanroep
curl -X POST "https://api.novafisko.com/v1/auth/forgot-password" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-d '{
"email": "claire.dumont@fiduciaire-dumont.be",
"locale": "fr"
}'<?php
$client = new \GuzzleHttp\Client();
$response = $client->request('POST', 'https://api.novafisko.com/v1/auth/forgot-password', [
'headers' => [
'Accept' => 'application/json',
],
'json' => [
'email' => 'claire.dumont@fiduciaire-dumont.be',
'locale' => 'fr',
],
]);
$data = json_decode((string) $response->getBody(), true);const response = await fetch("https://api.novafisko.com/v1/auth/forgot-password", {
method: "POST",
headers: {
"Accept": "application/json",
"Content-Type": "application/json",
},
body: JSON.stringify({
"email": "claire.dumont@fiduciaire-dumont.be",
"locale": "fr"
}),
});
if (!response.ok) {
const error = await response.json();
throw new Error(error.code ?? error.message);
}
const data = response.status === 204 ? null : await response.json();import os
import requests
response = requests.post(
"https://api.novafisko.com/v1/auth/forgot-password",
headers={
"Accept": "application/json",
},
json={
"email": "claire.dumont@fiduciaire-dumont.be",
"locale": "fr"
},
timeout=30,
)
response.raise_for_status()
data = response.json() if response.content else NonePOST/v1/auth/reset-passwordReset the password Openbaar 10 / 1 min
With the token of the reset mail. Every device is signed out.
Public endpoint: no bearer token.
Rate limit: 10 requests per minute (429 beyond, see Retry-After).
Operatie-id auth.reset-password
Body van de aanvraag
application/json
Schema object
tokenstringverplichtemailstring <email>verplichtpasswordstringverplicht8 characters at least.password_confirmationstringverplicht
Voorbeeld
{
"token": "XBVD5O1L29HC",
"email": "claire.dumont@fiduciaire-dumont.be",
"password": "string",
"password_confirmation": "string"
}Antwoorden
200OK
Antwoordheaders X-RateLimit-Limit X-RateLimit-Remaining
application/json
Schema Message
Voorbeeld
{
"message": "Mot de passe modifié."
}errors maps each field to its messages; code is present when the refusal has a machine reason. ErrorVoorbeeldaanroep
curl -X POST "https://api.novafisko.com/v1/auth/reset-password" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-d '{
"token": "XBVD5O1L29HC",
"email": "claire.dumont@fiduciaire-dumont.be",
"password": "string",
"password_confirmation": "string"
}'<?php
$client = new \GuzzleHttp\Client();
$response = $client->request('POST', 'https://api.novafisko.com/v1/auth/reset-password', [
'headers' => [
'Accept' => 'application/json',
],
'json' => [
'token' => 'XBVD5O1L29HC',
'email' => 'claire.dumont@fiduciaire-dumont.be',
'password' => 'string',
'password_confirmation' => 'string',
],
]);
$data = json_decode((string) $response->getBody(), true);const response = await fetch("https://api.novafisko.com/v1/auth/reset-password", {
method: "POST",
headers: {
"Accept": "application/json",
"Content-Type": "application/json",
},
body: JSON.stringify({
"token": "XBVD5O1L29HC",
"email": "claire.dumont@fiduciaire-dumont.be",
"password": "string",
"password_confirmation": "string"
}),
});
if (!response.ok) {
const error = await response.json();
throw new Error(error.code ?? error.message);
}
const data = response.status === 204 ? null : await response.json();import os
import requests
response = requests.post(
"https://api.novafisko.com/v1/auth/reset-password",
headers={
"Accept": "application/json",
},
json={
"token": "XBVD5O1L29HC",
"email": "claire.dumont@fiduciaire-dumont.be",
"password": "string",
"password_confirmation": "string"
},
timeout=30,
)
response.raise_for_status()
data = response.json() if response.content else NoneGET/v1/auth/email/verify/{id}/{hash}Confirm an e-mail address Ondertekende URL 30 / 1 min
Signed link of the verification mail. Opened in a browser it redirects to the app; with format=json it answers JSON.
Authorised by the signature of the URL (query parameters signature and expires), not by a bearer token. The URL is issued by another endpoint and expires.
Rate limit: 30 requests per minute (429 beyond, see Retry-After).
Padparameters
| Naam | Type | Beschrijving |
|---|---|---|
id verplicht | integer | Id of the record. bv. 42 |
hash verplicht | string | SHA-1 of the e-mail address being confirmed. bv. 5f2b8c… |
Queryparameters
| Naam | Type | Beschrijving |
|---|---|---|
format | string | Answer JSON instead of redirecting.json |
Gemeenschappelijke headers: signature expires
Antwoorden
200Confirmed (format=json).
Antwoordheaders X-RateLimit-Limit X-RateLimit-Remaining
application/json
Schema object
verifiedboolean
Voorbeeld
{
"verified": true
}302Redirection to app.novafisko.com/email-verified.
| Antwoordheader | Beschrijving |
|---|---|
Location | Target of the redirection. |
token_ability_missing, session_token_required), demo restriction (demo_mode) or invalid URL signature. Error422Invalid or outdated link (format=json).
application/json
Schema object
verifiedbooleanbv.false
Voorbeeld
{
"verified": false
}Voorbeeldaanroep
curl -X GET "https://api.novafisko.com/v1/auth/email/verify/42/5f2b8c%E2%80%A6" \
-H "Accept: application/json"<?php
$client = new \GuzzleHttp\Client();
$response = $client->request('GET', 'https://api.novafisko.com/v1/auth/email/verify/42/5f2b8c%E2%80%A6', [
'headers' => [
'Accept' => 'application/json',
],
]);
$data = json_decode((string) $response->getBody(), true);const response = await fetch("https://api.novafisko.com/v1/auth/email/verify/42/5f2b8c%E2%80%A6", {
method: "GET",
headers: {
"Accept": "application/json",
},
});
if (!response.ok) {
const error = await response.json();
throw new Error(error.code ?? error.message);
}
const data = response.status === 204 ? null : await response.json();import os
import requests
response = requests.get(
"https://api.novafisko.com/v1/auth/email/verify/42/5f2b8c%E2%80%A6",
headers={
"Accept": "application/json",
},
timeout=30,
)
response.raise_for_status()
data = response.json() if response.content else NonePOST/v1/auth/change-passwordChange the password Sessietoken Niet in demo 10 / 1 min
Refused for accounts whose password is managed by Novadesko.
Session token only: integration tokens are refused with 403 session_token_required.
Not available in demo mode: answers 403 demo_mode.
Rate limit: 10 requests per minute (429 beyond, see Retry-After).
Operatie-id auth.change-password
Gemeenschappelijke headers: Accept-Language
Body van de aanvraag
application/json
Schema object
current_passwordstringverplichtpasswordstringverplicht8 characters at least, different from the current one.password_confirmationstringverplicht
Voorbeeld
{
"current_password": "string",
"password": "string",
"password_confirmation": "string"
}Antwoorden
200OK
Antwoordheaders X-RateLimit-Limit X-RateLimit-Remaining
application/json
Schema Message
Voorbeeld
{
"message": "Mot de passe modifié."
}token_ability_missing, session_token_required), demo restriction (demo_mode) or invalid URL signature. Errorerrors maps each field to its messages; code is present when the refusal has a machine reason. ErrorVoorbeeldaanroep
curl -X POST "https://api.novafisko.com/v1/auth/change-password" \
-H "Accept: application/json" \
-H "Authorization: Bearer $NOVAFISKO_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"current_password": "string",
"password": "string",
"password_confirmation": "string"
}'<?php
$client = new \GuzzleHttp\Client();
$response = $client->request('POST', 'https://api.novafisko.com/v1/auth/change-password', [
'headers' => [
'Accept' => 'application/json',
'Authorization' => 'Bearer '.getenv('NOVAFISKO_TOKEN'),
],
'json' => [
'current_password' => 'string',
'password' => 'string',
'password_confirmation' => 'string',
],
]);
$data = json_decode((string) $response->getBody(), true);const response = await fetch("https://api.novafisko.com/v1/auth/change-password", {
method: "POST",
headers: {
"Accept": "application/json",
"Authorization": `Bearer ${process.env.NOVAFISKO_TOKEN}`,
"Content-Type": "application/json",
},
body: JSON.stringify({
"current_password": "string",
"password": "string",
"password_confirmation": "string"
}),
});
if (!response.ok) {
const error = await response.json();
throw new Error(error.code ?? error.message);
}
const data = response.status === 204 ? null : await response.json();import os
import requests
response = requests.post(
"https://api.novafisko.com/v1/auth/change-password",
headers={
"Accept": "application/json",
"Authorization": f"Bearer {os.environ['NOVAFISKO_TOKEN']}",
},
json={
"current_password": "string",
"password": "string",
"password_confirmation": "string"
},
timeout=30,
)
response.raise_for_status()
data = response.json() if response.content else NonePOST/v1/auth/change-emailChange the e-mail address Sessietoken Niet in demo 6 / 1 min
The current password is asked again; the new address replaces the old one once confirmed.
Session token only: integration tokens are refused with 403 session_token_required.
Not available in demo mode: answers 403 demo_mode.
Rate limit: 6 requests per minute (429 beyond, see Retry-After).
Gemeenschappelijke headers: Accept-Language
Body van de aanvraag
application/json
Schema object
emailstring <email>verplichtpasswordstringverplicht
Voorbeeld
{
"email": "claire.dumont@fiduciaire-dumont.be",
"password": "string"
}Antwoorden
200OK
Antwoordheaders X-RateLimit-Limit X-RateLimit-Remaining
application/json
Schema object
messagestringpending_emailstring <email>
Voorbeeld
{
"message": "OK",
"pending_email": "claire.dumont@fiduciaire-dumont.be"
}token_ability_missing, session_token_required), demo restriction (demo_mode) or invalid URL signature. Errorerrors maps each field to its messages; code is present when the refusal has a machine reason. ErrorVoorbeeldaanroep
curl -X POST "https://api.novafisko.com/v1/auth/change-email" \
-H "Accept: application/json" \
-H "Authorization: Bearer $NOVAFISKO_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"email": "claire.dumont@fiduciaire-dumont.be",
"password": "string"
}'<?php
$client = new \GuzzleHttp\Client();
$response = $client->request('POST', 'https://api.novafisko.com/v1/auth/change-email', [
'headers' => [
'Accept' => 'application/json',
'Authorization' => 'Bearer '.getenv('NOVAFISKO_TOKEN'),
],
'json' => [
'email' => 'claire.dumont@fiduciaire-dumont.be',
'password' => 'string',
],
]);
$data = json_decode((string) $response->getBody(), true);const response = await fetch("https://api.novafisko.com/v1/auth/change-email", {
method: "POST",
headers: {
"Accept": "application/json",
"Authorization": `Bearer ${process.env.NOVAFISKO_TOKEN}`,
"Content-Type": "application/json",
},
body: JSON.stringify({
"email": "claire.dumont@fiduciaire-dumont.be",
"password": "string"
}),
});
if (!response.ok) {
const error = await response.json();
throw new Error(error.code ?? error.message);
}
const data = response.status === 204 ? null : await response.json();import os
import requests
response = requests.post(
"https://api.novafisko.com/v1/auth/change-email",
headers={
"Accept": "application/json",
"Authorization": f"Bearer {os.environ['NOVAFISKO_TOKEN']}",
},
json={
"email": "claire.dumont@fiduciaire-dumont.be",
"password": "string"
},
timeout=30,
)
response.raise_for_status()
data = response.json() if response.content else NonePOST/v1/auth/email/resendSend the confirmation mail again Sessietoken Niet in demo 6 / 1 min
Session token only: integration tokens are refused with 403 session_token_required.
Not available in demo mode: answers 403 demo_mode.
Rate limit: 6 requests per minute (429 beyond, see Retry-After).
Gemeenschappelijke headers: Accept-Language
Antwoorden
200OK
Antwoordheaders X-RateLimit-Limit X-RateLimit-Remaining
application/json
Schema object
sentbooleanmessagestring
Voorbeeld
{
"sent": true,
"message": "OK"
}token_ability_missing, session_token_required), demo restriction (demo_mode) or invalid URL signature. ErrorVoorbeeldaanroep
curl -X POST "https://api.novafisko.com/v1/auth/email/resend" \
-H "Accept: application/json" \
-H "Authorization: Bearer $NOVAFISKO_TOKEN"<?php
$client = new \GuzzleHttp\Client();
$response = $client->request('POST', 'https://api.novafisko.com/v1/auth/email/resend', [
'headers' => [
'Accept' => 'application/json',
'Authorization' => 'Bearer '.getenv('NOVAFISKO_TOKEN'),
],
]);
$data = json_decode((string) $response->getBody(), true);const response = await fetch("https://api.novafisko.com/v1/auth/email/resend", {
method: "POST",
headers: {
"Accept": "application/json",
"Authorization": `Bearer ${process.env.NOVAFISKO_TOKEN}`,
},
});
if (!response.ok) {
const error = await response.json();
throw new Error(error.code ?? error.message);
}
const data = response.status === 204 ? null : await response.json();import os
import requests
response = requests.post(
"https://api.novafisko.com/v1/auth/email/resend",
headers={
"Accept": "application/json",
"Authorization": f"Bearer {os.environ['NOVAFISKO_TOKEN']}",
},
timeout=30,
)
response.raise_for_status()
data = response.json() if response.content else NoneGET/v1/auth/notification-preferencesMail notification preferences read
Integration tokens need the read ability.
Operatie-id auth.notification-preferences
Gemeenschappelijke headers: Accept-Language
Antwoorden
200OK
application/json
Schema object
categoriesobject[]Eigenschappen
keystringaccountfirmbillingdocumentsintegrationsplatformlabelstringbv.DocumentsdescriptionstringlockedbooleanLocked categories (account security) cannot be switched off.enabledboolean
Voorbeeld
{
"categories": [
{
"key": "account",
"label": "Documents",
"description": "Description",
"locked": true,
"enabled": true
}
]
}token_ability_missing, session_token_required), demo restriction (demo_mode) or invalid URL signature. ErrorVoorbeeldaanroep
curl -X GET "https://api.novafisko.com/v1/auth/notification-preferences" \
-H "Accept: application/json" \
-H "Authorization: Bearer $NOVAFISKO_TOKEN"<?php
$client = new \GuzzleHttp\Client();
$response = $client->request('GET', 'https://api.novafisko.com/v1/auth/notification-preferences', [
'headers' => [
'Accept' => 'application/json',
'Authorization' => 'Bearer '.getenv('NOVAFISKO_TOKEN'),
],
]);
$data = json_decode((string) $response->getBody(), true);const response = await fetch("https://api.novafisko.com/v1/auth/notification-preferences", {
method: "GET",
headers: {
"Accept": "application/json",
"Authorization": `Bearer ${process.env.NOVAFISKO_TOKEN}`,
},
});
if (!response.ok) {
const error = await response.json();
throw new Error(error.code ?? error.message);
}
const data = response.status === 204 ? null : await response.json();import os
import requests
response = requests.get(
"https://api.novafisko.com/v1/auth/notification-preferences",
headers={
"Accept": "application/json",
"Authorization": f"Bearer {os.environ['NOVAFISKO_TOKEN']}",
},
timeout=30,
)
response.raise_for_status()
data = response.json() if response.content else NonePATCH/v1/auth/notification-preferencesUpdate the notification preferences Sessietoken
Locked categories and unknown keys are ignored.
Session token only: integration tokens are refused with 403 session_token_required.
Operatie-id auth.notification-preferences.update
Gemeenschappelijke headers: Accept-Language
Body van de aanvraag
application/json
Schema object
prefsobjectverplichtCategory => enabled.
Voorbeeld
{
"prefs": {
"documents": true,
"billing": false
}
}Antwoorden
200OK
application/json
Schema object
categoriesobject[]Eigenschappen
keystringaccountfirmbillingdocumentsintegrationsplatformlabelstringbv.DocumentsdescriptionstringlockedbooleanLocked categories (account security) cannot be switched off.enabledboolean
Voorbeeld
{
"categories": [
{
"key": "account",
"label": "Documents",
"description": "Description",
"locked": true,
"enabled": true
}
]
}token_ability_missing, session_token_required), demo restriction (demo_mode) or invalid URL signature. Errorerrors maps each field to its messages; code is present when the refusal has a machine reason. ErrorVoorbeeldaanroep
curl -X PATCH "https://api.novafisko.com/v1/auth/notification-preferences" \
-H "Accept: application/json" \
-H "Authorization: Bearer $NOVAFISKO_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"prefs": {
"documents": true,
"billing": false
}
}'<?php
$client = new \GuzzleHttp\Client();
$response = $client->request('PATCH', 'https://api.novafisko.com/v1/auth/notification-preferences', [
'headers' => [
'Accept' => 'application/json',
'Authorization' => 'Bearer '.getenv('NOVAFISKO_TOKEN'),
],
'json' => [
'prefs' => [
'documents' => true,
'billing' => false,
],
],
]);
$data = json_decode((string) $response->getBody(), true);const response = await fetch("https://api.novafisko.com/v1/auth/notification-preferences", {
method: "PATCH",
headers: {
"Accept": "application/json",
"Authorization": `Bearer ${process.env.NOVAFISKO_TOKEN}`,
"Content-Type": "application/json",
},
body: JSON.stringify({
"prefs": {
"documents": true,
"billing": false
}
}),
});
if (!response.ok) {
const error = await response.json();
throw new Error(error.code ?? error.message);
}
const data = response.status === 204 ? null : await response.json();import os
import requests
response = requests.patch(
"https://api.novafisko.com/v1/auth/notification-preferences",
headers={
"Accept": "application/json",
"Authorization": f"Bearer {os.environ['NOVAFISKO_TOKEN']}",
},
json={
"prefs": {
"documents": True,
"billing": False
}
},
timeout=30,
)
response.raise_for_status()
data = response.json() if response.content else NoneIntegration tokens
Long-lived tokens for server-to-server integrations, limited to the abilities read, write and sync.
GET/v1/auth/tokensList the integration tokens Sessietoken
Integration tokens of the current user. The secret is never returned again.
Session token only: integration tokens are refused with 403 session_token_required.
Gemeenschappelijke headers: Accept-Language
Antwoorden
200OK
application/json
Schema object
dataIntegrationToken[]
Voorbeeld
{
"data": [
{
"id": 57,
"name": "ERP connector",
"abilities": [
"read"
],
"created_at": "2026-03-15T09:41:00+00:00",
"expires_at": "2026-03-15T09:41:00+00:00",
"last_used_at": "2026-03-15T09:41:00+00:00"
}
]
}token_ability_missing, session_token_required), demo restriction (demo_mode) or invalid URL signature. ErrorVoorbeeldaanroep
curl -X GET "https://api.novafisko.com/v1/auth/tokens" \
-H "Accept: application/json" \
-H "Authorization: Bearer $NOVAFISKO_TOKEN"<?php
$client = new \GuzzleHttp\Client();
$response = $client->request('GET', 'https://api.novafisko.com/v1/auth/tokens', [
'headers' => [
'Accept' => 'application/json',
'Authorization' => 'Bearer '.getenv('NOVAFISKO_TOKEN'),
],
]);
$data = json_decode((string) $response->getBody(), true);const response = await fetch("https://api.novafisko.com/v1/auth/tokens", {
method: "GET",
headers: {
"Accept": "application/json",
"Authorization": `Bearer ${process.env.NOVAFISKO_TOKEN}`,
},
});
if (!response.ok) {
const error = await response.json();
throw new Error(error.code ?? error.message);
}
const data = response.status === 204 ? null : await response.json();import os
import requests
response = requests.get(
"https://api.novafisko.com/v1/auth/tokens",
headers={
"Accept": "application/json",
"Authorization": f"Bearer {os.environ['NOVAFISKO_TOKEN']}",
},
timeout=30,
)
response.raise_for_status()
data = response.json() if response.content else NonePOST/v1/auth/tokensCreate an integration token Sessietoken Niet in demo 20 / 1 min
Long-lived token for a server-to-server integration, limited to the chosen abilities:
read: every GET;write: POST, PUT, PATCH and DELETE;sync: the offline synchronisation endpoints (sync/bootstrap,sync/pull,sync/push,sync/status,sync/conflicts).
The token acts with the rights of the user who created it (same firms, same company files). The plain token is shown once: store it in a secret manager.
Session token only: integration tokens are refused with 403 session_token_required.
Not available in demo mode: answers 403 demo_mode.
Rate limit: 20 requests per minute (429 beyond, see Retry-After).
Error codes (code):
token_limit_reached: 50 integration tokens per user at most
Gemeenschappelijke headers: Accept-Language
Body van de aanvraag
application/json
Schema object
namestringverplichtLabel (100 characters max).abilitiesstring[]verplichtreadwritesyncexpires_in_daysinteger | null1 to 730; null or absent = no expiry.expires_atstring <date-time> | nullAlternative toexpires_in_days: a future date, 730 days ahead at most.
Voorbeeld
{
"name": "ERP connector",
"abilities": [
"read",
"sync"
],
"expires_in_days": 365
}Antwoorden
201Token created (data and integration_token are the same object)
Antwoordheaders X-RateLimit-Limit X-RateLimit-Remaining
application/json
Schema object
tokenstringPlain token (id, a pipe, then the secret), shown once.dataIntegrationTokenintegration_tokenIntegrationToken
Voorbeeld
{
"token": "57|Qm9x2kL8vT4nR7sW1pZ5cY3hJ6dF0gA9bE2uI4oK",
"data": {
"id": 57,
"name": "ERP connector",
"abilities": [
"read",
"sync"
],
"created_at": "2026-10-05T09:12:44+00:00",
"expires_at": "2027-10-05T09:12:44+00:00",
"last_used_at": null
},
"integration_token": {
"id": 57,
"name": "ERP connector",
"abilities": [
"read",
"sync"
],
"created_at": "2026-10-05T09:12:44+00:00",
"expires_at": "2027-10-05T09:12:44+00:00",
"last_used_at": null
}
}token_ability_missing, session_token_required), demo restriction (demo_mode) or invalid URL signature. Errorerrors maps each field to its messages; code is present when the refusal has a machine reason. ErrorVoorbeeldaanroep
curl -X POST "https://api.novafisko.com/v1/auth/tokens" \
-H "Accept: application/json" \
-H "Authorization: Bearer $NOVAFISKO_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"name": "ERP connector",
"abilities": [
"read",
"sync"
],
"expires_in_days": 365
}'<?php
$client = new \GuzzleHttp\Client();
$response = $client->request('POST', 'https://api.novafisko.com/v1/auth/tokens', [
'headers' => [
'Accept' => 'application/json',
'Authorization' => 'Bearer '.getenv('NOVAFISKO_TOKEN'),
],
'json' => [
'name' => 'ERP connector',
'abilities' => [
'read',
'sync',
],
'expires_in_days' => 365,
],
]);
$data = json_decode((string) $response->getBody(), true);const response = await fetch("https://api.novafisko.com/v1/auth/tokens", {
method: "POST",
headers: {
"Accept": "application/json",
"Authorization": `Bearer ${process.env.NOVAFISKO_TOKEN}`,
"Content-Type": "application/json",
},
body: JSON.stringify({
"name": "ERP connector",
"abilities": [
"read",
"sync"
],
"expires_in_days": 365
}),
});
if (!response.ok) {
const error = await response.json();
throw new Error(error.code ?? error.message);
}
const data = response.status === 204 ? null : await response.json();import os
import requests
response = requests.post(
"https://api.novafisko.com/v1/auth/tokens",
headers={
"Accept": "application/json",
"Authorization": f"Bearer {os.environ['NOVAFISKO_TOKEN']}",
},
json={
"name": "ERP connector",
"abilities": [
"read",
"sync"
],
"expires_in_days": 365
},
timeout=30,
)
response.raise_for_status()
data = response.json() if response.content else NoneDELETE/v1/auth/tokens/{token}Revoke an integration token Sessietoken Niet in demo
Only the integration tokens of the current user; anything else answers 404.
Session token only: integration tokens are refused with 403 session_token_required.
Not available in demo mode: answers 403 demo_mode.
Operatie-id auth.tokens.destroy
Padparameters
| Naam | Type | Beschrijving |
|---|---|---|
token verplicht | integer | Id of the integration token. bv. 57 |
Gemeenschappelijke headers: Accept-Language
Antwoorden
204Token revoked.
Geen body.
token_ability_missing, session_token_required), demo restriction (demo_mode) or invalid URL signature. ErrorVoorbeeldaanroep
curl -X DELETE "https://api.novafisko.com/v1/auth/tokens/57" \
-H "Accept: application/json" \
-H "Authorization: Bearer $NOVAFISKO_TOKEN"<?php
$client = new \GuzzleHttp\Client();
$response = $client->request('DELETE', 'https://api.novafisko.com/v1/auth/tokens/57', [
'headers' => [
'Accept' => 'application/json',
'Authorization' => 'Bearer '.getenv('NOVAFISKO_TOKEN'),
],
]);
$data = json_decode((string) $response->getBody(), true);const response = await fetch("https://api.novafisko.com/v1/auth/tokens/57", {
method: "DELETE",
headers: {
"Accept": "application/json",
"Authorization": `Bearer ${process.env.NOVAFISKO_TOKEN}`,
},
});
if (!response.ok) {
const error = await response.json();
throw new Error(error.code ?? error.message);
}
const data = response.status === 204 ? null : await response.json();import os
import requests
response = requests.delete(
"https://api.novafisko.com/v1/auth/tokens/57",
headers={
"Accept": "application/json",
"Authorization": f"Bearer {os.environ['NOVAFISKO_TOKEN']}",
},
timeout=30,
)
response.raise_for_status()
data = response.json() if response.content else NoneFirms
Accounting firm: identity, team, assignment of the company files, activity.
GET/v1/firms/{firm}Firm, team and company files read
Any active member of the firm can read it.
Integration tokens need the read ability.
Padparameters
| Naam | Type | Beschrijving |
|---|---|---|
firm verplicht | string | Public token of the firm (public_token, 12 characters).bv. NDTQVQU4AUAV |
Gemeenschappelijke headers: Accept-Language
Antwoorden
200OK
application/json
Schema Firm
Voorbeeld
{
"public_token": "NDTQVQU4AUAV",
"name": "Fiduciaire Dumont & Associés",
"enterprise_number": "0458662817",
"vat_number": "BE0458662817",
"itaa_number": "50.123.456",
"itaa_status": "string",
"itaa_quality": "string",
"address": "Rue de Nimy 52",
"postal_code": "7000",
"city": "Mons",
"website": "https://www.comptoir-montois.be",
"logo_url": "https://api.novafisko.com/v1/companies/XBVD5O1L29HC",
"is_partner": true,
"country_code": "BE",
"locale": "fr",
"email": "claire.dumont@fiduciaire-dumont.be",
"phone": "+32 65 31 42 18",
"source": "local",
"synced_at": "2026-03-15T09:41:00+00:00",
"can_manage": true,
"members": [
{
"id": 12,
"name": "Thomas Peeters",
"email": "thomas.peeters@fiduciaire-dumont.be",
"auth_source": "local",
"locale": "fr",
"role": "admin",
"is_active": true,
"all_companies": true,
"companies": [
{
"public_token": "XBVD5O1L29HC",
"name": "Le Comptoir Montois SRL",
"code": "COMPTOIR",
"role": "manager",
"is_active": true
}
]
}
],
"companies": [
{
"public_token": "XBVD5O1L29HC",
"name": "Le Comptoir Montois SRL",
"code": "COMPTOIR",
"icon_url": "https://api.novafisko.com/v1/companies/XBVD5O1L29HC",
"logo_url": "https://api.novafisko.com/v1/companies/XBVD5O1L29HC",
"members": [
{
"id": 42,
"name": "Thomas Peeters",
"email": "claire.dumont@fiduciaire-dumont.be",
"role": "manager",
"is_active": true
}
]
}
]
}token_ability_missing, session_token_required), demo restriction (demo_mode) or invalid URL signature. ErrorVoorbeeldaanroep
curl -X GET "https://api.novafisko.com/v1/firms/NDTQVQU4AUAV" \
-H "Accept: application/json" \
-H "Authorization: Bearer $NOVAFISKO_TOKEN"<?php
$client = new \GuzzleHttp\Client();
$response = $client->request('GET', 'https://api.novafisko.com/v1/firms/NDTQVQU4AUAV', [
'headers' => [
'Accept' => 'application/json',
'Authorization' => 'Bearer '.getenv('NOVAFISKO_TOKEN'),
],
]);
$data = json_decode((string) $response->getBody(), true);const response = await fetch("https://api.novafisko.com/v1/firms/NDTQVQU4AUAV", {
method: "GET",
headers: {
"Accept": "application/json",
"Authorization": `Bearer ${process.env.NOVAFISKO_TOKEN}`,
},
});
if (!response.ok) {
const error = await response.json();
throw new Error(error.code ?? error.message);
}
const data = response.status === 204 ? null : await response.json();import os
import requests
response = requests.get(
"https://api.novafisko.com/v1/firms/NDTQVQU4AUAV",
headers={
"Accept": "application/json",
"Authorization": f"Bearer {os.environ['NOVAFISKO_TOKEN']}",
},
timeout=30,
)
response.raise_for_status()
data = response.json() if response.content else NonePATCH/v1/firms/{firm}Update the identity of the firm write Niet in demo
Admins and managers of the firm.
Integration tokens need the write ability.
Not available in demo mode: answers 403 demo_mode.
Padparameters
| Naam | Type | Beschrijving |
|---|---|---|
firm verplicht | string | Public token of the firm (public_token, 12 characters).bv. NDTQVQU4AUAV |
Gemeenschappelijke headers: Accept-Language
Body van de aanvraag
application/json
Schema object
namestring200 characters max.enterprise_numberstring | nullvat_numberstring | nullitaa_numberstring | nullemailstring <email> | nullphonestring | nullwebsitestring | nulladdressstring | nullpostal_codestring | nullcitystring | nullcountry_codestringISO 3166-1 alpha-2.localestringfrnlende
Voorbeeld
{
"phone": "+32 65 31 42 18",
"website": "https://www.fiduciaire-dumont.be"
}Antwoorden
200OK
application/json
Schema Firm
Voorbeeld
{
"public_token": "NDTQVQU4AUAV",
"name": "Fiduciaire Dumont & Associés",
"enterprise_number": "0458662817",
"vat_number": "BE0458662817",
"itaa_number": "50.123.456",
"itaa_status": "string",
"itaa_quality": "string",
"address": "Rue de Nimy 52",
"postal_code": "7000",
"city": "Mons",
"website": "https://www.comptoir-montois.be",
"logo_url": "https://api.novafisko.com/v1/companies/XBVD5O1L29HC",
"is_partner": true,
"country_code": "BE",
"locale": "fr",
"email": "claire.dumont@fiduciaire-dumont.be",
"phone": "+32 65 31 42 18",
"source": "local",
"synced_at": "2026-03-15T09:41:00+00:00",
"can_manage": true,
"members": [
{
"id": 12,
"name": "Thomas Peeters",
"email": "thomas.peeters@fiduciaire-dumont.be",
"auth_source": "local",
"locale": "fr",
"role": "admin",
"is_active": true,
"all_companies": true,
"companies": [
{
"public_token": "XBVD5O1L29HC",
"name": "Le Comptoir Montois SRL",
"code": "COMPTOIR",
"role": "manager",
"is_active": true
}
]
}
],
"companies": [
{
"public_token": "XBVD5O1L29HC",
"name": "Le Comptoir Montois SRL",
"code": "COMPTOIR",
"icon_url": "https://api.novafisko.com/v1/companies/XBVD5O1L29HC",
"logo_url": "https://api.novafisko.com/v1/companies/XBVD5O1L29HC",
"members": [
{
"id": 42,
"name": "Thomas Peeters",
"email": "claire.dumont@fiduciaire-dumont.be",
"role": "manager",
"is_active": true
}
]
}
]
}token_ability_missing, session_token_required), demo restriction (demo_mode) or invalid URL signature. Errorerrors maps each field to its messages; code is present when the refusal has a machine reason. ErrorVoorbeeldaanroep
curl -X PATCH "https://api.novafisko.com/v1/firms/NDTQVQU4AUAV" \
-H "Accept: application/json" \
-H "Authorization: Bearer $NOVAFISKO_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"phone": "+32 65 31 42 18",
"website": "https://www.fiduciaire-dumont.be"
}'<?php
$client = new \GuzzleHttp\Client();
$response = $client->request('PATCH', 'https://api.novafisko.com/v1/firms/NDTQVQU4AUAV', [
'headers' => [
'Accept' => 'application/json',
'Authorization' => 'Bearer '.getenv('NOVAFISKO_TOKEN'),
],
'json' => [
'phone' => '+32 65 31 42 18',
'website' => 'https://www.fiduciaire-dumont.be',
],
]);
$data = json_decode((string) $response->getBody(), true);const response = await fetch("https://api.novafisko.com/v1/firms/NDTQVQU4AUAV", {
method: "PATCH",
headers: {
"Accept": "application/json",
"Authorization": `Bearer ${process.env.NOVAFISKO_TOKEN}`,
"Content-Type": "application/json",
},
body: JSON.stringify({
"phone": "+32 65 31 42 18",
"website": "https://www.fiduciaire-dumont.be"
}),
});
if (!response.ok) {
const error = await response.json();
throw new Error(error.code ?? error.message);
}
const data = response.status === 204 ? null : await response.json();import os
import requests
response = requests.patch(
"https://api.novafisko.com/v1/firms/NDTQVQU4AUAV",
headers={
"Accept": "application/json",
"Authorization": f"Bearer {os.environ['NOVAFISKO_TOKEN']}",
},
json={
"phone": "+32 65 31 42 18",
"website": "https://www.fiduciaire-dumont.be"
},
timeout=30,
)
response.raise_for_status()
data = response.json() if response.content else NonePOST/v1/firms/{firm}/syncResynchronise the firm from Novadesko write Niet in demo 6 / 1 min
Identity, members and company files of a firm linked to Novadesko. 422 when the firm is not linked, 503 when Novadesko does not answer.
Integration tokens need the write ability.
Not available in demo mode: answers 403 demo_mode.
Rate limit: 6 requests per minute (429 beyond, see Retry-After).
Padparameters
| Naam | Type | Beschrijving |
|---|---|---|
firm verplicht | string | Public token of the firm (public_token, 12 characters).bv. NDTQVQU4AUAV |
Gemeenschappelijke headers: Accept-Language
Antwoorden
200OK
Antwoordheaders X-RateLimit-Limit X-RateLimit-Remaining
application/json
Schema Firm
Voorbeeld
{
"public_token": "NDTQVQU4AUAV",
"name": "Fiduciaire Dumont & Associés",
"enterprise_number": "0458662817",
"vat_number": "BE0458662817",
"itaa_number": "50.123.456",
"itaa_status": "string",
"itaa_quality": "string",
"address": "Rue de Nimy 52",
"postal_code": "7000",
"city": "Mons",
"website": "https://www.comptoir-montois.be",
"logo_url": "https://api.novafisko.com/v1/companies/XBVD5O1L29HC",
"is_partner": true,
"country_code": "BE",
"locale": "fr",
"email": "claire.dumont@fiduciaire-dumont.be",
"phone": "+32 65 31 42 18",
"source": "local",
"synced_at": "2026-03-15T09:41:00+00:00",
"can_manage": true,
"members": [
{
"id": 12,
"name": "Thomas Peeters",
"email": "thomas.peeters@fiduciaire-dumont.be",
"auth_source": "local",
"locale": "fr",
"role": "admin",
"is_active": true,
"all_companies": true,
"companies": [
{
"public_token": "XBVD5O1L29HC",
"name": "Le Comptoir Montois SRL",
"code": "COMPTOIR",
"role": "manager",
"is_active": true
}
]
}
],
"companies": [
{
"public_token": "XBVD5O1L29HC",
"name": "Le Comptoir Montois SRL",
"code": "COMPTOIR",
"icon_url": "https://api.novafisko.com/v1/companies/XBVD5O1L29HC",
"logo_url": "https://api.novafisko.com/v1/companies/XBVD5O1L29HC",
"members": [
{
"id": 42,
"name": "Thomas Peeters",
"email": "claire.dumont@fiduciaire-dumont.be",
"role": "manager",
"is_active": true
}
]
}
]
}token_ability_missing, session_token_required), demo restriction (demo_mode) or invalid URL signature. Errorerrors maps each field to its messages; code is present when the refusal has a machine reason. Errorcode. ErrorVoorbeeldaanroep
curl -X POST "https://api.novafisko.com/v1/firms/NDTQVQU4AUAV/sync" \
-H "Accept: application/json" \
-H "Authorization: Bearer $NOVAFISKO_TOKEN"<?php
$client = new \GuzzleHttp\Client();
$response = $client->request('POST', 'https://api.novafisko.com/v1/firms/NDTQVQU4AUAV/sync', [
'headers' => [
'Accept' => 'application/json',
'Authorization' => 'Bearer '.getenv('NOVAFISKO_TOKEN'),
],
]);
$data = json_decode((string) $response->getBody(), true);const response = await fetch("https://api.novafisko.com/v1/firms/NDTQVQU4AUAV/sync", {
method: "POST",
headers: {
"Accept": "application/json",
"Authorization": `Bearer ${process.env.NOVAFISKO_TOKEN}`,
},
});
if (!response.ok) {
const error = await response.json();
throw new Error(error.code ?? error.message);
}
const data = response.status === 204 ? null : await response.json();import os
import requests
response = requests.post(
"https://api.novafisko.com/v1/firms/NDTQVQU4AUAV/sync",
headers={
"Accept": "application/json",
"Authorization": f"Bearer {os.environ['NOVAFISKO_TOKEN']}",
},
timeout=30,
)
response.raise_for_status()
data = response.json() if response.content else NonePOST/v1/firms/{firm}/membersAdd a member write Niet in demo
Attaches an existing user (by e-mail) or creates the account (password required then). 201 when the account was created, 200 when an existing user was attached.
Integration tokens need the write ability.
Not available in demo mode: answers 403 demo_mode.
Error codes (code):
user_limit_reached: the licence does not allow one more user
Operatie-id firms.members.store
Padparameters
| Naam | Type | Beschrijving |
|---|---|---|
firm verplicht | string | Public token of the firm (public_token, 12 characters).bv. NDTQVQU4AUAV |
Gemeenschappelijke headers: Accept-Language
Body van de aanvraag
application/json
Schema object
emailstring <email>verplichtnamestringRequired for a new account.passwordstring | null8 characters at least; required for a new account.rolestringverplichtadminmanagerencoderreviewerlocalestringfrnlendecompany_tokensstring[]
Voorbeeld
{
"email": "thomas.peeters@fiduciaire-dumont.be",
"name": "Thomas Peeters",
"password": "S3cure-Pass!",
"role": "encoder",
"company_tokens": [
"XBVD5O1L29HC"
]
}Antwoorden
200Existing user attached
application/json
Schema FirmMember
Voorbeeld
{
"id": 12,
"name": "Thomas Peeters",
"email": "thomas.peeters@fiduciaire-dumont.be",
"auth_source": "local",
"locale": "fr",
"role": "admin",
"is_active": true,
"all_companies": true,
"companies": [
{
"public_token": "XBVD5O1L29HC",
"name": "Le Comptoir Montois SRL",
"code": "COMPTOIR",
"role": "manager",
"is_active": true
}
]
}201Account created and attached
application/json
Schema FirmMember
Voorbeeld
{
"id": 12,
"name": "Thomas Peeters",
"email": "thomas.peeters@fiduciaire-dumont.be",
"auth_source": "local",
"locale": "fr",
"role": "admin",
"is_active": true,
"all_companies": true,
"companies": [
{
"public_token": "XBVD5O1L29HC",
"name": "Le Comptoir Montois SRL",
"code": "COMPTOIR",
"role": "manager",
"is_active": true
}
]
}token_ability_missing, session_token_required), demo restriction (demo_mode) or invalid URL signature. Errorerrors maps each field to its messages; code is present when the refusal has a machine reason. ErrorVoorbeeldaanroep
curl -X POST "https://api.novafisko.com/v1/firms/NDTQVQU4AUAV/members" \
-H "Accept: application/json" \
-H "Authorization: Bearer $NOVAFISKO_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"email": "thomas.peeters@fiduciaire-dumont.be",
"name": "Thomas Peeters",
"password": "S3cure-Pass!",
"role": "encoder",
"company_tokens": [
"XBVD5O1L29HC"
]
}'<?php
$client = new \GuzzleHttp\Client();
$response = $client->request('POST', 'https://api.novafisko.com/v1/firms/NDTQVQU4AUAV/members', [
'headers' => [
'Accept' => 'application/json',
'Authorization' => 'Bearer '.getenv('NOVAFISKO_TOKEN'),
],
'json' => [
'email' => 'thomas.peeters@fiduciaire-dumont.be',
'name' => 'Thomas Peeters',
'password' => 'S3cure-Pass!',
'role' => 'encoder',
'company_tokens' => [
'XBVD5O1L29HC',
],
],
]);
$data = json_decode((string) $response->getBody(), true);const response = await fetch("https://api.novafisko.com/v1/firms/NDTQVQU4AUAV/members", {
method: "POST",
headers: {
"Accept": "application/json",
"Authorization": `Bearer ${process.env.NOVAFISKO_TOKEN}`,
"Content-Type": "application/json",
},
body: JSON.stringify({
"email": "thomas.peeters@fiduciaire-dumont.be",
"name": "Thomas Peeters",
"password": "S3cure-Pass!",
"role": "encoder",
"company_tokens": [
"XBVD5O1L29HC"
]
}),
});
if (!response.ok) {
const error = await response.json();
throw new Error(error.code ?? error.message);
}
const data = response.status === 204 ? null : await response.json();import os
import requests
response = requests.post(
"https://api.novafisko.com/v1/firms/NDTQVQU4AUAV/members",
headers={
"Accept": "application/json",
"Authorization": f"Bearer {os.environ['NOVAFISKO_TOKEN']}",
},
json={
"email": "thomas.peeters@fiduciaire-dumont.be",
"name": "Thomas Peeters",
"password": "S3cure-Pass!",
"role": "encoder",
"company_tokens": [
"XBVD5O1L29HC"
]
},
timeout=30,
)
response.raise_for_status()
data = response.json() if response.content else NonePATCH/v1/firms/{firm}/members/{user}Update a member write Niet in demo
Role, activation, name, password. The last active admin cannot lose its role.
Integration tokens need the write ability.
Not available in demo mode: answers 403 demo_mode.
Operatie-id firms.members.update
Padparameters
| Naam | Type | Beschrijving |
|---|---|---|
firm verplicht | string | Public token of the firm (public_token, 12 characters).bv. NDTQVQU4AUAV |
user verplicht | integer | Id of the user (member of the firm). bv. 12 |
Gemeenschappelijke headers: Accept-Language
Body van de aanvraag
application/json
Schema object
rolestringadminmanagerencoderrevieweris_activebooleannamestringpasswordstring | null
Voorbeeld
{
"role": "manager"
}Antwoorden
200OK
application/json
Schema FirmMember
Voorbeeld
{
"id": 12,
"name": "Thomas Peeters",
"email": "thomas.peeters@fiduciaire-dumont.be",
"auth_source": "local",
"locale": "fr",
"role": "admin",
"is_active": true,
"all_companies": true,
"companies": [
{
"public_token": "XBVD5O1L29HC",
"name": "Le Comptoir Montois SRL",
"code": "COMPTOIR",
"role": "manager",
"is_active": true
}
]
}token_ability_missing, session_token_required), demo restriction (demo_mode) or invalid URL signature. Errorerrors maps each field to its messages; code is present when the refusal has a machine reason. ErrorVoorbeeldaanroep
curl -X PATCH "https://api.novafisko.com/v1/firms/NDTQVQU4AUAV/members/12" \
-H "Accept: application/json" \
-H "Authorization: Bearer $NOVAFISKO_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"role": "manager"
}'<?php
$client = new \GuzzleHttp\Client();
$response = $client->request('PATCH', 'https://api.novafisko.com/v1/firms/NDTQVQU4AUAV/members/12', [
'headers' => [
'Accept' => 'application/json',
'Authorization' => 'Bearer '.getenv('NOVAFISKO_TOKEN'),
],
'json' => [
'role' => 'manager',
],
]);
$data = json_decode((string) $response->getBody(), true);const response = await fetch("https://api.novafisko.com/v1/firms/NDTQVQU4AUAV/members/12", {
method: "PATCH",
headers: {
"Accept": "application/json",
"Authorization": `Bearer ${process.env.NOVAFISKO_TOKEN}`,
"Content-Type": "application/json",
},
body: JSON.stringify({
"role": "manager"
}),
});
if (!response.ok) {
const error = await response.json();
throw new Error(error.code ?? error.message);
}
const data = response.status === 204 ? null : await response.json();import os
import requests
response = requests.patch(
"https://api.novafisko.com/v1/firms/NDTQVQU4AUAV/members/12",
headers={
"Accept": "application/json",
"Authorization": f"Bearer {os.environ['NOVAFISKO_TOKEN']}",
},
json={
"role": "manager"
},
timeout=30,
)
response.raise_for_status()
data = response.json() if response.content else NoneDELETE/v1/firms/{firm}/members/{user}Remove a member write Niet in demo
Detaches the user from the firm and from its company files. The user account itself is kept.
Integration tokens need the write ability.
Not available in demo mode: answers 403 demo_mode.
Operatie-id firms.members.destroy
Padparameters
| Naam | Type | Beschrijving |
|---|---|---|
firm verplicht | string | Public token of the firm (public_token, 12 characters).bv. NDTQVQU4AUAV |
user verplicht | integer | Id of the user (member of the firm). bv. 12 |
Gemeenschappelijke headers: Accept-Language
Antwoorden
204Done, no body.
Geen body.
token_ability_missing, session_token_required), demo restriction (demo_mode) or invalid URL signature. Errorerrors maps each field to its messages; code is present when the refusal has a machine reason. ErrorVoorbeeldaanroep
curl -X DELETE "https://api.novafisko.com/v1/firms/NDTQVQU4AUAV/members/12" \
-H "Accept: application/json" \
-H "Authorization: Bearer $NOVAFISKO_TOKEN"<?php
$client = new \GuzzleHttp\Client();
$response = $client->request('DELETE', 'https://api.novafisko.com/v1/firms/NDTQVQU4AUAV/members/12', [
'headers' => [
'Accept' => 'application/json',
'Authorization' => 'Bearer '.getenv('NOVAFISKO_TOKEN'),
],
]);
$data = json_decode((string) $response->getBody(), true);const response = await fetch("https://api.novafisko.com/v1/firms/NDTQVQU4AUAV/members/12", {
method: "DELETE",
headers: {
"Accept": "application/json",
"Authorization": `Bearer ${process.env.NOVAFISKO_TOKEN}`,
},
});
if (!response.ok) {
const error = await response.json();
throw new Error(error.code ?? error.message);
}
const data = response.status === 204 ? null : await response.json();import os
import requests
response = requests.delete(
"https://api.novafisko.com/v1/firms/NDTQVQU4AUAV/members/12",
headers={
"Accept": "application/json",
"Authorization": f"Bearer {os.environ['NOVAFISKO_TOKEN']}",
},
timeout=30,
)
response.raise_for_status()
data = response.json() if response.content else NonePUT/v1/firms/{firm}/members/{user}/companiesReplace the company files of a member write Niet in demo
Integration tokens need the write ability.
Not available in demo mode: answers 403 demo_mode.
Operatie-id firms.members.companies
Padparameters
| Naam | Type | Beschrijving |
|---|---|---|
firm verplicht | string | Public token of the firm (public_token, 12 characters).bv. NDTQVQU4AUAV |
user verplicht | integer | Id of the user (member of the firm). bv. 12 |
Gemeenschappelijke headers: Accept-Language
Body van de aanvraag
application/json
Schema object
company_tokensstring[]verplichtrolestringmanagerencoderreviewer
Voorbeeld
{
"company_tokens": [
"XBVD5O1L29HC",
"K7MPL2QX9ZTA"
],
"role": "encoder"
}Antwoorden
200OK
application/json
Schema FirmMember
Voorbeeld
{
"id": 12,
"name": "Thomas Peeters",
"email": "thomas.peeters@fiduciaire-dumont.be",
"auth_source": "local",
"locale": "fr",
"role": "admin",
"is_active": true,
"all_companies": true,
"companies": [
{
"public_token": "XBVD5O1L29HC",
"name": "Le Comptoir Montois SRL",
"code": "COMPTOIR",
"role": "manager",
"is_active": true
}
]
}token_ability_missing, session_token_required), demo restriction (demo_mode) or invalid URL signature. Errorerrors maps each field to its messages; code is present when the refusal has a machine reason. ErrorVoorbeeldaanroep
curl -X PUT "https://api.novafisko.com/v1/firms/NDTQVQU4AUAV/members/12/companies" \
-H "Accept: application/json" \
-H "Authorization: Bearer $NOVAFISKO_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"company_tokens": [
"XBVD5O1L29HC",
"K7MPL2QX9ZTA"
],
"role": "encoder"
}'<?php
$client = new \GuzzleHttp\Client();
$response = $client->request('PUT', 'https://api.novafisko.com/v1/firms/NDTQVQU4AUAV/members/12/companies', [
'headers' => [
'Accept' => 'application/json',
'Authorization' => 'Bearer '.getenv('NOVAFISKO_TOKEN'),
],
'json' => [
'company_tokens' => [
'XBVD5O1L29HC',
'K7MPL2QX9ZTA',
],
'role' => 'encoder',
],
]);
$data = json_decode((string) $response->getBody(), true);const response = await fetch("https://api.novafisko.com/v1/firms/NDTQVQU4AUAV/members/12/companies", {
method: "PUT",
headers: {
"Accept": "application/json",
"Authorization": `Bearer ${process.env.NOVAFISKO_TOKEN}`,
"Content-Type": "application/json",
},
body: JSON.stringify({
"company_tokens": [
"XBVD5O1L29HC",
"K7MPL2QX9ZTA"
],
"role": "encoder"
}),
});
if (!response.ok) {
const error = await response.json();
throw new Error(error.code ?? error.message);
}
const data = response.status === 204 ? null : await response.json();import os
import requests
response = requests.put(
"https://api.novafisko.com/v1/firms/NDTQVQU4AUAV/members/12/companies",
headers={
"Accept": "application/json",
"Authorization": f"Bearer {os.environ['NOVAFISKO_TOKEN']}",
},
json={
"company_tokens": [
"XBVD5O1L29HC",
"K7MPL2QX9ZTA"
],
"role": "encoder"
},
timeout=30,
)
response.raise_for_status()
data = response.json() if response.content else NonePUT/v1/firms/{firm}/companies/{company}/membersReplace the members of a company file write Niet in demo
Integration tokens need the write ability.
Not available in demo mode: answers 403 demo_mode.
Operatie-id firms.companies.members
Padparameters
| Naam | Type | Beschrijving |
|---|---|---|
firm verplicht | string | Public token of the firm (public_token, 12 characters).bv. NDTQVQU4AUAV |
company verplicht | string | Public token of the company file (public_token, 12 characters).bv. XBVD5O1L29HC |
Gemeenschappelijke headers: Accept-Language
Body van de aanvraag
application/json
Schema object
membersobject[]verplichtEigenschappen
user_idintegerverplichtrolestringmanagerencoderreviewer
Voorbeeld
{
"members": [
{
"user_id": 12,
"role": "manager"
},
{
"user_id": 15,
"role": "encoder"
}
]
}Antwoorden
200OK
application/json
Schema Firm
Voorbeeld
{
"public_token": "NDTQVQU4AUAV",
"name": "Fiduciaire Dumont & Associés",
"enterprise_number": "0458662817",
"vat_number": "BE0458662817",
"itaa_number": "50.123.456",
"itaa_status": "string",
"itaa_quality": "string",
"address": "Rue de Nimy 52",
"postal_code": "7000",
"city": "Mons",
"website": "https://www.comptoir-montois.be",
"logo_url": "https://api.novafisko.com/v1/companies/XBVD5O1L29HC",
"is_partner": true,
"country_code": "BE",
"locale": "fr",
"email": "claire.dumont@fiduciaire-dumont.be",
"phone": "+32 65 31 42 18",
"source": "local",
"synced_at": "2026-03-15T09:41:00+00:00",
"can_manage": true,
"members": [
{
"id": 12,
"name": "Thomas Peeters",
"email": "thomas.peeters@fiduciaire-dumont.be",
"auth_source": "local",
"locale": "fr",
"role": "admin",
"is_active": true,
"all_companies": true,
"companies": [
{
"public_token": "XBVD5O1L29HC",
"name": "Le Comptoir Montois SRL",
"code": "COMPTOIR",
"role": "manager",
"is_active": true
}
]
}
],
"companies": [
{
"public_token": "XBVD5O1L29HC",
"name": "Le Comptoir Montois SRL",
"code": "COMPTOIR",
"icon_url": "https://api.novafisko.com/v1/companies/XBVD5O1L29HC",
"logo_url": "https://api.novafisko.com/v1/companies/XBVD5O1L29HC",
"members": [
{
"id": 42,
"name": "Thomas Peeters",
"email": "claire.dumont@fiduciaire-dumont.be",
"role": "manager",
"is_active": true
}
]
}
]
}token_ability_missing, session_token_required), demo restriction (demo_mode) or invalid URL signature. Errorerrors maps each field to its messages; code is present when the refusal has a machine reason. ErrorVoorbeeldaanroep
curl -X PUT "https://api.novafisko.com/v1/firms/NDTQVQU4AUAV/companies/XBVD5O1L29HC/members" \
-H "Accept: application/json" \
-H "Authorization: Bearer $NOVAFISKO_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"members": [
{
"user_id": 12,
"role": "manager"
},
{
"user_id": 15,
"role": "encoder"
}
]
}'<?php
$client = new \GuzzleHttp\Client();
$response = $client->request('PUT', 'https://api.novafisko.com/v1/firms/NDTQVQU4AUAV/companies/XBVD5O1L29HC/members', [
'headers' => [
'Accept' => 'application/json',
'Authorization' => 'Bearer '.getenv('NOVAFISKO_TOKEN'),
],
'json' => [
'members' => [
[
'user_id' => 12,
'role' => 'manager',
],
[
'user_id' => 15,
'role' => 'encoder',
],
],
],
]);
$data = json_decode((string) $response->getBody(), true);const response = await fetch("https://api.novafisko.com/v1/firms/NDTQVQU4AUAV/companies/XBVD5O1L29HC/members", {
method: "PUT",
headers: {
"Accept": "application/json",
"Authorization": `Bearer ${process.env.NOVAFISKO_TOKEN}`,
"Content-Type": "application/json",
},
body: JSON.stringify({
"members": [
{
"user_id": 12,
"role": "manager"
},
{
"user_id": 15,
"role": "encoder"
}
]
}),
});
if (!response.ok) {
const error = await response.json();
throw new Error(error.code ?? error.message);
}
const data = response.status === 204 ? null : await response.json();import os
import requests
response = requests.put(
"https://api.novafisko.com/v1/firms/NDTQVQU4AUAV/companies/XBVD5O1L29HC/members",
headers={
"Accept": "application/json",
"Authorization": f"Bearer {os.environ['NOVAFISKO_TOKEN']}",
},
json={
"members": [
{
"user_id": 12,
"role": "manager"
},
{
"user_id": 15,
"role": "encoder"
}
]
},
timeout=30,
)
response.raise_for_status()
data = response.json() if response.content else NoneGET/v1/firms/{firm}/activityActivity of the firm read
Audit trail and history merged, newest first, for every company file of the firm. Admins and managers only (404 otherwise).
Integration tokens need the read ability.
Padparameters
| Naam | Type | Beschrijving |
|---|---|---|
firm verplicht | string | Public token of the firm (public_token, 12 characters).bv. NDTQVQU4AUAV |
Queryparameters
| Naam | Type | Beschrijving |
|---|---|---|
company | string | Restrict to one company file. |
user_id | integer | |
from | string <date> | |
to | string <date> | |
type | string | Action or subject type. |
source | string | audit revision |
q | string | |
page | integer | Page number, starting at 1. bv. 1 |
per_page | integer | Items per page (default 50, maximum 200). bv. 50 |
Gemeenschappelijke headers: Accept-Language
Antwoorden
200OK
application/json
Schema ActivityFeed
Voorbeeld
{
"data": [
{
"source": "audit",
"at": "2026-03-15T09:41:00+00:00",
"recorded_at": "2026-03-15T09:41:00+00:00",
"user": null,
"action": "entry.posted",
"action_label": "Écriture validée",
"subject_type": "string",
"subject_id": 42,
"subject_label": "string",
"origin": "string",
"device_name": "MacBook de Claire",
"revision_id": 42,
"operation_id": "bf413a19-2136-4504-bc42-b314637eb5c7",
"company_id": 7,
"changed_fields": [
"string"
],
"company": {
"token": "XBVD5O1L29HC",
"name": "Le Comptoir Montois SRL"
}
}
],
"current_page": 1,
"per_page": 50,
"has_more": true
}token_ability_missing, session_token_required), demo restriction (demo_mode) or invalid URL signature. ErrorVoorbeeldaanroep
curl -X GET "https://api.novafisko.com/v1/firms/NDTQVQU4AUAV/activity" \
-H "Accept: application/json" \
-H "Authorization: Bearer $NOVAFISKO_TOKEN"<?php
$client = new \GuzzleHttp\Client();
$response = $client->request('GET', 'https://api.novafisko.com/v1/firms/NDTQVQU4AUAV/activity', [
'headers' => [
'Accept' => 'application/json',
'Authorization' => 'Bearer '.getenv('NOVAFISKO_TOKEN'),
],
]);
$data = json_decode((string) $response->getBody(), true);const response = await fetch("https://api.novafisko.com/v1/firms/NDTQVQU4AUAV/activity", {
method: "GET",
headers: {
"Accept": "application/json",
"Authorization": `Bearer ${process.env.NOVAFISKO_TOKEN}`,
},
});
if (!response.ok) {
const error = await response.json();
throw new Error(error.code ?? error.message);
}
const data = response.status === 204 ? null : await response.json();import os
import requests
response = requests.get(
"https://api.novafisko.com/v1/firms/NDTQVQU4AUAV/activity",
headers={
"Accept": "application/json",
"Authorization": f"Bearer {os.environ['NOVAFISKO_TOKEN']}",
},
timeout=30,
)
response.raise_for_status()
data = response.json() if response.content else NoneGET/v1/firms/{firm}/files/viewSigned relay of a firm file Ondertekende URL 120 / 1 min
Serves the logo of a firm stored on Novadesko with CORS headers. The signed URL is found in logo_url of the firm payload.
Authorised by the signature of the URL (query parameters signature and expires), not by a bearer token. The URL is issued by another endpoint and expires.
Rate limit: 120 requests per minute (429 beyond, see Retry-After).
Padparameters
| Naam | Type | Beschrijving |
|---|---|---|
firm verplicht | string | Public token of the firm (public_token, 12 characters).bv. NDTQVQU4AUAV |
Queryparameters
| Naam | Type | Beschrijving |
|---|---|---|
url verplicht | string <uri> | Relayed file. |
Gemeenschappelijke headers: signature expires
Antwoorden
200The file, inline.
Antwoordheaders Content-Disposition X-RateLimit-Limit X-RateLimit-Remaining
image/png
image/jpeg
image/webp
application/pdf
token_ability_missing, session_token_required), demo restriction (demo_mode) or invalid URL signature. ErrorVoorbeeldaanroep
curl -X GET "https://api.novafisko.com/v1/firms/NDTQVQU4AUAV/files/view?url=https%3A%2F%2Fapi.novafisko.com%2Fv1%2Fcompanies%2FXBVD5O1L29HC" \
-H "Accept: application/json"<?php
$client = new \GuzzleHttp\Client();
$response = $client->request('GET', 'https://api.novafisko.com/v1/firms/NDTQVQU4AUAV/files/view', [
'headers' => [
'Accept' => 'application/json',
],
'query' => [
'url' => 'https://api.novafisko.com/v1/companies/XBVD5O1L29HC',
],
]);
$data = json_decode((string) $response->getBody(), true);const response = await fetch("https://api.novafisko.com/v1/firms/NDTQVQU4AUAV/files/view?url=https%3A%2F%2Fapi.novafisko.com%2Fv1%2Fcompanies%2FXBVD5O1L29HC", {
method: "GET",
headers: {
"Accept": "application/json",
},
});
if (!response.ok) {
const error = await response.json();
throw new Error(error.code ?? error.message);
}
const data = response.status === 204 ? null : await response.json();import os
import requests
response = requests.get(
"https://api.novafisko.com/v1/firms/NDTQVQU4AUAV/files/view",
headers={
"Accept": "application/json",
},
params={
"url": "https://api.novafisko.com/v1/companies/XBVD5O1L29HC"
},
timeout=30,
)
response.raise_for_status()
data = response.json() if response.content else NoneLicence & pricing
Licence of a firm, activation keys, public price list and simulator.
GET/v1/firms/{firm}/licenceLicence of the firm read
Plan, status, usage of the month, estimate of the next invoice, entitlements and limits.
Integration tokens need the read ability.
Padparameters
| Naam | Type | Beschrijving |
|---|---|---|
firm verplicht | string | Public token of the firm (public_token, 12 characters).bv. NDTQVQU4AUAV |
Queryparameters
| Naam | Type | Beschrijving |
|---|---|---|
lang | string | fr nl en de |
Gemeenschappelijke headers: Accept-Language
Antwoorden
200OK
application/json
Schema Licence
Voorbeeld
{
"status": "none",
"subscription": {},
"plan": {},
"usage": {
"month": "2026-10",
"companies": 25,
"users": 4,
"bank_accounts": 31,
"rows": [
{
"company_id": 7,
"token": "XBVD5O1L29HC",
"name": "Le Comptoir Montois SRL",
"code": "COMPTOIR",
"bank_accounts": 1,
"status": "active",
"activated_at": "2026-03-15T09:41:00+00:00",
"deactivated_at": "2026-03-15T09:41:00+00:00"
}
],
"max_companies": 1,
"over_limit": false,
"suggestion": "string"
},
"estimate": {},
"companies_detail": [
{
"company_id": 7,
"name": "Le Comptoir Montois SRL",
"public_token": "XBVD5O1L29HC",
"status": "active",
"activated_at": "2026-03-15T09:41:00+00:00",
"deactivated_at": "2026-03-15T09:41:00+00:00",
"billable": true
}
],
"next_month_preview": {
"companies": 25,
"total": 121.5
},
"over_limit": false,
"over_limit_firm_total": 12.5,
"entitlements": {
"accounting": true,
"peppol": true,
"coda": true,
"client_portal": true,
"client_invoicing": true,
"document_import": true
},
"limits": {
"max_users": 1,
"max_companies": 1,
"users_count": 4,
"companies_count": 25
},
"expires_at": "2026-03-15T09:41:00+00:00",
"warning": "string",
"activation": {},
"statements": [
{}
],
"options_available": [
{
"code": "client_portal",
"name": "Portail client",
"price_monthly": 6.9,
"unit": "client"
}
],
"can_manage": true
}token_ability_missing, session_token_required), demo restriction (demo_mode) or invalid URL signature. ErrorVoorbeeldaanroep
curl -X GET "https://api.novafisko.com/v1/firms/NDTQVQU4AUAV/licence" \
-H "Accept: application/json" \
-H "Authorization: Bearer $NOVAFISKO_TOKEN"<?php
$client = new \GuzzleHttp\Client();
$response = $client->request('GET', 'https://api.novafisko.com/v1/firms/NDTQVQU4AUAV/licence', [
'headers' => [
'Accept' => 'application/json',
'Authorization' => 'Bearer '.getenv('NOVAFISKO_TOKEN'),
],
]);
$data = json_decode((string) $response->getBody(), true);const response = await fetch("https://api.novafisko.com/v1/firms/NDTQVQU4AUAV/licence", {
method: "GET",
headers: {
"Accept": "application/json",
"Authorization": `Bearer ${process.env.NOVAFISKO_TOKEN}`,
},
});
if (!response.ok) {
const error = await response.json();
throw new Error(error.code ?? error.message);
}
const data = response.status === 204 ? null : await response.json();import os
import requests
response = requests.get(
"https://api.novafisko.com/v1/firms/NDTQVQU4AUAV/licence",
headers={
"Accept": "application/json",
"Authorization": f"Bearer {os.environ['NOVAFISKO_TOKEN']}",
},
timeout=30,
)
response.raise_for_status()
data = response.json() if response.content else NonePOST/v1/firms/{firm}/licence/activateActivate a licence key Sessietoken Niet in demo 10 / 1 min
Creates or replaces the subscription of the firm.
Session token only: integration tokens are refused with 403 session_token_required.
Not available in demo mode: answers 403 demo_mode.
Rate limit: 10 requests per minute (429 beyond, see Retry-After).
Error codes (code):
invalid_key: unknown keyexpired_key: key past its validityexhausted_key: every activation of the key is usedkey_reserved: key reserved for another firmalready_active: the key is already active on this firm
Operatie-id firms.licence.activate
Padparameters
| Naam | Type | Beschrijving |
|---|---|---|
firm verplicht | string | Public token of the firm (public_token, 12 characters).bv. NDTQVQU4AUAV |
Gemeenschappelijke headers: Accept-Language
Body van de aanvraag
application/json
Schema object
keystringverplichtLicence key.bv.NVFK-7Q2M-X4TA-9LDP
Voorbeeld
{
"key": "NVFK-7Q2M-X4TA-9LDP"
}Antwoorden
200OK
Antwoordheaders X-RateLimit-Limit X-RateLimit-Remaining
application/json
Schema Licence
Voorbeeld
{
"status": "none",
"subscription": {},
"plan": {},
"usage": {
"month": "2026-10",
"companies": 25,
"users": 4,
"bank_accounts": 31,
"rows": [
{
"company_id": 7,
"token": "XBVD5O1L29HC",
"name": "Le Comptoir Montois SRL",
"code": "COMPTOIR",
"bank_accounts": 1,
"status": "active",
"activated_at": "2026-03-15T09:41:00+00:00",
"deactivated_at": "2026-03-15T09:41:00+00:00"
}
],
"max_companies": 1,
"over_limit": false,
"suggestion": "string"
},
"estimate": {},
"companies_detail": [
{
"company_id": 7,
"name": "Le Comptoir Montois SRL",
"public_token": "XBVD5O1L29HC",
"status": "active",
"activated_at": "2026-03-15T09:41:00+00:00",
"deactivated_at": "2026-03-15T09:41:00+00:00",
"billable": true
}
],
"next_month_preview": {
"companies": 25,
"total": 121.5
},
"over_limit": false,
"over_limit_firm_total": 12.5,
"entitlements": {
"accounting": true,
"peppol": true,
"coda": true,
"client_portal": true,
"client_invoicing": true,
"document_import": true
},
"limits": {
"max_users": 1,
"max_companies": 1,
"users_count": 4,
"companies_count": 25
},
"expires_at": "2026-03-15T09:41:00+00:00",
"warning": "string",
"activation": {},
"statements": [
{}
],
"options_available": [
{
"code": "client_portal",
"name": "Portail client",
"price_monthly": 6.9,
"unit": "client"
}
],
"can_manage": true
}token_ability_missing, session_token_required), demo restriction (demo_mode) or invalid URL signature. Errorerrors maps each field to its messages; code is present when the refusal has a machine reason. ErrorVoorbeeldaanroep
curl -X POST "https://api.novafisko.com/v1/firms/NDTQVQU4AUAV/licence/activate" \
-H "Accept: application/json" \
-H "Authorization: Bearer $NOVAFISKO_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"key": "NVFK-7Q2M-X4TA-9LDP"
}'<?php
$client = new \GuzzleHttp\Client();
$response = $client->request('POST', 'https://api.novafisko.com/v1/firms/NDTQVQU4AUAV/licence/activate', [
'headers' => [
'Accept' => 'application/json',
'Authorization' => 'Bearer '.getenv('NOVAFISKO_TOKEN'),
],
'json' => [
'key' => 'NVFK-7Q2M-X4TA-9LDP',
],
]);
$data = json_decode((string) $response->getBody(), true);const response = await fetch("https://api.novafisko.com/v1/firms/NDTQVQU4AUAV/licence/activate", {
method: "POST",
headers: {
"Accept": "application/json",
"Authorization": `Bearer ${process.env.NOVAFISKO_TOKEN}`,
"Content-Type": "application/json",
},
body: JSON.stringify({
"key": "NVFK-7Q2M-X4TA-9LDP"
}),
});
if (!response.ok) {
const error = await response.json();
throw new Error(error.code ?? error.message);
}
const data = response.status === 204 ? null : await response.json();import os
import requests
response = requests.post(
"https://api.novafisko.com/v1/firms/NDTQVQU4AUAV/licence/activate",
headers={
"Accept": "application/json",
"Authorization": f"Bearer {os.environ['NOVAFISKO_TOKEN']}",
},
json={
"key": "NVFK-7Q2M-X4TA-9LDP"
},
timeout=30,
)
response.raise_for_status()
data = response.json() if response.content else NoneDELETE/v1/firms/{firm}/licence/activationRelease the licence key Sessietoken Niet in demo
The subscription that depends on the key is cancelled.
Session token only: integration tokens are refused with 403 session_token_required.
Not available in demo mode: answers 403 demo_mode.
Operatie-id firms.licence.release
Padparameters
| Naam | Type | Beschrijving |
|---|---|---|
firm verplicht | string | Public token of the firm (public_token, 12 characters).bv. NDTQVQU4AUAV |
Gemeenschappelijke headers: Accept-Language
Antwoorden
200OK
application/json
Schema Licence
Voorbeeld
{
"status": "none",
"subscription": {},
"plan": {},
"usage": {
"month": "2026-10",
"companies": 25,
"users": 4,
"bank_accounts": 31,
"rows": [
{
"company_id": 7,
"token": "XBVD5O1L29HC",
"name": "Le Comptoir Montois SRL",
"code": "COMPTOIR",
"bank_accounts": 1,
"status": "active",
"activated_at": "2026-03-15T09:41:00+00:00",
"deactivated_at": "2026-03-15T09:41:00+00:00"
}
],
"max_companies": 1,
"over_limit": false,
"suggestion": "string"
},
"estimate": {},
"companies_detail": [
{
"company_id": 7,
"name": "Le Comptoir Montois SRL",
"public_token": "XBVD5O1L29HC",
"status": "active",
"activated_at": "2026-03-15T09:41:00+00:00",
"deactivated_at": "2026-03-15T09:41:00+00:00",
"billable": true
}
],
"next_month_preview": {
"companies": 25,
"total": 121.5
},
"over_limit": false,
"over_limit_firm_total": 12.5,
"entitlements": {
"accounting": true,
"peppol": true,
"coda": true,
"client_portal": true,
"client_invoicing": true,
"document_import": true
},
"limits": {
"max_users": 1,
"max_companies": 1,
"users_count": 4,
"companies_count": 25
},
"expires_at": "2026-03-15T09:41:00+00:00",
"warning": "string",
"activation": {},
"statements": [
{}
],
"options_available": [
{
"code": "client_portal",
"name": "Portail client",
"price_monthly": 6.9,
"unit": "client"
}
],
"can_manage": true
}token_ability_missing, session_token_required), demo restriction (demo_mode) or invalid URL signature. ErrorVoorbeeldaanroep
curl -X DELETE "https://api.novafisko.com/v1/firms/NDTQVQU4AUAV/licence/activation" \
-H "Accept: application/json" \
-H "Authorization: Bearer $NOVAFISKO_TOKEN"<?php
$client = new \GuzzleHttp\Client();
$response = $client->request('DELETE', 'https://api.novafisko.com/v1/firms/NDTQVQU4AUAV/licence/activation', [
'headers' => [
'Accept' => 'application/json',
'Authorization' => 'Bearer '.getenv('NOVAFISKO_TOKEN'),
],
]);
$data = json_decode((string) $response->getBody(), true);const response = await fetch("https://api.novafisko.com/v1/firms/NDTQVQU4AUAV/licence/activation", {
method: "DELETE",
headers: {
"Accept": "application/json",
"Authorization": `Bearer ${process.env.NOVAFISKO_TOKEN}`,
},
});
if (!response.ok) {
const error = await response.json();
throw new Error(error.code ?? error.message);
}
const data = response.status === 204 ? null : await response.json();import os
import requests
response = requests.delete(
"https://api.novafisko.com/v1/firms/NDTQVQU4AUAV/licence/activation",
headers={
"Accept": "application/json",
"Authorization": f"Bearer {os.environ['NOVAFISKO_TOKEN']}",
},
timeout=30,
)
response.raise_for_status()
data = response.json() if response.content else NoneGET/v1/pricingPublic price list Openbaar 120 / 1 min
Plans, tiers and options, excl. VAT, per month. Cached five minutes.
Public endpoint: no bearer token.
Rate limit: 120 requests per minute (429 beyond, see Retry-After).
Queryparameters
| Naam | Type | Beschrijving |
|---|---|---|
locale | string | fr nl en de |
Antwoorden
200OK
Antwoordheaders X-RateLimit-Limit X-RateLimit-Remaining
application/json
Schema PricingGrid
Voorbeeld
{
"currency": "EUR",
"vat_included": false,
"plans": [
{
"code": "starter",
"name": "Firm",
"kind": "starter",
"base_price_monthly": 49,
"per_company": 2.9,
"tiers": [
{
"up_to": 100,
"price": 2.9
}
],
"max_companies": 1,
"peppol_fair_use_per_company": 100,
"annual_discount_pct": 10,
"included": [
"Unlimited users"
]
}
],
"options": [
{
"code": "client_portal",
"name": "Client portal",
"price_monthly": 6.9,
"unit": "client"
}
],
"annual_discount_pct": 10,
"winauditor": {},
"pilot": {
"free_months": 3,
"max_firms": 20
}
}Voorbeeldaanroep
curl -X GET "https://api.novafisko.com/v1/pricing" \
-H "Accept: application/json"<?php
$client = new \GuzzleHttp\Client();
$response = $client->request('GET', 'https://api.novafisko.com/v1/pricing', [
'headers' => [
'Accept' => 'application/json',
],
]);
$data = json_decode((string) $response->getBody(), true);const response = await fetch("https://api.novafisko.com/v1/pricing", {
method: "GET",
headers: {
"Accept": "application/json",
},
});
if (!response.ok) {
const error = await response.json();
throw new Error(error.code ?? error.message);
}
const data = response.status === 204 ? null : await response.json();import os
import requests
response = requests.get(
"https://api.novafisko.com/v1/pricing",
headers={
"Accept": "application/json",
},
timeout=30,
)
response.raise_for_status()
data = response.json() if response.content else NoneGET/v1/pricing/simulatePrice simulator Openbaar 120 / 1 min
Public endpoint: no bearer token.
Rate limit: 120 requests per minute (429 beyond, see Retry-After).
Queryparameters
| Naam | Type | Beschrijving |
|---|---|---|
companies verplicht | integer | Number of company files. bv. 25 |
client_portal | integer | Clients with the portal option. |
client_invoicing | integer | Clients with the invoicing option. |
yearly | string | Yearly billing.0 1 true false |
locale | string | fr nl en de |
Antwoorden
200OK
Antwoordheaders X-RateLimit-Limit X-RateLimit-Remaining
application/json
Schema PricingSimulation
Voorbeeld
{
"companies": 25,
"yearly": false,
"starter": {},
"firm": {
"plan": "firm",
"billing_interval": "monthly",
"companies": 25,
"base": 49,
"companies_breakdown": [
{
"from": 1,
"to": 100,
"quantity": 25,
"unit_price": 2.9,
"total": 72.5
}
],
"companies_total": 72.5,
"options": [
{}
],
"options_total": 0,
"pilot_discount": 0,
"annual_discount_pct": 0,
"annual_discount": 0,
"discount": 0,
"total": 121.5,
"yearly_total": 1458,
"name": "Firm",
"saving_vs_winauditor": 36,
"saving_pct": 22.9
},
"winauditor": 157.5,
"cheapest": "starter"
}Voorbeeldaanroep
curl -X GET "https://api.novafisko.com/v1/pricing/simulate?companies=25" \
-H "Accept: application/json"<?php
$client = new \GuzzleHttp\Client();
$response = $client->request('GET', 'https://api.novafisko.com/v1/pricing/simulate', [
'headers' => [
'Accept' => 'application/json',
],
'query' => [
'companies' => '25',
],
]);
$data = json_decode((string) $response->getBody(), true);const response = await fetch("https://api.novafisko.com/v1/pricing/simulate?companies=25", {
method: "GET",
headers: {
"Accept": "application/json",
},
});
if (!response.ok) {
const error = await response.json();
throw new Error(error.code ?? error.message);
}
const data = response.status === 204 ? null : await response.json();import os
import requests
response = requests.get(
"https://api.novafisko.com/v1/pricing/simulate",
headers={
"Accept": "application/json",
},
params={
"companies": "25"
},
timeout=30,
)
response.raise_for_status()
data = response.json() if response.content else NoneCompanies
Company files (dossiers): creation with accounting set-up, identity, settings, integrity.
GET/v1/companiesList the company files read
Every company file the user can open: all files of the firms it administers or manages, plus the files it is assigned to.
Integration tokens need the read ability.
Gemeenschappelijke headers: Accept-Language
Antwoorden
200OK
application/json
Voorbeeld
[
{
"id": 7,
"public_token": "XBVD5O1L29HC",
"firm_id": 3,
"code": "COMPTOIR",
"name": "Le Comptoir Montois SRL",
"legal_form": "SRL",
"legal_form_code": "610",
"enterprise_number": "0477472701",
"vat_number": "BE0477472701",
"country_pack": "BE",
"vat_regime": "monthly",
"currency": "EUR",
"locale": "fr",
"address": "Grand-Place 14, 7000 Mons",
"street": "Grand-Place",
"house_number": "14",
"box": "string",
"postal_code": "7000",
"city": "Mons",
"country": "BE",
"latitude": "50.4541000",
"longitude": "3.9523000",
"nace_codes": [
{
"code": "56111",
"classification": "MAIN"
}
],
"main_nace_code": "56111",
"company_sheet_at": "2026-03-15T09:41:00+00:00",
"logo_url": "https://api.novafisko.com/v1/companies/XBVD5O1L29HC",
"icon_url": "https://api.novafisko.com/v1/companies/XBVD5O1L29HC",
"fiscal_year_start": "2026-03-15",
"fiscal_year_end": "2026-03-15",
"settings": {
"vat": {
"administration_cell": "string",
"structured_communication": "000000000101",
"directorate_number": "string",
"office_number": "string",
"declarant": {
"applicable": false,
"company_name": "string",
"signatory_1": "string",
"signatory_1_title": "string",
"signatory_2": "string",
"signatory_2_title": "string",
"phone": "+32 65 31 42 18",
"fax": "string",
"email": "claire.dumont@fiduciaire-dumont.be",
"language": "fr"
},
"sender_281_50": {
"name": "Le Comptoir Montois SRL",
"enterprise_number": "0477472701",
"address": "Grand-Place 14",
"phone": "+32 65 31 42 18",
"email": "claire.dumont@fiduciaire-dumont.be"
},
"filer": {
"quality": "company",
"name": "Le Comptoir Montois SRL",
"enterprise_number": "0477472701",
"phone": "+32 65 31 42 18",
"email": "claire.dumont@fiduciaire-dumont.be"
}
},
"legal": {
"rpm_district": "Hainaut, division Mons"
},
"annual_accounts": {
"scheme": "abbreviated",
"general_meeting_date": "2026-03-15",
"directors": "string",
"valuation_rules": "string"
},
"auto_entries": {
"vat": {
"payable_account": "451000",
"receivable_account": "411000",
"correction_payable_account": "string",
"correction_receivable_account": "string",
"journal_id": 3
},
"invoices_to_receive": {
"supplier_account": "444000",
"customer_account": "404000",
"journal_id": 3
},
"reconciliation_difference": {
"expense_account": "657000",
"income_account": "757000",
"max_amount": 1
},
"transfers": {
"transit_account": "580000",
"journal_id": 3
}
},
"history": {
"trash_retention_days": 90
}
},
"is_active": true,
"is_demo": false,
"source": "manual",
"external_id": "string",
"synced_at": "2026-03-15T09:41:00+00:00",
"created_at": "2026-03-15T09:41:00+00:00",
"updated_at": "2026-03-15T09:41:00+00:00",
"deleted_at": "2026-03-15T09:41:00+00:00",
"lock_version": 3,
"version": 3,
"journal_entries_count": 1284,
"firm": {
"id": 3,
"public_token": "NDTQVQU4AUAV",
"name": "Fiduciaire Dumont & Associés"
},
"fiscal_years": [
{
"id": 2,
"company_id": 7,
"code": "2026",
"starts_on": "2026-01-01T00:00:00.000000Z",
"ends_on": "2026-12-31T00:00:00.000000Z",
"is_closed": false,
"closed_at": "2026-03-15T09:41:00+00:00",
"closed_by": 1,
"created_at": "2026-03-15T09:41:00+00:00",
"updated_at": "2026-03-15T09:41:00+00:00",
"lock_version": 3,
"version": 3,
"periods": [
{}
]
}
],
"journals": [
{
"id": 3,
"company_id": 7,
"code": "VEN",
"label": "Ventes",
"type": "purchase",
"control_account_id": 42,
"iban": "BE68539007547034",
"bic": "GEBABEBB",
"last_number": 412,
"is_active": true,
"is_default": true,
"description": "Description",
"created_at": "2026-03-15T09:41:00+00:00",
"updated_at": "2026-03-15T09:41:00+00:00",
"lock_version": 3,
"version": 3,
"deleted_at": "2026-03-15T09:41:00+00:00",
"deleted_by": 1,
"entries_count": 412,
"control_account": null,
"rules": [
{}
]
}
]
}
]token_ability_missing, session_token_required), demo restriction (demo_mode) or invalid URL signature. ErrorVoorbeeldaanroep
curl -X GET "https://api.novafisko.com/v1/companies" \
-H "Accept: application/json" \
-H "Authorization: Bearer $NOVAFISKO_TOKEN"<?php
$client = new \GuzzleHttp\Client();
$response = $client->request('GET', 'https://api.novafisko.com/v1/companies', [
'headers' => [
'Accept' => 'application/json',
'Authorization' => 'Bearer '.getenv('NOVAFISKO_TOKEN'),
],
]);
$data = json_decode((string) $response->getBody(), true);const response = await fetch("https://api.novafisko.com/v1/companies", {
method: "GET",
headers: {
"Accept": "application/json",
"Authorization": `Bearer ${process.env.NOVAFISKO_TOKEN}`,
},
});
if (!response.ok) {
const error = await response.json();
throw new Error(error.code ?? error.message);
}
const data = response.status === 204 ? null : await response.json();import os
import requests
response = requests.get(
"https://api.novafisko.com/v1/companies",
headers={
"Accept": "application/json",
"Authorization": f"Bearer {os.environ['NOVAFISKO_TOKEN']}",
},
timeout=30,
)
response.raise_for_status()
data = response.json() if response.content else NonePOST/v1/companiesCreate a company file write Niet in demo
Creates the file and initialises its accounting: chart of accounts of the country pack (PCMN for BE), VAT codes, journals (ACH, NCA, VEN, NCV, OD, CAI and one financial journal per bank) and the first fiscal year with its periods. firm is optional when the user manages exactly one firm; without a firm the file is standalone.
Integration tokens need the write ability.
Not available in demo mode: answers 403 demo_mode.
Error codes (code):
company_limit_reached: the licence or the plan does not allow one more company file
Gemeenschappelijke headers: Accept-Language
Body van de aanvraag
application/json
Schema object
firmstring | nullFirm that manages the file.country_packstringBEFRLUcodestring | nullShort code, letters, digits, dash, underscore (20 max).namestringverplicht200 characters max.enterprise_numberstring | nullChecked against the country rules (BE: modulo 97).vat_numberstring | nullFormat and check digits validated per country.legal_formstring | nulllegal_form_codestring | nullCode ofGET /v1/reference/legal-forms.addressstring | nulllogo_urlstring <uri> | nullvat_regimestringmonthlyquarterlyfranchiseexemptunitlocalestringfrnlendestreetstring | nullhouse_numberstring | nullboxstring | nullpostal_codestring | nullcitystring | nullcountrystring | nullISO 3166-1 alpha-2.latitudenumber | nulllongitudenumber | nullnace_codesobject[]Eigenschappen
codestringverplichtclassificationstringMAINSECOANCI
main_nace_codestring | nullfiscal_yearobjectEigenschappen
codestring10 characters max.starts_onstring <date>verplichtends_onstring <date>verplicht
banksobject[]Eigenschappen
codestringverplichtJournal code, 6 characters max.labelstringverplichtibanstring | null
Voorbeeld
{
"firm": "NDTQVQU4AUAV",
"country_pack": "BE",
"code": "COMPTOIR",
"name": "Le Comptoir Montois SRL",
"enterprise_number": "0477.472.701",
"legal_form_code": "610",
"vat_regime": "quarterly",
"street": "Grand-Place",
"house_number": "14",
"postal_code": "7000",
"city": "Mons",
"fiscal_year": {
"code": "2026",
"starts_on": "2026-01-01",
"ends_on": "2026-12-31"
},
"banks": [
{
"code": "BNP",
"label": "BNP Paribas Fortis",
"iban": "BE68 5390 0754 7034"
}
]
}Antwoorden
201Created
application/json
Schema Company
Voorbeeld
{
"id": 7,
"public_token": "XBVD5O1L29HC",
"firm_id": 3,
"code": "COMPTOIR",
"name": "Le Comptoir Montois SRL",
"legal_form": "SRL",
"legal_form_code": "610",
"enterprise_number": "0477472701",
"vat_number": "BE0477472701",
"country_pack": "BE",
"vat_regime": "monthly",
"currency": "EUR",
"locale": "fr",
"address": "Grand-Place 14, 7000 Mons",
"street": "Grand-Place",
"house_number": "14",
"box": "string",
"postal_code": "7000",
"city": "Mons",
"country": "BE",
"latitude": "50.4541000",
"longitude": "3.9523000",
"nace_codes": [
{
"code": "56111",
"classification": "MAIN"
}
],
"main_nace_code": "56111",
"company_sheet_at": "2026-03-15T09:41:00+00:00",
"logo_url": "https://api.novafisko.com/v1/companies/XBVD5O1L29HC",
"icon_url": "https://api.novafisko.com/v1/companies/XBVD5O1L29HC",
"fiscal_year_start": "2026-03-15",
"fiscal_year_end": "2026-03-15",
"settings": {
"vat": {
"administration_cell": "string",
"structured_communication": "000000000101",
"directorate_number": "string",
"office_number": "string",
"declarant": {
"applicable": false,
"company_name": "string",
"signatory_1": "string",
"signatory_1_title": "string",
"signatory_2": "string",
"signatory_2_title": "string",
"phone": "+32 65 31 42 18",
"fax": "string",
"email": "claire.dumont@fiduciaire-dumont.be",
"language": "fr"
},
"sender_281_50": {
"name": "Le Comptoir Montois SRL",
"enterprise_number": "0477472701",
"address": "Grand-Place 14",
"phone": "+32 65 31 42 18",
"email": "claire.dumont@fiduciaire-dumont.be"
},
"filer": {
"quality": "company",
"name": "Le Comptoir Montois SRL",
"enterprise_number": "0477472701",
"phone": "+32 65 31 42 18",
"email": "claire.dumont@fiduciaire-dumont.be"
}
},
"legal": {
"rpm_district": "Hainaut, division Mons"
},
"annual_accounts": {
"scheme": "abbreviated",
"general_meeting_date": "2026-03-15",
"directors": "string",
"valuation_rules": "string"
},
"auto_entries": {
"vat": {
"payable_account": "451000",
"receivable_account": "411000",
"correction_payable_account": "string",
"correction_receivable_account": "string",
"journal_id": 3
},
"invoices_to_receive": {
"supplier_account": "444000",
"customer_account": "404000",
"journal_id": 3
},
"reconciliation_difference": {
"expense_account": "657000",
"income_account": "757000",
"max_amount": 1
},
"transfers": {
"transit_account": "580000",
"journal_id": 3
}
},
"history": {
"trash_retention_days": 90
}
},
"is_active": true,
"is_demo": false,
"source": "manual",
"external_id": "string",
"synced_at": "2026-03-15T09:41:00+00:00",
"created_at": "2026-03-15T09:41:00+00:00",
"updated_at": "2026-03-15T09:41:00+00:00",
"deleted_at": "2026-03-15T09:41:00+00:00",
"lock_version": 3,
"version": 3,
"journal_entries_count": 1284,
"firm": {
"id": 3,
"public_token": "NDTQVQU4AUAV",
"name": "Fiduciaire Dumont & Associés"
},
"fiscal_years": [
{
"id": 2,
"company_id": 7,
"code": "2026",
"starts_on": "2026-01-01T00:00:00.000000Z",
"ends_on": "2026-12-31T00:00:00.000000Z",
"is_closed": false,
"closed_at": "2026-03-15T09:41:00+00:00",
"closed_by": 1,
"created_at": "2026-03-15T09:41:00+00:00",
"updated_at": "2026-03-15T09:41:00+00:00",
"lock_version": 3,
"version": 3,
"periods": [
{}
]
}
],
"journals": [
{
"id": 3,
"company_id": 7,
"code": "VEN",
"label": "Ventes",
"type": "purchase",
"control_account_id": 42,
"iban": "BE68539007547034",
"bic": "GEBABEBB",
"last_number": 412,
"is_active": true,
"is_default": true,
"description": "Description",
"created_at": "2026-03-15T09:41:00+00:00",
"updated_at": "2026-03-15T09:41:00+00:00",
"lock_version": 3,
"version": 3,
"deleted_at": "2026-03-15T09:41:00+00:00",
"deleted_by": 1,
"entries_count": 412,
"control_account": null,
"rules": [
{}
]
}
]
}token_ability_missing, session_token_required), demo restriction (demo_mode) or invalid URL signature. Errorerrors maps each field to its messages; code is present when the refusal has a machine reason. ErrorVoorbeeldaanroep
curl -X POST "https://api.novafisko.com/v1/companies" \
-H "Accept: application/json" \
-H "Authorization: Bearer $NOVAFISKO_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"firm": "NDTQVQU4AUAV",
"country_pack": "BE",
"code": "COMPTOIR",
"name": "Le Comptoir Montois SRL",
"enterprise_number": "0477.472.701",
"legal_form_code": "610",
"vat_regime": "quarterly",
"street": "Grand-Place",
"house_number": "14",
"postal_code": "7000",
"city": "Mons",
"fiscal_year": {
"code": "2026",
"starts_on": "2026-01-01",
"ends_on": "2026-12-31"
},
"banks": [
{
"code": "BNP",
"label": "BNP Paribas Fortis",
"iban": "BE68 5390 0754 7034"
}
]
}'<?php
$client = new \GuzzleHttp\Client();
$response = $client->request('POST', 'https://api.novafisko.com/v1/companies', [
'headers' => [
'Accept' => 'application/json',
'Authorization' => 'Bearer '.getenv('NOVAFISKO_TOKEN'),
],
'json' => [
'firm' => 'NDTQVQU4AUAV',
'country_pack' => 'BE',
'code' => 'COMPTOIR',
'name' => 'Le Comptoir Montois SRL',
'enterprise_number' => '0477.472.701',
'legal_form_code' => '610',
'vat_regime' => 'quarterly',
'street' => 'Grand-Place',
'house_number' => '14',
'postal_code' => '7000',
'city' => 'Mons',
'fiscal_year' => [
'code' => '2026',
'starts_on' => '2026-01-01',
'ends_on' => '2026-12-31',
],
'banks' => [
[
'code' => 'BNP',
'label' => 'BNP Paribas Fortis',
'iban' => 'BE68 5390 0754 7034',
],
],
],
]);
$data = json_decode((string) $response->getBody(), true);const response = await fetch("https://api.novafisko.com/v1/companies", {
method: "POST",
headers: {
"Accept": "application/json",
"Authorization": `Bearer ${process.env.NOVAFISKO_TOKEN}`,
"Content-Type": "application/json",
},
body: JSON.stringify({
"firm": "NDTQVQU4AUAV",
"country_pack": "BE",
"code": "COMPTOIR",
"name": "Le Comptoir Montois SRL",
"enterprise_number": "0477.472.701",
"legal_form_code": "610",
"vat_regime": "quarterly",
"street": "Grand-Place",
"house_number": "14",
"postal_code": "7000",
"city": "Mons",
"fiscal_year": {
"code": "2026",
"starts_on": "2026-01-01",
"ends_on": "2026-12-31"
},
"banks": [
{
"code": "BNP",
"label": "BNP Paribas Fortis",
"iban": "BE68 5390 0754 7034"
}
]
}),
});
if (!response.ok) {
const error = await response.json();
throw new Error(error.code ?? error.message);
}
const data = response.status === 204 ? null : await response.json();import os
import requests
response = requests.post(
"https://api.novafisko.com/v1/companies",
headers={
"Accept": "application/json",
"Authorization": f"Bearer {os.environ['NOVAFISKO_TOKEN']}",
},
json={
"firm": "NDTQVQU4AUAV",
"country_pack": "BE",
"code": "COMPTOIR",
"name": "Le Comptoir Montois SRL",
"enterprise_number": "0477.472.701",
"legal_form_code": "610",
"vat_regime": "quarterly",
"street": "Grand-Place",
"house_number": "14",
"postal_code": "7000",
"city": "Mons",
"fiscal_year": {
"code": "2026",
"starts_on": "2026-01-01",
"ends_on": "2026-12-31"
},
"banks": [
{
"code": "BNP",
"label": "BNP Paribas Fortis",
"iban": "BE68 5390 0754 7034"
}
]
},
timeout=30,
)
response.raise_for_status()
data = response.json() if response.content else NoneGET/v1/companies/{company}Company file read
With its fiscal years, periods and journals.
Integration tokens need the read ability.
Padparameters
| Naam | Type | Beschrijving |
|---|---|---|
company verplicht | string | Public token of the company file (public_token, 12 characters).bv. XBVD5O1L29HC |
Gemeenschappelijke headers: Accept-Language
Antwoorden
200OK
application/json
Schema Company
Voorbeeld
{
"id": 7,
"public_token": "XBVD5O1L29HC",
"firm_id": 3,
"code": "COMPTOIR",
"name": "Le Comptoir Montois SRL",
"legal_form": "SRL",
"legal_form_code": "610",
"enterprise_number": "0477472701",
"vat_number": "BE0477472701",
"country_pack": "BE",
"vat_regime": "monthly",
"currency": "EUR",
"locale": "fr",
"address": "Grand-Place 14, 7000 Mons",
"street": "Grand-Place",
"house_number": "14",
"box": "string",
"postal_code": "7000",
"city": "Mons",
"country": "BE",
"latitude": "50.4541000",
"longitude": "3.9523000",
"nace_codes": [
{
"code": "56111",
"classification": "MAIN"
}
],
"main_nace_code": "56111",
"company_sheet_at": "2026-03-15T09:41:00+00:00",
"logo_url": "https://api.novafisko.com/v1/companies/XBVD5O1L29HC",
"icon_url": "https://api.novafisko.com/v1/companies/XBVD5O1L29HC",
"fiscal_year_start": "2026-03-15",
"fiscal_year_end": "2026-03-15",
"settings": {
"vat": {
"administration_cell": "string",
"structured_communication": "000000000101",
"directorate_number": "string",
"office_number": "string",
"declarant": {
"applicable": false,
"company_name": "string",
"signatory_1": "string",
"signatory_1_title": "string",
"signatory_2": "string",
"signatory_2_title": "string",
"phone": "+32 65 31 42 18",
"fax": "string",
"email": "claire.dumont@fiduciaire-dumont.be",
"language": "fr"
},
"sender_281_50": {
"name": "Le Comptoir Montois SRL",
"enterprise_number": "0477472701",
"address": "Grand-Place 14",
"phone": "+32 65 31 42 18",
"email": "claire.dumont@fiduciaire-dumont.be"
},
"filer": {
"quality": "company",
"name": "Le Comptoir Montois SRL",
"enterprise_number": "0477472701",
"phone": "+32 65 31 42 18",
"email": "claire.dumont@fiduciaire-dumont.be"
}
},
"legal": {
"rpm_district": "Hainaut, division Mons"
},
"annual_accounts": {
"scheme": "abbreviated",
"general_meeting_date": "2026-03-15",
"directors": "string",
"valuation_rules": "string"
},
"auto_entries": {
"vat": {
"payable_account": "451000",
"receivable_account": "411000",
"correction_payable_account": "string",
"correction_receivable_account": "string",
"journal_id": 3
},
"invoices_to_receive": {
"supplier_account": "444000",
"customer_account": "404000",
"journal_id": 3
},
"reconciliation_difference": {
"expense_account": "657000",
"income_account": "757000",
"max_amount": 1
},
"transfers": {
"transit_account": "580000",
"journal_id": 3
}
},
"history": {
"trash_retention_days": 90
}
},
"is_active": true,
"is_demo": false,
"source": "manual",
"external_id": "string",
"synced_at": "2026-03-15T09:41:00+00:00",
"created_at": "2026-03-15T09:41:00+00:00",
"updated_at": "2026-03-15T09:41:00+00:00",
"deleted_at": "2026-03-15T09:41:00+00:00",
"lock_version": 3,
"version": 3,
"journal_entries_count": 1284,
"firm": {
"id": 3,
"public_token": "NDTQVQU4AUAV",
"name": "Fiduciaire Dumont & Associés"
},
"fiscal_years": [
{
"id": 2,
"company_id": 7,
"code": "2026",
"starts_on": "2026-01-01T00:00:00.000000Z",
"ends_on": "2026-12-31T00:00:00.000000Z",
"is_closed": false,
"closed_at": "2026-03-15T09:41:00+00:00",
"closed_by": 1,
"created_at": "2026-03-15T09:41:00+00:00",
"updated_at": "2026-03-15T09:41:00+00:00",
"lock_version": 3,
"version": 3,
"periods": [
{}
]
}
],
"journals": [
{
"id": 3,
"company_id": 7,
"code": "VEN",
"label": "Ventes",
"type": "purchase",
"control_account_id": 42,
"iban": "BE68539007547034",
"bic": "GEBABEBB",
"last_number": 412,
"is_active": true,
"is_default": true,
"description": "Description",
"created_at": "2026-03-15T09:41:00+00:00",
"updated_at": "2026-03-15T09:41:00+00:00",
"lock_version": 3,
"version": 3,
"deleted_at": "2026-03-15T09:41:00+00:00",
"deleted_by": 1,
"entries_count": 412,
"control_account": null,
"rules": [
{}
]
}
]
}token_ability_missing, session_token_required), demo restriction (demo_mode) or invalid URL signature. ErrorVoorbeeldaanroep
curl -X GET "https://api.novafisko.com/v1/companies/XBVD5O1L29HC" \
-H "Accept: application/json" \
-H "Authorization: Bearer $NOVAFISKO_TOKEN"<?php
$client = new \GuzzleHttp\Client();
$response = $client->request('GET', 'https://api.novafisko.com/v1/companies/XBVD5O1L29HC', [
'headers' => [
'Accept' => 'application/json',
'Authorization' => 'Bearer '.getenv('NOVAFISKO_TOKEN'),
],
]);
$data = json_decode((string) $response->getBody(), true);const response = await fetch("https://api.novafisko.com/v1/companies/XBVD5O1L29HC", {
method: "GET",
headers: {
"Accept": "application/json",
"Authorization": `Bearer ${process.env.NOVAFISKO_TOKEN}`,
},
});
if (!response.ok) {
const error = await response.json();
throw new Error(error.code ?? error.message);
}
const data = response.status === 204 ? null : await response.json();import os
import requests
response = requests.get(
"https://api.novafisko.com/v1/companies/XBVD5O1L29HC",
headers={
"Accept": "application/json",
"Authorization": f"Bearer {os.environ['NOVAFISKO_TOKEN']}",
},
timeout=30,
)
response.raise_for_status()
data = response.json() if response.content else NonePATCH/v1/companies/{company}Update a company file write
Identity and / or settings. Settings are merged key by key: send only the keys to change; only known keys are accepted.
Integration tokens need the write ability.
Padparameters
| Naam | Type | Beschrijving |
|---|---|---|
company verplicht | string | Public token of the company file (public_token, 12 characters).bv. XBVD5O1L29HC |
Gemeenschappelijke headers: Accept-Language X-Client-Mutation-Id X-Operation-Id X-Device-Id X-Device-Name X-Occurred-At X-Origin X-Base-Version
Body van de aanvraag
application/json
Schema object
codestring | nullShort code, letters, digits, dash, underscore (20 max).namestring200 characters max.enterprise_numberstring | nullChecked against the country rules (BE: modulo 97).vat_numberstring | nullFormat and check digits validated per country.legal_formstring | nulllegal_form_codestring | nullCode ofGET /v1/reference/legal-forms.addressstring | nulllogo_urlstring <uri> | nullvat_regimestringmonthlyquarterlyfranchiseexemptunitlocalestringfrnlendestreetstring | nullhouse_numberstring | nullboxstring | nullpostal_codestring | nullcitystring | nullcountrystring | nullISO 3166-1 alpha-2.latitudenumber | nulllongitudenumber | nullnace_codesobject[]Eigenschappen
codestringverplichtclassificationstringMAINSECOANCI
main_nace_codestring | nullsettingsCompanySettings
Voorbeeld
{
"vat_regime": "monthly",
"settings": {
"vat": {
"office_number": "0420"
},
"auto_entries": {
"reconciliation_difference": {
"max_amount": 2.5
}
}
}
}Antwoorden
200OK
Antwoordheaders X-Operation-Id X-Idempotent-Replay
application/json
Schema Company
Voorbeeld
{
"id": 7,
"public_token": "XBVD5O1L29HC",
"firm_id": 3,
"code": "COMPTOIR",
"name": "Le Comptoir Montois SRL",
"legal_form": "SRL",
"legal_form_code": "610",
"enterprise_number": "0477472701",
"vat_number": "BE0477472701",
"country_pack": "BE",
"vat_regime": "monthly",
"currency": "EUR",
"locale": "fr",
"address": "Grand-Place 14, 7000 Mons",
"street": "Grand-Place",
"house_number": "14",
"box": "string",
"postal_code": "7000",
"city": "Mons",
"country": "BE",
"latitude": "50.4541000",
"longitude": "3.9523000",
"nace_codes": [
{
"code": "56111",
"classification": "MAIN"
}
],
"main_nace_code": "56111",
"company_sheet_at": "2026-03-15T09:41:00+00:00",
"logo_url": "https://api.novafisko.com/v1/companies/XBVD5O1L29HC",
"icon_url": "https://api.novafisko.com/v1/companies/XBVD5O1L29HC",
"fiscal_year_start": "2026-03-15",
"fiscal_year_end": "2026-03-15",
"settings": {
"vat": {
"administration_cell": "string",
"structured_communication": "000000000101",
"directorate_number": "string",
"office_number": "string",
"declarant": {
"applicable": false,
"company_name": "string",
"signatory_1": "string",
"signatory_1_title": "string",
"signatory_2": "string",
"signatory_2_title": "string",
"phone": "+32 65 31 42 18",
"fax": "string",
"email": "claire.dumont@fiduciaire-dumont.be",
"language": "fr"
},
"sender_281_50": {
"name": "Le Comptoir Montois SRL",
"enterprise_number": "0477472701",
"address": "Grand-Place 14",
"phone": "+32 65 31 42 18",
"email": "claire.dumont@fiduciaire-dumont.be"
},
"filer": {
"quality": "company",
"name": "Le Comptoir Montois SRL",
"enterprise_number": "0477472701",
"phone": "+32 65 31 42 18",
"email": "claire.dumont@fiduciaire-dumont.be"
}
},
"legal": {
"rpm_district": "Hainaut, division Mons"
},
"annual_accounts": {
"scheme": "abbreviated",
"general_meeting_date": "2026-03-15",
"directors": "string",
"valuation_rules": "string"
},
"auto_entries": {
"vat": {
"payable_account": "451000",
"receivable_account": "411000",
"correction_payable_account": "string",
"correction_receivable_account": "string",
"journal_id": 3
},
"invoices_to_receive": {
"supplier_account": "444000",
"customer_account": "404000",
"journal_id": 3
},
"reconciliation_difference": {
"expense_account": "657000",
"income_account": "757000",
"max_amount": 1
},
"transfers": {
"transit_account": "580000",
"journal_id": 3
}
},
"history": {
"trash_retention_days": 90
}
},
"is_active": true,
"is_demo": false,
"source": "manual",
"external_id": "string",
"synced_at": "2026-03-15T09:41:00+00:00",
"created_at": "2026-03-15T09:41:00+00:00",
"updated_at": "2026-03-15T09:41:00+00:00",
"deleted_at": "2026-03-15T09:41:00+00:00",
"lock_version": 3,
"version": 3,
"journal_entries_count": 1284,
"firm": {
"id": 3,
"public_token": "NDTQVQU4AUAV",
"name": "Fiduciaire Dumont & Associés"
},
"fiscal_years": [
{
"id": 2,
"company_id": 7,
"code": "2026",
"starts_on": "2026-01-01T00:00:00.000000Z",
"ends_on": "2026-12-31T00:00:00.000000Z",
"is_closed": false,
"closed_at": "2026-03-15T09:41:00+00:00",
"closed_by": 1,
"created_at": "2026-03-15T09:41:00+00:00",
"updated_at": "2026-03-15T09:41:00+00:00",
"lock_version": 3,
"version": 3,
"periods": [
{}
]
}
],
"journals": [
{
"id": 3,
"company_id": 7,
"code": "VEN",
"label": "Ventes",
"type": "purchase",
"control_account_id": 42,
"iban": "BE68539007547034",
"bic": "GEBABEBB",
"last_number": 412,
"is_active": true,
"is_default": true,
"description": "Description",
"created_at": "2026-03-15T09:41:00+00:00",
"updated_at": "2026-03-15T09:41:00+00:00",
"lock_version": 3,
"version": 3,
"deleted_at": "2026-03-15T09:41:00+00:00",
"deleted_by": 1,
"entries_count": 412,
"control_account": null,
"rules": [
{}
]
}
]
}token_ability_missing, session_token_required), demo restriction (demo_mode) or invalid URL signature. ErrorX-Base-Version. Nothing was modified. VersionConflicterrors maps each field to its messages; code is present when the refusal has a machine reason. ErrorVoorbeeldaanroep
curl -X PATCH "https://api.novafisko.com/v1/companies/XBVD5O1L29HC" \
-H "Accept: application/json" \
-H "Authorization: Bearer $NOVAFISKO_TOKEN" \
-H "Content-Type: application/json" \
-H "X-Client-Mutation-Id: b0a6f6f0-7d1c-4c5e-8a55-3f2b1c9d0e11" \
-d '{
"vat_regime": "monthly",
"settings": {
"vat": {
"office_number": "0420"
},
"auto_entries": {
"reconciliation_difference": {
"max_amount": 2.5
}
}
}
}'<?php
$client = new \GuzzleHttp\Client();
$response = $client->request('PATCH', 'https://api.novafisko.com/v1/companies/XBVD5O1L29HC', [
'headers' => [
'Accept' => 'application/json',
'Authorization' => 'Bearer '.getenv('NOVAFISKO_TOKEN'),
'X-Client-Mutation-Id' => 'b0a6f6f0-7d1c-4c5e-8a55-3f2b1c9d0e11',
],
'json' => [
'vat_regime' => 'monthly',
'settings' => [
'vat' => [
'office_number' => '0420',
],
'auto_entries' => [
'reconciliation_difference' => [
'max_amount' => 2.5,
],
],
],
],
]);
$data = json_decode((string) $response->getBody(), true);const response = await fetch("https://api.novafisko.com/v1/companies/XBVD5O1L29HC", {
method: "PATCH",
headers: {
"Accept": "application/json",
"Authorization": `Bearer ${process.env.NOVAFISKO_TOKEN}`,
"Content-Type": "application/json",
"X-Client-Mutation-Id": "b0a6f6f0-7d1c-4c5e-8a55-3f2b1c9d0e11",
},
body: JSON.stringify({
"vat_regime": "monthly",
"settings": {
"vat": {
"office_number": "0420"
},
"auto_entries": {
"reconciliation_difference": {
"max_amount": 2.5
}
}
}
}),
});
if (!response.ok) {
const error = await response.json();
throw new Error(error.code ?? error.message);
}
const data = response.status === 204 ? null : await response.json();import os
import requests
response = requests.patch(
"https://api.novafisko.com/v1/companies/XBVD5O1L29HC",
headers={
"Accept": "application/json",
"Authorization": f"Bearer {os.environ['NOVAFISKO_TOKEN']}",
"X-Client-Mutation-Id": "b0a6f6f0-7d1c-4c5e-8a55-3f2b1c9d0e11",
},
json={
"vat_regime": "monthly",
"settings": {
"vat": {
"office_number": "0420"
},
"auto_entries": {
"reconciliation_difference": {
"max_amount": 2.5
}
}
}
},
timeout=30,
)
response.raise_for_status()
data = response.json() if response.content else NoneDELETE/v1/companies/{company}Delete a company file write Niet in demo
Soft delete: the file disappears from every list.
Integration tokens need the write ability.
Not available in demo mode: answers 403 demo_mode.
Padparameters
| Naam | Type | Beschrijving |
|---|---|---|
company verplicht | string | Public token of the company file (public_token, 12 characters).bv. XBVD5O1L29HC |
Gemeenschappelijke headers: Accept-Language X-Client-Mutation-Id X-Operation-Id X-Device-Id X-Device-Name X-Occurred-At X-Origin X-Base-Version
Antwoorden
204Done, no body.
Antwoordheaders X-Operation-Id X-Idempotent-Replay X-Trashed
token_ability_missing, session_token_required), demo restriction (demo_mode) or invalid URL signature. ErrorX-Base-Version. Nothing was modified. VersionConflictVoorbeeldaanroep
curl -X DELETE "https://api.novafisko.com/v1/companies/XBVD5O1L29HC" \
-H "Accept: application/json" \
-H "Authorization: Bearer $NOVAFISKO_TOKEN" \
-H "X-Client-Mutation-Id: b0a6f6f0-7d1c-4c5e-8a55-3f2b1c9d0e11"<?php
$client = new \GuzzleHttp\Client();
$response = $client->request('DELETE', 'https://api.novafisko.com/v1/companies/XBVD5O1L29HC', [
'headers' => [
'Accept' => 'application/json',
'Authorization' => 'Bearer '.getenv('NOVAFISKO_TOKEN'),
'X-Client-Mutation-Id' => 'b0a6f6f0-7d1c-4c5e-8a55-3f2b1c9d0e11',
],
]);
$data = json_decode((string) $response->getBody(), true);const response = await fetch("https://api.novafisko.com/v1/companies/XBVD5O1L29HC", {
method: "DELETE",
headers: {
"Accept": "application/json",
"Authorization": `Bearer ${process.env.NOVAFISKO_TOKEN}`,
"X-Client-Mutation-Id": "b0a6f6f0-7d1c-4c5e-8a55-3f2b1c9d0e11",
},
});
if (!response.ok) {
const error = await response.json();
throw new Error(error.code ?? error.message);
}
const data = response.status === 204 ? null : await response.json();import os
import requests
response = requests.delete(
"https://api.novafisko.com/v1/companies/XBVD5O1L29HC",
headers={
"Accept": "application/json",
"Authorization": f"Bearer {os.environ['NOVAFISKO_TOKEN']}",
"X-Client-Mutation-Id": "b0a6f6f0-7d1c-4c5e-8a55-3f2b1c9d0e11",
},
timeout=30,
)
response.raise_for_status()
data = response.json() if response.content else NoneGET/v1/companies/{company}/integrityIntegrity check read
Sum of debits and credits over every entry of the file.
Integration tokens need the read ability.
Operatie-id companies.integrity
Padparameters
| Naam | Type | Beschrijving |
|---|---|---|
company verplicht | string | Public token of the company file (public_token, 12 characters).bv. XBVD5O1L29HC |
Gemeenschappelijke headers: Accept-Language
Antwoorden
200OK
application/json
Schema object
debitnumberbv.184320.55creditnumberbv.184320.55entriesintegerbv.1284is_balancedboolean
Voorbeeld
{
"debit": 184320.55,
"credit": 184320.55,
"entries": 1284,
"is_balanced": true
}token_ability_missing, session_token_required), demo restriction (demo_mode) or invalid URL signature. ErrorVoorbeeldaanroep
curl -X GET "https://api.novafisko.com/v1/companies/XBVD5O1L29HC/integrity" \
-H "Accept: application/json" \
-H "Authorization: Bearer $NOVAFISKO_TOKEN"<?php
$client = new \GuzzleHttp\Client();
$response = $client->request('GET', 'https://api.novafisko.com/v1/companies/XBVD5O1L29HC/integrity', [
'headers' => [
'Accept' => 'application/json',
'Authorization' => 'Bearer '.getenv('NOVAFISKO_TOKEN'),
],
]);
$data = json_decode((string) $response->getBody(), true);const response = await fetch("https://api.novafisko.com/v1/companies/XBVD5O1L29HC/integrity", {
method: "GET",
headers: {
"Accept": "application/json",
"Authorization": `Bearer ${process.env.NOVAFISKO_TOKEN}`,
},
});
if (!response.ok) {
const error = await response.json();
throw new Error(error.code ?? error.message);
}
const data = response.status === 204 ? null : await response.json();import os
import requests
response = requests.get(
"https://api.novafisko.com/v1/companies/XBVD5O1L29HC/integrity",
headers={
"Accept": "application/json",
"Authorization": f"Bearer {os.environ['NOVAFISKO_TOKEN']}",
},
timeout=30,
)
response.raise_for_status()
data = response.json() if response.content else NoneGET/v1/companies/{company}/settingsResolved settings read
Settings of the file with the journals available for the selectors.
Integration tokens need the read ability.
Operatie-id companies.settings
Padparameters
| Naam | Type | Beschrijving |
|---|---|---|
company verplicht | string | Public token of the company file (public_token, 12 characters).bv. XBVD5O1L29HC |
Gemeenschappelijke headers: Accept-Language
Antwoorden
200OK
application/json
Schema object
settingsCompanySettingsjournalsobject[]Eigenschappen
idintegercodestringbv.ODlabelstringbv.Opérations diversestypestringbv.miscellaneous
Voorbeeld
{
"settings": {
"vat": {
"administration_cell": "string",
"structured_communication": "000000000101",
"directorate_number": "string",
"office_number": "string",
"declarant": {
"applicable": false,
"company_name": "string",
"signatory_1": "string",
"signatory_1_title": "string",
"signatory_2": "string",
"signatory_2_title": "string",
"phone": "+32 65 31 42 18",
"fax": "string",
"email": "claire.dumont@fiduciaire-dumont.be",
"language": "fr"
},
"sender_281_50": {
"name": "Le Comptoir Montois SRL",
"enterprise_number": "0477472701",
"address": "Grand-Place 14",
"phone": "+32 65 31 42 18",
"email": "claire.dumont@fiduciaire-dumont.be"
},
"filer": {
"quality": "company",
"name": "Le Comptoir Montois SRL",
"enterprise_number": "0477472701",
"phone": "+32 65 31 42 18",
"email": "claire.dumont@fiduciaire-dumont.be"
}
},
"legal": {
"rpm_district": "Hainaut, division Mons"
},
"annual_accounts": {
"scheme": "abbreviated",
"general_meeting_date": "2026-03-15",
"directors": "string",
"valuation_rules": "string"
},
"auto_entries": {
"vat": {
"payable_account": "451000",
"receivable_account": "411000",
"correction_payable_account": "string",
"correction_receivable_account": "string",
"journal_id": 3
},
"invoices_to_receive": {
"supplier_account": "444000",
"customer_account": "404000",
"journal_id": 3
},
"reconciliation_difference": {
"expense_account": "657000",
"income_account": "757000",
"max_amount": 1
},
"transfers": {
"transit_account": "580000",
"journal_id": 3
}
},
"history": {
"trash_retention_days": 90
}
},
"journals": [
{
"id": 42,
"code": "OD",
"label": "Opérations diverses",
"type": "miscellaneous"
}
]
}token_ability_missing, session_token_required), demo restriction (demo_mode) or invalid URL signature. ErrorVoorbeeldaanroep
curl -X GET "https://api.novafisko.com/v1/companies/XBVD5O1L29HC/settings" \
-H "Accept: application/json" \
-H "Authorization: Bearer $NOVAFISKO_TOKEN"<?php
$client = new \GuzzleHttp\Client();
$response = $client->request('GET', 'https://api.novafisko.com/v1/companies/XBVD5O1L29HC/settings', [
'headers' => [
'Accept' => 'application/json',
'Authorization' => 'Bearer '.getenv('NOVAFISKO_TOKEN'),
],
]);
$data = json_decode((string) $response->getBody(), true);const response = await fetch("https://api.novafisko.com/v1/companies/XBVD5O1L29HC/settings", {
method: "GET",
headers: {
"Accept": "application/json",
"Authorization": `Bearer ${process.env.NOVAFISKO_TOKEN}`,
},
});
if (!response.ok) {
const error = await response.json();
throw new Error(error.code ?? error.message);
}
const data = response.status === 204 ? null : await response.json();import os
import requests
response = requests.get(
"https://api.novafisko.com/v1/companies/XBVD5O1L29HC/settings",
headers={
"Accept": "application/json",
"Authorization": f"Bearer {os.environ['NOVAFISKO_TOKEN']}",
},
timeout=30,
)
response.raise_for_status()
data = response.json() if response.content else NoneLookup
Company detection (CompanySearch for BE and FR, VIES elsewhere), legal forms, NACE codes, address autocompletion.
GET/v1/companies/{company}/sheetCompany sheet of the file read
Sheet stored on the file (last detection), structured address, legal form, NACE codes and map links.
Integration tokens need the read ability.
Padparameters
| Naam | Type | Beschrijving |
|---|---|---|
company verplicht | string | Public token of the company file (public_token, 12 characters).bv. XBVD5O1L29HC |
Gemeenschappelijke headers: Accept-Language
Antwoorden
200OK
application/json
Schema SheetView
Voorbeeld
{
"sheet": {
"identifier": "0477472701",
"enterprise_number": "0477472701",
"vat_number": "BE0477472701",
"name": "Le Comptoir Montois",
"legal_form": "SRL",
"legal_form_code": "610",
"status": "active",
"start_date": "2026-03-15",
"address": {
"street": "Grand-Place",
"house_number": "14",
"box": "string",
"postal_code": "7000",
"city": "Mons",
"country": "BE"
},
"address_line": "string",
"latitude": 12.5,
"longitude": 12.5,
"nace_codes": [
{
"code": "56111",
"classification": "MAIN",
"label": "Facture Brasserie Dubuisson"
}
],
"main_nace_code": "string",
"email": "claire.dumont@fiduciaire-dumont.be",
"phone": "+32 65 31 42 18",
"website": "https://www.comptoir-montois.be",
"source": "companysearch",
"fetched_at": "2026-03-15T09:41:00+00:00",
"map": {
"query": "Grand-Place 14, 7000 Mons, Belgique",
"apple_url": "https://api.novafisko.com/v1/companies/XBVD5O1L29HC",
"google_url": "https://api.novafisko.com/v1/companies/XBVD5O1L29HC",
"static_url": "https://api.novafisko.com/v1/companies/XBVD5O1L29HC",
"latitude": 12.5,
"longitude": 12.5
}
},
"sheet_at": "2026-03-15T09:41:00+00:00",
"address": {
"street": "Grand-Place",
"house_number": "14",
"box": "string",
"postal_code": "7000",
"city": "Mons",
"country": "BE"
},
"address_line": "string",
"legal_form": {},
"nace_codes": [
{
"code": "COMPTOIR",
"classification": "string",
"label": "Facture Brasserie Dubuisson",
"is_main": true
}
],
"main_nace_code": "string",
"vat_number_formatted": "BE 0477.472.701",
"map": {
"query": "Grand-Place 14, 7000 Mons, Belgique",
"apple_url": "https://api.novafisko.com/v1/companies/XBVD5O1L29HC",
"google_url": "https://api.novafisko.com/v1/companies/XBVD5O1L29HC",
"static_url": "https://api.novafisko.com/v1/companies/XBVD5O1L29HC",
"latitude": 12.5,
"longitude": 12.5
}
}token_ability_missing, session_token_required), demo restriction (demo_mode) or invalid URL signature. ErrorVoorbeeldaanroep
curl -X GET "https://api.novafisko.com/v1/companies/XBVD5O1L29HC/sheet" \
-H "Accept: application/json" \
-H "Authorization: Bearer $NOVAFISKO_TOKEN"<?php
$client = new \GuzzleHttp\Client();
$response = $client->request('GET', 'https://api.novafisko.com/v1/companies/XBVD5O1L29HC/sheet', [
'headers' => [
'Accept' => 'application/json',
'Authorization' => 'Bearer '.getenv('NOVAFISKO_TOKEN'),
],
]);
$data = json_decode((string) $response->getBody(), true);const response = await fetch("https://api.novafisko.com/v1/companies/XBVD5O1L29HC/sheet", {
method: "GET",
headers: {
"Accept": "application/json",
"Authorization": `Bearer ${process.env.NOVAFISKO_TOKEN}`,
},
});
if (!response.ok) {
const error = await response.json();
throw new Error(error.code ?? error.message);
}
const data = response.status === 204 ? null : await response.json();import os
import requests
response = requests.get(
"https://api.novafisko.com/v1/companies/XBVD5O1L29HC/sheet",
headers={
"Accept": "application/json",
"Authorization": f"Bearer {os.environ['NOVAFISKO_TOKEN']}",
},
timeout=30,
)
response.raise_for_status()
data = response.json() if response.content else NonePOST/v1/companies/{company}/apply-sheetFill the file from a company sheet write Niet in demo 30 / 1 min
Looks the company up and copies name, legal form, address, NACE codes and VAT number to the file (empty fields only unless overwrite).
Integration tokens need the write ability.
Not available in demo mode: answers 403 demo_mode.
Rate limit: 30 requests per minute (429 beyond, see Retry-After).
Operatie-id companies.apply-sheet
Padparameters
| Naam | Type | Beschrijving |
|---|---|---|
company verplicht | string | Public token of the company file (public_token, 12 characters).bv. XBVD5O1L29HC |
Gemeenschappelijke headers: Accept-Language X-Client-Mutation-Id X-Operation-Id X-Device-Id X-Device-Name X-Occurred-At X-Origin
Body van de aanvraag
application/json
Schema object
identifierstringverplichtEnterprise or VAT number.bv.0477472701refreshboolean | nullIgnore the 24 h cache.overwriteboolean | nullReplace the fields already filled in.
Voorbeeld
{
"identifier": "0477472701",
"refresh": true,
"overwrite": true
}Antwoorden
200OK
Antwoordheaders X-Operation-Id X-Idempotent-Replay X-RateLimit-Limit X-RateLimit-Remaining
application/json
Schema object
companyCompanysheetCompanySheetmapobject
Voorbeeld
{
"company": {
"id": 7,
"public_token": "XBVD5O1L29HC",
"firm_id": 3,
"code": "COMPTOIR",
"name": "Le Comptoir Montois SRL",
"legal_form": "SRL",
"legal_form_code": "610",
"enterprise_number": "0477472701",
"vat_number": "BE0477472701",
"country_pack": "BE",
"vat_regime": "monthly",
"currency": "EUR",
"locale": "fr",
"address": "Grand-Place 14, 7000 Mons",
"street": "Grand-Place",
"house_number": "14",
"box": "string",
"postal_code": "7000",
"city": "Mons",
"country": "BE",
"latitude": "50.4541000",
"longitude": "3.9523000",
"nace_codes": [
{
"code": "56111",
"classification": "MAIN"
}
],
"main_nace_code": "56111",
"company_sheet_at": "2026-03-15T09:41:00+00:00",
"logo_url": "https://api.novafisko.com/v1/companies/XBVD5O1L29HC",
"icon_url": "https://api.novafisko.com/v1/companies/XBVD5O1L29HC",
"fiscal_year_start": "2026-03-15",
"fiscal_year_end": "2026-03-15",
"settings": {
"vat": {
"administration_cell": "string",
"structured_communication": "000000000101",
"directorate_number": "string",
"office_number": "string",
"declarant": {
"applicable": false,
"company_name": "string",
"signatory_1": "string",
"signatory_1_title": "string",
"signatory_2": "string",
"signatory_2_title": "string",
"phone": "+32 65 31 42 18",
"fax": "string",
"email": "claire.dumont@fiduciaire-dumont.be",
"language": "fr"
},
"sender_281_50": {
"name": "Le Comptoir Montois SRL",
"enterprise_number": "0477472701",
"address": "Grand-Place 14",
"phone": "+32 65 31 42 18",
"email": "claire.dumont@fiduciaire-dumont.be"
},
"filer": {
"quality": "company",
"name": "Le Comptoir Montois SRL",
"enterprise_number": "0477472701",
"phone": "+32 65 31 42 18",
"email": "claire.dumont@fiduciaire-dumont.be"
}
},
"legal": {
"rpm_district": "Hainaut, division Mons"
},
"annual_accounts": {
"scheme": "abbreviated",
"general_meeting_date": "2026-03-15",
"directors": "string",
"valuation_rules": "string"
},
"auto_entries": {
"vat": {
"payable_account": "451000",
"receivable_account": "411000",
"correction_payable_account": "string",
"correction_receivable_account": "string",
"journal_id": 3
},
"invoices_to_receive": {
"supplier_account": "444000",
"customer_account": "404000",
"journal_id": 3
},
"reconciliation_difference": {
"expense_account": "657000",
"income_account": "757000",
"max_amount": 1
},
"transfers": {
"transit_account": "580000",
"journal_id": 3
}
},
"history": {
"trash_retention_days": 90
}
},
"is_active": true,
"is_demo": false,
"source": "manual",
"external_id": "string",
"synced_at": "2026-03-15T09:41:00+00:00",
"created_at": "2026-03-15T09:41:00+00:00",
"updated_at": "2026-03-15T09:41:00+00:00",
"deleted_at": "2026-03-15T09:41:00+00:00",
"lock_version": 3,
"version": 3,
"journal_entries_count": 1284,
"firm": {
"id": 3,
"public_token": "NDTQVQU4AUAV",
"name": "Fiduciaire Dumont & Associés"
},
"fiscal_years": [
{
"id": 2,
"company_id": 7,
"code": "2026",
"starts_on": "2026-01-01T00:00:00.000000Z",
"ends_on": "2026-12-31T00:00:00.000000Z",
"is_closed": false,
"closed_at": "2026-03-15T09:41:00+00:00",
"closed_by": 1,
"created_at": "2026-03-15T09:41:00+00:00",
"updated_at": "2026-03-15T09:41:00+00:00",
"lock_version": 3,
"version": 3,
"periods": [
{}
]
}
],
"journals": [
{
"id": 3,
"company_id": 7,
"code": "VEN",
"label": "Ventes",
"type": "purchase",
"control_account_id": 42,
"iban": "BE68539007547034",
"bic": "GEBABEBB",
"last_number": 412,
"is_active": true,
"is_default": true,
"description": "Description",
"created_at": "2026-03-15T09:41:00+00:00",
"updated_at": "2026-03-15T09:41:00+00:00",
"lock_version": 3,
"version": 3,
"deleted_at": "2026-03-15T09:41:00+00:00",
"deleted_by": 1,
"entries_count": 412,
"control_account": null,
"rules": [
{}
]
}
]
},
"sheet": {
"identifier": "0477472701",
"enterprise_number": "0477472701",
"vat_number": "BE0477472701",
"name": "Le Comptoir Montois",
"legal_form": "SRL",
"legal_form_code": "610",
"status": "active",
"start_date": "2026-03-15",
"address": {
"street": "Grand-Place",
"house_number": "14",
"box": "string",
"postal_code": "7000",
"city": "Mons",
"country": "BE"
},
"address_line": "string",
"latitude": 12.5,
"longitude": 12.5,
"nace_codes": [
{
"code": "56111",
"classification": "MAIN",
"label": "Facture Brasserie Dubuisson"
}
],
"main_nace_code": "string",
"email": "claire.dumont@fiduciaire-dumont.be",
"phone": "+32 65 31 42 18",
"website": "https://www.comptoir-montois.be",
"source": "companysearch",
"fetched_at": "2026-03-15T09:41:00+00:00",
"map": {
"query": "Grand-Place 14, 7000 Mons, Belgique",
"apple_url": "https://api.novafisko.com/v1/companies/XBVD5O1L29HC",
"google_url": "https://api.novafisko.com/v1/companies/XBVD5O1L29HC",
"static_url": "https://api.novafisko.com/v1/companies/XBVD5O1L29HC",
"latitude": 12.5,
"longitude": 12.5
}
},
"map": {}
}token_ability_missing, session_token_required), demo restriction (demo_mode) or invalid URL signature. Errorerrors maps each field to its messages; code is present when the refusal has a machine reason. Errorcode. ErrorVoorbeeldaanroep
curl -X POST "https://api.novafisko.com/v1/companies/XBVD5O1L29HC/apply-sheet" \
-H "Accept: application/json" \
-H "Authorization: Bearer $NOVAFISKO_TOKEN" \
-H "Content-Type: application/json" \
-H "X-Client-Mutation-Id: b0a6f6f0-7d1c-4c5e-8a55-3f2b1c9d0e11" \
-d '{
"identifier": "0477472701",
"refresh": true,
"overwrite": true
}'<?php
$client = new \GuzzleHttp\Client();
$response = $client->request('POST', 'https://api.novafisko.com/v1/companies/XBVD5O1L29HC/apply-sheet', [
'headers' => [
'Accept' => 'application/json',
'Authorization' => 'Bearer '.getenv('NOVAFISKO_TOKEN'),
'X-Client-Mutation-Id' => 'b0a6f6f0-7d1c-4c5e-8a55-3f2b1c9d0e11',
],
'json' => [
'identifier' => '0477472701',
'refresh' => true,
'overwrite' => true,
],
]);
$data = json_decode((string) $response->getBody(), true);const response = await fetch("https://api.novafisko.com/v1/companies/XBVD5O1L29HC/apply-sheet", {
method: "POST",
headers: {
"Accept": "application/json",
"Authorization": `Bearer ${process.env.NOVAFISKO_TOKEN}`,
"Content-Type": "application/json",
"X-Client-Mutation-Id": "b0a6f6f0-7d1c-4c5e-8a55-3f2b1c9d0e11",
},
body: JSON.stringify({
"identifier": "0477472701",
"refresh": true,
"overwrite": true
}),
});
if (!response.ok) {
const error = await response.json();
throw new Error(error.code ?? error.message);
}
const data = response.status === 204 ? null : await response.json();import os
import requests
response = requests.post(
"https://api.novafisko.com/v1/companies/XBVD5O1L29HC/apply-sheet",
headers={
"Accept": "application/json",
"Authorization": f"Bearer {os.environ['NOVAFISKO_TOKEN']}",
"X-Client-Mutation-Id": "b0a6f6f0-7d1c-4c5e-8a55-3f2b1c9d0e11",
},
json={
"identifier": "0477472701",
"refresh": True,
"overwrite": True
},
timeout=30,
)
response.raise_for_status()
data = response.json() if response.content else NoneGET/v1/companies/{company}/third-parties/{thirdParty}/sheetCompany sheet of a third party read
Integration tokens need the read ability.
Operatie-id companies.third-parties.sheet
Padparameters
| Naam | Type | Beschrijving |
|---|---|---|
company verplicht | string | Public token of the company file (public_token, 12 characters).bv. XBVD5O1L29HC |
thirdParty verplicht | integer | Id of the third party. bv. 18 |
Gemeenschappelijke headers: Accept-Language
Antwoorden
200OK
application/json
Schema SheetView
Voorbeeld
{
"sheet": {
"identifier": "0477472701",
"enterprise_number": "0477472701",
"vat_number": "BE0477472701",
"name": "Le Comptoir Montois",
"legal_form": "SRL",
"legal_form_code": "610",
"status": "active",
"start_date": "2026-03-15",
"address": {
"street": "Grand-Place",
"house_number": "14",
"box": "string",
"postal_code": "7000",
"city": "Mons",
"country": "BE"
},
"address_line": "string",
"latitude": 12.5,
"longitude": 12.5,
"nace_codes": [
{
"code": "56111",
"classification": "MAIN",
"label": "Facture Brasserie Dubuisson"
}
],
"main_nace_code": "string",
"email": "claire.dumont@fiduciaire-dumont.be",
"phone": "+32 65 31 42 18",
"website": "https://www.comptoir-montois.be",
"source": "companysearch",
"fetched_at": "2026-03-15T09:41:00+00:00",
"map": {
"query": "Grand-Place 14, 7000 Mons, Belgique",
"apple_url": "https://api.novafisko.com/v1/companies/XBVD5O1L29HC",
"google_url": "https://api.novafisko.com/v1/companies/XBVD5O1L29HC",
"static_url": "https://api.novafisko.com/v1/companies/XBVD5O1L29HC",
"latitude": 12.5,
"longitude": 12.5
}
},
"sheet_at": "2026-03-15T09:41:00+00:00",
"address": {
"street": "Grand-Place",
"house_number": "14",
"box": "string",
"postal_code": "7000",
"city": "Mons",
"country": "BE"
},
"address_line": "string",
"legal_form": {},
"nace_codes": [
{
"code": "COMPTOIR",
"classification": "string",
"label": "Facture Brasserie Dubuisson",
"is_main": true
}
],
"main_nace_code": "string",
"vat_number_formatted": "BE 0477.472.701",
"map": {
"query": "Grand-Place 14, 7000 Mons, Belgique",
"apple_url": "https://api.novafisko.com/v1/companies/XBVD5O1L29HC",
"google_url": "https://api.novafisko.com/v1/companies/XBVD5O1L29HC",
"static_url": "https://api.novafisko.com/v1/companies/XBVD5O1L29HC",
"latitude": 12.5,
"longitude": 12.5
}
}token_ability_missing, session_token_required), demo restriction (demo_mode) or invalid URL signature. ErrorVoorbeeldaanroep
curl -X GET "https://api.novafisko.com/v1/companies/XBVD5O1L29HC/third-parties/18/sheet" \
-H "Accept: application/json" \
-H "Authorization: Bearer $NOVAFISKO_TOKEN"<?php
$client = new \GuzzleHttp\Client();
$response = $client->request('GET', 'https://api.novafisko.com/v1/companies/XBVD5O1L29HC/third-parties/18/sheet', [
'headers' => [
'Accept' => 'application/json',
'Authorization' => 'Bearer '.getenv('NOVAFISKO_TOKEN'),
],
]);
$data = json_decode((string) $response->getBody(), true);const response = await fetch("https://api.novafisko.com/v1/companies/XBVD5O1L29HC/third-parties/18/sheet", {
method: "GET",
headers: {
"Accept": "application/json",
"Authorization": `Bearer ${process.env.NOVAFISKO_TOKEN}`,
},
});
if (!response.ok) {
const error = await response.json();
throw new Error(error.code ?? error.message);
}
const data = response.status === 204 ? null : await response.json();import os
import requests
response = requests.get(
"https://api.novafisko.com/v1/companies/XBVD5O1L29HC/third-parties/18/sheet",
headers={
"Accept": "application/json",
"Authorization": f"Bearer {os.environ['NOVAFISKO_TOKEN']}",
},
timeout=30,
)
response.raise_for_status()
data = response.json() if response.content else NonePOST/v1/companies/{company}/third-parties/{thirdParty}/apply-sheetFill a third party from a company sheet write Niet in demo 30 / 1 min
Integration tokens need the write ability.
Not available in demo mode: answers 403 demo_mode.
Rate limit: 30 requests per minute (429 beyond, see Retry-After).
Operatie-id companies.third-parties.apply-sheet
Padparameters
| Naam | Type | Beschrijving |
|---|---|---|
company verplicht | string | Public token of the company file (public_token, 12 characters).bv. XBVD5O1L29HC |
thirdParty verplicht | integer | Id of the third party. bv. 18 |
Gemeenschappelijke headers: Accept-Language X-Client-Mutation-Id X-Operation-Id X-Device-Id X-Device-Name X-Occurred-At X-Origin
Body van de aanvraag
application/json
Schema object
identifierstringverplichtEnterprise or VAT number.bv.0477472701refreshboolean | nullIgnore the 24 h cache.overwriteboolean | nullReplace the fields already filled in.
Voorbeeld
{
"identifier": "0477472701",
"refresh": true,
"overwrite": true
}Antwoorden
200OK
Antwoordheaders X-Operation-Id X-Idempotent-Replay X-RateLimit-Limit X-RateLimit-Remaining
application/json
Schema object
third_partyThirdPartysheetCompanySheetmapobject
Voorbeeld
{
"third_party": {
"id": 18,
"company_id": 7,
"type": "customer",
"code": "DUBUISSON",
"name": "Brasserie Dubuisson SA",
"contact_name": "string",
"vat_number": "BE0402531376",
"enterprise_number": "0402531376",
"legal_form_code": "string",
"vat_status": "subject",
"country": "BE",
"language": "fr",
"category": "string",
"currency": "EUR",
"address": "Chaussée de Mons 28",
"house_number": "14",
"box": "string",
"address_line_2": "string",
"postal_code": "7904",
"city": "Pipaix",
"nace_code": "string",
"iban": "BE71096123456769",
"bic": "GKCCBEBB",
"bank_account": "string",
"email": "compta@dubuisson.example",
"phone": "+32 65 31 42 18",
"fax": "string",
"website": "https://www.comptoir-montois.be",
"payment_terms_days": 30,
"form_281_50_type": "string",
"profession_281_50": "string",
"is_natural_person": false,
"notes": "string",
"default_vat_code_id": 42,
"default_account_id": 42,
"vies_valid": true,
"vies_checked_at": "2026-03-15T09:41:00+00:00",
"vies_name": "string",
"peppol_identifier": "0208:0402531376",
"peppol_registered": true,
"peppol_access_point": {},
"peppol_document_types": [
{
"id": "bis_billing_invoice",
"name": "Invoice BIS Billing 3.0",
"family": "billing",
"description": "Facture électronique européenne (EN 16931), format Peppol BIS Billing 3.0.",
"document_id": "string"
}
],
"peppol_checked_at": "2026-03-15T09:41:00+00:00",
"created_at": "2026-03-15T09:41:00+00:00",
"updated_at": "2026-03-15T09:41:00+00:00",
"lock_version": 3,
"version": 3,
"deleted_at": "2026-03-15T09:41:00+00:00",
"deleted_by": 1,
"default_account": {},
"default_vat_code": {}
},
"sheet": {
"identifier": "0477472701",
"enterprise_number": "0477472701",
"vat_number": "BE0477472701",
"name": "Le Comptoir Montois",
"legal_form": "SRL",
"legal_form_code": "610",
"status": "active",
"start_date": "2026-03-15",
"address": {
"street": "Grand-Place",
"house_number": "14",
"box": "string",
"postal_code": "7000",
"city": "Mons",
"country": "BE"
},
"address_line": "string",
"latitude": 12.5,
"longitude": 12.5,
"nace_codes": [
{
"code": "56111",
"classification": "MAIN",
"label": "Facture Brasserie Dubuisson"
}
],
"main_nace_code": "string",
"email": "claire.dumont@fiduciaire-dumont.be",
"phone": "+32 65 31 42 18",
"website": "https://www.comptoir-montois.be",
"source": "companysearch",
"fetched_at": "2026-03-15T09:41:00+00:00",
"map": {
"query": "Grand-Place 14, 7000 Mons, Belgique",
"apple_url": "https://api.novafisko.com/v1/companies/XBVD5O1L29HC",
"google_url": "https://api.novafisko.com/v1/companies/XBVD5O1L29HC",
"static_url": "https://api.novafisko.com/v1/companies/XBVD5O1L29HC",
"latitude": 12.5,
"longitude": 12.5
}
},
"map": {}
}token_ability_missing, session_token_required), demo restriction (demo_mode) or invalid URL signature. Errorerrors maps each field to its messages; code is present when the refusal has a machine reason. Errorcode. ErrorVoorbeeldaanroep
curl -X POST "https://api.novafisko.com/v1/companies/XBVD5O1L29HC/third-parties/18/apply-sheet" \
-H "Accept: application/json" \
-H "Authorization: Bearer $NOVAFISKO_TOKEN" \
-H "Content-Type: application/json" \
-H "X-Client-Mutation-Id: b0a6f6f0-7d1c-4c5e-8a55-3f2b1c9d0e11" \
-d '{
"identifier": "0477472701",
"refresh": true,
"overwrite": true
}'<?php
$client = new \GuzzleHttp\Client();
$response = $client->request('POST', 'https://api.novafisko.com/v1/companies/XBVD5O1L29HC/third-parties/18/apply-sheet', [
'headers' => [
'Accept' => 'application/json',
'Authorization' => 'Bearer '.getenv('NOVAFISKO_TOKEN'),
'X-Client-Mutation-Id' => 'b0a6f6f0-7d1c-4c5e-8a55-3f2b1c9d0e11',
],
'json' => [
'identifier' => '0477472701',
'refresh' => true,
'overwrite' => true,
],
]);
$data = json_decode((string) $response->getBody(), true);const response = await fetch("https://api.novafisko.com/v1/companies/XBVD5O1L29HC/third-parties/18/apply-sheet", {
method: "POST",
headers: {
"Accept": "application/json",
"Authorization": `Bearer ${process.env.NOVAFISKO_TOKEN}`,
"Content-Type": "application/json",
"X-Client-Mutation-Id": "b0a6f6f0-7d1c-4c5e-8a55-3f2b1c9d0e11",
},
body: JSON.stringify({
"identifier": "0477472701",
"refresh": true,
"overwrite": true
}),
});
if (!response.ok) {
const error = await response.json();
throw new Error(error.code ?? error.message);
}
const data = response.status === 204 ? null : await response.json();import os
import requests
response = requests.post(
"https://api.novafisko.com/v1/companies/XBVD5O1L29HC/third-parties/18/apply-sheet",
headers={
"Accept": "application/json",
"Authorization": f"Bearer {os.environ['NOVAFISKO_TOKEN']}",
"X-Client-Mutation-Id": "b0a6f6f0-7d1c-4c5e-8a55-3f2b1c9d0e11",
},
json={
"identifier": "0477472701",
"refresh": True,
"overwrite": True
},
timeout=30,
)
response.raise_for_status()
data = response.json() if response.content else NoneGET/v1/reference/legal-formsLegal forms read
Official nomenclature of legal forms (KBO / BCE for Belgium).
Integration tokens need the read ability.
Operatie-id reference.legal-forms
Queryparameters
| Naam | Type | Beschrijving |
|---|---|---|
country | string | ISO country, BE by default. bv. BE |
q | string | Code, abbreviation or label. bv. srl |
common | boolean | Only the common forms. |
lang | string | fr nl en de |
Gemeenschappelijke headers: Accept-Language
Antwoorden
200OK
application/json
Schema object
dataobject[]Eigenschappen
codestringbv.610labelstringbv.Société à responsabilité limitéelabel_frstringlabel_nlstringbv.Besloten Vennootschaplabel_destringlabel_enstringabbreviationstring | nullbv.SRLis_commonboolean
countrystringbv.BEnomenclature_countrystringbv.BE
Voorbeeld
{
"data": [
{
"code": "610",
"label": "Société à responsabilité limitée",
"label_fr": "string",
"label_nl": "Besloten Vennootschap",
"label_de": "string",
"label_en": "string",
"abbreviation": "SRL",
"is_common": true
}
],
"country": "BE",
"nomenclature_country": "BE"
}token_ability_missing, session_token_required), demo restriction (demo_mode) or invalid URL signature. ErrorVoorbeeldaanroep
curl -X GET "https://api.novafisko.com/v1/reference/legal-forms" \
-H "Accept: application/json" \
-H "Authorization: Bearer $NOVAFISKO_TOKEN"<?php
$client = new \GuzzleHttp\Client();
$response = $client->request('GET', 'https://api.novafisko.com/v1/reference/legal-forms', [
'headers' => [
'Accept' => 'application/json',
'Authorization' => 'Bearer '.getenv('NOVAFISKO_TOKEN'),
],
]);
$data = json_decode((string) $response->getBody(), true);const response = await fetch("https://api.novafisko.com/v1/reference/legal-forms", {
method: "GET",
headers: {
"Accept": "application/json",
"Authorization": `Bearer ${process.env.NOVAFISKO_TOKEN}`,
},
});
if (!response.ok) {
const error = await response.json();
throw new Error(error.code ?? error.message);
}
const data = response.status === 204 ? null : await response.json();import os
import requests
response = requests.get(
"https://api.novafisko.com/v1/reference/legal-forms",
headers={
"Accept": "application/json",
"Authorization": f"Bearer {os.environ['NOVAFISKO_TOKEN']}",
},
timeout=30,
)
response.raise_for_status()
data = response.json() if response.content else NoneGET/v1/reference/naceNACE codes read
Search in the NACE-BEL nomenclature by code or words.
Integration tokens need the read ability.
Queryparameters
| Naam | Type | Beschrijving |
|---|---|---|
country | string | bv. BE |
q | string | bv. restauration |
limit | integer | 1 to 200, 30 by default. |
level | integer | 1 to 7. |
edition | string | bv. 2025 |
lang | string | fr nl en de |
Gemeenschappelijke headers: Accept-Language
Antwoorden
200OK
application/json
Schema object
dataobject[]Eigenschappen
codestringbv.56111labelstringbv.Restauration à service completlabel_frstringlabel_nlstringlabel_destringlabel_enstringlevelintegerbv.5editionstringbv.2025
countrystringnomenclature_countrystringlocalestring
Voorbeeld
{
"data": [
{
"code": "56111",
"label": "Restauration à service complet",
"label_fr": "string",
"label_nl": "string",
"label_de": "string",
"label_en": "string",
"level": 5,
"edition": "2025"
}
],
"country": "BE",
"nomenclature_country": "string",
"locale": "fr"
}token_ability_missing, session_token_required), demo restriction (demo_mode) or invalid URL signature. ErrorVoorbeeldaanroep
curl -X GET "https://api.novafisko.com/v1/reference/nace" \
-H "Accept: application/json" \
-H "Authorization: Bearer $NOVAFISKO_TOKEN"<?php
$client = new \GuzzleHttp\Client();
$response = $client->request('GET', 'https://api.novafisko.com/v1/reference/nace', [
'headers' => [
'Accept' => 'application/json',
'Authorization' => 'Bearer '.getenv('NOVAFISKO_TOKEN'),
],
]);
$data = json_decode((string) $response->getBody(), true);const response = await fetch("https://api.novafisko.com/v1/reference/nace", {
method: "GET",
headers: {
"Accept": "application/json",
"Authorization": `Bearer ${process.env.NOVAFISKO_TOKEN}`,
},
});
if (!response.ok) {
const error = await response.json();
throw new Error(error.code ?? error.message);
}
const data = response.status === 204 ? null : await response.json();import os
import requests
response = requests.get(
"https://api.novafisko.com/v1/reference/nace",
headers={
"Accept": "application/json",
"Authorization": f"Bearer {os.environ['NOVAFISKO_TOKEN']}",
},
timeout=30,
)
response.raise_for_status()
data = response.json() if response.content else NoneGET/v1/lookup/capabilitiesLookup capabilities of a country read
What the detection can do for a country: BE and FR through CompanySearch (search, sheet, cities, streets), other EU countries through VIES (VAT check only).
Integration tokens need the read ability.
Operatie-id lookup.capabilities
Queryparameters
| Naam | Type | Beschrijving |
|---|---|---|
country | string | bv. BE |
Gemeenschappelijke headers: Accept-Language
Antwoorden
200OK
application/json
Schema object
countrystringbv.BEsearchbooleansheetbooleanvatbooleancitiesbooleanstreetsbooleansourcestringbv.companysearchprovider_configuredboolean
Voorbeeld
{
"country": "BE",
"search": true,
"sheet": true,
"vat": true,
"cities": true,
"streets": true,
"source": "companysearch",
"provider_configured": true
}token_ability_missing, session_token_required), demo restriction (demo_mode) or invalid URL signature. ErrorVoorbeeldaanroep
curl -X GET "https://api.novafisko.com/v1/lookup/capabilities" \
-H "Accept: application/json" \
-H "Authorization: Bearer $NOVAFISKO_TOKEN"<?php
$client = new \GuzzleHttp\Client();
$response = $client->request('GET', 'https://api.novafisko.com/v1/lookup/capabilities', [
'headers' => [
'Accept' => 'application/json',
'Authorization' => 'Bearer '.getenv('NOVAFISKO_TOKEN'),
],
]);
$data = json_decode((string) $response->getBody(), true);const response = await fetch("https://api.novafisko.com/v1/lookup/capabilities", {
method: "GET",
headers: {
"Accept": "application/json",
"Authorization": `Bearer ${process.env.NOVAFISKO_TOKEN}`,
},
});
if (!response.ok) {
const error = await response.json();
throw new Error(error.code ?? error.message);
}
const data = response.status === 204 ? null : await response.json();import os
import requests
response = requests.get(
"https://api.novafisko.com/v1/lookup/capabilities",
headers={
"Accept": "application/json",
"Authorization": f"Bearer {os.environ['NOVAFISKO_TOKEN']}",
},
timeout=30,
)
response.raise_for_status()
data = response.json() if response.content else NoneGET/v1/lookup/searchSearch a company by name or number read Niet in demo 60 / 1 min
Integration tokens need the read ability.
Not available in demo mode: answers 403 demo_mode.
Rate limit: 60 requests per minute (429 beyond, see Retry-After).
Queryparameters
| Naam | Type | Beschrijving |
|---|---|---|
q verplicht | string | 2 characters at least. bv. comptoir montois |
country | string | bv. BE |
limit | integer | 1 to 25. |
lang | string | fr nl en de |
Gemeenschappelijke headers: Accept-Language
Antwoorden
200OK
Antwoordheaders X-RateLimit-Limit X-RateLimit-Remaining
application/json
Schema object
dataobject[]Eigenschappen
identifierstringbv.0477472701namestringbv.Le Comptoir Montoislegal_formstring | nullbv.SRLvat_numberstring | nullpostal_codestring | nullbv.7000citystring | nullbv.Monsstatusstring | nullbv.active
search_supportedbooleanprovider_configuredbooleansourcestringcountrystring
Voorbeeld
{
"data": [
{
"identifier": "0477472701",
"name": "Le Comptoir Montois",
"legal_form": "SRL",
"vat_number": "BE0477472701",
"postal_code": "7000",
"city": "Mons",
"status": "active"
}
],
"search_supported": true,
"provider_configured": true,
"source": "string",
"country": "BE"
}token_ability_missing, session_token_required), demo restriction (demo_mode) or invalid URL signature. Errorcode. ErrorVoorbeeldaanroep
curl -X GET "https://api.novafisko.com/v1/lookup/search?q=comptoir%20montois" \
-H "Accept: application/json" \
-H "Authorization: Bearer $NOVAFISKO_TOKEN"<?php
$client = new \GuzzleHttp\Client();
$response = $client->request('GET', 'https://api.novafisko.com/v1/lookup/search', [
'headers' => [
'Accept' => 'application/json',
'Authorization' => 'Bearer '.getenv('NOVAFISKO_TOKEN'),
],
'query' => [
'q' => 'comptoir montois',
],
]);
$data = json_decode((string) $response->getBody(), true);const response = await fetch("https://api.novafisko.com/v1/lookup/search?q=comptoir%20montois", {
method: "GET",
headers: {
"Accept": "application/json",
"Authorization": `Bearer ${process.env.NOVAFISKO_TOKEN}`,
},
});
if (!response.ok) {
const error = await response.json();
throw new Error(error.code ?? error.message);
}
const data = response.status === 204 ? null : await response.json();import os
import requests
response = requests.get(
"https://api.novafisko.com/v1/lookup/search",
headers={
"Accept": "application/json",
"Authorization": f"Bearer {os.environ['NOVAFISKO_TOKEN']}",
},
params={
"q": "comptoir montois"
},
timeout=30,
)
response.raise_for_status()
data = response.json() if response.content else NoneGET/v1/lookup/companies/{identifier}Company sheet read Niet in demo 60 / 1 min
Normalised sheet of a company, cached 24 hours.
Integration tokens need the read ability.
Not available in demo mode: answers 403 demo_mode.
Rate limit: 60 requests per minute (429 beyond, see Retry-After).
Operatie-id lookup.companies.show
Padparameters
| Naam | Type | Beschrijving |
|---|---|---|
identifier verplicht | string | Enterprise number or VAT number of the company to look up. bv. 0477472701 |
Queryparameters
| Naam | Type | Beschrijving |
|---|---|---|
country | string | |
refresh | boolean | Ignore the cache. |
lang | string | fr nl en de |
Gemeenschappelijke headers: Accept-Language
Antwoorden
200OK
Antwoordheaders X-RateLimit-Limit X-RateLimit-Remaining
application/json
Schema CompanySheet
Voorbeeld
{
"identifier": "0477472701",
"enterprise_number": "0477472701",
"vat_number": "BE0477472701",
"name": "Le Comptoir Montois",
"legal_form": "SRL",
"legal_form_code": "610",
"status": "active",
"start_date": "2026-03-15",
"address": {
"street": "Grand-Place",
"house_number": "14",
"box": "string",
"postal_code": "7000",
"city": "Mons",
"country": "BE"
},
"address_line": "string",
"latitude": 12.5,
"longitude": 12.5,
"nace_codes": [
{
"code": "56111",
"classification": "MAIN",
"label": "Facture Brasserie Dubuisson"
}
],
"main_nace_code": "string",
"email": "claire.dumont@fiduciaire-dumont.be",
"phone": "+32 65 31 42 18",
"website": "https://www.comptoir-montois.be",
"source": "companysearch",
"fetched_at": "2026-03-15T09:41:00+00:00",
"map": {
"query": "Grand-Place 14, 7000 Mons, Belgique",
"apple_url": "https://api.novafisko.com/v1/companies/XBVD5O1L29HC",
"google_url": "https://api.novafisko.com/v1/companies/XBVD5O1L29HC",
"static_url": "https://api.novafisko.com/v1/companies/XBVD5O1L29HC",
"latitude": 12.5,
"longitude": 12.5
}
}token_ability_missing, session_token_required), demo restriction (demo_mode) or invalid URL signature. Errorcode. ErrorVoorbeeldaanroep
curl -X GET "https://api.novafisko.com/v1/lookup/companies/0477472701" \
-H "Accept: application/json" \
-H "Authorization: Bearer $NOVAFISKO_TOKEN"<?php
$client = new \GuzzleHttp\Client();
$response = $client->request('GET', 'https://api.novafisko.com/v1/lookup/companies/0477472701', [
'headers' => [
'Accept' => 'application/json',
'Authorization' => 'Bearer '.getenv('NOVAFISKO_TOKEN'),
],
]);
$data = json_decode((string) $response->getBody(), true);const response = await fetch("https://api.novafisko.com/v1/lookup/companies/0477472701", {
method: "GET",
headers: {
"Accept": "application/json",
"Authorization": `Bearer ${process.env.NOVAFISKO_TOKEN}`,
},
});
if (!response.ok) {
const error = await response.json();
throw new Error(error.code ?? error.message);
}
const data = response.status === 204 ? null : await response.json();import os
import requests
response = requests.get(
"https://api.novafisko.com/v1/lookup/companies/0477472701",
headers={
"Accept": "application/json",
"Authorization": f"Bearer {os.environ['NOVAFISKO_TOKEN']}",
},
timeout=30,
)
response.raise_for_status()
data = response.json() if response.content else NoneGET/v1/lookup/vatCheck a VAT number read Niet in demo 60 / 1 min
Format, check digits and existence, with the Peppol status when known.
Integration tokens need the read ability.
Not available in demo mode: answers 403 demo_mode.
Rate limit: 60 requests per minute (429 beyond, see Retry-After).
Queryparameters
| Naam | Type | Beschrijving |
|---|---|---|
vat verplicht | string | bv. BE0477472701 |
country | string |
Gemeenschappelijke headers: Accept-Language
Antwoorden
200OK
Antwoordheaders X-RateLimit-Limit X-RateLimit-Remaining
application/json
Schema object
validboolean | nullvalid_formatbooleanvat_numberstringenterprise_numberstring | nullnamestring | nulladdress_linestring | nullstatusstring | nullpeppolobject | nullreasonstring | nullsourcestring
Voorbeeld
{
"valid": true,
"valid_format": true,
"vat_number": "BE0477472701",
"enterprise_number": "0477472701",
"name": "Le Comptoir Montois SRL",
"address_line": "string",
"status": "active",
"peppol": {},
"reason": "string",
"source": "string"
}token_ability_missing, session_token_required), demo restriction (demo_mode) or invalid URL signature. Errorcode. ErrorVoorbeeldaanroep
curl -X GET "https://api.novafisko.com/v1/lookup/vat?vat=BE0477472701" \
-H "Accept: application/json" \
-H "Authorization: Bearer $NOVAFISKO_TOKEN"<?php
$client = new \GuzzleHttp\Client();
$response = $client->request('GET', 'https://api.novafisko.com/v1/lookup/vat', [
'headers' => [
'Accept' => 'application/json',
'Authorization' => 'Bearer '.getenv('NOVAFISKO_TOKEN'),
],
'query' => [
'vat' => 'BE0477472701',
],
]);
$data = json_decode((string) $response->getBody(), true);const response = await fetch("https://api.novafisko.com/v1/lookup/vat?vat=BE0477472701", {
method: "GET",
headers: {
"Accept": "application/json",
"Authorization": `Bearer ${process.env.NOVAFISKO_TOKEN}`,
},
});
if (!response.ok) {
const error = await response.json();
throw new Error(error.code ?? error.message);
}
const data = response.status === 204 ? null : await response.json();import os
import requests
response = requests.get(
"https://api.novafisko.com/v1/lookup/vat",
headers={
"Accept": "application/json",
"Authorization": f"Bearer {os.environ['NOVAFISKO_TOKEN']}",
},
params={
"vat": "BE0477472701"
},
timeout=30,
)
response.raise_for_status()
data = response.json() if response.content else NoneGET/v1/lookup/citiesCity autocompletion read Niet in demo 120 / 1 min
Integration tokens need the read ability.
Not available in demo mode: answers 403 demo_mode.
Rate limit: 120 requests per minute (429 beyond, see Retry-After).
Queryparameters
| Naam | Type | Beschrijving |
|---|---|---|
q verplicht | string | bv. Mons |
country | string | bv. BE |
Gemeenschappelijke headers: Accept-Language
Antwoorden
200OK
Antwoordheaders X-RateLimit-Limit X-RateLimit-Remaining
application/json
Schema object
dataobject[]Eigenschappen
postal_codestringbv.7000citystringbv.Monscity_frstring | nullcity_nlstring | nullbv.Bergencountrystringbv.BE
Voorbeeld
{
"data": [
{
"postal_code": "7000",
"city": "Mons",
"city_fr": "string",
"city_nl": "Bergen",
"country": "BE"
}
]
}token_ability_missing, session_token_required), demo restriction (demo_mode) or invalid URL signature. Errorcode. ErrorVoorbeeldaanroep
curl -X GET "https://api.novafisko.com/v1/lookup/cities?q=Mons" \
-H "Accept: application/json" \
-H "Authorization: Bearer $NOVAFISKO_TOKEN"<?php
$client = new \GuzzleHttp\Client();
$response = $client->request('GET', 'https://api.novafisko.com/v1/lookup/cities', [
'headers' => [
'Accept' => 'application/json',
'Authorization' => 'Bearer '.getenv('NOVAFISKO_TOKEN'),
],
'query' => [
'q' => 'Mons',
],
]);
$data = json_decode((string) $response->getBody(), true);const response = await fetch("https://api.novafisko.com/v1/lookup/cities?q=Mons", {
method: "GET",
headers: {
"Accept": "application/json",
"Authorization": `Bearer ${process.env.NOVAFISKO_TOKEN}`,
},
});
if (!response.ok) {
const error = await response.json();
throw new Error(error.code ?? error.message);
}
const data = response.status === 204 ? null : await response.json();import os
import requests
response = requests.get(
"https://api.novafisko.com/v1/lookup/cities",
headers={
"Accept": "application/json",
"Authorization": f"Bearer {os.environ['NOVAFISKO_TOKEN']}",
},
params={
"q": "Mons"
},
timeout=30,
)
response.raise_for_status()
data = response.json() if response.content else NoneGET/v1/lookup/streetsStreet autocompletion read Niet in demo 120 / 1 min
Integration tokens need the read ability.
Not available in demo mode: answers 403 demo_mode.
Rate limit: 120 requests per minute (429 beyond, see Retry-After).
Queryparameters
| Naam | Type | Beschrijving |
|---|---|---|
zipcode verplicht | string | Four digits. bv. 7000 |
q | string | bv. Grand |
country | string | bv. BE |
Gemeenschappelijke headers: Accept-Language
Antwoorden
200OK
Antwoordheaders X-RateLimit-Limit X-RateLimit-Remaining
application/json
Schema object
dataobject[]Eigenschappen
streetstringbv.Grand-Placestreet_frstring | nullstreet_nlstring | nullpostal_codestringcitystringcountrystring
Voorbeeld
{
"data": [
{
"street": "Grand-Place",
"street_fr": "string",
"street_nl": "string",
"postal_code": "7000",
"city": "Mons",
"country": "BE"
}
]
}token_ability_missing, session_token_required), demo restriction (demo_mode) or invalid URL signature. Errorcode. ErrorVoorbeeldaanroep
curl -X GET "https://api.novafisko.com/v1/lookup/streets?zipcode=7000" \
-H "Accept: application/json" \
-H "Authorization: Bearer $NOVAFISKO_TOKEN"<?php
$client = new \GuzzleHttp\Client();
$response = $client->request('GET', 'https://api.novafisko.com/v1/lookup/streets', [
'headers' => [
'Accept' => 'application/json',
'Authorization' => 'Bearer '.getenv('NOVAFISKO_TOKEN'),
],
'query' => [
'zipcode' => '7000',
],
]);
$data = json_decode((string) $response->getBody(), true);const response = await fetch("https://api.novafisko.com/v1/lookup/streets?zipcode=7000", {
method: "GET",
headers: {
"Accept": "application/json",
"Authorization": `Bearer ${process.env.NOVAFISKO_TOKEN}`,
},
});
if (!response.ok) {
const error = await response.json();
throw new Error(error.code ?? error.message);
}
const data = response.status === 204 ? null : await response.json();import os
import requests
response = requests.get(
"https://api.novafisko.com/v1/lookup/streets",
headers={
"Accept": "application/json",
"Authorization": f"Bearer {os.environ['NOVAFISKO_TOKEN']}",
},
params={
"zipcode": "7000"
},
timeout=30,
)
response.raise_for_status()
data = response.json() if response.content else NoneGET/v1/companies/{company}/lookup/capabilitiesLookup capabilities of a country read
What the detection can do for a country: BE and FR through CompanySearch (search, sheet, cities, streets), other EU countries through VIES (VAT check only). The call is attributed to the company file.
Integration tokens need the read ability.
Operatie-id companies.lookup.capabilities
Padparameters
| Naam | Type | Beschrijving |
|---|---|---|
company verplicht | string | Public token of the company file (public_token, 12 characters).bv. XBVD5O1L29HC |
Queryparameters
| Naam | Type | Beschrijving |
|---|---|---|
country | string | bv. BE |
Gemeenschappelijke headers: Accept-Language
Antwoorden
200OK
application/json
Schema object
countrystringbv.BEsearchbooleansheetbooleanvatbooleancitiesbooleanstreetsbooleansourcestringbv.companysearchprovider_configuredboolean
Voorbeeld
{
"country": "BE",
"search": true,
"sheet": true,
"vat": true,
"cities": true,
"streets": true,
"source": "companysearch",
"provider_configured": true
}token_ability_missing, session_token_required), demo restriction (demo_mode) or invalid URL signature. ErrorVoorbeeldaanroep
curl -X GET "https://api.novafisko.com/v1/companies/XBVD5O1L29HC/lookup/capabilities" \
-H "Accept: application/json" \
-H "Authorization: Bearer $NOVAFISKO_TOKEN"<?php
$client = new \GuzzleHttp\Client();
$response = $client->request('GET', 'https://api.novafisko.com/v1/companies/XBVD5O1L29HC/lookup/capabilities', [
'headers' => [
'Accept' => 'application/json',
'Authorization' => 'Bearer '.getenv('NOVAFISKO_TOKEN'),
],
]);
$data = json_decode((string) $response->getBody(), true);const response = await fetch("https://api.novafisko.com/v1/companies/XBVD5O1L29HC/lookup/capabilities", {
method: "GET",
headers: {
"Accept": "application/json",
"Authorization": `Bearer ${process.env.NOVAFISKO_TOKEN}`,
},
});
if (!response.ok) {
const error = await response.json();
throw new Error(error.code ?? error.message);
}
const data = response.status === 204 ? null : await response.json();import os
import requests
response = requests.get(
"https://api.novafisko.com/v1/companies/XBVD5O1L29HC/lookup/capabilities",
headers={
"Accept": "application/json",
"Authorization": f"Bearer {os.environ['NOVAFISKO_TOKEN']}",
},
timeout=30,
)
response.raise_for_status()
data = response.json() if response.content else NoneGET/v1/companies/{company}/lookup/searchSearch a company by name or number read Niet in demo 60 / 1 min
The call is attributed to the company file.
Integration tokens need the read ability.
Not available in demo mode: answers 403 demo_mode.
Rate limit: 60 requests per minute (429 beyond, see Retry-After).
Operatie-id companies.lookup.search
Padparameters
| Naam | Type | Beschrijving |
|---|---|---|
company verplicht | string | Public token of the company file (public_token, 12 characters).bv. XBVD5O1L29HC |
Queryparameters
| Naam | Type | Beschrijving |
|---|---|---|
q verplicht | string | 2 characters at least. bv. comptoir montois |
country | string | bv. BE |
limit | integer | 1 to 25. |
lang | string | fr nl en de |
Gemeenschappelijke headers: Accept-Language
Antwoorden
200OK
Antwoordheaders X-RateLimit-Limit X-RateLimit-Remaining
application/json
Schema object
dataobject[]Eigenschappen
identifierstringbv.0477472701namestringbv.Le Comptoir Montoislegal_formstring | nullbv.SRLvat_numberstring | nullpostal_codestring | nullbv.7000citystring | nullbv.Monsstatusstring | nullbv.active
search_supportedbooleanprovider_configuredbooleansourcestringcountrystring
Voorbeeld
{
"data": [
{
"identifier": "0477472701",
"name": "Le Comptoir Montois",
"legal_form": "SRL",
"vat_number": "BE0477472701",
"postal_code": "7000",
"city": "Mons",
"status": "active"
}
],
"search_supported": true,
"provider_configured": true,
"source": "string",
"country": "BE"
}token_ability_missing, session_token_required), demo restriction (demo_mode) or invalid URL signature. Errorcode. ErrorVoorbeeldaanroep
curl -X GET "https://api.novafisko.com/v1/companies/XBVD5O1L29HC/lookup/search?q=comptoir%20montois" \
-H "Accept: application/json" \
-H "Authorization: Bearer $NOVAFISKO_TOKEN"<?php
$client = new \GuzzleHttp\Client();
$response = $client->request('GET', 'https://api.novafisko.com/v1/companies/XBVD5O1L29HC/lookup/search', [
'headers' => [
'Accept' => 'application/json',
'Authorization' => 'Bearer '.getenv('NOVAFISKO_TOKEN'),
],
'query' => [
'q' => 'comptoir montois',
],
]);
$data = json_decode((string) $response->getBody(), true);const response = await fetch("https://api.novafisko.com/v1/companies/XBVD5O1L29HC/lookup/search?q=comptoir%20montois", {
method: "GET",
headers: {
"Accept": "application/json",
"Authorization": `Bearer ${process.env.NOVAFISKO_TOKEN}`,
},
});
if (!response.ok) {
const error = await response.json();
throw new Error(error.code ?? error.message);
}
const data = response.status === 204 ? null : await response.json();import os
import requests
response = requests.get(
"https://api.novafisko.com/v1/companies/XBVD5O1L29HC/lookup/search",
headers={
"Accept": "application/json",
"Authorization": f"Bearer {os.environ['NOVAFISKO_TOKEN']}",
},
params={
"q": "comptoir montois"
},
timeout=30,
)
response.raise_for_status()
data = response.json() if response.content else NoneGET/v1/companies/{company}/lookup/companies/{identifier}Company sheet read Niet in demo 60 / 1 min
Normalised sheet of a company, cached 24 hours. The call is attributed to the company file.
Integration tokens need the read ability.
Not available in demo mode: answers 403 demo_mode.
Rate limit: 60 requests per minute (429 beyond, see Retry-After).
Operatie-id companies.lookup.companies.show
Padparameters
| Naam | Type | Beschrijving |
|---|---|---|
company verplicht | string | Public token of the company file (public_token, 12 characters).bv. XBVD5O1L29HC |
identifier verplicht | string | Enterprise number or VAT number of the company to look up. bv. 0477472701 |
Queryparameters
| Naam | Type | Beschrijving |
|---|---|---|
country | string | |
refresh | boolean | Ignore the cache. |
lang | string | fr nl en de |
Gemeenschappelijke headers: Accept-Language
Antwoorden
200OK
Antwoordheaders X-RateLimit-Limit X-RateLimit-Remaining
application/json
Schema CompanySheet
Voorbeeld
{
"identifier": "0477472701",
"enterprise_number": "0477472701",
"vat_number": "BE0477472701",
"name": "Le Comptoir Montois",
"legal_form": "SRL",
"legal_form_code": "610",
"status": "active",
"start_date": "2026-03-15",
"address": {
"street": "Grand-Place",
"house_number": "14",
"box": "string",
"postal_code": "7000",
"city": "Mons",
"country": "BE"
},
"address_line": "string",
"latitude": 12.5,
"longitude": 12.5,
"nace_codes": [
{
"code": "56111",
"classification": "MAIN",
"label": "Facture Brasserie Dubuisson"
}
],
"main_nace_code": "string",
"email": "claire.dumont@fiduciaire-dumont.be",
"phone": "+32 65 31 42 18",
"website": "https://www.comptoir-montois.be",
"source": "companysearch",
"fetched_at": "2026-03-15T09:41:00+00:00",
"map": {
"query": "Grand-Place 14, 7000 Mons, Belgique",
"apple_url": "https://api.novafisko.com/v1/companies/XBVD5O1L29HC",
"google_url": "https://api.novafisko.com/v1/companies/XBVD5O1L29HC",
"static_url": "https://api.novafisko.com/v1/companies/XBVD5O1L29HC",
"latitude": 12.5,
"longitude": 12.5
}
}token_ability_missing, session_token_required), demo restriction (demo_mode) or invalid URL signature. Errorcode. ErrorVoorbeeldaanroep
curl -X GET "https://api.novafisko.com/v1/companies/XBVD5O1L29HC/lookup/companies/0477472701" \
-H "Accept: application/json" \
-H "Authorization: Bearer $NOVAFISKO_TOKEN"<?php
$client = new \GuzzleHttp\Client();
$response = $client->request('GET', 'https://api.novafisko.com/v1/companies/XBVD5O1L29HC/lookup/companies/0477472701', [
'headers' => [
'Accept' => 'application/json',
'Authorization' => 'Bearer '.getenv('NOVAFISKO_TOKEN'),
],
]);
$data = json_decode((string) $response->getBody(), true);const response = await fetch("https://api.novafisko.com/v1/companies/XBVD5O1L29HC/lookup/companies/0477472701", {
method: "GET",
headers: {
"Accept": "application/json",
"Authorization": `Bearer ${process.env.NOVAFISKO_TOKEN}`,
},
});
if (!response.ok) {
const error = await response.json();
throw new Error(error.code ?? error.message);
}
const data = response.status === 204 ? null : await response.json();import os
import requests
response = requests.get(
"https://api.novafisko.com/v1/companies/XBVD5O1L29HC/lookup/companies/0477472701",
headers={
"Accept": "application/json",
"Authorization": f"Bearer {os.environ['NOVAFISKO_TOKEN']}",
},
timeout=30,
)
response.raise_for_status()
data = response.json() if response.content else NoneGET/v1/companies/{company}/lookup/vatCheck a VAT number read Niet in demo 60 / 1 min
Format, check digits and existence, with the Peppol status when known. The call is attributed to the company file.
Integration tokens need the read ability.
Not available in demo mode: answers 403 demo_mode.
Rate limit: 60 requests per minute (429 beyond, see Retry-After).
Operatie-id companies.lookup.vat
Padparameters
| Naam | Type | Beschrijving |
|---|---|---|
company verplicht | string | Public token of the company file (public_token, 12 characters).bv. XBVD5O1L29HC |
Queryparameters
| Naam | Type | Beschrijving |
|---|---|---|
vat verplicht | string | bv. BE0477472701 |
country | string |
Gemeenschappelijke headers: Accept-Language
Antwoorden
200OK
Antwoordheaders X-RateLimit-Limit X-RateLimit-Remaining
application/json
Schema object
validboolean | nullvalid_formatbooleanvat_numberstringenterprise_numberstring | nullnamestring | nulladdress_linestring | nullstatusstring | nullpeppolobject | nullreasonstring | nullsourcestring
Voorbeeld
{
"valid": true,
"valid_format": true,
"vat_number": "BE0477472701",
"enterprise_number": "0477472701",
"name": "Le Comptoir Montois SRL",
"address_line": "string",
"status": "active",
"peppol": {},
"reason": "string",
"source": "string"
}token_ability_missing, session_token_required), demo restriction (demo_mode) or invalid URL signature. Errorcode. ErrorVoorbeeldaanroep
curl -X GET "https://api.novafisko.com/v1/companies/XBVD5O1L29HC/lookup/vat?vat=BE0477472701" \
-H "Accept: application/json" \
-H "Authorization: Bearer $NOVAFISKO_TOKEN"<?php
$client = new \GuzzleHttp\Client();
$response = $client->request('GET', 'https://api.novafisko.com/v1/companies/XBVD5O1L29HC/lookup/vat', [
'headers' => [
'Accept' => 'application/json',
'Authorization' => 'Bearer '.getenv('NOVAFISKO_TOKEN'),
],
'query' => [
'vat' => 'BE0477472701',
],
]);
$data = json_decode((string) $response->getBody(), true);const response = await fetch("https://api.novafisko.com/v1/companies/XBVD5O1L29HC/lookup/vat?vat=BE0477472701", {
method: "GET",
headers: {
"Accept": "application/json",
"Authorization": `Bearer ${process.env.NOVAFISKO_TOKEN}`,
},
});
if (!response.ok) {
const error = await response.json();
throw new Error(error.code ?? error.message);
}
const data = response.status === 204 ? null : await response.json();import os
import requests
response = requests.get(
"https://api.novafisko.com/v1/companies/XBVD5O1L29HC/lookup/vat",
headers={
"Accept": "application/json",
"Authorization": f"Bearer {os.environ['NOVAFISKO_TOKEN']}",
},
params={
"vat": "BE0477472701"
},
timeout=30,
)
response.raise_for_status()
data = response.json() if response.content else NoneGET/v1/companies/{company}/lookup/citiesCity autocompletion read Niet in demo 120 / 1 min
The call is attributed to the company file.
Integration tokens need the read ability.
Not available in demo mode: answers 403 demo_mode.
Rate limit: 120 requests per minute (429 beyond, see Retry-After).
Operatie-id companies.lookup.cities
Padparameters
| Naam | Type | Beschrijving |
|---|---|---|
company verplicht | string | Public token of the company file (public_token, 12 characters).bv. XBVD5O1L29HC |
Queryparameters
| Naam | Type | Beschrijving |
|---|---|---|
q verplicht | string | bv. Mons |
country | string | bv. BE |
Gemeenschappelijke headers: Accept-Language
Antwoorden
200OK
Antwoordheaders X-RateLimit-Limit X-RateLimit-Remaining
application/json
Schema object
dataobject[]Eigenschappen
postal_codestringbv.7000citystringbv.Monscity_frstring | nullcity_nlstring | nullbv.Bergencountrystringbv.BE
Voorbeeld
{
"data": [
{
"postal_code": "7000",
"city": "Mons",
"city_fr": "string",
"city_nl": "Bergen",
"country": "BE"
}
]
}token_ability_missing, session_token_required), demo restriction (demo_mode) or invalid URL signature. Errorcode. ErrorVoorbeeldaanroep
curl -X GET "https://api.novafisko.com/v1/companies/XBVD5O1L29HC/lookup/cities?q=Mons" \
-H "Accept: application/json" \
-H "Authorization: Bearer $NOVAFISKO_TOKEN"<?php
$client = new \GuzzleHttp\Client();
$response = $client->request('GET', 'https://api.novafisko.com/v1/companies/XBVD5O1L29HC/lookup/cities', [
'headers' => [
'Accept' => 'application/json',
'Authorization' => 'Bearer '.getenv('NOVAFISKO_TOKEN'),
],
'query' => [
'q' => 'Mons',
],
]);
$data = json_decode((string) $response->getBody(), true);const response = await fetch("https://api.novafisko.com/v1/companies/XBVD5O1L29HC/lookup/cities?q=Mons", {
method: "GET",
headers: {
"Accept": "application/json",
"Authorization": `Bearer ${process.env.NOVAFISKO_TOKEN}`,
},
});
if (!response.ok) {
const error = await response.json();
throw new Error(error.code ?? error.message);
}
const data = response.status === 204 ? null : await response.json();import os
import requests
response = requests.get(
"https://api.novafisko.com/v1/companies/XBVD5O1L29HC/lookup/cities",
headers={
"Accept": "application/json",
"Authorization": f"Bearer {os.environ['NOVAFISKO_TOKEN']}",
},
params={
"q": "Mons"
},
timeout=30,
)
response.raise_for_status()
data = response.json() if response.content else NoneGET/v1/companies/{company}/lookup/streetsStreet autocompletion read Niet in demo 120 / 1 min
The call is attributed to the company file.
Integration tokens need the read ability.
Not available in demo mode: answers 403 demo_mode.
Rate limit: 120 requests per minute (429 beyond, see Retry-After).
Operatie-id companies.lookup.streets
Padparameters
| Naam | Type | Beschrijving |
|---|---|---|
company verplicht | string | Public token of the company file (public_token, 12 characters).bv. XBVD5O1L29HC |
Queryparameters
| Naam | Type | Beschrijving |
|---|---|---|
zipcode verplicht | string | Four digits. bv. 7000 |
q | string | bv. Grand |
country | string | bv. BE |
Gemeenschappelijke headers: Accept-Language
Antwoorden
200OK
Antwoordheaders X-RateLimit-Limit X-RateLimit-Remaining
application/json
Schema object
dataobject[]Eigenschappen
streetstringbv.Grand-Placestreet_frstring | nullstreet_nlstring | nullpostal_codestringcitystringcountrystring
Voorbeeld
{
"data": [
{
"street": "Grand-Place",
"street_fr": "string",
"street_nl": "string",
"postal_code": "7000",
"city": "Mons",
"country": "BE"
}
]
}token_ability_missing, session_token_required), demo restriction (demo_mode) or invalid URL signature. Errorcode. ErrorVoorbeeldaanroep
curl -X GET "https://api.novafisko.com/v1/companies/XBVD5O1L29HC/lookup/streets?zipcode=7000" \
-H "Accept: application/json" \
-H "Authorization: Bearer $NOVAFISKO_TOKEN"<?php
$client = new \GuzzleHttp\Client();
$response = $client->request('GET', 'https://api.novafisko.com/v1/companies/XBVD5O1L29HC/lookup/streets', [
'headers' => [
'Accept' => 'application/json',
'Authorization' => 'Bearer '.getenv('NOVAFISKO_TOKEN'),
],
'query' => [
'zipcode' => '7000',
],
]);
$data = json_decode((string) $response->getBody(), true);const response = await fetch("https://api.novafisko.com/v1/companies/XBVD5O1L29HC/lookup/streets?zipcode=7000", {
method: "GET",
headers: {
"Accept": "application/json",
"Authorization": `Bearer ${process.env.NOVAFISKO_TOKEN}`,
},
});
if (!response.ok) {
const error = await response.json();
throw new Error(error.code ?? error.message);
}
const data = response.status === 204 ? null : await response.json();import os
import requests
response = requests.get(
"https://api.novafisko.com/v1/companies/XBVD5O1L29HC/lookup/streets",
headers={
"Accept": "application/json",
"Authorization": f"Bearer {os.environ['NOVAFISKO_TOKEN']}",
},
params={
"zipcode": "7000"
},
timeout=30,
)
response.raise_for_status()
data = response.json() if response.content else NoneChart of accounts
Accounts of a company file.
GET/v1/companies/{company}/accountsChart of accounts read
Integration tokens need the read ability.
Operatie-id companies.accounts.index
Padparameters
| Naam | Type | Beschrijving |
|---|---|---|
company verplicht | string | Public token of the company file (public_token, 12 characters).bv. XBVD5O1L29HC |
Queryparameters
| Naam | Type | Beschrijving |
|---|---|---|
q | string | Number prefix or part of the label. bv. 6120 |
postable | boolean | Only the accounts entries can be posted to. |
Gemeenschappelijke headers: Accept-Language
Antwoorden
200OK
application/json
Voorbeeld
[
{
"id": 580,
"company_id": 7,
"number": "702000",
"label": "Prestations de services",
"type": "asset",
"is_postable": true,
"is_reconcilable": true,
"purchase_grid": 82,
"default_vat_code_id": 42,
"created_at": "2026-03-15T09:41:00+00:00",
"updated_at": "2026-03-15T09:41:00+00:00",
"lock_version": 3,
"version": 3,
"deleted_at": "2026-03-15T09:41:00+00:00",
"deleted_by": 1,
"default_vat_code": {}
}
]token_ability_missing, session_token_required), demo restriction (demo_mode) or invalid URL signature. ErrorVoorbeeldaanroep
curl -X GET "https://api.novafisko.com/v1/companies/XBVD5O1L29HC/accounts" \
-H "Accept: application/json" \
-H "Authorization: Bearer $NOVAFISKO_TOKEN"<?php
$client = new \GuzzleHttp\Client();
$response = $client->request('GET', 'https://api.novafisko.com/v1/companies/XBVD5O1L29HC/accounts', [
'headers' => [
'Accept' => 'application/json',
'Authorization' => 'Bearer '.getenv('NOVAFISKO_TOKEN'),
],
]);
$data = json_decode((string) $response->getBody(), true);const response = await fetch("https://api.novafisko.com/v1/companies/XBVD5O1L29HC/accounts", {
method: "GET",
headers: {
"Accept": "application/json",
"Authorization": `Bearer ${process.env.NOVAFISKO_TOKEN}`,
},
});
if (!response.ok) {
const error = await response.json();
throw new Error(error.code ?? error.message);
}
const data = response.status === 204 ? null : await response.json();import os
import requests
response = requests.get(
"https://api.novafisko.com/v1/companies/XBVD5O1L29HC/accounts",
headers={
"Accept": "application/json",
"Authorization": f"Bearer {os.environ['NOVAFISKO_TOKEN']}",
},
timeout=30,
)
response.raise_for_status()
data = response.json() if response.content else NonePOST/v1/companies/{company}/accountsCreate an account write
Integration tokens need the write ability.
Operatie-id companies.accounts.store
Padparameters
| Naam | Type | Beschrijving |
|---|---|---|
company verplicht | string | Public token of the company file (public_token, 12 characters).bv. XBVD5O1L29HC |
Gemeenschappelijke headers: Accept-Language X-Client-Mutation-Id X-Operation-Id X-Device-Id X-Device-Name X-Occurred-At X-Origin
Body van de aanvraag
application/json
Schema object
numberstringverplicht2 to 12 digits, unique in the file.typestringverplichtassetliabilityexpenseincomeoff_balancelabelstringverplicht200 characters max.is_postablebooleanis_reconcilablebooleanpurchase_gridinteger | null81, 82 or 83.default_vat_code_idinteger | null
Voorbeeld
{
"number": "612100",
"label": "Électricité",
"type": "expense",
"is_postable": true,
"purchase_grid": 82
}Antwoorden
201Created
Antwoordheaders X-Operation-Id X-Idempotent-Replay
application/json
Schema Account
Voorbeeld
{
"id": 580,
"company_id": 7,
"number": "702000",
"label": "Prestations de services",
"type": "asset",
"is_postable": true,
"is_reconcilable": true,
"purchase_grid": 82,
"default_vat_code_id": 42,
"created_at": "2026-03-15T09:41:00+00:00",
"updated_at": "2026-03-15T09:41:00+00:00",
"lock_version": 3,
"version": 3,
"deleted_at": "2026-03-15T09:41:00+00:00",
"deleted_by": 1,
"default_vat_code": {}
}token_ability_missing, session_token_required), demo restriction (demo_mode) or invalid URL signature. Errorerrors maps each field to its messages; code is present when the refusal has a machine reason. ErrorVoorbeeldaanroep
curl -X POST "https://api.novafisko.com/v1/companies/XBVD5O1L29HC/accounts" \
-H "Accept: application/json" \
-H "Authorization: Bearer $NOVAFISKO_TOKEN" \
-H "Content-Type: application/json" \
-H "X-Client-Mutation-Id: b0a6f6f0-7d1c-4c5e-8a55-3f2b1c9d0e11" \
-d '{
"number": "612100",
"label": "Électricité",
"type": "expense",
"is_postable": true,
"purchase_grid": 82
}'<?php
$client = new \GuzzleHttp\Client();
$response = $client->request('POST', 'https://api.novafisko.com/v1/companies/XBVD5O1L29HC/accounts', [
'headers' => [
'Accept' => 'application/json',
'Authorization' => 'Bearer '.getenv('NOVAFISKO_TOKEN'),
'X-Client-Mutation-Id' => 'b0a6f6f0-7d1c-4c5e-8a55-3f2b1c9d0e11',
],
'json' => [
'number' => '612100',
'label' => 'Électricité',
'type' => 'expense',
'is_postable' => true,
'purchase_grid' => 82,
],
]);
$data = json_decode((string) $response->getBody(), true);const response = await fetch("https://api.novafisko.com/v1/companies/XBVD5O1L29HC/accounts", {
method: "POST",
headers: {
"Accept": "application/json",
"Authorization": `Bearer ${process.env.NOVAFISKO_TOKEN}`,
"Content-Type": "application/json",
"X-Client-Mutation-Id": "b0a6f6f0-7d1c-4c5e-8a55-3f2b1c9d0e11",
},
body: JSON.stringify({
"number": "612100",
"label": "Électricité",
"type": "expense",
"is_postable": true,
"purchase_grid": 82
}),
});
if (!response.ok) {
const error = await response.json();
throw new Error(error.code ?? error.message);
}
const data = response.status === 204 ? null : await response.json();import os
import requests
response = requests.post(
"https://api.novafisko.com/v1/companies/XBVD5O1L29HC/accounts",
headers={
"Accept": "application/json",
"Authorization": f"Bearer {os.environ['NOVAFISKO_TOKEN']}",
"X-Client-Mutation-Id": "b0a6f6f0-7d1c-4c5e-8a55-3f2b1c9d0e11",
},
json={
"number": "612100",
"label": "Électricité",
"type": "expense",
"is_postable": True,
"purchase_grid": 82
},
timeout=30,
)
response.raise_for_status()
data = response.json() if response.content else NonePATCH/v1/companies/{company}/accounts/{account}Update an account write
The number and the type of an account never change.
Integration tokens need the write ability.
Operatie-id companies.accounts.update
Padparameters
| Naam | Type | Beschrijving |
|---|---|---|
company verplicht | string | Public token of the company file (public_token, 12 characters).bv. XBVD5O1L29HC |
account verplicht | integer | Id of the account (not its number). bv. 223 |
Gemeenschappelijke headers: Accept-Language X-Client-Mutation-Id X-Operation-Id X-Device-Id X-Device-Name X-Occurred-At X-Origin X-Base-Version
Body van de aanvraag
application/json
Schema object
labelstring200 characters max.is_postablebooleanis_reconcilablebooleanpurchase_gridinteger | null81, 82 or 83.default_vat_code_idinteger | null
Voorbeeld
{
"label": "Électricité et gaz"
}Antwoorden
200OK
Antwoordheaders X-Operation-Id X-Idempotent-Replay
application/json
Schema Account
Voorbeeld
{
"id": 580,
"company_id": 7,
"number": "702000",
"label": "Prestations de services",
"type": "asset",
"is_postable": true,
"is_reconcilable": true,
"purchase_grid": 82,
"default_vat_code_id": 42,
"created_at": "2026-03-15T09:41:00+00:00",
"updated_at": "2026-03-15T09:41:00+00:00",
"lock_version": 3,
"version": 3,
"deleted_at": "2026-03-15T09:41:00+00:00",
"deleted_by": 1,
"default_vat_code": {}
}token_ability_missing, session_token_required), demo restriction (demo_mode) or invalid URL signature. ErrorX-Base-Version. Nothing was modified. VersionConflicterrors maps each field to its messages; code is present when the refusal has a machine reason. ErrorVoorbeeldaanroep
curl -X PATCH "https://api.novafisko.com/v1/companies/XBVD5O1L29HC/accounts/223" \
-H "Accept: application/json" \
-H "Authorization: Bearer $NOVAFISKO_TOKEN" \
-H "Content-Type: application/json" \
-H "X-Client-Mutation-Id: b0a6f6f0-7d1c-4c5e-8a55-3f2b1c9d0e11" \
-d '{
"label": "Électricité et gaz"
}'<?php
$client = new \GuzzleHttp\Client();
$response = $client->request('PATCH', 'https://api.novafisko.com/v1/companies/XBVD5O1L29HC/accounts/223', [
'headers' => [
'Accept' => 'application/json',
'Authorization' => 'Bearer '.getenv('NOVAFISKO_TOKEN'),
'X-Client-Mutation-Id' => 'b0a6f6f0-7d1c-4c5e-8a55-3f2b1c9d0e11',
],
'json' => [
'label' => 'Électricité et gaz',
],
]);
$data = json_decode((string) $response->getBody(), true);const response = await fetch("https://api.novafisko.com/v1/companies/XBVD5O1L29HC/accounts/223", {
method: "PATCH",
headers: {
"Accept": "application/json",
"Authorization": `Bearer ${process.env.NOVAFISKO_TOKEN}`,
"Content-Type": "application/json",
"X-Client-Mutation-Id": "b0a6f6f0-7d1c-4c5e-8a55-3f2b1c9d0e11",
},
body: JSON.stringify({
"label": "Électricité et gaz"
}),
});
if (!response.ok) {
const error = await response.json();
throw new Error(error.code ?? error.message);
}
const data = response.status === 204 ? null : await response.json();import os
import requests
response = requests.patch(
"https://api.novafisko.com/v1/companies/XBVD5O1L29HC/accounts/223",
headers={
"Accept": "application/json",
"Authorization": f"Bearer {os.environ['NOVAFISKO_TOKEN']}",
"X-Client-Mutation-Id": "b0a6f6f0-7d1c-4c5e-8a55-3f2b1c9d0e11",
},
json={
"label": "Électricité et gaz"
},
timeout=30,
)
response.raise_for_status()
data = response.json() if response.content else NoneJournals
Journals, routing rules of the imported documents, numbering series.
GET/v1/companies/{company}/journalsJournals read
With their control account, routing rules and number of entries.
Integration tokens need the read ability.
Operatie-id companies.journals.index
Padparameters
| Naam | Type | Beschrijving |
|---|---|---|
company verplicht | string | Public token of the company file (public_token, 12 characters).bv. XBVD5O1L29HC |
Gemeenschappelijke headers: Accept-Language
Antwoorden
200OK
application/json
Voorbeeld
[
{
"id": 3,
"company_id": 7,
"code": "VEN",
"label": "Ventes",
"type": "purchase",
"control_account_id": 42,
"iban": "BE68539007547034",
"bic": "GEBABEBB",
"last_number": 412,
"is_active": true,
"is_default": true,
"description": "Description",
"created_at": "2026-03-15T09:41:00+00:00",
"updated_at": "2026-03-15T09:41:00+00:00",
"lock_version": 3,
"version": 3,
"deleted_at": "2026-03-15T09:41:00+00:00",
"deleted_by": 1,
"entries_count": 412,
"control_account": {
"id": 580,
"number": "702000",
"label": "Prestations de services"
},
"rules": [
{
"id": 4,
"company_id": 7,
"journal_id": 3,
"direction": "sale",
"match_field": "payment_provider",
"match_value": "TK",
"priority": 100,
"is_active": true,
"created_at": "2026-03-15T09:41:00+00:00",
"updated_at": "2026-03-15T09:41:00+00:00",
"lock_version": 3,
"version": 3,
"deleted_at": "2026-03-15T09:41:00+00:00",
"deleted_by": 1,
"journal": {
"id": 3,
"code": "VEN",
"label": "Ventes",
"type": "sale"
}
}
]
}
]token_ability_missing, session_token_required), demo restriction (demo_mode) or invalid URL signature. ErrorVoorbeeldaanroep
curl -X GET "https://api.novafisko.com/v1/companies/XBVD5O1L29HC/journals" \
-H "Accept: application/json" \
-H "Authorization: Bearer $NOVAFISKO_TOKEN"<?php
$client = new \GuzzleHttp\Client();
$response = $client->request('GET', 'https://api.novafisko.com/v1/companies/XBVD5O1L29HC/journals', [
'headers' => [
'Accept' => 'application/json',
'Authorization' => 'Bearer '.getenv('NOVAFISKO_TOKEN'),
],
]);
$data = json_decode((string) $response->getBody(), true);const response = await fetch("https://api.novafisko.com/v1/companies/XBVD5O1L29HC/journals", {
method: "GET",
headers: {
"Accept": "application/json",
"Authorization": `Bearer ${process.env.NOVAFISKO_TOKEN}`,
},
});
if (!response.ok) {
const error = await response.json();
throw new Error(error.code ?? error.message);
}
const data = response.status === 204 ? null : await response.json();import os
import requests
response = requests.get(
"https://api.novafisko.com/v1/companies/XBVD5O1L29HC/journals",
headers={
"Accept": "application/json",
"Authorization": f"Bearer {os.environ['NOVAFISKO_TOKEN']}",
},
timeout=30,
)
response.raise_for_status()
data = response.json() if response.content else NonePOST/v1/companies/{company}/journalsCreate a journal write
Integration tokens need the write ability.
Operatie-id companies.journals.store
Padparameters
| Naam | Type | Beschrijving |
|---|---|---|
company verplicht | string | Public token of the company file (public_token, 12 characters).bv. XBVD5O1L29HC |
Gemeenschappelijke headers: Accept-Language X-Client-Mutation-Id X-Operation-Id X-Device-Id X-Device-Name X-Occurred-At X-Origin
Body van de aanvraag
application/json
Schema object
codestringverplichtLetters and digits, 6 max, unique.labelstringverplichttypestringverplichtpurchasesalepurchase_credit_notesale_credit_notefinancialmiscellaneouscontrol_account_idinteger | nullibanstring | nullbicstring | null
Voorbeeld
{
"code": "ING",
"label": "ING Business",
"type": "financial",
"iban": "BE12310123456789"
}Antwoorden
201Created
Antwoordheaders X-Operation-Id X-Idempotent-Replay
application/json
Schema Journal
Voorbeeld
{
"id": 3,
"company_id": 7,
"code": "VEN",
"label": "Ventes",
"type": "purchase",
"control_account_id": 42,
"iban": "BE68539007547034",
"bic": "GEBABEBB",
"last_number": 412,
"is_active": true,
"is_default": true,
"description": "Description",
"created_at": "2026-03-15T09:41:00+00:00",
"updated_at": "2026-03-15T09:41:00+00:00",
"lock_version": 3,
"version": 3,
"deleted_at": "2026-03-15T09:41:00+00:00",
"deleted_by": 1,
"entries_count": 412,
"control_account": {
"id": 580,
"number": "702000",
"label": "Prestations de services"
},
"rules": [
{
"id": 4,
"company_id": 7,
"journal_id": 3,
"direction": "sale",
"match_field": "payment_provider",
"match_value": "TK",
"priority": 100,
"is_active": true,
"created_at": "2026-03-15T09:41:00+00:00",
"updated_at": "2026-03-15T09:41:00+00:00",
"lock_version": 3,
"version": 3,
"deleted_at": "2026-03-15T09:41:00+00:00",
"deleted_by": 1,
"journal": {
"id": 3,
"code": "VEN",
"label": "Ventes",
"type": "sale"
}
}
]
}token_ability_missing, session_token_required), demo restriction (demo_mode) or invalid URL signature. Errorerrors maps each field to its messages; code is present when the refusal has a machine reason. ErrorVoorbeeldaanroep
curl -X POST "https://api.novafisko.com/v1/companies/XBVD5O1L29HC/journals" \
-H "Accept: application/json" \
-H "Authorization: Bearer $NOVAFISKO_TOKEN" \
-H "Content-Type: application/json" \
-H "X-Client-Mutation-Id: b0a6f6f0-7d1c-4c5e-8a55-3f2b1c9d0e11" \
-d '{
"code": "ING",
"label": "ING Business",
"type": "financial",
"iban": "BE12310123456789"
}'<?php
$client = new \GuzzleHttp\Client();
$response = $client->request('POST', 'https://api.novafisko.com/v1/companies/XBVD5O1L29HC/journals', [
'headers' => [
'Accept' => 'application/json',
'Authorization' => 'Bearer '.getenv('NOVAFISKO_TOKEN'),
'X-Client-Mutation-Id' => 'b0a6f6f0-7d1c-4c5e-8a55-3f2b1c9d0e11',
],
'json' => [
'code' => 'ING',
'label' => 'ING Business',
'type' => 'financial',
'iban' => 'BE12310123456789',
],
]);
$data = json_decode((string) $response->getBody(), true);const response = await fetch("https://api.novafisko.com/v1/companies/XBVD5O1L29HC/journals", {
method: "POST",
headers: {
"Accept": "application/json",
"Authorization": `Bearer ${process.env.NOVAFISKO_TOKEN}`,
"Content-Type": "application/json",
"X-Client-Mutation-Id": "b0a6f6f0-7d1c-4c5e-8a55-3f2b1c9d0e11",
},
body: JSON.stringify({
"code": "ING",
"label": "ING Business",
"type": "financial",
"iban": "BE12310123456789"
}),
});
if (!response.ok) {
const error = await response.json();
throw new Error(error.code ?? error.message);
}
const data = response.status === 204 ? null : await response.json();import os
import requests
response = requests.post(
"https://api.novafisko.com/v1/companies/XBVD5O1L29HC/journals",
headers={
"Accept": "application/json",
"Authorization": f"Bearer {os.environ['NOVAFISKO_TOKEN']}",
"X-Client-Mutation-Id": "b0a6f6f0-7d1c-4c5e-8a55-3f2b1c9d0e11",
},
json={
"code": "ING",
"label": "ING Business",
"type": "financial",
"iban": "BE12310123456789"
},
timeout=30,
)
response.raise_for_status()
data = response.json() if response.content else NonePATCH/v1/companies/{company}/journals/{journal}Update a journal write
is_default makes it the default journal of its type.
Integration tokens need the write ability.
Operatie-id companies.journals.update
Padparameters
| Naam | Type | Beschrijving |
|---|---|---|
company verplicht | string | Public token of the company file (public_token, 12 characters).bv. XBVD5O1L29HC |
journal verplicht | integer | Id of the journal. bv. 3 |
Gemeenschappelijke headers: Accept-Language X-Client-Mutation-Id X-Operation-Id X-Device-Id X-Device-Name X-Occurred-At X-Origin X-Base-Version
Body van de aanvraag
application/json
Schema object
labelstringdescriptionstring | nullcontrol_account_idinteger | nullibanstring | nullis_activebooleanis_defaultboolean
Voorbeeld
{
"is_default": true
}Antwoorden
200OK
Antwoordheaders X-Operation-Id X-Idempotent-Replay
application/json
Schema Journal
Voorbeeld
{
"id": 3,
"company_id": 7,
"code": "VEN",
"label": "Ventes",
"type": "purchase",
"control_account_id": 42,
"iban": "BE68539007547034",
"bic": "GEBABEBB",
"last_number": 412,
"is_active": true,
"is_default": true,
"description": "Description",
"created_at": "2026-03-15T09:41:00+00:00",
"updated_at": "2026-03-15T09:41:00+00:00",
"lock_version": 3,
"version": 3,
"deleted_at": "2026-03-15T09:41:00+00:00",
"deleted_by": 1,
"entries_count": 412,
"control_account": {
"id": 580,
"number": "702000",
"label": "Prestations de services"
},
"rules": [
{
"id": 4,
"company_id": 7,
"journal_id": 3,
"direction": "sale",
"match_field": "payment_provider",
"match_value": "TK",
"priority": 100,
"is_active": true,
"created_at": "2026-03-15T09:41:00+00:00",
"updated_at": "2026-03-15T09:41:00+00:00",
"lock_version": 3,
"version": 3,
"deleted_at": "2026-03-15T09:41:00+00:00",
"deleted_by": 1,
"journal": {
"id": 3,
"code": "VEN",
"label": "Ventes",
"type": "sale"
}
}
]
}token_ability_missing, session_token_required), demo restriction (demo_mode) or invalid URL signature. ErrorX-Base-Version. Nothing was modified. VersionConflicterrors maps each field to its messages; code is present when the refusal has a machine reason. ErrorVoorbeeldaanroep
curl -X PATCH "https://api.novafisko.com/v1/companies/XBVD5O1L29HC/journals/3" \
-H "Accept: application/json" \
-H "Authorization: Bearer $NOVAFISKO_TOKEN" \
-H "Content-Type: application/json" \
-H "X-Client-Mutation-Id: b0a6f6f0-7d1c-4c5e-8a55-3f2b1c9d0e11" \
-d '{
"is_default": true
}'<?php
$client = new \GuzzleHttp\Client();
$response = $client->request('PATCH', 'https://api.novafisko.com/v1/companies/XBVD5O1L29HC/journals/3', [
'headers' => [
'Accept' => 'application/json',
'Authorization' => 'Bearer '.getenv('NOVAFISKO_TOKEN'),
'X-Client-Mutation-Id' => 'b0a6f6f0-7d1c-4c5e-8a55-3f2b1c9d0e11',
],
'json' => [
'is_default' => true,
],
]);
$data = json_decode((string) $response->getBody(), true);const response = await fetch("https://api.novafisko.com/v1/companies/XBVD5O1L29HC/journals/3", {
method: "PATCH",
headers: {
"Accept": "application/json",
"Authorization": `Bearer ${process.env.NOVAFISKO_TOKEN}`,
"Content-Type": "application/json",
"X-Client-Mutation-Id": "b0a6f6f0-7d1c-4c5e-8a55-3f2b1c9d0e11",
},
body: JSON.stringify({
"is_default": true
}),
});
if (!response.ok) {
const error = await response.json();
throw new Error(error.code ?? error.message);
}
const data = response.status === 204 ? null : await response.json();import os
import requests
response = requests.patch(
"https://api.novafisko.com/v1/companies/XBVD5O1L29HC/journals/3",
headers={
"Accept": "application/json",
"Authorization": f"Bearer {os.environ['NOVAFISKO_TOKEN']}",
"X-Client-Mutation-Id": "b0a6f6f0-7d1c-4c5e-8a55-3f2b1c9d0e11",
},
json={
"is_default": True
},
timeout=30,
)
response.raise_for_status()
data = response.json() if response.content else NoneDELETE/v1/companies/{company}/journals/{journal}Delete a journal write
Only a journal that never held an entry (continuous numbering); otherwise deactivate it. Goes to the recycle bin.
Integration tokens need the write ability.
Operatie-id companies.journals.destroy
Padparameters
| Naam | Type | Beschrijving |
|---|---|---|
company verplicht | string | Public token of the company file (public_token, 12 characters).bv. XBVD5O1L29HC |
journal verplicht | integer | Id of the journal. bv. 3 |
Gemeenschappelijke headers: Accept-Language X-Client-Mutation-Id X-Operation-Id X-Device-Id X-Device-Name X-Occurred-At X-Origin X-Base-Version
Antwoorden
204Done, no body.
Antwoordheaders X-Operation-Id X-Idempotent-Replay X-Trashed
token_ability_missing, session_token_required), demo restriction (demo_mode) or invalid URL signature. ErrorX-Base-Version. Nothing was modified. VersionConflicterrors maps each field to its messages; code is present when the refusal has a machine reason. ErrorVoorbeeldaanroep
curl -X DELETE "https://api.novafisko.com/v1/companies/XBVD5O1L29HC/journals/3" \
-H "Accept: application/json" \
-H "Authorization: Bearer $NOVAFISKO_TOKEN" \
-H "X-Client-Mutation-Id: b0a6f6f0-7d1c-4c5e-8a55-3f2b1c9d0e11"<?php
$client = new \GuzzleHttp\Client();
$response = $client->request('DELETE', 'https://api.novafisko.com/v1/companies/XBVD5O1L29HC/journals/3', [
'headers' => [
'Accept' => 'application/json',
'Authorization' => 'Bearer '.getenv('NOVAFISKO_TOKEN'),
'X-Client-Mutation-Id' => 'b0a6f6f0-7d1c-4c5e-8a55-3f2b1c9d0e11',
],
]);
$data = json_decode((string) $response->getBody(), true);const response = await fetch("https://api.novafisko.com/v1/companies/XBVD5O1L29HC/journals/3", {
method: "DELETE",
headers: {
"Accept": "application/json",
"Authorization": `Bearer ${process.env.NOVAFISKO_TOKEN}`,
"X-Client-Mutation-Id": "b0a6f6f0-7d1c-4c5e-8a55-3f2b1c9d0e11",
},
});
if (!response.ok) {
const error = await response.json();
throw new Error(error.code ?? error.message);
}
const data = response.status === 204 ? null : await response.json();import os
import requests
response = requests.delete(
"https://api.novafisko.com/v1/companies/XBVD5O1L29HC/journals/3",
headers={
"Accept": "application/json",
"Authorization": f"Bearer {os.environ['NOVAFISKO_TOKEN']}",
"X-Client-Mutation-Id": "b0a6f6f0-7d1c-4c5e-8a55-3f2b1c9d0e11",
},
timeout=30,
)
response.raise_for_status()
data = response.json() if response.content else NoneGET/v1/companies/{company}/journal-rulesJournal routing rules read
Integration tokens need the read ability.
Operatie-id companies.journal-rules.index
Padparameters
| Naam | Type | Beschrijving |
|---|---|---|
company verplicht | string | Public token of the company file (public_token, 12 characters).bv. XBVD5O1L29HC |
Gemeenschappelijke headers: Accept-Language
Antwoorden
200OK
application/json
Schema JournalRule[]
Array van JournalRule
Voorbeeld
[
{
"id": 4,
"company_id": 7,
"journal_id": 3,
"direction": "sale",
"match_field": "payment_provider",
"match_value": "TK",
"priority": 100,
"is_active": true,
"created_at": "2026-03-15T09:41:00+00:00",
"updated_at": "2026-03-15T09:41:00+00:00",
"lock_version": 3,
"version": 3,
"deleted_at": "2026-03-15T09:41:00+00:00",
"deleted_by": 1,
"journal": {
"id": 3,
"code": "VEN",
"label": "Ventes",
"type": "sale"
}
}
]token_ability_missing, session_token_required), demo restriction (demo_mode) or invalid URL signature. ErrorVoorbeeldaanroep
curl -X GET "https://api.novafisko.com/v1/companies/XBVD5O1L29HC/journal-rules" \
-H "Accept: application/json" \
-H "Authorization: Bearer $NOVAFISKO_TOKEN"<?php
$client = new \GuzzleHttp\Client();
$response = $client->request('GET', 'https://api.novafisko.com/v1/companies/XBVD5O1L29HC/journal-rules', [
'headers' => [
'Accept' => 'application/json',
'Authorization' => 'Bearer '.getenv('NOVAFISKO_TOKEN'),
],
]);
$data = json_decode((string) $response->getBody(), true);const response = await fetch("https://api.novafisko.com/v1/companies/XBVD5O1L29HC/journal-rules", {
method: "GET",
headers: {
"Accept": "application/json",
"Authorization": `Bearer ${process.env.NOVAFISKO_TOKEN}`,
},
});
if (!response.ok) {
const error = await response.json();
throw new Error(error.code ?? error.message);
}
const data = response.status === 204 ? null : await response.json();import os
import requests
response = requests.get(
"https://api.novafisko.com/v1/companies/XBVD5O1L29HC/journal-rules",
headers={
"Accept": "application/json",
"Authorization": f"Bearer {os.environ['NOVAFISKO_TOKEN']}",
},
timeout=30,
)
response.raise_for_status()
data = response.json() if response.content else NonePOST/v1/companies/{company}/journal-rulesCreate a journal rule write
Integration tokens need the write ability.
Operatie-id companies.journal-rules.store
Padparameters
| Naam | Type | Beschrijving |
|---|---|---|
company verplicht | string | Public token of the company file (public_token, 12 characters).bv. XBVD5O1L29HC |
Gemeenschappelijke headers: Accept-Language X-Client-Mutation-Id X-Operation-Id X-Device-Id X-Device-Name X-Occurred-At X-Origin
Body van de aanvraag
application/json
Schema object
journal_idintegerverplichtdirectionstringverplichtsalepurchasematch_fieldstringverplichtpayment_providernumber_seriesnumber_prefixthird_partymatch_valuestringverplicht100 characters max.priorityinteger1 to 999, lowest first.is_activeboolean
Voorbeeld
{
"journal_id": 3,
"direction": "sale",
"match_field": "number_prefix",
"match_value": "TK"
}Antwoorden
201Created
Antwoordheaders X-Operation-Id X-Idempotent-Replay
application/json
Schema JournalRule
Voorbeeld
{
"id": 4,
"company_id": 7,
"journal_id": 3,
"direction": "sale",
"match_field": "payment_provider",
"match_value": "TK",
"priority": 100,
"is_active": true,
"created_at": "2026-03-15T09:41:00+00:00",
"updated_at": "2026-03-15T09:41:00+00:00",
"lock_version": 3,
"version": 3,
"deleted_at": "2026-03-15T09:41:00+00:00",
"deleted_by": 1,
"journal": {
"id": 3,
"code": "VEN",
"label": "Ventes",
"type": "sale"
}
}token_ability_missing, session_token_required), demo restriction (demo_mode) or invalid URL signature. Errorerrors maps each field to its messages; code is present when the refusal has a machine reason. ErrorVoorbeeldaanroep
curl -X POST "https://api.novafisko.com/v1/companies/XBVD5O1L29HC/journal-rules" \
-H "Accept: application/json" \
-H "Authorization: Bearer $NOVAFISKO_TOKEN" \
-H "Content-Type: application/json" \
-H "X-Client-Mutation-Id: b0a6f6f0-7d1c-4c5e-8a55-3f2b1c9d0e11" \
-d '{
"journal_id": 3,
"direction": "sale",
"match_field": "number_prefix",
"match_value": "TK"
}'<?php
$client = new \GuzzleHttp\Client();
$response = $client->request('POST', 'https://api.novafisko.com/v1/companies/XBVD5O1L29HC/journal-rules', [
'headers' => [
'Accept' => 'application/json',
'Authorization' => 'Bearer '.getenv('NOVAFISKO_TOKEN'),
'X-Client-Mutation-Id' => 'b0a6f6f0-7d1c-4c5e-8a55-3f2b1c9d0e11',
],
'json' => [
'journal_id' => 3,
'direction' => 'sale',
'match_field' => 'number_prefix',
'match_value' => 'TK',
],
]);
$data = json_decode((string) $response->getBody(), true);const response = await fetch("https://api.novafisko.com/v1/companies/XBVD5O1L29HC/journal-rules", {
method: "POST",
headers: {
"Accept": "application/json",
"Authorization": `Bearer ${process.env.NOVAFISKO_TOKEN}`,
"Content-Type": "application/json",
"X-Client-Mutation-Id": "b0a6f6f0-7d1c-4c5e-8a55-3f2b1c9d0e11",
},
body: JSON.stringify({
"journal_id": 3,
"direction": "sale",
"match_field": "number_prefix",
"match_value": "TK"
}),
});
if (!response.ok) {
const error = await response.json();
throw new Error(error.code ?? error.message);
}
const data = response.status === 204 ? null : await response.json();import os
import requests
response = requests.post(
"https://api.novafisko.com/v1/companies/XBVD5O1L29HC/journal-rules",
headers={
"Accept": "application/json",
"Authorization": f"Bearer {os.environ['NOVAFISKO_TOKEN']}",
"X-Client-Mutation-Id": "b0a6f6f0-7d1c-4c5e-8a55-3f2b1c9d0e11",
},
json={
"journal_id": 3,
"direction": "sale",
"match_field": "number_prefix",
"match_value": "TK"
},
timeout=30,
)
response.raise_for_status()
data = response.json() if response.content else NonePATCH/v1/companies/{company}/journal-rules/{journalRule}Update a journal rule write
Integration tokens need the write ability.
Operatie-id companies.journal-rules.update
Padparameters
| Naam | Type | Beschrijving |
|---|---|---|
company verplicht | string | Public token of the company file (public_token, 12 characters).bv. XBVD5O1L29HC |
journalRule verplicht | integer | Id of the journal rule. bv. 4 |
Gemeenschappelijke headers: Accept-Language X-Client-Mutation-Id X-Operation-Id X-Device-Id X-Device-Name X-Occurred-At X-Origin X-Base-Version
Body van de aanvraag
application/json
Schema object
journal_idintegerdirectionstringsalepurchasematch_fieldstringpayment_providernumber_seriesnumber_prefixthird_partymatch_valuestring100 characters max.priorityinteger1 to 999, lowest first.is_activeboolean
Voorbeeld
{
"priority": 10
}Antwoorden
200OK
Antwoordheaders X-Operation-Id X-Idempotent-Replay
application/json
Schema JournalRule
Voorbeeld
{
"id": 4,
"company_id": 7,
"journal_id": 3,
"direction": "sale",
"match_field": "payment_provider",
"match_value": "TK",
"priority": 100,
"is_active": true,
"created_at": "2026-03-15T09:41:00+00:00",
"updated_at": "2026-03-15T09:41:00+00:00",
"lock_version": 3,
"version": 3,
"deleted_at": "2026-03-15T09:41:00+00:00",
"deleted_by": 1,
"journal": {
"id": 3,
"code": "VEN",
"label": "Ventes",
"type": "sale"
}
}token_ability_missing, session_token_required), demo restriction (demo_mode) or invalid URL signature. ErrorX-Base-Version. Nothing was modified. VersionConflicterrors maps each field to its messages; code is present when the refusal has a machine reason. ErrorVoorbeeldaanroep
curl -X PATCH "https://api.novafisko.com/v1/companies/XBVD5O1L29HC/journal-rules/4" \
-H "Accept: application/json" \
-H "Authorization: Bearer $NOVAFISKO_TOKEN" \
-H "Content-Type: application/json" \
-H "X-Client-Mutation-Id: b0a6f6f0-7d1c-4c5e-8a55-3f2b1c9d0e11" \
-d '{
"priority": 10
}'<?php
$client = new \GuzzleHttp\Client();
$response = $client->request('PATCH', 'https://api.novafisko.com/v1/companies/XBVD5O1L29HC/journal-rules/4', [
'headers' => [
'Accept' => 'application/json',
'Authorization' => 'Bearer '.getenv('NOVAFISKO_TOKEN'),
'X-Client-Mutation-Id' => 'b0a6f6f0-7d1c-4c5e-8a55-3f2b1c9d0e11',
],
'json' => [
'priority' => 10,
],
]);
$data = json_decode((string) $response->getBody(), true);const response = await fetch("https://api.novafisko.com/v1/companies/XBVD5O1L29HC/journal-rules/4", {
method: "PATCH",
headers: {
"Accept": "application/json",
"Authorization": `Bearer ${process.env.NOVAFISKO_TOKEN}`,
"Content-Type": "application/json",
"X-Client-Mutation-Id": "b0a6f6f0-7d1c-4c5e-8a55-3f2b1c9d0e11",
},
body: JSON.stringify({
"priority": 10
}),
});
if (!response.ok) {
const error = await response.json();
throw new Error(error.code ?? error.message);
}
const data = response.status === 204 ? null : await response.json();import os
import requests
response = requests.patch(
"https://api.novafisko.com/v1/companies/XBVD5O1L29HC/journal-rules/4",
headers={
"Accept": "application/json",
"Authorization": f"Bearer {os.environ['NOVAFISKO_TOKEN']}",
"X-Client-Mutation-Id": "b0a6f6f0-7d1c-4c5e-8a55-3f2b1c9d0e11",
},
json={
"priority": 10
},
timeout=30,
)
response.raise_for_status()
data = response.json() if response.content else NoneDELETE/v1/companies/{company}/journal-rules/{journalRule}Delete a journal rule write
Integration tokens need the write ability.
Operatie-id companies.journal-rules.destroy
Padparameters
| Naam | Type | Beschrijving |
|---|---|---|
company verplicht | string | Public token of the company file (public_token, 12 characters).bv. XBVD5O1L29HC |
journalRule verplicht | integer | Id of the journal rule. bv. 4 |
Gemeenschappelijke headers: Accept-Language X-Client-Mutation-Id X-Operation-Id X-Device-Id X-Device-Name X-Occurred-At X-Origin X-Base-Version
Antwoorden
204Done, no body.
Antwoordheaders X-Operation-Id X-Idempotent-Replay X-Trashed
token_ability_missing, session_token_required), demo restriction (demo_mode) or invalid URL signature. ErrorX-Base-Version. Nothing was modified. VersionConflictVoorbeeldaanroep
curl -X DELETE "https://api.novafisko.com/v1/companies/XBVD5O1L29HC/journal-rules/4" \
-H "Accept: application/json" \
-H "Authorization: Bearer $NOVAFISKO_TOKEN" \
-H "X-Client-Mutation-Id: b0a6f6f0-7d1c-4c5e-8a55-3f2b1c9d0e11"<?php
$client = new \GuzzleHttp\Client();
$response = $client->request('DELETE', 'https://api.novafisko.com/v1/companies/XBVD5O1L29HC/journal-rules/4', [
'headers' => [
'Accept' => 'application/json',
'Authorization' => 'Bearer '.getenv('NOVAFISKO_TOKEN'),
'X-Client-Mutation-Id' => 'b0a6f6f0-7d1c-4c5e-8a55-3f2b1c9d0e11',
],
]);
$data = json_decode((string) $response->getBody(), true);const response = await fetch("https://api.novafisko.com/v1/companies/XBVD5O1L29HC/journal-rules/4", {
method: "DELETE",
headers: {
"Accept": "application/json",
"Authorization": `Bearer ${process.env.NOVAFISKO_TOKEN}`,
"X-Client-Mutation-Id": "b0a6f6f0-7d1c-4c5e-8a55-3f2b1c9d0e11",
},
});
if (!response.ok) {
const error = await response.json();
throw new Error(error.code ?? error.message);
}
const data = response.status === 204 ? null : await response.json();import os
import requests
response = requests.delete(
"https://api.novafisko.com/v1/companies/XBVD5O1L29HC/journal-rules/4",
headers={
"Accept": "application/json",
"Authorization": f"Bearer {os.environ['NOVAFISKO_TOKEN']}",
"X-Client-Mutation-Id": "b0a6f6f0-7d1c-4c5e-8a55-3f2b1c9d0e11",
},
timeout=30,
)
response.raise_for_status()
data = response.json() if response.content else NoneGET/v1/companies/{company}/documents/seriesNumbering series of the documents read
Series observed in the imported documents (prefix and payment provider) and the journal resolved for each.
Integration tokens need the read ability.
Operatie-id companies.documents.series
Padparameters
| Naam | Type | Beschrijving |
|---|---|---|
company verplicht | string | Public token of the company file (public_token, 12 characters).bv. XBVD5O1L29HC |
Gemeenschappelijke headers: Accept-Language
Antwoorden
200OK
application/json
Schema object[]
Array van
directionstringsalepurchaseis_credit_notebooleannumber_seriesstring | nullbv.TKpayment_providerstring | nulldocumentsintegerbv.214pendingintegerbv.6sample_numberstring | nullbv.TK-2026-00214journalobject | null
Voorbeeld
[
{
"direction": "sale",
"is_credit_note": true,
"number_series": "TK",
"payment_provider": "string",
"documents": 214,
"pending": 6,
"sample_number": "TK-2026-00214",
"journal": {}
}
]token_ability_missing, session_token_required), demo restriction (demo_mode) or invalid URL signature. ErrorVoorbeeldaanroep
curl -X GET "https://api.novafisko.com/v1/companies/XBVD5O1L29HC/documents/series" \
-H "Accept: application/json" \
-H "Authorization: Bearer $NOVAFISKO_TOKEN"<?php
$client = new \GuzzleHttp\Client();
$response = $client->request('GET', 'https://api.novafisko.com/v1/companies/XBVD5O1L29HC/documents/series', [
'headers' => [
'Accept' => 'application/json',
'Authorization' => 'Bearer '.getenv('NOVAFISKO_TOKEN'),
],
]);
$data = json_decode((string) $response->getBody(), true);const response = await fetch("https://api.novafisko.com/v1/companies/XBVD5O1L29HC/documents/series", {
method: "GET",
headers: {
"Accept": "application/json",
"Authorization": `Bearer ${process.env.NOVAFISKO_TOKEN}`,
},
});
if (!response.ok) {
const error = await response.json();
throw new Error(error.code ?? error.message);
}
const data = response.status === 204 ? null : await response.json();import os
import requests
response = requests.get(
"https://api.novafisko.com/v1/companies/XBVD5O1L29HC/documents/series",
headers={
"Accept": "application/json",
"Authorization": f"Bearer {os.environ['NOVAFISKO_TOKEN']}",
},
timeout=30,
)
response.raise_for_status()
data = response.json() if response.content else NoneFiscal years
Fiscal years, periods, locking, closing and year-end.
GET/v1/companies/{company}/fiscal-yearsFiscal years and periods read
Integration tokens need the read ability.
Operatie-id companies.fiscal-years.index
Padparameters
| Naam | Type | Beschrijving |
|---|---|---|
company verplicht | string | Public token of the company file (public_token, 12 characters).bv. XBVD5O1L29HC |
Gemeenschappelijke headers: Accept-Language
Antwoorden
200OK
application/json
Schema FiscalYear[]
Array van FiscalYear
Voorbeeld
[
{
"id": 2,
"company_id": 7,
"code": "2026",
"starts_on": "2026-01-01T00:00:00.000000Z",
"ends_on": "2026-12-31T00:00:00.000000Z",
"is_closed": false,
"closed_at": "2026-03-15T09:41:00+00:00",
"closed_by": 1,
"created_at": "2026-03-15T09:41:00+00:00",
"updated_at": "2026-03-15T09:41:00+00:00",
"lock_version": 3,
"version": 3,
"periods": [
{
"id": 16,
"fiscal_year_id": 2,
"number": 3,
"label": "Mars 2026",
"starts_on": "2026-03-15T09:41:00+00:00",
"ends_on": "2026-03-15T09:41:00+00:00",
"is_locked": false,
"locked_at": "2026-03-15T09:41:00+00:00",
"lock_version": 3,
"version": 3
}
]
}
]token_ability_missing, session_token_required), demo restriction (demo_mode) or invalid URL signature. ErrorVoorbeeldaanroep
curl -X GET "https://api.novafisko.com/v1/companies/XBVD5O1L29HC/fiscal-years" \
-H "Accept: application/json" \
-H "Authorization: Bearer $NOVAFISKO_TOKEN"<?php
$client = new \GuzzleHttp\Client();
$response = $client->request('GET', 'https://api.novafisko.com/v1/companies/XBVD5O1L29HC/fiscal-years', [
'headers' => [
'Accept' => 'application/json',
'Authorization' => 'Bearer '.getenv('NOVAFISKO_TOKEN'),
],
]);
$data = json_decode((string) $response->getBody(), true);const response = await fetch("https://api.novafisko.com/v1/companies/XBVD5O1L29HC/fiscal-years", {
method: "GET",
headers: {
"Accept": "application/json",
"Authorization": `Bearer ${process.env.NOVAFISKO_TOKEN}`,
},
});
if (!response.ok) {
const error = await response.json();
throw new Error(error.code ?? error.message);
}
const data = response.status === 204 ? null : await response.json();import os
import requests
response = requests.get(
"https://api.novafisko.com/v1/companies/XBVD5O1L29HC/fiscal-years",
headers={
"Accept": "application/json",
"Authorization": f"Bearer {os.environ['NOVAFISKO_TOKEN']}",
},
timeout=30,
)
response.raise_for_status()
data = response.json() if response.content else NonePOST/v1/companies/{company}/fiscal-yearsOpen a fiscal year write
Creates the year and its periods (opening, one per month, closing).
Integration tokens need the write ability.
Operatie-id companies.fiscal-years.store
Padparameters
| Naam | Type | Beschrijving |
|---|---|---|
company verplicht | string | Public token of the company file (public_token, 12 characters).bv. XBVD5O1L29HC |
Gemeenschappelijke headers: Accept-Language X-Client-Mutation-Id X-Operation-Id X-Device-Id X-Device-Name X-Occurred-At X-Origin
Body van de aanvraag
application/json
Schema object
codestringverplichtUnique, 10 characters max.starts_onstring <date>verplichtends_onstring <date>verplicht
Voorbeeld
{
"code": "2027",
"starts_on": "2027-01-01",
"ends_on": "2027-12-31"
}Antwoorden
201Created
Antwoordheaders X-Operation-Id X-Idempotent-Replay
application/json
Schema FiscalYear
Voorbeeld
{
"id": 2,
"company_id": 7,
"code": "2026",
"starts_on": "2026-01-01T00:00:00.000000Z",
"ends_on": "2026-12-31T00:00:00.000000Z",
"is_closed": false,
"closed_at": "2026-03-15T09:41:00+00:00",
"closed_by": 1,
"created_at": "2026-03-15T09:41:00+00:00",
"updated_at": "2026-03-15T09:41:00+00:00",
"lock_version": 3,
"version": 3,
"periods": [
{
"id": 16,
"fiscal_year_id": 2,
"number": 3,
"label": "Mars 2026",
"starts_on": "2026-03-15T09:41:00+00:00",
"ends_on": "2026-03-15T09:41:00+00:00",
"is_locked": false,
"locked_at": "2026-03-15T09:41:00+00:00",
"lock_version": 3,
"version": 3
}
]
}token_ability_missing, session_token_required), demo restriction (demo_mode) or invalid URL signature. Errorerrors maps each field to its messages; code is present when the refusal has a machine reason. ErrorVoorbeeldaanroep
curl -X POST "https://api.novafisko.com/v1/companies/XBVD5O1L29HC/fiscal-years" \
-H "Accept: application/json" \
-H "Authorization: Bearer $NOVAFISKO_TOKEN" \
-H "Content-Type: application/json" \
-H "X-Client-Mutation-Id: b0a6f6f0-7d1c-4c5e-8a55-3f2b1c9d0e11" \
-d '{
"code": "2027",
"starts_on": "2027-01-01",
"ends_on": "2027-12-31"
}'<?php
$client = new \GuzzleHttp\Client();
$response = $client->request('POST', 'https://api.novafisko.com/v1/companies/XBVD5O1L29HC/fiscal-years', [
'headers' => [
'Accept' => 'application/json',
'Authorization' => 'Bearer '.getenv('NOVAFISKO_TOKEN'),
'X-Client-Mutation-Id' => 'b0a6f6f0-7d1c-4c5e-8a55-3f2b1c9d0e11',
],
'json' => [
'code' => '2027',
'starts_on' => '2027-01-01',
'ends_on' => '2027-12-31',
],
]);
$data = json_decode((string) $response->getBody(), true);const response = await fetch("https://api.novafisko.com/v1/companies/XBVD5O1L29HC/fiscal-years", {
method: "POST",
headers: {
"Accept": "application/json",
"Authorization": `Bearer ${process.env.NOVAFISKO_TOKEN}`,
"Content-Type": "application/json",
"X-Client-Mutation-Id": "b0a6f6f0-7d1c-4c5e-8a55-3f2b1c9d0e11",
},
body: JSON.stringify({
"code": "2027",
"starts_on": "2027-01-01",
"ends_on": "2027-12-31"
}),
});
if (!response.ok) {
const error = await response.json();
throw new Error(error.code ?? error.message);
}
const data = response.status === 204 ? null : await response.json();import os
import requests
response = requests.post(
"https://api.novafisko.com/v1/companies/XBVD5O1L29HC/fiscal-years",
headers={
"Accept": "application/json",
"Authorization": f"Bearer {os.environ['NOVAFISKO_TOKEN']}",
"X-Client-Mutation-Id": "b0a6f6f0-7d1c-4c5e-8a55-3f2b1c9d0e11",
},
json={
"code": "2027",
"starts_on": "2027-01-01",
"ends_on": "2027-12-31"
},
timeout=30,
)
response.raise_for_status()
data = response.json() if response.content else NonePATCH/v1/companies/{company}/fiscal-years/{fiscalYear}/periods/{period}Lock or unlock a period write
No entry can be posted in a locked period. Refused with period_locked (reason fiscal_year_closed) when the fiscal year is closed.
Integration tokens need the write ability.
Error codes (code):
period_locked: the period is locked or the fiscal year is closed;reasontells which (period_lockedorfiscal_year_closed)
Operatie-id companies.fiscal-years.periods.update
Padparameters
| Naam | Type | Beschrijving |
|---|---|---|
company verplicht | string | Public token of the company file (public_token, 12 characters).bv. XBVD5O1L29HC |
fiscalYear verplicht | integer | Id of the fiscal year. bv. 2 |
period verplicht | integer | Id of the period. bv. 16 |
Gemeenschappelijke headers: Accept-Language X-Client-Mutation-Id X-Operation-Id X-Device-Id X-Device-Name X-Occurred-At X-Origin X-Base-Version
Body van de aanvraag
application/json
Schema object
is_lockedbooleanverplicht
Voorbeeld
{
"is_locked": true
}Antwoorden
200OK
Antwoordheaders X-Operation-Id X-Idempotent-Replay
application/json
Schema Period
Voorbeeld
{
"id": 16,
"fiscal_year_id": 2,
"number": 3,
"label": "Mars 2026",
"starts_on": "2026-03-15T09:41:00+00:00",
"ends_on": "2026-03-15T09:41:00+00:00",
"is_locked": false,
"locked_at": "2026-03-15T09:41:00+00:00",
"lock_version": 3,
"version": 3
}token_ability_missing, session_token_required), demo restriction (demo_mode) or invalid URL signature. ErrorX-Base-Version. Nothing was modified. VersionConflictcode: period_locked, with reason). PeriodLockedErrorVoorbeeldaanroep
curl -X PATCH "https://api.novafisko.com/v1/companies/XBVD5O1L29HC/fiscal-years/2/periods/16" \
-H "Accept: application/json" \
-H "Authorization: Bearer $NOVAFISKO_TOKEN" \
-H "Content-Type: application/json" \
-H "X-Client-Mutation-Id: b0a6f6f0-7d1c-4c5e-8a55-3f2b1c9d0e11" \
-d '{
"is_locked": true
}'<?php
$client = new \GuzzleHttp\Client();
$response = $client->request('PATCH', 'https://api.novafisko.com/v1/companies/XBVD5O1L29HC/fiscal-years/2/periods/16', [
'headers' => [
'Accept' => 'application/json',
'Authorization' => 'Bearer '.getenv('NOVAFISKO_TOKEN'),
'X-Client-Mutation-Id' => 'b0a6f6f0-7d1c-4c5e-8a55-3f2b1c9d0e11',
],
'json' => [
'is_locked' => true,
],
]);
$data = json_decode((string) $response->getBody(), true);const response = await fetch("https://api.novafisko.com/v1/companies/XBVD5O1L29HC/fiscal-years/2/periods/16", {
method: "PATCH",
headers: {
"Accept": "application/json",
"Authorization": `Bearer ${process.env.NOVAFISKO_TOKEN}`,
"Content-Type": "application/json",
"X-Client-Mutation-Id": "b0a6f6f0-7d1c-4c5e-8a55-3f2b1c9d0e11",
},
body: JSON.stringify({
"is_locked": true
}),
});
if (!response.ok) {
const error = await response.json();
throw new Error(error.code ?? error.message);
}
const data = response.status === 204 ? null : await response.json();import os
import requests
response = requests.patch(
"https://api.novafisko.com/v1/companies/XBVD5O1L29HC/fiscal-years/2/periods/16",
headers={
"Accept": "application/json",
"Authorization": f"Bearer {os.environ['NOVAFISKO_TOKEN']}",
"X-Client-Mutation-Id": "b0a6f6f0-7d1c-4c5e-8a55-3f2b1c9d0e11",
},
json={
"is_locked": True
},
timeout=30,
)
response.raise_for_status()
data = response.json() if response.content else NonePOST/v1/companies/{company}/fiscal-years/{fiscalYear}/closeClose or reopen a fiscal year write
Locks every period. Send reopen: true to reopen. For the closing entries and the carry-forward use year-end.
Integration tokens need the write ability.
Operatie-id companies.fiscal-years.close
Padparameters
| Naam | Type | Beschrijving |
|---|---|---|
company verplicht | string | Public token of the company file (public_token, 12 characters).bv. XBVD5O1L29HC |
fiscalYear verplicht | integer | Id of the fiscal year. bv. 2 |
Gemeenschappelijke headers: Accept-Language X-Client-Mutation-Id X-Operation-Id X-Device-Id X-Device-Name X-Occurred-At X-Origin
Body van de aanvraag optioneel
application/json
Schema object
reopenboolean
Voorbeeld
{
"reopen": false
}Antwoorden
200OK
Antwoordheaders X-Operation-Id X-Idempotent-Replay
application/json
Schema FiscalYear
Voorbeeld
{
"id": 2,
"company_id": 7,
"code": "2026",
"starts_on": "2026-01-01T00:00:00.000000Z",
"ends_on": "2026-12-31T00:00:00.000000Z",
"is_closed": false,
"closed_at": "2026-03-15T09:41:00+00:00",
"closed_by": 1,
"created_at": "2026-03-15T09:41:00+00:00",
"updated_at": "2026-03-15T09:41:00+00:00",
"lock_version": 3,
"version": 3,
"periods": [
{
"id": 16,
"fiscal_year_id": 2,
"number": 3,
"label": "Mars 2026",
"starts_on": "2026-03-15T09:41:00+00:00",
"ends_on": "2026-03-15T09:41:00+00:00",
"is_locked": false,
"locked_at": "2026-03-15T09:41:00+00:00",
"lock_version": 3,
"version": 3
}
]
}token_ability_missing, session_token_required), demo restriction (demo_mode) or invalid URL signature. Errorerrors maps each field to its messages; code is present when the refusal has a machine reason. ErrorVoorbeeldaanroep
curl -X POST "https://api.novafisko.com/v1/companies/XBVD5O1L29HC/fiscal-years/2/close" \
-H "Accept: application/json" \
-H "Authorization: Bearer $NOVAFISKO_TOKEN" \
-H "Content-Type: application/json" \
-H "X-Client-Mutation-Id: b0a6f6f0-7d1c-4c5e-8a55-3f2b1c9d0e11" \
-d '{
"reopen": false
}'<?php
$client = new \GuzzleHttp\Client();
$response = $client->request('POST', 'https://api.novafisko.com/v1/companies/XBVD5O1L29HC/fiscal-years/2/close', [
'headers' => [
'Accept' => 'application/json',
'Authorization' => 'Bearer '.getenv('NOVAFISKO_TOKEN'),
'X-Client-Mutation-Id' => 'b0a6f6f0-7d1c-4c5e-8a55-3f2b1c9d0e11',
],
'json' => [
'reopen' => false,
],
]);
$data = json_decode((string) $response->getBody(), true);const response = await fetch("https://api.novafisko.com/v1/companies/XBVD5O1L29HC/fiscal-years/2/close", {
method: "POST",
headers: {
"Accept": "application/json",
"Authorization": `Bearer ${process.env.NOVAFISKO_TOKEN}`,
"Content-Type": "application/json",
"X-Client-Mutation-Id": "b0a6f6f0-7d1c-4c5e-8a55-3f2b1c9d0e11",
},
body: JSON.stringify({
"reopen": false
}),
});
if (!response.ok) {
const error = await response.json();
throw new Error(error.code ?? error.message);
}
const data = response.status === 204 ? null : await response.json();import os
import requests
response = requests.post(
"https://api.novafisko.com/v1/companies/XBVD5O1L29HC/fiscal-years/2/close",
headers={
"Accept": "application/json",
"Authorization": f"Bearer {os.environ['NOVAFISKO_TOKEN']}",
"X-Client-Mutation-Id": "b0a6f6f0-7d1c-4c5e-8a55-3f2b1c9d0e11",
},
json={
"reopen": False
},
timeout=30,
)
response.raise_for_status()
data = response.json() if response.content else NonePOST/v1/companies/{company}/fiscal-years/{fiscalYear}/year-endYear-end closing write 5 / 1 min
Posts the closing entry (result), opens the next fiscal year when needed, posts the opening entry (carry-forward of the balance sheet accounts) and closes the year. Emits the webhook fiscal_year.closed.
Integration tokens need the write ability.
Rate limit: 5 requests per minute (429 beyond, see Retry-After).
Error codes (code):
period_locked: the period is locked or the fiscal year is closed;reasontells which (period_lockedorfiscal_year_closed)
Operatie-id companies.fiscal-years.year-end
Padparameters
| Naam | Type | Beschrijving |
|---|---|---|
company verplicht | string | Public token of the company file (public_token, 12 characters).bv. XBVD5O1L29HC |
fiscalYear verplicht | integer | Id of the fiscal year. bv. 2 |
Gemeenschappelijke headers: Accept-Language X-Client-Mutation-Id X-Operation-Id X-Device-Id X-Device-Name X-Occurred-At X-Origin
Antwoorden
200OK
Antwoordheaders X-Operation-Id X-Idempotent-Replay X-RateLimit-Limit X-RateLimit-Remaining
application/json
Schema object
resultstring <decimal>Result of the year.bv.18420.11closing_entryJournalEntry | nullopening_entryJournalEntry | nullfiscal_yearFiscalYearnext_fiscal_yearFiscalYear
Voorbeeld
{
"result": "18420.11",
"closing_entry": {
"id": 1284,
"company_id": 7,
"fiscal_year_id": 2,
"period_id": 16,
"journal_id": 3,
"number": 412,
"entry_date": "2026-03-15T00:00:00.000000Z",
"due_date": "2026-03-15T09:41:00+00:00",
"label": "Facture Brasserie Dubuisson SA",
"reference": "F-2026-0412",
"structured_communication": "000000000101",
"third_party_id": 18,
"status": "posted",
"origin": "manual",
"created_by": 1,
"posted_at": "2026-03-15T09:41:00+00:00",
"reversed_entry_id": 42,
"reversed_by_entry_id": 42,
"recurring_entry_id": 42,
"created_at": "2026-03-15T09:41:00+00:00",
"updated_at": "2026-03-15T09:41:00+00:00",
"lock_version": 3,
"version": 3,
"journal": {
"id": 3,
"code": "VEN",
"type": "sale"
},
"third_party": {
"id": 18,
"name": "Brasserie Dubuisson SA"
},
"lines": [
{
"id": 3391,
"journal_entry_id": 1284,
"position": 1,
"account_id": 580,
"third_party_id": 18,
"label": "Brasserie Dubuisson SA",
"debit": "0.00",
"credit": "1000.00",
"vat_code_id": 4,
"vat_base": "1000.00",
"reconciliation_code": "AB",
"cost_center_id": 42,
"project_id": 42,
"reminder_level": 0,
"reminder_sent_at": "2026-03-15T09:41:00+00:00",
"account": {
"id": 580,
"number": "702000",
"label": "Prestations de services"
},
"vat_code": {}
}
]
},
"opening_entry": {
"id": 1284,
"company_id": 7,
"fiscal_year_id": 2,
"period_id": 16,
"journal_id": 3,
"number": 412,
"entry_date": "2026-03-15T00:00:00.000000Z",
"due_date": "2026-03-15T09:41:00+00:00",
"label": "Facture Brasserie Dubuisson SA",
"reference": "F-2026-0412",
"structured_communication": "000000000101",
"third_party_id": 18,
"status": "posted",
"origin": "manual",
"created_by": 1,
"posted_at": "2026-03-15T09:41:00+00:00",
"reversed_entry_id": 42,
"reversed_by_entry_id": 42,
"recurring_entry_id": 42,
"created_at": "2026-03-15T09:41:00+00:00",
"updated_at": "2026-03-15T09:41:00+00:00",
"lock_version": 3,
"version": 3,
"journal": {
"id": 3,
"code": "VEN",
"type": "sale"
},
"third_party": {
"id": 18,
"name": "Brasserie Dubuisson SA"
},
"lines": [
{
"id": 3391,
"journal_entry_id": 1284,
"position": 1,
"account_id": 580,
"third_party_id": 18,
"label": "Brasserie Dubuisson SA",
"debit": "0.00",
"credit": "1000.00",
"vat_code_id": 4,
"vat_base": "1000.00",
"reconciliation_code": "AB",
"cost_center_id": 42,
"project_id": 42,
"reminder_level": 0,
"reminder_sent_at": "2026-03-15T09:41:00+00:00",
"account": {
"id": 580,
"number": "702000",
"label": "Prestations de services"
},
"vat_code": {}
}
]
},
"fiscal_year": {
"id": 2,
"company_id": 7,
"code": "2026",
"starts_on": "2026-01-01T00:00:00.000000Z",
"ends_on": "2026-12-31T00:00:00.000000Z",
"is_closed": false,
"closed_at": "2026-03-15T09:41:00+00:00",
"closed_by": 1,
"created_at": "2026-03-15T09:41:00+00:00",
"updated_at": "2026-03-15T09:41:00+00:00",
"lock_version": 3,
"version": 3,
"periods": [
{
"id": 16,
"fiscal_year_id": 2,
"number": 3,
"label": "Mars 2026",
"starts_on": "2026-03-15T09:41:00+00:00",
"ends_on": "2026-03-15T09:41:00+00:00",
"is_locked": false,
"locked_at": "2026-03-15T09:41:00+00:00",
"lock_version": 3,
"version": 3
}
]
},
"next_fiscal_year": {
"id": 2,
"company_id": 7,
"code": "2026",
"starts_on": "2026-01-01T00:00:00.000000Z",
"ends_on": "2026-12-31T00:00:00.000000Z",
"is_closed": false,
"closed_at": "2026-03-15T09:41:00+00:00",
"closed_by": 1,
"created_at": "2026-03-15T09:41:00+00:00",
"updated_at": "2026-03-15T09:41:00+00:00",
"lock_version": 3,
"version": 3,
"periods": [
{
"id": 16,
"fiscal_year_id": 2,
"number": 3,
"label": "Mars 2026",
"starts_on": "2026-03-15T09:41:00+00:00",
"ends_on": "2026-03-15T09:41:00+00:00",
"is_locked": false,
"locked_at": "2026-03-15T09:41:00+00:00",
"lock_version": 3,
"version": 3
}
]
}
}token_ability_missing, session_token_required), demo restriction (demo_mode) or invalid URL signature. Errorcode: period_locked, with reason). PeriodLockedErrorVoorbeeldaanroep
curl -X POST "https://api.novafisko.com/v1/companies/XBVD5O1L29HC/fiscal-years/2/year-end" \
-H "Accept: application/json" \
-H "Authorization: Bearer $NOVAFISKO_TOKEN" \
-H "X-Client-Mutation-Id: b0a6f6f0-7d1c-4c5e-8a55-3f2b1c9d0e11"<?php
$client = new \GuzzleHttp\Client();
$response = $client->request('POST', 'https://api.novafisko.com/v1/companies/XBVD5O1L29HC/fiscal-years/2/year-end', [
'headers' => [
'Accept' => 'application/json',
'Authorization' => 'Bearer '.getenv('NOVAFISKO_TOKEN'),
'X-Client-Mutation-Id' => 'b0a6f6f0-7d1c-4c5e-8a55-3f2b1c9d0e11',
],
]);
$data = json_decode((string) $response->getBody(), true);const response = await fetch("https://api.novafisko.com/v1/companies/XBVD5O1L29HC/fiscal-years/2/year-end", {
method: "POST",
headers: {
"Accept": "application/json",
"Authorization": `Bearer ${process.env.NOVAFISKO_TOKEN}`,
"X-Client-Mutation-Id": "b0a6f6f0-7d1c-4c5e-8a55-3f2b1c9d0e11",
},
});
if (!response.ok) {
const error = await response.json();
throw new Error(error.code ?? error.message);
}
const data = response.status === 204 ? null : await response.json();import os
import requests
response = requests.post(
"https://api.novafisko.com/v1/companies/XBVD5O1L29HC/fiscal-years/2/year-end",
headers={
"Accept": "application/json",
"Authorization": f"Bearer {os.environ['NOVAFISKO_TOKEN']}",
"X-Client-Mutation-Id": "b0a6f6f0-7d1c-4c5e-8a55-3f2b1c9d0e11",
},
timeout=30,
)
response.raise_for_status()
data = response.json() if response.content else NoneThird parties
Customers and suppliers: sheet, open items, lettering, reminders, totals, VIES.
GET/v1/companies/{company}/third-partiesList the third parties read
Integration tokens need the read ability.
Operatie-id companies.third-parties.index
Padparameters
| Naam | Type | Beschrijving |
|---|---|---|
company verplicht | string | Public token of the company file (public_token, 12 characters).bv. XBVD5O1L29HC |
Queryparameters
| Naam | Type | Beschrijving |
|---|---|---|
type | string | customer supplier |
q | string | Name, code or VAT number. |
Gemeenschappelijke headers: Accept-Language
Antwoorden
200OK
application/json
Schema ThirdParty[]
Array van ThirdParty
Voorbeeld
[
{
"id": 18,
"company_id": 7,
"type": "customer",
"code": "DUBUISSON",
"name": "Brasserie Dubuisson SA",
"contact_name": "string",
"vat_number": "BE0402531376",
"enterprise_number": "0402531376",
"legal_form_code": "string",
"vat_status": "subject",
"country": "BE",
"language": "fr",
"category": "string",
"currency": "EUR",
"address": "Chaussée de Mons 28",
"house_number": "14",
"box": "string",
"address_line_2": "string",
"postal_code": "7904",
"city": "Pipaix",
"nace_code": "string",
"iban": "BE71096123456769",
"bic": "GKCCBEBB",
"bank_account": "string",
"email": "compta@dubuisson.example",
"phone": "+32 65 31 42 18",
"fax": "string",
"website": "https://www.comptoir-montois.be",
"payment_terms_days": 30,
"form_281_50_type": "string",
"profession_281_50": "string",
"is_natural_person": false,
"notes": "string",
"default_vat_code_id": 42,
"default_account_id": 42,
"vies_valid": true,
"vies_checked_at": "2026-03-15T09:41:00+00:00",
"vies_name": "string",
"peppol_identifier": "0208:0402531376",
"peppol_registered": true,
"peppol_access_point": {},
"peppol_document_types": [
{
"id": "bis_billing_invoice",
"name": "Invoice BIS Billing 3.0",
"family": "billing",
"description": "Facture électronique européenne (EN 16931), format Peppol BIS Billing 3.0.",
"document_id": "string"
}
],
"peppol_checked_at": "2026-03-15T09:41:00+00:00",
"created_at": "2026-03-15T09:41:00+00:00",
"updated_at": "2026-03-15T09:41:00+00:00",
"lock_version": 3,
"version": 3,
"deleted_at": "2026-03-15T09:41:00+00:00",
"deleted_by": 1,
"default_account": {},
"default_vat_code": {}
}
]token_ability_missing, session_token_required), demo restriction (demo_mode) or invalid URL signature. ErrorVoorbeeldaanroep
curl -X GET "https://api.novafisko.com/v1/companies/XBVD5O1L29HC/third-parties" \
-H "Accept: application/json" \
-H "Authorization: Bearer $NOVAFISKO_TOKEN"<?php
$client = new \GuzzleHttp\Client();
$response = $client->request('GET', 'https://api.novafisko.com/v1/companies/XBVD5O1L29HC/third-parties', [
'headers' => [
'Accept' => 'application/json',
'Authorization' => 'Bearer '.getenv('NOVAFISKO_TOKEN'),
],
]);
$data = json_decode((string) $response->getBody(), true);const response = await fetch("https://api.novafisko.com/v1/companies/XBVD5O1L29HC/third-parties", {
method: "GET",
headers: {
"Accept": "application/json",
"Authorization": `Bearer ${process.env.NOVAFISKO_TOKEN}`,
},
});
if (!response.ok) {
const error = await response.json();
throw new Error(error.code ?? error.message);
}
const data = response.status === 204 ? null : await response.json();import os
import requests
response = requests.get(
"https://api.novafisko.com/v1/companies/XBVD5O1L29HC/third-parties",
headers={
"Accept": "application/json",
"Authorization": f"Bearer {os.environ['NOVAFISKO_TOKEN']}",
},
timeout=30,
)
response.raise_for_status()
data = response.json() if response.content else NonePOST/v1/companies/{company}/third-partiesCreate a third party write
Integration tokens need the write ability.
Operatie-id companies.third-parties.store
Padparameters
| Naam | Type | Beschrijving |
|---|---|---|
company verplicht | string | Public token of the company file (public_token, 12 characters).bv. XBVD5O1L29HC |
Gemeenschappelijke headers: Accept-Language X-Client-Mutation-Id X-Operation-Id X-Device-Id X-Device-Name X-Occurred-At X-Origin
Body van de aanvraag
application/json
Schema object
typestringverplichtcustomersuppliercodestring | nullUnique per type; generated from the name when absent.namestringverplichtcontact_namestring | nullvat_numberstring | nullValidated per country.enterprise_numberstring | nulllegal_form_codestring | nullhouse_numberstring | nullboxstring | nullnace_codestring | nullvat_statusstringsubjectnot_subjectexemptintra_eunon_eucountrystring | nullISO 3166-1 alpha-2, BE by default.languagestringfrnlendecategorystring | nullcurrencystringISO 4217.addressstring | nulladdress_line_2string | nullpostal_codestring | nullcitystring | nullibanstring | nullbicstring | nullbank_accountstring | nullemailstring <email> | nullphonestring | nullfaxstring | nullwebsitestring | nullpayment_terms_daysinteger0 to 365.form_281_50_typestring | nullprofession_281_50string | nullis_natural_personbooleannotesstring | nulldefault_vat_code_idinteger | nulldefault_account_idinteger | null
Voorbeeld
{
"type": "supplier",
"name": "Brasserie Dubuisson SA",
"vat_number": "BE 0402.531.376",
"address": "Chaussée de Mons 28",
"postal_code": "7904",
"city": "Pipaix",
"iban": "BE71 0961 2345 6769",
"payment_terms_days": 30
}Antwoorden
201Created
Antwoordheaders X-Operation-Id X-Idempotent-Replay
application/json
Schema ThirdParty
Voorbeeld
{
"id": 18,
"company_id": 7,
"type": "customer",
"code": "DUBUISSON",
"name": "Brasserie Dubuisson SA",
"contact_name": "string",
"vat_number": "BE0402531376",
"enterprise_number": "0402531376",
"legal_form_code": "string",
"vat_status": "subject",
"country": "BE",
"language": "fr",
"category": "string",
"currency": "EUR",
"address": "Chaussée de Mons 28",
"house_number": "14",
"box": "string",
"address_line_2": "string",
"postal_code": "7904",
"city": "Pipaix",
"nace_code": "string",
"iban": "BE71096123456769",
"bic": "GKCCBEBB",
"bank_account": "string",
"email": "compta@dubuisson.example",
"phone": "+32 65 31 42 18",
"fax": "string",
"website": "https://www.comptoir-montois.be",
"payment_terms_days": 30,
"form_281_50_type": "string",
"profession_281_50": "string",
"is_natural_person": false,
"notes": "string",
"default_vat_code_id": 42,
"default_account_id": 42,
"vies_valid": true,
"vies_checked_at": "2026-03-15T09:41:00+00:00",
"vies_name": "string",
"peppol_identifier": "0208:0402531376",
"peppol_registered": true,
"peppol_access_point": {},
"peppol_document_types": [
{
"id": "bis_billing_invoice",
"name": "Invoice BIS Billing 3.0",
"family": "billing",
"description": "Facture électronique européenne (EN 16931), format Peppol BIS Billing 3.0.",
"document_id": "string"
}
],
"peppol_checked_at": "2026-03-15T09:41:00+00:00",
"created_at": "2026-03-15T09:41:00+00:00",
"updated_at": "2026-03-15T09:41:00+00:00",
"lock_version": 3,
"version": 3,
"deleted_at": "2026-03-15T09:41:00+00:00",
"deleted_by": 1,
"default_account": {},
"default_vat_code": {}
}token_ability_missing, session_token_required), demo restriction (demo_mode) or invalid URL signature. Errorerrors maps each field to its messages; code is present when the refusal has a machine reason. ErrorVoorbeeldaanroep
curl -X POST "https://api.novafisko.com/v1/companies/XBVD5O1L29HC/third-parties" \
-H "Accept: application/json" \
-H "Authorization: Bearer $NOVAFISKO_TOKEN" \
-H "Content-Type: application/json" \
-H "X-Client-Mutation-Id: b0a6f6f0-7d1c-4c5e-8a55-3f2b1c9d0e11" \
-d '{
"type": "supplier",
"name": "Brasserie Dubuisson SA",
"vat_number": "BE 0402.531.376",
"address": "Chaussée de Mons 28",
"postal_code": "7904",
"city": "Pipaix",
"iban": "BE71 0961 2345 6769",
"payment_terms_days": 30
}'<?php
$client = new \GuzzleHttp\Client();
$response = $client->request('POST', 'https://api.novafisko.com/v1/companies/XBVD5O1L29HC/third-parties', [
'headers' => [
'Accept' => 'application/json',
'Authorization' => 'Bearer '.getenv('NOVAFISKO_TOKEN'),
'X-Client-Mutation-Id' => 'b0a6f6f0-7d1c-4c5e-8a55-3f2b1c9d0e11',
],
'json' => [
'type' => 'supplier',
'name' => 'Brasserie Dubuisson SA',
'vat_number' => 'BE 0402.531.376',
'address' => 'Chaussée de Mons 28',
'postal_code' => '7904',
'city' => 'Pipaix',
'iban' => 'BE71 0961 2345 6769',
'payment_terms_days' => 30,
],
]);
$data = json_decode((string) $response->getBody(), true);const response = await fetch("https://api.novafisko.com/v1/companies/XBVD5O1L29HC/third-parties", {
method: "POST",
headers: {
"Accept": "application/json",
"Authorization": `Bearer ${process.env.NOVAFISKO_TOKEN}`,
"Content-Type": "application/json",
"X-Client-Mutation-Id": "b0a6f6f0-7d1c-4c5e-8a55-3f2b1c9d0e11",
},
body: JSON.stringify({
"type": "supplier",
"name": "Brasserie Dubuisson SA",
"vat_number": "BE 0402.531.376",
"address": "Chaussée de Mons 28",
"postal_code": "7904",
"city": "Pipaix",
"iban": "BE71 0961 2345 6769",
"payment_terms_days": 30
}),
});
if (!response.ok) {
const error = await response.json();
throw new Error(error.code ?? error.message);
}
const data = response.status === 204 ? null : await response.json();import os
import requests
response = requests.post(
"https://api.novafisko.com/v1/companies/XBVD5O1L29HC/third-parties",
headers={
"Accept": "application/json",
"Authorization": f"Bearer {os.environ['NOVAFISKO_TOKEN']}",
"X-Client-Mutation-Id": "b0a6f6f0-7d1c-4c5e-8a55-3f2b1c9d0e11",
},
json={
"type": "supplier",
"name": "Brasserie Dubuisson SA",
"vat_number": "BE 0402.531.376",
"address": "Chaussée de Mons 28",
"postal_code": "7904",
"city": "Pipaix",
"iban": "BE71 0961 2345 6769",
"payment_terms_days": 30
},
timeout=30,
)
response.raise_for_status()
data = response.json() if response.content else NoneGET/v1/companies/{company}/third-parties/{thirdParty}Third party sheet read
With its default account and VAT code.
Integration tokens need the read ability.
Operatie-id companies.third-parties.show
Padparameters
| Naam | Type | Beschrijving |
|---|---|---|
company verplicht | string | Public token of the company file (public_token, 12 characters).bv. XBVD5O1L29HC |
thirdParty verplicht | integer | Id of the third party. bv. 18 |
Gemeenschappelijke headers: Accept-Language
Antwoorden
200OK
application/json
Schema ThirdParty
Voorbeeld
{
"id": 18,
"company_id": 7,
"type": "customer",
"code": "DUBUISSON",
"name": "Brasserie Dubuisson SA",
"contact_name": "string",
"vat_number": "BE0402531376",
"enterprise_number": "0402531376",
"legal_form_code": "string",
"vat_status": "subject",
"country": "BE",
"language": "fr",
"category": "string",
"currency": "EUR",
"address": "Chaussée de Mons 28",
"house_number": "14",
"box": "string",
"address_line_2": "string",
"postal_code": "7904",
"city": "Pipaix",
"nace_code": "string",
"iban": "BE71096123456769",
"bic": "GKCCBEBB",
"bank_account": "string",
"email": "compta@dubuisson.example",
"phone": "+32 65 31 42 18",
"fax": "string",
"website": "https://www.comptoir-montois.be",
"payment_terms_days": 30,
"form_281_50_type": "string",
"profession_281_50": "string",
"is_natural_person": false,
"notes": "string",
"default_vat_code_id": 42,
"default_account_id": 42,
"vies_valid": true,
"vies_checked_at": "2026-03-15T09:41:00+00:00",
"vies_name": "string",
"peppol_identifier": "0208:0402531376",
"peppol_registered": true,
"peppol_access_point": {},
"peppol_document_types": [
{
"id": "bis_billing_invoice",
"name": "Invoice BIS Billing 3.0",
"family": "billing",
"description": "Facture électronique européenne (EN 16931), format Peppol BIS Billing 3.0.",
"document_id": "string"
}
],
"peppol_checked_at": "2026-03-15T09:41:00+00:00",
"created_at": "2026-03-15T09:41:00+00:00",
"updated_at": "2026-03-15T09:41:00+00:00",
"lock_version": 3,
"version": 3,
"deleted_at": "2026-03-15T09:41:00+00:00",
"deleted_by": 1,
"default_account": {},
"default_vat_code": {}
}token_ability_missing, session_token_required), demo restriction (demo_mode) or invalid URL signature. ErrorVoorbeeldaanroep
curl -X GET "https://api.novafisko.com/v1/companies/XBVD5O1L29HC/third-parties/18" \
-H "Accept: application/json" \
-H "Authorization: Bearer $NOVAFISKO_TOKEN"<?php
$client = new \GuzzleHttp\Client();
$response = $client->request('GET', 'https://api.novafisko.com/v1/companies/XBVD5O1L29HC/third-parties/18', [
'headers' => [
'Accept' => 'application/json',
'Authorization' => 'Bearer '.getenv('NOVAFISKO_TOKEN'),
],
]);
$data = json_decode((string) $response->getBody(), true);const response = await fetch("https://api.novafisko.com/v1/companies/XBVD5O1L29HC/third-parties/18", {
method: "GET",
headers: {
"Accept": "application/json",
"Authorization": `Bearer ${process.env.NOVAFISKO_TOKEN}`,
},
});
if (!response.ok) {
const error = await response.json();
throw new Error(error.code ?? error.message);
}
const data = response.status === 204 ? null : await response.json();import os
import requests
response = requests.get(
"https://api.novafisko.com/v1/companies/XBVD5O1L29HC/third-parties/18",
headers={
"Accept": "application/json",
"Authorization": f"Bearer {os.environ['NOVAFISKO_TOKEN']}",
},
timeout=30,
)
response.raise_for_status()
data = response.json() if response.content else NonePATCH/v1/companies/{company}/third-parties/{thirdParty}Update a third party write
Integration tokens need the write ability.
Operatie-id companies.third-parties.update
Padparameters
| Naam | Type | Beschrijving |
|---|---|---|
company verplicht | string | Public token of the company file (public_token, 12 characters).bv. XBVD5O1L29HC |
thirdParty verplicht | integer | Id of the third party. bv. 18 |
Gemeenschappelijke headers: Accept-Language X-Client-Mutation-Id X-Operation-Id X-Device-Id X-Device-Name X-Occurred-At X-Origin X-Base-Version
Body van de aanvraag
application/json
Schema object
codestring | nullUnique per type; generated from the name when absent.namestringcontact_namestring | nullvat_numberstring | nullValidated per country.enterprise_numberstring | nulllegal_form_codestring | nullhouse_numberstring | nullboxstring | nullnace_codestring | nullvat_statusstringsubjectnot_subjectexemptintra_eunon_eucountrystring | nullISO 3166-1 alpha-2, BE by default.languagestringfrnlendecategorystring | nullcurrencystringISO 4217.addressstring | nulladdress_line_2string | nullpostal_codestring | nullcitystring | nullibanstring | nullbicstring | nullbank_accountstring | nullemailstring <email> | nullphonestring | nullfaxstring | nullwebsitestring | nullpayment_terms_daysinteger0 to 365.form_281_50_typestring | nullprofession_281_50string | nullis_natural_personbooleannotesstring | nulldefault_vat_code_idinteger | nulldefault_account_idinteger | null
Voorbeeld
{
"payment_terms_days": 45,
"email": "compta@dubuisson.example"
}Antwoorden
200OK
Antwoordheaders X-Operation-Id X-Idempotent-Replay
application/json
Schema ThirdParty
Voorbeeld
{
"id": 18,
"company_id": 7,
"type": "customer",
"code": "DUBUISSON",
"name": "Brasserie Dubuisson SA",
"contact_name": "string",
"vat_number": "BE0402531376",
"enterprise_number": "0402531376",
"legal_form_code": "string",
"vat_status": "subject",
"country": "BE",
"language": "fr",
"category": "string",
"currency": "EUR",
"address": "Chaussée de Mons 28",
"house_number": "14",
"box": "string",
"address_line_2": "string",
"postal_code": "7904",
"city": "Pipaix",
"nace_code": "string",
"iban": "BE71096123456769",
"bic": "GKCCBEBB",
"bank_account": "string",
"email": "compta@dubuisson.example",
"phone": "+32 65 31 42 18",
"fax": "string",
"website": "https://www.comptoir-montois.be",
"payment_terms_days": 30,
"form_281_50_type": "string",
"profession_281_50": "string",
"is_natural_person": false,
"notes": "string",
"default_vat_code_id": 42,
"default_account_id": 42,
"vies_valid": true,
"vies_checked_at": "2026-03-15T09:41:00+00:00",
"vies_name": "string",
"peppol_identifier": "0208:0402531376",
"peppol_registered": true,
"peppol_access_point": {},
"peppol_document_types": [
{
"id": "bis_billing_invoice",
"name": "Invoice BIS Billing 3.0",
"family": "billing",
"description": "Facture électronique européenne (EN 16931), format Peppol BIS Billing 3.0.",
"document_id": "string"
}
],
"peppol_checked_at": "2026-03-15T09:41:00+00:00",
"created_at": "2026-03-15T09:41:00+00:00",
"updated_at": "2026-03-15T09:41:00+00:00",
"lock_version": 3,
"version": 3,
"deleted_at": "2026-03-15T09:41:00+00:00",
"deleted_by": 1,
"default_account": {},
"default_vat_code": {}
}token_ability_missing, session_token_required), demo restriction (demo_mode) or invalid URL signature. ErrorX-Base-Version. Nothing was modified. VersionConflicterrors maps each field to its messages; code is present when the refusal has a machine reason. ErrorVoorbeeldaanroep
curl -X PATCH "https://api.novafisko.com/v1/companies/XBVD5O1L29HC/third-parties/18" \
-H "Accept: application/json" \
-H "Authorization: Bearer $NOVAFISKO_TOKEN" \
-H "Content-Type: application/json" \
-H "X-Client-Mutation-Id: b0a6f6f0-7d1c-4c5e-8a55-3f2b1c9d0e11" \
-d '{
"payment_terms_days": 45,
"email": "compta@dubuisson.example"
}'<?php
$client = new \GuzzleHttp\Client();
$response = $client->request('PATCH', 'https://api.novafisko.com/v1/companies/XBVD5O1L29HC/third-parties/18', [
'headers' => [
'Accept' => 'application/json',
'Authorization' => 'Bearer '.getenv('NOVAFISKO_TOKEN'),
'X-Client-Mutation-Id' => 'b0a6f6f0-7d1c-4c5e-8a55-3f2b1c9d0e11',
],
'json' => [
'payment_terms_days' => 45,
'email' => 'compta@dubuisson.example',
],
]);
$data = json_decode((string) $response->getBody(), true);const response = await fetch("https://api.novafisko.com/v1/companies/XBVD5O1L29HC/third-parties/18", {
method: "PATCH",
headers: {
"Accept": "application/json",
"Authorization": `Bearer ${process.env.NOVAFISKO_TOKEN}`,
"Content-Type": "application/json",
"X-Client-Mutation-Id": "b0a6f6f0-7d1c-4c5e-8a55-3f2b1c9d0e11",
},
body: JSON.stringify({
"payment_terms_days": 45,
"email": "compta@dubuisson.example"
}),
});
if (!response.ok) {
const error = await response.json();
throw new Error(error.code ?? error.message);
}
const data = response.status === 204 ? null : await response.json();import os
import requests
response = requests.patch(
"https://api.novafisko.com/v1/companies/XBVD5O1L29HC/third-parties/18",
headers={
"Accept": "application/json",
"Authorization": f"Bearer {os.environ['NOVAFISKO_TOKEN']}",
"X-Client-Mutation-Id": "b0a6f6f0-7d1c-4c5e-8a55-3f2b1c9d0e11",
},
json={
"payment_terms_days": 45,
"email": "compta@dubuisson.example"
},
timeout=30,
)
response.raise_for_status()
data = response.json() if response.content else NoneDELETE/v1/companies/{company}/third-parties/{thirdParty}Delete a third party write
Refused (422) when an entry or a document references it. Goes to the recycle bin.
Integration tokens need the write ability.
Operatie-id companies.third-parties.destroy
Padparameters
| Naam | Type | Beschrijving |
|---|---|---|
company verplicht | string | Public token of the company file (public_token, 12 characters).bv. XBVD5O1L29HC |
thirdParty verplicht | integer | Id of the third party. bv. 18 |
Gemeenschappelijke headers: Accept-Language X-Client-Mutation-Id X-Operation-Id X-Device-Id X-Device-Name X-Occurred-At X-Origin X-Base-Version
Antwoorden
204Done, no body.
Antwoordheaders X-Operation-Id X-Idempotent-Replay X-Trashed
token_ability_missing, session_token_required), demo restriction (demo_mode) or invalid URL signature. ErrorX-Base-Version. Nothing was modified. VersionConflicterrors maps each field to its messages; code is present when the refusal has a machine reason. ErrorVoorbeeldaanroep
curl -X DELETE "https://api.novafisko.com/v1/companies/XBVD5O1L29HC/third-parties/18" \
-H "Accept: application/json" \
-H "Authorization: Bearer $NOVAFISKO_TOKEN" \
-H "X-Client-Mutation-Id: b0a6f6f0-7d1c-4c5e-8a55-3f2b1c9d0e11"<?php
$client = new \GuzzleHttp\Client();
$response = $client->request('DELETE', 'https://api.novafisko.com/v1/companies/XBVD5O1L29HC/third-parties/18', [
'headers' => [
'Accept' => 'application/json',
'Authorization' => 'Bearer '.getenv('NOVAFISKO_TOKEN'),
'X-Client-Mutation-Id' => 'b0a6f6f0-7d1c-4c5e-8a55-3f2b1c9d0e11',
],
]);
$data = json_decode((string) $response->getBody(), true);const response = await fetch("https://api.novafisko.com/v1/companies/XBVD5O1L29HC/third-parties/18", {
method: "DELETE",
headers: {
"Accept": "application/json",
"Authorization": `Bearer ${process.env.NOVAFISKO_TOKEN}`,
"X-Client-Mutation-Id": "b0a6f6f0-7d1c-4c5e-8a55-3f2b1c9d0e11",
},
});
if (!response.ok) {
const error = await response.json();
throw new Error(error.code ?? error.message);
}
const data = response.status === 204 ? null : await response.json();import os
import requests
response = requests.delete(
"https://api.novafisko.com/v1/companies/XBVD5O1L29HC/third-parties/18",
headers={
"Accept": "application/json",
"Authorization": f"Bearer {os.environ['NOVAFISKO_TOKEN']}",
"X-Client-Mutation-Id": "b0a6f6f0-7d1c-4c5e-8a55-3f2b1c9d0e11",
},
timeout=30,
)
response.raise_for_status()
data = response.json() if response.content else NoneGET/v1/companies/{company}/third-parties/{thirdParty}/entriesOpen items and entries of a third party read
Integration tokens need the read ability.
Operatie-id companies.third-parties.entries
Padparameters
| Naam | Type | Beschrijving |
|---|---|---|
company verplicht | string | Public token of the company file (public_token, 12 characters).bv. XBVD5O1L29HC |
thirdParty verplicht | integer | Id of the third party. bv. 18 |
Queryparameters
| Naam | Type | Beschrijving |
|---|---|---|
lettered | string | all yes no |
fiscal_year_id | integer |
Gemeenschappelijke headers: Accept-Language
Antwoorden
200OK
application/json
Schema object
rowsobject[]Eigenschappen
line_idintegerbv.3391entry_idintegerbv.1284journal_codestringbv.VENentry_numberintegerbv.412document_numberstring | nullbv.2026/0412period_numberintegerbv.3entry_datestring <date>due_datestring <date> | nullamountstring <decimal>bv.1210.00debitstring <decimal>bv.1210.00creditstring <decimal>bv.0.00reconciliation_codestring | nulllabelstring | nullreminder_levelintegerbv.0reminder_sent_atstring <date-time> | nullis_letteredbooleanbv.false
summaryobjectEigenschappen
balancestring <decimal>bv.1210.00open_countintegerbv.1lettered_countintegerbv.0
Voorbeeld
{
"rows": [
{
"line_id": 3391,
"entry_id": 1284,
"journal_code": "VEN",
"entry_number": 412,
"document_number": "2026/0412",
"period_number": 3,
"entry_date": "2026-03-15",
"due_date": "2026-03-15",
"amount": "1210.00",
"debit": "1210.00",
"credit": "0.00",
"reconciliation_code": "string",
"label": "Facture Brasserie Dubuisson",
"reminder_level": 0,
"reminder_sent_at": "2026-03-15T09:41:00+00:00",
"is_lettered": false
}
],
"summary": {
"balance": "1210.00",
"open_count": 1,
"lettered_count": 0
}
}token_ability_missing, session_token_required), demo restriction (demo_mode) or invalid URL signature. ErrorVoorbeeldaanroep
curl -X GET "https://api.novafisko.com/v1/companies/XBVD5O1L29HC/third-parties/18/entries" \
-H "Accept: application/json" \
-H "Authorization: Bearer $NOVAFISKO_TOKEN"<?php
$client = new \GuzzleHttp\Client();
$response = $client->request('GET', 'https://api.novafisko.com/v1/companies/XBVD5O1L29HC/third-parties/18/entries', [
'headers' => [
'Accept' => 'application/json',
'Authorization' => 'Bearer '.getenv('NOVAFISKO_TOKEN'),
],
]);
$data = json_decode((string) $response->getBody(), true);const response = await fetch("https://api.novafisko.com/v1/companies/XBVD5O1L29HC/third-parties/18/entries", {
method: "GET",
headers: {
"Accept": "application/json",
"Authorization": `Bearer ${process.env.NOVAFISKO_TOKEN}`,
},
});
if (!response.ok) {
const error = await response.json();
throw new Error(error.code ?? error.message);
}
const data = response.status === 204 ? null : await response.json();import os
import requests
response = requests.get(
"https://api.novafisko.com/v1/companies/XBVD5O1L29HC/third-parties/18/entries",
headers={
"Accept": "application/json",
"Authorization": f"Bearer {os.environ['NOVAFISKO_TOKEN']}",
},
timeout=30,
)
response.raise_for_status()
data = response.json() if response.content else NonePOST/v1/companies/{company}/third-parties/{thirdParty}/letterLetter lines together write
Matches lines of the third party whose debits and credits balance (a small difference is posted to the difference accounts of the settings).
Integration tokens need the write ability.
Operatie-id companies.third-parties.letter
Padparameters
| Naam | Type | Beschrijving |
|---|---|---|
company verplicht | string | Public token of the company file (public_token, 12 characters).bv. XBVD5O1L29HC |
thirdParty verplicht | integer | Id of the third party. bv. 18 |
Gemeenschappelijke headers: Accept-Language X-Client-Mutation-Id X-Operation-Id X-Device-Id X-Device-Name X-Occurred-At X-Origin
Body van de aanvraag
application/json
Schema object
line_idsinteger[]verplicht
Voorbeeld
{
"line_ids": [
3391,
3518
]
}Antwoorden
200OK
Antwoordheaders X-Operation-Id X-Idempotent-Replay
application/json
Schema object
codestringLettering code given.bv.ABline_idsinteger[]
Voorbeeld
{
"code": "AB",
"line_ids": [
1
]
}token_ability_missing, session_token_required), demo restriction (demo_mode) or invalid URL signature. Errorerrors maps each field to its messages; code is present when the refusal has a machine reason. ErrorVoorbeeldaanroep
curl -X POST "https://api.novafisko.com/v1/companies/XBVD5O1L29HC/third-parties/18/letter" \
-H "Accept: application/json" \
-H "Authorization: Bearer $NOVAFISKO_TOKEN" \
-H "Content-Type: application/json" \
-H "X-Client-Mutation-Id: b0a6f6f0-7d1c-4c5e-8a55-3f2b1c9d0e11" \
-d '{
"line_ids": [
3391,
3518
]
}'<?php
$client = new \GuzzleHttp\Client();
$response = $client->request('POST', 'https://api.novafisko.com/v1/companies/XBVD5O1L29HC/third-parties/18/letter', [
'headers' => [
'Accept' => 'application/json',
'Authorization' => 'Bearer '.getenv('NOVAFISKO_TOKEN'),
'X-Client-Mutation-Id' => 'b0a6f6f0-7d1c-4c5e-8a55-3f2b1c9d0e11',
],
'json' => [
'line_ids' => [
3391,
3518,
],
],
]);
$data = json_decode((string) $response->getBody(), true);const response = await fetch("https://api.novafisko.com/v1/companies/XBVD5O1L29HC/third-parties/18/letter", {
method: "POST",
headers: {
"Accept": "application/json",
"Authorization": `Bearer ${process.env.NOVAFISKO_TOKEN}`,
"Content-Type": "application/json",
"X-Client-Mutation-Id": "b0a6f6f0-7d1c-4c5e-8a55-3f2b1c9d0e11",
},
body: JSON.stringify({
"line_ids": [
3391,
3518
]
}),
});
if (!response.ok) {
const error = await response.json();
throw new Error(error.code ?? error.message);
}
const data = response.status === 204 ? null : await response.json();import os
import requests
response = requests.post(
"https://api.novafisko.com/v1/companies/XBVD5O1L29HC/third-parties/18/letter",
headers={
"Accept": "application/json",
"Authorization": f"Bearer {os.environ['NOVAFISKO_TOKEN']}",
"X-Client-Mutation-Id": "b0a6f6f0-7d1c-4c5e-8a55-3f2b1c9d0e11",
},
json={
"line_ids": [
3391,
3518
]
},
timeout=30,
)
response.raise_for_status()
data = response.json() if response.content else NonePOST/v1/companies/{company}/third-parties/{thirdParty}/unletterRemove a lettering write
By lettering code or by lines.
Integration tokens need the write ability.
Operatie-id companies.third-parties.unletter
Padparameters
| Naam | Type | Beschrijving |
|---|---|---|
company verplicht | string | Public token of the company file (public_token, 12 characters).bv. XBVD5O1L29HC |
thirdParty verplicht | integer | Id of the third party. bv. 18 |
Gemeenschappelijke headers: Accept-Language X-Client-Mutation-Id X-Operation-Id X-Device-Id X-Device-Name X-Occurred-At X-Origin
Body van de aanvraag
application/json
Schema object
codestring | nullline_idsinteger[]
Voorbeeld
{
"code": "AB"
}Antwoorden
200OK
Antwoordheaders X-Operation-Id X-Idempotent-Replay
application/json
Schema object
codesstring[]line_idsinteger[]
Voorbeeld
{
"codes": [
"AB"
],
"line_ids": [
1
]
}token_ability_missing, session_token_required), demo restriction (demo_mode) or invalid URL signature. Errorerrors maps each field to its messages; code is present when the refusal has a machine reason. ErrorVoorbeeldaanroep
curl -X POST "https://api.novafisko.com/v1/companies/XBVD5O1L29HC/third-parties/18/unletter" \
-H "Accept: application/json" \
-H "Authorization: Bearer $NOVAFISKO_TOKEN" \
-H "Content-Type: application/json" \
-H "X-Client-Mutation-Id: b0a6f6f0-7d1c-4c5e-8a55-3f2b1c9d0e11" \
-d '{
"code": "AB"
}'<?php
$client = new \GuzzleHttp\Client();
$response = $client->request('POST', 'https://api.novafisko.com/v1/companies/XBVD5O1L29HC/third-parties/18/unletter', [
'headers' => [
'Accept' => 'application/json',
'Authorization' => 'Bearer '.getenv('NOVAFISKO_TOKEN'),
'X-Client-Mutation-Id' => 'b0a6f6f0-7d1c-4c5e-8a55-3f2b1c9d0e11',
],
'json' => [
'code' => 'AB',
],
]);
$data = json_decode((string) $response->getBody(), true);const response = await fetch("https://api.novafisko.com/v1/companies/XBVD5O1L29HC/third-parties/18/unletter", {
method: "POST",
headers: {
"Accept": "application/json",
"Authorization": `Bearer ${process.env.NOVAFISKO_TOKEN}`,
"Content-Type": "application/json",
"X-Client-Mutation-Id": "b0a6f6f0-7d1c-4c5e-8a55-3f2b1c9d0e11",
},
body: JSON.stringify({
"code": "AB"
}),
});
if (!response.ok) {
const error = await response.json();
throw new Error(error.code ?? error.message);
}
const data = response.status === 204 ? null : await response.json();import os
import requests
response = requests.post(
"https://api.novafisko.com/v1/companies/XBVD5O1L29HC/third-parties/18/unletter",
headers={
"Accept": "application/json",
"Authorization": f"Bearer {os.environ['NOVAFISKO_TOKEN']}",
"X-Client-Mutation-Id": "b0a6f6f0-7d1c-4c5e-8a55-3f2b1c9d0e11",
},
json={
"code": "AB"
},
timeout=30,
)
response.raise_for_status()
data = response.json() if response.content else NonePOST/v1/companies/{company}/third-parties/{thirdParty}/letter-autoAutomatic lettering write
Letters every group of open lines that balances exactly.
Integration tokens need the write ability.
Operatie-id companies.third-parties.letter-auto
Padparameters
| Naam | Type | Beschrijving |
|---|---|---|
company verplicht | string | Public token of the company file (public_token, 12 characters).bv. XBVD5O1L29HC |
thirdParty verplicht | integer | Id of the third party. bv. 18 |
Gemeenschappelijke headers: Accept-Language X-Client-Mutation-Id X-Operation-Id X-Device-Id X-Device-Name X-Occurred-At X-Origin
Antwoorden
200OK
Antwoordheaders X-Operation-Id X-Idempotent-Replay
application/json
Schema object
groupsintegerbv.3line_idsinteger[]
Voorbeeld
{
"groups": 3,
"line_ids": [
1
]
}token_ability_missing, session_token_required), demo restriction (demo_mode) or invalid URL signature. ErrorVoorbeeldaanroep
curl -X POST "https://api.novafisko.com/v1/companies/XBVD5O1L29HC/third-parties/18/letter-auto" \
-H "Accept: application/json" \
-H "Authorization: Bearer $NOVAFISKO_TOKEN" \
-H "X-Client-Mutation-Id: b0a6f6f0-7d1c-4c5e-8a55-3f2b1c9d0e11"<?php
$client = new \GuzzleHttp\Client();
$response = $client->request('POST', 'https://api.novafisko.com/v1/companies/XBVD5O1L29HC/third-parties/18/letter-auto', [
'headers' => [
'Accept' => 'application/json',
'Authorization' => 'Bearer '.getenv('NOVAFISKO_TOKEN'),
'X-Client-Mutation-Id' => 'b0a6f6f0-7d1c-4c5e-8a55-3f2b1c9d0e11',
],
]);
$data = json_decode((string) $response->getBody(), true);const response = await fetch("https://api.novafisko.com/v1/companies/XBVD5O1L29HC/third-parties/18/letter-auto", {
method: "POST",
headers: {
"Accept": "application/json",
"Authorization": `Bearer ${process.env.NOVAFISKO_TOKEN}`,
"X-Client-Mutation-Id": "b0a6f6f0-7d1c-4c5e-8a55-3f2b1c9d0e11",
},
});
if (!response.ok) {
const error = await response.json();
throw new Error(error.code ?? error.message);
}
const data = response.status === 204 ? null : await response.json();import os
import requests
response = requests.post(
"https://api.novafisko.com/v1/companies/XBVD5O1L29HC/third-parties/18/letter-auto",
headers={
"Accept": "application/json",
"Authorization": f"Bearer {os.environ['NOVAFISKO_TOKEN']}",
"X-Client-Mutation-Id": "b0a6f6f0-7d1c-4c5e-8a55-3f2b1c9d0e11",
},
timeout=30,
)
response.raise_for_status()
data = response.json() if response.content else NonePOST/v1/companies/{company}/third-parties/{thirdParty}/entries/{line}/remindRecord a payment reminder write Niet in demo
Raises the reminder level of an open line and stamps the date. No e-mail is sent by this endpoint.
Integration tokens need the write ability.
Not available in demo mode: answers 403 demo_mode.
Operatie-id companies.third-parties.remind
Padparameters
| Naam | Type | Beschrijving |
|---|---|---|
company verplicht | string | Public token of the company file (public_token, 12 characters).bv. XBVD5O1L29HC |
thirdParty verplicht | integer | Id of the third party. bv. 18 |
line verplicht | integer | Id of the line. bv. 3391 |
Gemeenschappelijke headers: Accept-Language X-Client-Mutation-Id X-Operation-Id X-Device-Id X-Device-Name X-Occurred-At X-Origin
Antwoorden
200OK
Antwoordheaders X-Operation-Id X-Idempotent-Replay
application/json
Schema object
The row, as in the entries list.
Voorbeeld
{}token_ability_missing, session_token_required), demo restriction (demo_mode) or invalid URL signature. ErrorVoorbeeldaanroep
curl -X POST "https://api.novafisko.com/v1/companies/XBVD5O1L29HC/third-parties/18/entries/3391/remind" \
-H "Accept: application/json" \
-H "Authorization: Bearer $NOVAFISKO_TOKEN" \
-H "X-Client-Mutation-Id: b0a6f6f0-7d1c-4c5e-8a55-3f2b1c9d0e11"<?php
$client = new \GuzzleHttp\Client();
$response = $client->request('POST', 'https://api.novafisko.com/v1/companies/XBVD5O1L29HC/third-parties/18/entries/3391/remind', [
'headers' => [
'Accept' => 'application/json',
'Authorization' => 'Bearer '.getenv('NOVAFISKO_TOKEN'),
'X-Client-Mutation-Id' => 'b0a6f6f0-7d1c-4c5e-8a55-3f2b1c9d0e11',
],
]);
$data = json_decode((string) $response->getBody(), true);const response = await fetch("https://api.novafisko.com/v1/companies/XBVD5O1L29HC/third-parties/18/entries/3391/remind", {
method: "POST",
headers: {
"Accept": "application/json",
"Authorization": `Bearer ${process.env.NOVAFISKO_TOKEN}`,
"X-Client-Mutation-Id": "b0a6f6f0-7d1c-4c5e-8a55-3f2b1c9d0e11",
},
});
if (!response.ok) {
const error = await response.json();
throw new Error(error.code ?? error.message);
}
const data = response.status === 204 ? null : await response.json();import os
import requests
response = requests.post(
"https://api.novafisko.com/v1/companies/XBVD5O1L29HC/third-parties/18/entries/3391/remind",
headers={
"Accept": "application/json",
"Authorization": f"Bearer {os.environ['NOVAFISKO_TOKEN']}",
"X-Client-Mutation-Id": "b0a6f6f0-7d1c-4c5e-8a55-3f2b1c9d0e11",
},
timeout=30,
)
response.raise_for_status()
data = response.json() if response.content else NoneGET/v1/companies/{company}/third-parties/{thirdParty}/remindersReminders of a third party read
Integration tokens need the read ability.
Operatie-id companies.third-parties.reminders
Padparameters
| Naam | Type | Beschrijving |
|---|---|---|
company verplicht | string | Public token of the company file (public_token, 12 characters).bv. XBVD5O1L29HC |
thirdParty verplicht | integer | Id of the third party. bv. 18 |
Gemeenschappelijke headers: Accept-Language
Antwoorden
200OK
application/json
Schema object[]
Array van object
Voorbeeld
[
{}
]token_ability_missing, session_token_required), demo restriction (demo_mode) or invalid URL signature. ErrorVoorbeeldaanroep
curl -X GET "https://api.novafisko.com/v1/companies/XBVD5O1L29HC/third-parties/18/reminders" \
-H "Accept: application/json" \
-H "Authorization: Bearer $NOVAFISKO_TOKEN"<?php
$client = new \GuzzleHttp\Client();
$response = $client->request('GET', 'https://api.novafisko.com/v1/companies/XBVD5O1L29HC/third-parties/18/reminders', [
'headers' => [
'Accept' => 'application/json',
'Authorization' => 'Bearer '.getenv('NOVAFISKO_TOKEN'),
],
]);
$data = json_decode((string) $response->getBody(), true);const response = await fetch("https://api.novafisko.com/v1/companies/XBVD5O1L29HC/third-parties/18/reminders", {
method: "GET",
headers: {
"Accept": "application/json",
"Authorization": `Bearer ${process.env.NOVAFISKO_TOKEN}`,
},
});
if (!response.ok) {
const error = await response.json();
throw new Error(error.code ?? error.message);
}
const data = response.status === 204 ? null : await response.json();import os
import requests
response = requests.get(
"https://api.novafisko.com/v1/companies/XBVD5O1L29HC/third-parties/18/reminders",
headers={
"Accept": "application/json",
"Authorization": f"Bearer {os.environ['NOVAFISKO_TOKEN']}",
},
timeout=30,
)
response.raise_for_status()
data = response.json() if response.content else NoneGET/v1/companies/{company}/third-parties/{thirdParty}/totalsTotals per period read
Integration tokens need the read ability.
Operatie-id companies.third-parties.totals
Padparameters
| Naam | Type | Beschrijving |
|---|---|---|
company verplicht | string | Public token of the company file (public_token, 12 characters).bv. XBVD5O1L29HC |
thirdParty verplicht | integer | Id of the third party. bv. 18 |
Queryparameters
| Naam | Type | Beschrijving |
|---|---|---|
mode | string | balance debit credit |
fiscal_year_id | integer |
Gemeenschappelijke headers: Accept-Language
Antwoorden
200OK
application/json
Schema object
fiscal_yearobjectEigenschappen
idintegercodestringbv.2026
modestringbv.balancerowsobject[]Eigenschappen
period_numberintegerbv.1period_labelstringbv.Janvier 2026amountstring <decimal>
totalstring <decimal>
Voorbeeld
{
"fiscal_year": {
"id": 42,
"code": "2026"
},
"mode": "balance",
"rows": [
{
"period_number": 1,
"period_label": "Janvier 2026",
"amount": "1210.00"
}
],
"total": "1210.00"
}token_ability_missing, session_token_required), demo restriction (demo_mode) or invalid URL signature. ErrorVoorbeeldaanroep
curl -X GET "https://api.novafisko.com/v1/companies/XBVD5O1L29HC/third-parties/18/totals" \
-H "Accept: application/json" \
-H "Authorization: Bearer $NOVAFISKO_TOKEN"<?php
$client = new \GuzzleHttp\Client();
$response = $client->request('GET', 'https://api.novafisko.com/v1/companies/XBVD5O1L29HC/third-parties/18/totals', [
'headers' => [
'Accept' => 'application/json',
'Authorization' => 'Bearer '.getenv('NOVAFISKO_TOKEN'),
],
]);
$data = json_decode((string) $response->getBody(), true);const response = await fetch("https://api.novafisko.com/v1/companies/XBVD5O1L29HC/third-parties/18/totals", {
method: "GET",
headers: {
"Accept": "application/json",
"Authorization": `Bearer ${process.env.NOVAFISKO_TOKEN}`,
},
});
if (!response.ok) {
const error = await response.json();
throw new Error(error.code ?? error.message);
}
const data = response.status === 204 ? null : await response.json();import os
import requests
response = requests.get(
"https://api.novafisko.com/v1/companies/XBVD5O1L29HC/third-parties/18/totals",
headers={
"Accept": "application/json",
"Authorization": f"Bearer {os.environ['NOVAFISKO_TOKEN']}",
},
timeout=30,
)
response.raise_for_status()
data = response.json() if response.content else NoneGET/v1/companies/{company}/viesCheck a VAT number with VIES read Niet in demo 30 / 1 min
Integration tokens need the read ability.
Not available in demo mode: answers 403 demo_mode.
Rate limit: 30 requests per minute (429 beyond, see Retry-After).
Operatie-id companies.vies.check
Padparameters
| Naam | Type | Beschrijving |
|---|---|---|
company verplicht | string | Public token of the company file (public_token, 12 characters).bv. XBVD5O1L29HC |
Queryparameters
| Naam | Type | Beschrijving |
|---|---|---|
vat_number verplicht | string | bv. BE0402531376 |
Gemeenschappelijke headers: Accept-Language
Antwoorden
200OK
Antwoordheaders X-RateLimit-Limit X-RateLimit-Remaining
application/json
Schema object
validboolean | nullNull when VIES did not answer.namestring | nullbv.BRASSERIE DUBUISSONaddressstring | nullcountrystringbv.BEnumberstringbv.0402531376errorstring | nullinvalid_format, service_unavailable or the VIES user error.
Voorbeeld
{
"valid": true,
"name": "BRASSERIE DUBUISSON",
"address": "Grand-Place 14",
"country": "BE",
"number": "0402531376",
"error": "string"
}token_ability_missing, session_token_required), demo restriction (demo_mode) or invalid URL signature. ErrorVoorbeeldaanroep
curl -X GET "https://api.novafisko.com/v1/companies/XBVD5O1L29HC/vies?vat_number=BE0402531376" \
-H "Accept: application/json" \
-H "Authorization: Bearer $NOVAFISKO_TOKEN"<?php
$client = new \GuzzleHttp\Client();
$response = $client->request('GET', 'https://api.novafisko.com/v1/companies/XBVD5O1L29HC/vies', [
'headers' => [
'Accept' => 'application/json',
'Authorization' => 'Bearer '.getenv('NOVAFISKO_TOKEN'),
],
'query' => [
'vat_number' => 'BE0402531376',
],
]);
$data = json_decode((string) $response->getBody(), true);const response = await fetch("https://api.novafisko.com/v1/companies/XBVD5O1L29HC/vies?vat_number=BE0402531376", {
method: "GET",
headers: {
"Accept": "application/json",
"Authorization": `Bearer ${process.env.NOVAFISKO_TOKEN}`,
},
});
if (!response.ok) {
const error = await response.json();
throw new Error(error.code ?? error.message);
}
const data = response.status === 204 ? null : await response.json();import os
import requests
response = requests.get(
"https://api.novafisko.com/v1/companies/XBVD5O1L29HC/vies",
headers={
"Accept": "application/json",
"Authorization": f"Bearer {os.environ['NOVAFISKO_TOKEN']}",
},
params={
"vat_number": "BE0402531376"
},
timeout=30,
)
response.raise_for_status()
data = response.json() if response.content else NonePOST/v1/companies/{company}/third-parties/{thirdParty}/viesCheck the VAT number of a third party with VIES write Niet in demo 30 / 1 min
Stores the result on the third party (vies_valid, vies_checked_at, vies_name).
Integration tokens need the write ability.
Not available in demo mode: answers 403 demo_mode.
Rate limit: 30 requests per minute (429 beyond, see Retry-After).
Operatie-id companies.third-parties.vies
Padparameters
| Naam | Type | Beschrijving |
|---|---|---|
company verplicht | string | Public token of the company file (public_token, 12 characters).bv. XBVD5O1L29HC |
thirdParty verplicht | integer | Id of the third party. bv. 18 |
Gemeenschappelijke headers: Accept-Language X-Client-Mutation-Id X-Operation-Id X-Device-Id X-Device-Name X-Occurred-At X-Origin
Antwoorden
200OK
Antwoordheaders X-Operation-Id X-Idempotent-Replay X-RateLimit-Limit X-RateLimit-Remaining
application/json
Schema object
validboolean | nullNull when VIES did not answer.namestring | nullbv.BRASSERIE DUBUISSONaddressstring | nullcountrystringbv.BEnumberstringbv.0402531376errorstring | nullinvalid_format, service_unavailable or the VIES user error.third_partyThirdParty
Voorbeeld
{
"valid": true,
"name": "BRASSERIE DUBUISSON",
"address": "Grand-Place 14",
"country": "BE",
"number": "0402531376",
"error": "string",
"third_party": {
"id": 18,
"company_id": 7,
"type": "customer",
"code": "DUBUISSON",
"name": "Brasserie Dubuisson SA",
"contact_name": "string",
"vat_number": "BE0402531376",
"enterprise_number": "0402531376",
"legal_form_code": "string",
"vat_status": "subject",
"country": "BE",
"language": "fr",
"category": "string",
"currency": "EUR",
"address": "Chaussée de Mons 28",
"house_number": "14",
"box": "string",
"address_line_2": "string",
"postal_code": "7904",
"city": "Pipaix",
"nace_code": "string",
"iban": "BE71096123456769",
"bic": "GKCCBEBB",
"bank_account": "string",
"email": "compta@dubuisson.example",
"phone": "+32 65 31 42 18",
"fax": "string",
"website": "https://www.comptoir-montois.be",
"payment_terms_days": 30,
"form_281_50_type": "string",
"profession_281_50": "string",
"is_natural_person": false,
"notes": "string",
"default_vat_code_id": 42,
"default_account_id": 42,
"vies_valid": true,
"vies_checked_at": "2026-03-15T09:41:00+00:00",
"vies_name": "string",
"peppol_identifier": "0208:0402531376",
"peppol_registered": true,
"peppol_access_point": {},
"peppol_document_types": [
{
"id": "bis_billing_invoice",
"name": "Invoice BIS Billing 3.0",
"family": "billing",
"description": "Facture électronique européenne (EN 16931), format Peppol BIS Billing 3.0.",
"document_id": "string"
}
],
"peppol_checked_at": "2026-03-15T09:41:00+00:00",
"created_at": "2026-03-15T09:41:00+00:00",
"updated_at": "2026-03-15T09:41:00+00:00",
"lock_version": 3,
"version": 3,
"deleted_at": "2026-03-15T09:41:00+00:00",
"deleted_by": 1,
"default_account": {},
"default_vat_code": {}
}
}token_ability_missing, session_token_required), demo restriction (demo_mode) or invalid URL signature. Errorerrors maps each field to its messages; code is present when the refusal has a machine reason. ErrorVoorbeeldaanroep
curl -X POST "https://api.novafisko.com/v1/companies/XBVD5O1L29HC/third-parties/18/vies" \
-H "Accept: application/json" \
-H "Authorization: Bearer $NOVAFISKO_TOKEN" \
-H "X-Client-Mutation-Id: b0a6f6f0-7d1c-4c5e-8a55-3f2b1c9d0e11"<?php
$client = new \GuzzleHttp\Client();
$response = $client->request('POST', 'https://api.novafisko.com/v1/companies/XBVD5O1L29HC/third-parties/18/vies', [
'headers' => [
'Accept' => 'application/json',
'Authorization' => 'Bearer '.getenv('NOVAFISKO_TOKEN'),
'X-Client-Mutation-Id' => 'b0a6f6f0-7d1c-4c5e-8a55-3f2b1c9d0e11',
],
]);
$data = json_decode((string) $response->getBody(), true);const response = await fetch("https://api.novafisko.com/v1/companies/XBVD5O1L29HC/third-parties/18/vies", {
method: "POST",
headers: {
"Accept": "application/json",
"Authorization": `Bearer ${process.env.NOVAFISKO_TOKEN}`,
"X-Client-Mutation-Id": "b0a6f6f0-7d1c-4c5e-8a55-3f2b1c9d0e11",
},
});
if (!response.ok) {
const error = await response.json();
throw new Error(error.code ?? error.message);
}
const data = response.status === 204 ? null : await response.json();import os
import requests
response = requests.post(
"https://api.novafisko.com/v1/companies/XBVD5O1L29HC/third-parties/18/vies",
headers={
"Accept": "application/json",
"Authorization": f"Bearer {os.environ['NOVAFISKO_TOKEN']}",
"X-Client-Mutation-Id": "b0a6f6f0-7d1c-4c5e-8a55-3f2b1c9d0e11",
},
timeout=30,
)
response.raise_for_status()
data = response.json() if response.content else NoneEntries
Journal entries: free entries, invoices and credit notes, reversal.
GET/v1/companies/{company}/entriesList the entries read
Newest first, with their journal, third party and lines.
Integration tokens need the read ability.
Operatie-id companies.entries.index
Padparameters
| Naam | Type | Beschrijving |
|---|---|---|
company verplicht | string | Public token of the company file (public_token, 12 characters).bv. XBVD5O1L29HC |
Queryparameters
| Naam | Type | Beschrijving |
|---|---|---|
journal_id | integer | |
fiscal_year_id | integer | |
third_party_id | integer | |
from | string <date> | Entry date, inclusive. |
to | string <date> | Entry date, inclusive. |
status | string | posted reversed |
q | string | Label, reference, structured communication, third party name, line label or account number prefix. |
page | integer | Page number, starting at 1. bv. 1 |
per_page | integer | Items per page (default 50, maximum 200). bv. 50 |
Gemeenschappelijke headers: Accept-Language
Antwoorden
200Paginated list
application/json
Voorbeeld
{
"current_page": 1,
"data": [
{
"id": 1284,
"company_id": 7,
"fiscal_year_id": 2,
"period_id": 16,
"journal_id": 3,
"number": 412,
"entry_date": "2026-03-15T00:00:00.000000Z",
"due_date": "2026-03-15T09:41:00+00:00",
"label": "Facture Brasserie Dubuisson SA",
"reference": "F-2026-0412",
"structured_communication": "000000000101",
"third_party_id": 18,
"status": "posted",
"origin": "manual",
"created_by": 1,
"posted_at": "2026-03-15T09:41:00+00:00",
"reversed_entry_id": 42,
"reversed_by_entry_id": 42,
"recurring_entry_id": 42,
"created_at": "2026-03-15T09:41:00+00:00",
"updated_at": "2026-03-15T09:41:00+00:00",
"lock_version": 3,
"version": 3,
"journal": {
"id": 3,
"code": "VEN",
"type": "sale"
},
"third_party": {
"id": 18,
"name": "Brasserie Dubuisson SA"
},
"lines": [
{}
]
}
],
"first_page_url": "https://api.novafisko.com/v1/companies/XBVD5O1L29HC",
"from": 1,
"last_page": 4,
"last_page_url": "https://api.novafisko.com/v1/companies/XBVD5O1L29HC",
"links": [
{
"url": "https://api.novafisko.com/v1/companies/XBVD5O1L29HC",
"label": "1",
"page": 1,
"active": true
}
],
"next_page_url": "https://api.novafisko.com/v1/companies/XBVD5O1L29HC",
"path": "https://api.novafisko.com/v1/companies/XBVD5O1L29HC",
"per_page": 50,
"prev_page_url": "https://api.novafisko.com/v1/companies/XBVD5O1L29HC",
"to": 50,
"total": 187
}token_ability_missing, session_token_required), demo restriction (demo_mode) or invalid URL signature. ErrorVoorbeeldaanroep
curl -X GET "https://api.novafisko.com/v1/companies/XBVD5O1L29HC/entries" \
-H "Accept: application/json" \
-H "Authorization: Bearer $NOVAFISKO_TOKEN"<?php
$client = new \GuzzleHttp\Client();
$response = $client->request('GET', 'https://api.novafisko.com/v1/companies/XBVD5O1L29HC/entries', [
'headers' => [
'Accept' => 'application/json',
'Authorization' => 'Bearer '.getenv('NOVAFISKO_TOKEN'),
],
]);
$data = json_decode((string) $response->getBody(), true);const response = await fetch("https://api.novafisko.com/v1/companies/XBVD5O1L29HC/entries", {
method: "GET",
headers: {
"Accept": "application/json",
"Authorization": `Bearer ${process.env.NOVAFISKO_TOKEN}`,
},
});
if (!response.ok) {
const error = await response.json();
throw new Error(error.code ?? error.message);
}
const data = response.status === 204 ? null : await response.json();import os
import requests
response = requests.get(
"https://api.novafisko.com/v1/companies/XBVD5O1L29HC/entries",
headers={
"Accept": "application/json",
"Authorization": f"Bearer {os.environ['NOVAFISKO_TOKEN']}",
},
timeout=30,
)
response.raise_for_status()
data = response.json() if response.content else NonePOST/v1/companies/{company}/entriesPost a free entry write
Miscellaneous operation, financial entry…: every line is given, debits must equal credits. The entry is posted at once and numbered in its journal. Accounts are addressed by account_id or by number (account). A date in a locked period or a closed fiscal year is refused with 422 period_locked.
Integration tokens need the write ability.
Error codes (code):
period_locked: the period is locked or the fiscal year is closed;reasontells which (period_lockedorfiscal_year_closed)
Operatie-id companies.entries.store
Padparameters
| Naam | Type | Beschrijving |
|---|---|---|
company verplicht | string | Public token of the company file (public_token, 12 characters).bv. XBVD5O1L29HC |
Gemeenschappelijke headers: Accept-Language X-Client-Mutation-Id X-Operation-Id X-Device-Id X-Device-Name X-Occurred-At X-Origin
Body van de aanvraag
application/json
Schema object
journal_idintegerverplichtentry_datestring <date>verplichtInside an open fiscal year and an unlocked period.due_datestring <date> | nulllabelstringverplicht200 characters max.referencestring | null60 characters max.structured_communicationstring | nullBelgian structured communication.third_party_idinteger | nulllinesobject[]verplichtEigenschappen
account_idintegerRequired withoutaccount.accountstringAccount number; required withoutaccount_id.debitstring | nullDecimal, positive.creditstring | nullDecimal, positive.labelstring | nullthird_party_idinteger | nullvat_code_idinteger | nullvat_basestring | nullTaxable base carried by the line.cost_center_idinteger | nullAnalytic code of thecost_centeraxis.project_idinteger | nullAnalytic code of theprojectaxis.
Voorbeeld
{
"journal_id": 5,
"entry_date": "2026-03-31",
"label": "Salaires mars 2026",
"reference": "SAL-2026-03",
"lines": [
{
"account": "620200",
"debit": "8420.00",
"label": "Rémunérations brutes"
},
{
"account": "453000",
"credit": "2105.00",
"label": "Précompte professionnel"
},
{
"account": "454000",
"credit": "1100.48",
"label": "ONSS"
},
{
"account": "455000",
"credit": "5214.52",
"label": "Net à payer"
}
]
}Antwoorden
201Entry posted
Antwoordheaders X-Operation-Id X-Idempotent-Replay
application/json
Schema JournalEntry
Voorbeeld
{
"id": 1284,
"company_id": 7,
"fiscal_year_id": 2,
"period_id": 16,
"journal_id": 3,
"number": 412,
"entry_date": "2026-03-15T00:00:00.000000Z",
"due_date": "2026-03-15T09:41:00+00:00",
"label": "Facture Brasserie Dubuisson SA",
"reference": "F-2026-0412",
"structured_communication": "000000000101",
"third_party_id": 18,
"status": "posted",
"origin": "manual",
"created_by": 1,
"posted_at": "2026-03-15T09:41:00+00:00",
"reversed_entry_id": 42,
"reversed_by_entry_id": 42,
"recurring_entry_id": 42,
"created_at": "2026-03-15T09:41:00+00:00",
"updated_at": "2026-03-15T09:41:00+00:00",
"lock_version": 3,
"version": 3,
"journal": {
"id": 3,
"code": "VEN",
"type": "sale"
},
"third_party": {
"id": 18,
"name": "Brasserie Dubuisson SA"
},
"lines": [
{
"id": 3391,
"journal_entry_id": 1284,
"position": 1,
"account_id": 580,
"third_party_id": 18,
"label": "Brasserie Dubuisson SA",
"debit": "0.00",
"credit": "1000.00",
"vat_code_id": 4,
"vat_base": "1000.00",
"reconciliation_code": "AB",
"cost_center_id": 42,
"project_id": 42,
"reminder_level": 0,
"reminder_sent_at": "2026-03-15T09:41:00+00:00",
"account": {
"id": 580,
"number": "702000",
"label": "Prestations de services"
},
"vat_code": {}
}
]
}token_ability_missing, session_token_required), demo restriction (demo_mode) or invalid URL signature. Errorcode: period_locked, with reason). PeriodLockedErrorVoorbeeldaanroep
curl -X POST "https://api.novafisko.com/v1/companies/XBVD5O1L29HC/entries" \
-H "Accept: application/json" \
-H "Authorization: Bearer $NOVAFISKO_TOKEN" \
-H "Content-Type: application/json" \
-H "X-Client-Mutation-Id: b0a6f6f0-7d1c-4c5e-8a55-3f2b1c9d0e11" \
-d '{
"journal_id": 5,
"entry_date": "2026-03-31",
"label": "Salaires mars 2026",
"reference": "SAL-2026-03",
"lines": [
{
"account": "620200",
"debit": "8420.00",
"label": "Rémunérations brutes"
},
{
"account": "453000",
"credit": "2105.00",
"label": "Précompte professionnel"
},
{
"account": "454000",
"credit": "1100.48",
"label": "ONSS"
},
{
"account": "455000",
"credit": "5214.52",
"label": "Net à payer"
}
]
}'<?php
$client = new \GuzzleHttp\Client();
$response = $client->request('POST', 'https://api.novafisko.com/v1/companies/XBVD5O1L29HC/entries', [
'headers' => [
'Accept' => 'application/json',
'Authorization' => 'Bearer '.getenv('NOVAFISKO_TOKEN'),
'X-Client-Mutation-Id' => 'b0a6f6f0-7d1c-4c5e-8a55-3f2b1c9d0e11',
],
'json' => [
'journal_id' => 5,
'entry_date' => '2026-03-31',
'label' => 'Salaires mars 2026',
'reference' => 'SAL-2026-03',
'lines' => [
[
'account' => '620200',
'debit' => '8420.00',
'label' => 'Rémunérations brutes',
],
[
'account' => '453000',
'credit' => '2105.00',
'label' => 'Précompte professionnel',
],
[
'account' => '454000',
'credit' => '1100.48',
'label' => 'ONSS',
],
[
'account' => '455000',
'credit' => '5214.52',
'label' => 'Net à payer',
],
],
],
]);
$data = json_decode((string) $response->getBody(), true);const response = await fetch("https://api.novafisko.com/v1/companies/XBVD5O1L29HC/entries", {
method: "POST",
headers: {
"Accept": "application/json",
"Authorization": `Bearer ${process.env.NOVAFISKO_TOKEN}`,
"Content-Type": "application/json",
"X-Client-Mutation-Id": "b0a6f6f0-7d1c-4c5e-8a55-3f2b1c9d0e11",
},
body: JSON.stringify({
"journal_id": 5,
"entry_date": "2026-03-31",
"label": "Salaires mars 2026",
"reference": "SAL-2026-03",
"lines": [
{
"account": "620200",
"debit": "8420.00",
"label": "Rémunérations brutes"
},
{
"account": "453000",
"credit": "2105.00",
"label": "Précompte professionnel"
},
{
"account": "454000",
"credit": "1100.48",
"label": "ONSS"
},
{
"account": "455000",
"credit": "5214.52",
"label": "Net à payer"
}
]
}),
});
if (!response.ok) {
const error = await response.json();
throw new Error(error.code ?? error.message);
}
const data = response.status === 204 ? null : await response.json();import os
import requests
response = requests.post(
"https://api.novafisko.com/v1/companies/XBVD5O1L29HC/entries",
headers={
"Accept": "application/json",
"Authorization": f"Bearer {os.environ['NOVAFISKO_TOKEN']}",
"X-Client-Mutation-Id": "b0a6f6f0-7d1c-4c5e-8a55-3f2b1c9d0e11",
},
json={
"journal_id": 5,
"entry_date": "2026-03-31",
"label": "Salaires mars 2026",
"reference": "SAL-2026-03",
"lines": [
{
"account": "620200",
"debit": "8420.00",
"label": "Rémunérations brutes"
},
{
"account": "453000",
"credit": "2105.00",
"label": "Précompte professionnel"
},
{
"account": "454000",
"credit": "1100.48",
"label": "ONSS"
},
{
"account": "455000",
"credit": "5214.52",
"label": "Net à payer"
}
]
},
timeout=30,
)
response.raise_for_status()
data = response.json() if response.content else NonePOST/v1/companies/{company}/entries/invoicePost an invoice or a credit note write
Purchase or sale invoice (journal of type purchase / sale) or credit note (journal of type purchase_credit_note / sale_credit_note). Send the net lines with their VAT code: the VAT lines and the third party line are generated, including reverse charge (intra-EU, co-contractor). The label defaults to « Facture <third party> ». A date in a locked period or a closed fiscal year is refused with 422 period_locked.
Integration tokens need the write ability.
Error codes (code):
period_locked: the period is locked or the fiscal year is closed;reasontells which (period_lockedorfiscal_year_closed)
Operatie-id companies.entries.invoice
Padparameters
| Naam | Type | Beschrijving |
|---|---|---|
company verplicht | string | Public token of the company file (public_token, 12 characters).bv. XBVD5O1L29HC |
Gemeenschappelijke headers: Accept-Language X-Client-Mutation-Id X-Operation-Id X-Device-Id X-Device-Name X-Occurred-At X-Origin
Body van de aanvraag
application/json
Schema object
journal_idintegerverplichtJournal of a purchase or sale type.third_party_idintegerverplichtentry_datestring <date>verplichtdue_datestring <date> | nulllabelstring | nullreferencestring | nullInvoice number.structured_communicationstring | nulllinesobject[]verplichtEigenschappen
account_idintegerRequired withoutaccount.accountstringAccount number.amountstringverplichtNet amount (excl. VAT), decimal.vat_code_idinteger | nullvat_codestring | nullCode of the VAT code (V21,A06,AIC21…).labelstring | nullcost_center_idinteger | nullAnalytic code of thecost_centeraxis.project_idinteger | nullAnalytic code of theprojectaxis.
Voorbeeld
{
"journal_id": 1,
"third_party_id": 18,
"entry_date": "2026-03-15",
"due_date": "2026-04-14",
"reference": "F-2026-0412",
"lines": [
{
"account": "604000",
"amount": "507.00",
"vat_code": "A21",
"label": "Fûts Bush Caractère 20 L"
},
{
"account": "613200",
"amount": "35.00",
"vat_code": "A21",
"label": "Consigne et transport"
}
]
}Antwoorden
201Invoice posted
Antwoordheaders X-Operation-Id X-Idempotent-Replay
application/json
Schema JournalEntry
Voorbeeld
{
"id": 1284,
"company_id": 7,
"fiscal_year_id": 2,
"period_id": 16,
"journal_id": 1,
"number": 412,
"entry_date": "2026-03-15T00:00:00.000000Z",
"due_date": "2026-04-14T00:00:00.000000Z",
"label": "Facture Brasserie Dubuisson SA",
"reference": "F-2026-0412",
"structured_communication": null,
"third_party_id": 18,
"status": "posted",
"origin": "manual",
"created_by": 12,
"posted_at": "2026-03-16T08:12:40.000000Z",
"reversed_entry_id": null,
"reversed_by_entry_id": null,
"recurring_entry_id": null,
"created_at": "2026-03-16T08:12:40.000000Z",
"updated_at": "2026-03-16T08:12:40.000000Z",
"lock_version": 1,
"version": 1,
"lines": [
{
"id": 3391,
"journal_entry_id": 1284,
"position": 1,
"account_id": 361,
"third_party_id": null,
"label": "Fûts Bush Caractère 20 L",
"debit": "507.00",
"credit": "0.00",
"vat_code_id": 25,
"vat_base": "507.00",
"reconciliation_code": null,
"cost_center_id": null,
"project_id": null,
"reminder_level": 0,
"reminder_sent_at": null,
"account": {
"id": 361,
"number": "604000",
"label": "Achats de marchandises"
}
},
{
"id": 3392,
"journal_entry_id": 1284,
"position": 2,
"account_id": 384,
"third_party_id": null,
"label": "Consigne et transport",
"debit": "35.00",
"credit": "0.00",
"vat_code_id": 25,
"vat_base": "35.00",
"reconciliation_code": null,
"cost_center_id": null,
"project_id": null,
"reminder_level": 0,
"reminder_sent_at": null,
"account": {
"id": 384,
"number": "613200",
"label": "Transports et déplacements"
}
},
{
"id": 3393,
"journal_entry_id": 1284,
"position": 3,
"account_id": 234,
"third_party_id": null,
"label": "TVA déductible",
"debit": "113.82",
"credit": "0.00",
"vat_code_id": null,
"vat_base": null,
"reconciliation_code": null,
"cost_center_id": null,
"project_id": null,
"reminder_level": 0,
"reminder_sent_at": null,
"account": {
"id": 234,
"number": "411100",
"label": "TVA déductible sur achats"
}
},
{
"id": 3394,
"journal_entry_id": 1284,
"position": 4,
"account_id": 263,
"third_party_id": 18,
"label": "Brasserie Dubuisson SA",
"debit": "0.00",
"credit": "655.82",
"vat_code_id": null,
"vat_base": null,
"reconciliation_code": null,
"cost_center_id": null,
"project_id": null,
"reminder_level": 0,
"reminder_sent_at": null,
"account": {
"id": 263,
"number": "440000",
"label": "Fournisseurs"
}
}
]
}token_ability_missing, session_token_required), demo restriction (demo_mode) or invalid URL signature. Errorcode: period_locked, with reason). PeriodLockedErrorVoorbeeldaanroep
curl -X POST "https://api.novafisko.com/v1/companies/XBVD5O1L29HC/entries/invoice" \
-H "Accept: application/json" \
-H "Authorization: Bearer $NOVAFISKO_TOKEN" \
-H "Content-Type: application/json" \
-H "X-Client-Mutation-Id: b0a6f6f0-7d1c-4c5e-8a55-3f2b1c9d0e11" \
-d '{
"journal_id": 1,
"third_party_id": 18,
"entry_date": "2026-03-15",
"due_date": "2026-04-14",
"reference": "F-2026-0412",
"lines": [
{
"account": "604000",
"amount": "507.00",
"vat_code": "A21",
"label": "Fûts Bush Caractère 20 L"
},
{
"account": "613200",
"amount": "35.00",
"vat_code": "A21",
"label": "Consigne et transport"
}
]
}'<?php
$client = new \GuzzleHttp\Client();
$response = $client->request('POST', 'https://api.novafisko.com/v1/companies/XBVD5O1L29HC/entries/invoice', [
'headers' => [
'Accept' => 'application/json',
'Authorization' => 'Bearer '.getenv('NOVAFISKO_TOKEN'),
'X-Client-Mutation-Id' => 'b0a6f6f0-7d1c-4c5e-8a55-3f2b1c9d0e11',
],
'json' => [
'journal_id' => 1,
'third_party_id' => 18,
'entry_date' => '2026-03-15',
'due_date' => '2026-04-14',
'reference' => 'F-2026-0412',
'lines' => [
[
'account' => '604000',
'amount' => '507.00',
'vat_code' => 'A21',
'label' => 'Fûts Bush Caractère 20 L',
],
[
'account' => '613200',
'amount' => '35.00',
'vat_code' => 'A21',
'label' => 'Consigne et transport',
],
],
],
]);
$data = json_decode((string) $response->getBody(), true);const response = await fetch("https://api.novafisko.com/v1/companies/XBVD5O1L29HC/entries/invoice", {
method: "POST",
headers: {
"Accept": "application/json",
"Authorization": `Bearer ${process.env.NOVAFISKO_TOKEN}`,
"Content-Type": "application/json",
"X-Client-Mutation-Id": "b0a6f6f0-7d1c-4c5e-8a55-3f2b1c9d0e11",
},
body: JSON.stringify({
"journal_id": 1,
"third_party_id": 18,
"entry_date": "2026-03-15",
"due_date": "2026-04-14",
"reference": "F-2026-0412",
"lines": [
{
"account": "604000",
"amount": "507.00",
"vat_code": "A21",
"label": "Fûts Bush Caractère 20 L"
},
{
"account": "613200",
"amount": "35.00",
"vat_code": "A21",
"label": "Consigne et transport"
}
]
}),
});
if (!response.ok) {
const error = await response.json();
throw new Error(error.code ?? error.message);
}
const data = response.status === 204 ? null : await response.json();import os
import requests
response = requests.post(
"https://api.novafisko.com/v1/companies/XBVD5O1L29HC/entries/invoice",
headers={
"Accept": "application/json",
"Authorization": f"Bearer {os.environ['NOVAFISKO_TOKEN']}",
"X-Client-Mutation-Id": "b0a6f6f0-7d1c-4c5e-8a55-3f2b1c9d0e11",
},
json={
"journal_id": 1,
"third_party_id": 18,
"entry_date": "2026-03-15",
"due_date": "2026-04-14",
"reference": "F-2026-0412",
"lines": [
{
"account": "604000",
"amount": "507.00",
"vat_code": "A21",
"label": "Fûts Bush Caractère 20 L"
},
{
"account": "613200",
"amount": "35.00",
"vat_code": "A21",
"label": "Consigne et transport"
}
]
},
timeout=30,
)
response.raise_for_status()
data = response.json() if response.content else NoneGET/v1/companies/{company}/entries/{journalEntry}Entry read
With journal, third party, fiscal year, period and lines (account and VAT code).
Integration tokens need the read ability.
Operatie-id companies.entries.show
Padparameters
| Naam | Type | Beschrijving |
|---|---|---|
company verplicht | string | Public token of the company file (public_token, 12 characters).bv. XBVD5O1L29HC |
journalEntry verplicht | integer | Id of the journal entry. bv. 1284 |
Gemeenschappelijke headers: Accept-Language
Antwoorden
200OK
application/json
Schema JournalEntry
Voorbeeld
{
"id": 1284,
"company_id": 7,
"fiscal_year_id": 2,
"period_id": 16,
"journal_id": 1,
"number": 412,
"entry_date": "2026-03-15T00:00:00.000000Z",
"due_date": "2026-04-14T00:00:00.000000Z",
"label": "Facture Brasserie Dubuisson SA",
"reference": "F-2026-0412",
"structured_communication": null,
"third_party_id": 18,
"status": "posted",
"origin": "manual",
"created_by": 12,
"posted_at": "2026-03-16T08:12:40.000000Z",
"reversed_entry_id": null,
"reversed_by_entry_id": null,
"recurring_entry_id": null,
"created_at": "2026-03-16T08:12:40.000000Z",
"updated_at": "2026-03-16T08:12:40.000000Z",
"lock_version": 1,
"version": 1,
"lines": [
{
"id": 3391,
"journal_entry_id": 1284,
"position": 1,
"account_id": 361,
"third_party_id": null,
"label": "Fûts Bush Caractère 20 L",
"debit": "507.00",
"credit": "0.00",
"vat_code_id": 25,
"vat_base": "507.00",
"reconciliation_code": null,
"cost_center_id": null,
"project_id": null,
"reminder_level": 0,
"reminder_sent_at": null,
"account": {
"id": 361,
"number": "604000",
"label": "Achats de marchandises"
}
},
{
"id": 3392,
"journal_entry_id": 1284,
"position": 2,
"account_id": 384,
"third_party_id": null,
"label": "Consigne et transport",
"debit": "35.00",
"credit": "0.00",
"vat_code_id": 25,
"vat_base": "35.00",
"reconciliation_code": null,
"cost_center_id": null,
"project_id": null,
"reminder_level": 0,
"reminder_sent_at": null,
"account": {
"id": 384,
"number": "613200",
"label": "Transports et déplacements"
}
},
{
"id": 3393,
"journal_entry_id": 1284,
"position": 3,
"account_id": 234,
"third_party_id": null,
"label": "TVA déductible",
"debit": "113.82",
"credit": "0.00",
"vat_code_id": null,
"vat_base": null,
"reconciliation_code": null,
"cost_center_id": null,
"project_id": null,
"reminder_level": 0,
"reminder_sent_at": null,
"account": {
"id": 234,
"number": "411100",
"label": "TVA déductible sur achats"
}
},
{
"id": 3394,
"journal_entry_id": 1284,
"position": 4,
"account_id": 263,
"third_party_id": 18,
"label": "Brasserie Dubuisson SA",
"debit": "0.00",
"credit": "655.82",
"vat_code_id": null,
"vat_base": null,
"reconciliation_code": null,
"cost_center_id": null,
"project_id": null,
"reminder_level": 0,
"reminder_sent_at": null,
"account": {
"id": 263,
"number": "440000",
"label": "Fournisseurs"
}
}
]
}token_ability_missing, session_token_required), demo restriction (demo_mode) or invalid URL signature. ErrorVoorbeeldaanroep
curl -X GET "https://api.novafisko.com/v1/companies/XBVD5O1L29HC/entries/1284" \
-H "Accept: application/json" \
-H "Authorization: Bearer $NOVAFISKO_TOKEN"<?php
$client = new \GuzzleHttp\Client();
$response = $client->request('GET', 'https://api.novafisko.com/v1/companies/XBVD5O1L29HC/entries/1284', [
'headers' => [
'Accept' => 'application/json',
'Authorization' => 'Bearer '.getenv('NOVAFISKO_TOKEN'),
],
]);
$data = json_decode((string) $response->getBody(), true);const response = await fetch("https://api.novafisko.com/v1/companies/XBVD5O1L29HC/entries/1284", {
method: "GET",
headers: {
"Accept": "application/json",
"Authorization": `Bearer ${process.env.NOVAFISKO_TOKEN}`,
},
});
if (!response.ok) {
const error = await response.json();
throw new Error(error.code ?? error.message);
}
const data = response.status === 204 ? null : await response.json();import os
import requests
response = requests.get(
"https://api.novafisko.com/v1/companies/XBVD5O1L29HC/entries/1284",
headers={
"Accept": "application/json",
"Authorization": f"Bearer {os.environ['NOVAFISKO_TOKEN']}",
},
timeout=30,
)
response.raise_for_status()
data = response.json() if response.content else NoneDELETE/v1/companies/{company}/entries/{journalEntry}Delete an entry write
Always refused (422) for a posted entry: numbering is continuous and the audit trail is kept. Use reverse. In a locked period the refusal carries period_locked.
Integration tokens need the write ability.
Error codes (code):
period_locked: the period is locked or the fiscal year is closed;reasontells which (period_lockedorfiscal_year_closed)
Operatie-id companies.entries.destroy
Padparameters
| Naam | Type | Beschrijving |
|---|---|---|
company verplicht | string | Public token of the company file (public_token, 12 characters).bv. XBVD5O1L29HC |
journalEntry verplicht | integer | Id of the journal entry. bv. 1284 |
Gemeenschappelijke headers: Accept-Language X-Client-Mutation-Id X-Operation-Id X-Device-Id X-Device-Name X-Occurred-At X-Origin X-Base-Version
Antwoorden
204Done, no body.
Antwoordheaders X-Operation-Id X-Idempotent-Replay X-Trashed
token_ability_missing, session_token_required), demo restriction (demo_mode) or invalid URL signature. ErrorX-Base-Version. Nothing was modified. VersionConflictcode: period_locked, with reason). PeriodLockedErrorVoorbeeldaanroep
curl -X DELETE "https://api.novafisko.com/v1/companies/XBVD5O1L29HC/entries/1284" \
-H "Accept: application/json" \
-H "Authorization: Bearer $NOVAFISKO_TOKEN" \
-H "X-Client-Mutation-Id: b0a6f6f0-7d1c-4c5e-8a55-3f2b1c9d0e11"<?php
$client = new \GuzzleHttp\Client();
$response = $client->request('DELETE', 'https://api.novafisko.com/v1/companies/XBVD5O1L29HC/entries/1284', [
'headers' => [
'Accept' => 'application/json',
'Authorization' => 'Bearer '.getenv('NOVAFISKO_TOKEN'),
'X-Client-Mutation-Id' => 'b0a6f6f0-7d1c-4c5e-8a55-3f2b1c9d0e11',
],
]);
$data = json_decode((string) $response->getBody(), true);const response = await fetch("https://api.novafisko.com/v1/companies/XBVD5O1L29HC/entries/1284", {
method: "DELETE",
headers: {
"Accept": "application/json",
"Authorization": `Bearer ${process.env.NOVAFISKO_TOKEN}`,
"X-Client-Mutation-Id": "b0a6f6f0-7d1c-4c5e-8a55-3f2b1c9d0e11",
},
});
if (!response.ok) {
const error = await response.json();
throw new Error(error.code ?? error.message);
}
const data = response.status === 204 ? null : await response.json();import os
import requests
response = requests.delete(
"https://api.novafisko.com/v1/companies/XBVD5O1L29HC/entries/1284",
headers={
"Accept": "application/json",
"Authorization": f"Bearer {os.environ['NOVAFISKO_TOKEN']}",
"X-Client-Mutation-Id": "b0a6f6f0-7d1c-4c5e-8a55-3f2b1c9d0e11",
},
timeout=30,
)
response.raise_for_status()
data = response.json() if response.content else NonePOST/v1/companies/{company}/entries/{journalEntry}/reverseReverse an entry write
Posts the mirror entry (« Extourne de VEN 2026/000412 ») linked to the original, which becomes reversed. The linked document or bank transaction goes back to pending, letterings of the lines are removed and a depreciation line goes back to planned.
Integration tokens need the write ability.
Error codes (code):
period_locked: the period is locked or the fiscal year is closed;reasontells which (period_lockedorfiscal_year_closed)
Operatie-id companies.entries.reverse
Padparameters
| Naam | Type | Beschrijving |
|---|---|---|
company verplicht | string | Public token of the company file (public_token, 12 characters).bv. XBVD5O1L29HC |
journalEntry verplicht | integer | Id of the journal entry. bv. 1284 |
Gemeenschappelijke headers: Accept-Language X-Client-Mutation-Id X-Operation-Id X-Device-Id X-Device-Name X-Occurred-At X-Origin
Body van de aanvraag optioneel
application/json
Schema object
entry_datestring <date> | nullDate of the reversal; the original date by default.labelstring | null
Voorbeeld
{
"entry_date": "2026-03-31"
}Antwoorden
201Reversal entry
Antwoordheaders X-Operation-Id X-Idempotent-Replay
application/json
Schema JournalEntry
Voorbeeld
{
"id": 1284,
"company_id": 7,
"fiscal_year_id": 2,
"period_id": 16,
"journal_id": 3,
"number": 412,
"entry_date": "2026-03-15T00:00:00.000000Z",
"due_date": "2026-03-15T09:41:00+00:00",
"label": "Facture Brasserie Dubuisson SA",
"reference": "F-2026-0412",
"structured_communication": "000000000101",
"third_party_id": 18,
"status": "posted",
"origin": "manual",
"created_by": 1,
"posted_at": "2026-03-15T09:41:00+00:00",
"reversed_entry_id": 42,
"reversed_by_entry_id": 42,
"recurring_entry_id": 42,
"created_at": "2026-03-15T09:41:00+00:00",
"updated_at": "2026-03-15T09:41:00+00:00",
"lock_version": 3,
"version": 3,
"journal": {
"id": 3,
"code": "VEN",
"type": "sale"
},
"third_party": {
"id": 18,
"name": "Brasserie Dubuisson SA"
},
"lines": [
{
"id": 3391,
"journal_entry_id": 1284,
"position": 1,
"account_id": 580,
"third_party_id": 18,
"label": "Brasserie Dubuisson SA",
"debit": "0.00",
"credit": "1000.00",
"vat_code_id": 4,
"vat_base": "1000.00",
"reconciliation_code": "AB",
"cost_center_id": 42,
"project_id": 42,
"reminder_level": 0,
"reminder_sent_at": "2026-03-15T09:41:00+00:00",
"account": {
"id": 580,
"number": "702000",
"label": "Prestations de services"
},
"vat_code": {}
}
]
}token_ability_missing, session_token_required), demo restriction (demo_mode) or invalid URL signature. Errorcode: period_locked, with reason). PeriodLockedErrorVoorbeeldaanroep
curl -X POST "https://api.novafisko.com/v1/companies/XBVD5O1L29HC/entries/1284/reverse" \
-H "Accept: application/json" \
-H "Authorization: Bearer $NOVAFISKO_TOKEN" \
-H "Content-Type: application/json" \
-H "X-Client-Mutation-Id: b0a6f6f0-7d1c-4c5e-8a55-3f2b1c9d0e11" \
-d '{
"entry_date": "2026-03-31"
}'<?php
$client = new \GuzzleHttp\Client();
$response = $client->request('POST', 'https://api.novafisko.com/v1/companies/XBVD5O1L29HC/entries/1284/reverse', [
'headers' => [
'Accept' => 'application/json',
'Authorization' => 'Bearer '.getenv('NOVAFISKO_TOKEN'),
'X-Client-Mutation-Id' => 'b0a6f6f0-7d1c-4c5e-8a55-3f2b1c9d0e11',
],
'json' => [
'entry_date' => '2026-03-31',
],
]);
$data = json_decode((string) $response->getBody(), true);const response = await fetch("https://api.novafisko.com/v1/companies/XBVD5O1L29HC/entries/1284/reverse", {
method: "POST",
headers: {
"Accept": "application/json",
"Authorization": `Bearer ${process.env.NOVAFISKO_TOKEN}`,
"Content-Type": "application/json",
"X-Client-Mutation-Id": "b0a6f6f0-7d1c-4c5e-8a55-3f2b1c9d0e11",
},
body: JSON.stringify({
"entry_date": "2026-03-31"
}),
});
if (!response.ok) {
const error = await response.json();
throw new Error(error.code ?? error.message);
}
const data = response.status === 204 ? null : await response.json();import os
import requests
response = requests.post(
"https://api.novafisko.com/v1/companies/XBVD5O1L29HC/entries/1284/reverse",
headers={
"Accept": "application/json",
"Authorization": f"Bearer {os.environ['NOVAFISKO_TOKEN']}",
"X-Client-Mutation-Id": "b0a6f6f0-7d1c-4c5e-8a55-3f2b1c9d0e11",
},
json={
"entry_date": "2026-03-31"
},
timeout=30,
)
response.raise_for_status()
data = response.json() if response.content else NoneRecurring entries
Recurring entry templates and the quality checks of the file.
GET/v1/companies/{company}/recurring-entriesList the recurring entries read
Integration tokens need the read ability.
Operatie-id companies.recurring.index
Padparameters
| Naam | Type | Beschrijving |
|---|---|---|
company verplicht | string | Public token of the company file (public_token, 12 characters).bv. XBVD5O1L29HC |
Gemeenschappelijke headers: Accept-Language
Antwoorden
200OK
application/json
Schema RecurringEntry[]
Array van RecurringEntry
Voorbeeld
[
{
"id": 5,
"company_id": 7,
"journal_id": 5,
"label": "Loyer mensuel",
"reference": "F-2026-0412",
"third_party_id": 18,
"frequency": "monthly",
"next_date": "2026-04-01T00:00:00.000000Z",
"end_date": "2026-03-15T09:41:00+00:00",
"lines": [
{
"account_id": 368,
"debit": "1500.00",
"credit": "0.00",
"label": "Facture Brasserie Dubuisson",
"third_party_id": 18
}
],
"is_active": true,
"last_generated_on": "2026-03-15",
"generated_count": 3,
"created_at": "2026-03-15T09:41:00+00:00",
"updated_at": "2026-03-15T09:41:00+00:00",
"lock_version": 3,
"version": 3,
"deleted_at": "2026-03-15T09:41:00+00:00",
"deleted_by": 1,
"journal": {
"id": 42,
"code": "OD",
"label": "Opérations diverses"
},
"third_party": {}
}
]token_ability_missing, session_token_required), demo restriction (demo_mode) or invalid URL signature. ErrorVoorbeeldaanroep
curl -X GET "https://api.novafisko.com/v1/companies/XBVD5O1L29HC/recurring-entries" \
-H "Accept: application/json" \
-H "Authorization: Bearer $NOVAFISKO_TOKEN"<?php
$client = new \GuzzleHttp\Client();
$response = $client->request('GET', 'https://api.novafisko.com/v1/companies/XBVD5O1L29HC/recurring-entries', [
'headers' => [
'Accept' => 'application/json',
'Authorization' => 'Bearer '.getenv('NOVAFISKO_TOKEN'),
],
]);
$data = json_decode((string) $response->getBody(), true);const response = await fetch("https://api.novafisko.com/v1/companies/XBVD5O1L29HC/recurring-entries", {
method: "GET",
headers: {
"Accept": "application/json",
"Authorization": `Bearer ${process.env.NOVAFISKO_TOKEN}`,
},
});
if (!response.ok) {
const error = await response.json();
throw new Error(error.code ?? error.message);
}
const data = response.status === 204 ? null : await response.json();import os
import requests
response = requests.get(
"https://api.novafisko.com/v1/companies/XBVD5O1L29HC/recurring-entries",
headers={
"Accept": "application/json",
"Authorization": f"Bearer {os.environ['NOVAFISKO_TOKEN']}",
},
timeout=30,
)
response.raise_for_status()
data = response.json() if response.content else NonePOST/v1/companies/{company}/recurring-entriesCreate a recurring entry write
Template posted automatically every night once next_date is reached (or on demand with generate).
Integration tokens need the write ability.
Operatie-id companies.recurring.store
Padparameters
| Naam | Type | Beschrijving |
|---|---|---|
company verplicht | string | Public token of the company file (public_token, 12 characters).bv. XBVD5O1L29HC |
Gemeenschappelijke headers: Accept-Language X-Client-Mutation-Id X-Operation-Id X-Device-Id X-Device-Name X-Occurred-At X-Origin
Body van de aanvraag
application/json
Schema object
journal_idintegerverplichtlabelstringverplichtreferencestring | nullthird_party_idinteger | nullfrequencystringverplichtmonthlyquarterlyyearlynext_datestring <date>verplichtend_datestring <date> | nullis_activebooleanlinesobject[]verplichtEigenschappen
account_idintegerverplichtPostable account.debitstring | nullDecimal.creditstring | nullDecimal.labelstring | nullthird_party_idinteger | null
Voorbeeld
{
"journal_id": 5,
"label": "Loyer mensuel",
"frequency": "monthly",
"next_date": "2026-04-01",
"lines": [
{
"account_id": 368,
"debit": "1500.00"
},
{
"account_id": 263,
"credit": "1500.00",
"third_party_id": 22
}
]
}Antwoorden
201Created
Antwoordheaders X-Operation-Id X-Idempotent-Replay
application/json
Schema RecurringEntry
Voorbeeld
{
"id": 5,
"company_id": 7,
"journal_id": 5,
"label": "Loyer mensuel",
"reference": "F-2026-0412",
"third_party_id": 18,
"frequency": "monthly",
"next_date": "2026-04-01T00:00:00.000000Z",
"end_date": "2026-03-15T09:41:00+00:00",
"lines": [
{
"account_id": 368,
"debit": "1500.00",
"credit": "0.00",
"label": "Facture Brasserie Dubuisson",
"third_party_id": 18
}
],
"is_active": true,
"last_generated_on": "2026-03-15",
"generated_count": 3,
"created_at": "2026-03-15T09:41:00+00:00",
"updated_at": "2026-03-15T09:41:00+00:00",
"lock_version": 3,
"version": 3,
"deleted_at": "2026-03-15T09:41:00+00:00",
"deleted_by": 1,
"journal": {
"id": 42,
"code": "OD",
"label": "Opérations diverses"
},
"third_party": {}
}token_ability_missing, session_token_required), demo restriction (demo_mode) or invalid URL signature. Errorerrors maps each field to its messages; code is present when the refusal has a machine reason. ErrorVoorbeeldaanroep
curl -X POST "https://api.novafisko.com/v1/companies/XBVD5O1L29HC/recurring-entries" \
-H "Accept: application/json" \
-H "Authorization: Bearer $NOVAFISKO_TOKEN" \
-H "Content-Type: application/json" \
-H "X-Client-Mutation-Id: b0a6f6f0-7d1c-4c5e-8a55-3f2b1c9d0e11" \
-d '{
"journal_id": 5,
"label": "Loyer mensuel",
"frequency": "monthly",
"next_date": "2026-04-01",
"lines": [
{
"account_id": 368,
"debit": "1500.00"
},
{
"account_id": 263,
"credit": "1500.00",
"third_party_id": 22
}
]
}'<?php
$client = new \GuzzleHttp\Client();
$response = $client->request('POST', 'https://api.novafisko.com/v1/companies/XBVD5O1L29HC/recurring-entries', [
'headers' => [
'Accept' => 'application/json',
'Authorization' => 'Bearer '.getenv('NOVAFISKO_TOKEN'),
'X-Client-Mutation-Id' => 'b0a6f6f0-7d1c-4c5e-8a55-3f2b1c9d0e11',
],
'json' => [
'journal_id' => 5,
'label' => 'Loyer mensuel',
'frequency' => 'monthly',
'next_date' => '2026-04-01',
'lines' => [
[
'account_id' => 368,
'debit' => '1500.00',
],
[
'account_id' => 263,
'credit' => '1500.00',
'third_party_id' => 22,
],
],
],
]);
$data = json_decode((string) $response->getBody(), true);const response = await fetch("https://api.novafisko.com/v1/companies/XBVD5O1L29HC/recurring-entries", {
method: "POST",
headers: {
"Accept": "application/json",
"Authorization": `Bearer ${process.env.NOVAFISKO_TOKEN}`,
"Content-Type": "application/json",
"X-Client-Mutation-Id": "b0a6f6f0-7d1c-4c5e-8a55-3f2b1c9d0e11",
},
body: JSON.stringify({
"journal_id": 5,
"label": "Loyer mensuel",
"frequency": "monthly",
"next_date": "2026-04-01",
"lines": [
{
"account_id": 368,
"debit": "1500.00"
},
{
"account_id": 263,
"credit": "1500.00",
"third_party_id": 22
}
]
}),
});
if (!response.ok) {
const error = await response.json();
throw new Error(error.code ?? error.message);
}
const data = response.status === 204 ? null : await response.json();import os
import requests
response = requests.post(
"https://api.novafisko.com/v1/companies/XBVD5O1L29HC/recurring-entries",
headers={
"Accept": "application/json",
"Authorization": f"Bearer {os.environ['NOVAFISKO_TOKEN']}",
"X-Client-Mutation-Id": "b0a6f6f0-7d1c-4c5e-8a55-3f2b1c9d0e11",
},
json={
"journal_id": 5,
"label": "Loyer mensuel",
"frequency": "monthly",
"next_date": "2026-04-01",
"lines": [
{
"account_id": 368,
"debit": "1500.00"
},
{
"account_id": 263,
"credit": "1500.00",
"third_party_id": 22
}
]
},
timeout=30,
)
response.raise_for_status()
data = response.json() if response.content else NonePOST/v1/companies/{company}/recurring-entries/generateGenerate every due entry write
Integration tokens need the write ability.
Error codes (code):
period_locked: the period is locked or the fiscal year is closed;reasontells which (period_lockedorfiscal_year_closed)
Operatie-id companies.recurring.generate-all
Padparameters
| Naam | Type | Beschrijving |
|---|---|---|
company verplicht | string | Public token of the company file (public_token, 12 characters).bv. XBVD5O1L29HC |
Gemeenschappelijke headers: Accept-Language X-Client-Mutation-Id X-Operation-Id X-Device-Id X-Device-Name X-Occurred-At X-Origin
Antwoorden
200OK
Antwoordheaders X-Operation-Id X-Idempotent-Replay
application/json
Schema object
generatedintegerbv.2entriesobject[]Eigenschappen
idintegerreferencestringbv.OD 2026/000031entry_datestring <date>
Voorbeeld
{
"generated": 2,
"entries": [
{
"id": 42,
"reference": "OD 2026/000031",
"entry_date": "2026-03-15"
}
]
}token_ability_missing, session_token_required), demo restriction (demo_mode) or invalid URL signature. Errorcode: period_locked, with reason). PeriodLockedErrorVoorbeeldaanroep
curl -X POST "https://api.novafisko.com/v1/companies/XBVD5O1L29HC/recurring-entries/generate" \
-H "Accept: application/json" \
-H "Authorization: Bearer $NOVAFISKO_TOKEN" \
-H "X-Client-Mutation-Id: b0a6f6f0-7d1c-4c5e-8a55-3f2b1c9d0e11"<?php
$client = new \GuzzleHttp\Client();
$response = $client->request('POST', 'https://api.novafisko.com/v1/companies/XBVD5O1L29HC/recurring-entries/generate', [
'headers' => [
'Accept' => 'application/json',
'Authorization' => 'Bearer '.getenv('NOVAFISKO_TOKEN'),
'X-Client-Mutation-Id' => 'b0a6f6f0-7d1c-4c5e-8a55-3f2b1c9d0e11',
],
]);
$data = json_decode((string) $response->getBody(), true);const response = await fetch("https://api.novafisko.com/v1/companies/XBVD5O1L29HC/recurring-entries/generate", {
method: "POST",
headers: {
"Accept": "application/json",
"Authorization": `Bearer ${process.env.NOVAFISKO_TOKEN}`,
"X-Client-Mutation-Id": "b0a6f6f0-7d1c-4c5e-8a55-3f2b1c9d0e11",
},
});
if (!response.ok) {
const error = await response.json();
throw new Error(error.code ?? error.message);
}
const data = response.status === 204 ? null : await response.json();import os
import requests
response = requests.post(
"https://api.novafisko.com/v1/companies/XBVD5O1L29HC/recurring-entries/generate",
headers={
"Accept": "application/json",
"Authorization": f"Bearer {os.environ['NOVAFISKO_TOKEN']}",
"X-Client-Mutation-Id": "b0a6f6f0-7d1c-4c5e-8a55-3f2b1c9d0e11",
},
timeout=30,
)
response.raise_for_status()
data = response.json() if response.content else NonePATCH/v1/companies/{company}/recurring-entries/{recurringEntry}Update a recurring entry write
Integration tokens need the write ability.
Operatie-id companies.recurring.update
Padparameters
| Naam | Type | Beschrijving |
|---|---|---|
company verplicht | string | Public token of the company file (public_token, 12 characters).bv. XBVD5O1L29HC |
recurringEntry verplicht | integer | Id of the recurring entry template. bv. 5 |
Gemeenschappelijke headers: Accept-Language X-Client-Mutation-Id X-Operation-Id X-Device-Id X-Device-Name X-Occurred-At X-Origin X-Base-Version
Body van de aanvraag
application/json
Schema object
journal_idintegerlabelstringreferencestring | nullthird_party_idinteger | nullfrequencystringmonthlyquarterlyyearlynext_datestring <date>end_datestring <date> | nullis_activebooleanlinesobject[]Eigenschappen
account_idintegerverplichtPostable account.debitstring | nullDecimal.creditstring | nullDecimal.labelstring | nullthird_party_idinteger | null
Voorbeeld
{
"is_active": false
}Antwoorden
200OK
Antwoordheaders X-Operation-Id X-Idempotent-Replay
application/json
Schema RecurringEntry
Voorbeeld
{
"id": 5,
"company_id": 7,
"journal_id": 5,
"label": "Loyer mensuel",
"reference": "F-2026-0412",
"third_party_id": 18,
"frequency": "monthly",
"next_date": "2026-04-01T00:00:00.000000Z",
"end_date": "2026-03-15T09:41:00+00:00",
"lines": [
{
"account_id": 368,
"debit": "1500.00",
"credit": "0.00",
"label": "Facture Brasserie Dubuisson",
"third_party_id": 18
}
],
"is_active": true,
"last_generated_on": "2026-03-15",
"generated_count": 3,
"created_at": "2026-03-15T09:41:00+00:00",
"updated_at": "2026-03-15T09:41:00+00:00",
"lock_version": 3,
"version": 3,
"deleted_at": "2026-03-15T09:41:00+00:00",
"deleted_by": 1,
"journal": {
"id": 42,
"code": "OD",
"label": "Opérations diverses"
},
"third_party": {}
}token_ability_missing, session_token_required), demo restriction (demo_mode) or invalid URL signature. ErrorX-Base-Version. Nothing was modified. VersionConflicterrors maps each field to its messages; code is present when the refusal has a machine reason. ErrorVoorbeeldaanroep
curl -X PATCH "https://api.novafisko.com/v1/companies/XBVD5O1L29HC/recurring-entries/5" \
-H "Accept: application/json" \
-H "Authorization: Bearer $NOVAFISKO_TOKEN" \
-H "Content-Type: application/json" \
-H "X-Client-Mutation-Id: b0a6f6f0-7d1c-4c5e-8a55-3f2b1c9d0e11" \
-d '{
"is_active": false
}'<?php
$client = new \GuzzleHttp\Client();
$response = $client->request('PATCH', 'https://api.novafisko.com/v1/companies/XBVD5O1L29HC/recurring-entries/5', [
'headers' => [
'Accept' => 'application/json',
'Authorization' => 'Bearer '.getenv('NOVAFISKO_TOKEN'),
'X-Client-Mutation-Id' => 'b0a6f6f0-7d1c-4c5e-8a55-3f2b1c9d0e11',
],
'json' => [
'is_active' => false,
],
]);
$data = json_decode((string) $response->getBody(), true);const response = await fetch("https://api.novafisko.com/v1/companies/XBVD5O1L29HC/recurring-entries/5", {
method: "PATCH",
headers: {
"Accept": "application/json",
"Authorization": `Bearer ${process.env.NOVAFISKO_TOKEN}`,
"Content-Type": "application/json",
"X-Client-Mutation-Id": "b0a6f6f0-7d1c-4c5e-8a55-3f2b1c9d0e11",
},
body: JSON.stringify({
"is_active": false
}),
});
if (!response.ok) {
const error = await response.json();
throw new Error(error.code ?? error.message);
}
const data = response.status === 204 ? null : await response.json();import os
import requests
response = requests.patch(
"https://api.novafisko.com/v1/companies/XBVD5O1L29HC/recurring-entries/5",
headers={
"Accept": "application/json",
"Authorization": f"Bearer {os.environ['NOVAFISKO_TOKEN']}",
"X-Client-Mutation-Id": "b0a6f6f0-7d1c-4c5e-8a55-3f2b1c9d0e11",
},
json={
"is_active": False
},
timeout=30,
)
response.raise_for_status()
data = response.json() if response.content else NoneDELETE/v1/companies/{company}/recurring-entries/{recurringEntry}Delete a recurring entry write
Integration tokens need the write ability.
Operatie-id companies.recurring.destroy
Padparameters
| Naam | Type | Beschrijving |
|---|---|---|
company verplicht | string | Public token of the company file (public_token, 12 characters).bv. XBVD5O1L29HC |
recurringEntry verplicht | integer | Id of the recurring entry template. bv. 5 |
Gemeenschappelijke headers: Accept-Language X-Client-Mutation-Id X-Operation-Id X-Device-Id X-Device-Name X-Occurred-At X-Origin X-Base-Version
Antwoorden
204Done, no body.
Antwoordheaders X-Operation-Id X-Idempotent-Replay X-Trashed
token_ability_missing, session_token_required), demo restriction (demo_mode) or invalid URL signature. ErrorX-Base-Version. Nothing was modified. VersionConflictVoorbeeldaanroep
curl -X DELETE "https://api.novafisko.com/v1/companies/XBVD5O1L29HC/recurring-entries/5" \
-H "Accept: application/json" \
-H "Authorization: Bearer $NOVAFISKO_TOKEN" \
-H "X-Client-Mutation-Id: b0a6f6f0-7d1c-4c5e-8a55-3f2b1c9d0e11"<?php
$client = new \GuzzleHttp\Client();
$response = $client->request('DELETE', 'https://api.novafisko.com/v1/companies/XBVD5O1L29HC/recurring-entries/5', [
'headers' => [
'Accept' => 'application/json',
'Authorization' => 'Bearer '.getenv('NOVAFISKO_TOKEN'),
'X-Client-Mutation-Id' => 'b0a6f6f0-7d1c-4c5e-8a55-3f2b1c9d0e11',
],
]);
$data = json_decode((string) $response->getBody(), true);const response = await fetch("https://api.novafisko.com/v1/companies/XBVD5O1L29HC/recurring-entries/5", {
method: "DELETE",
headers: {
"Accept": "application/json",
"Authorization": `Bearer ${process.env.NOVAFISKO_TOKEN}`,
"X-Client-Mutation-Id": "b0a6f6f0-7d1c-4c5e-8a55-3f2b1c9d0e11",
},
});
if (!response.ok) {
const error = await response.json();
throw new Error(error.code ?? error.message);
}
const data = response.status === 204 ? null : await response.json();import os
import requests
response = requests.delete(
"https://api.novafisko.com/v1/companies/XBVD5O1L29HC/recurring-entries/5",
headers={
"Accept": "application/json",
"Authorization": f"Bearer {os.environ['NOVAFISKO_TOKEN']}",
"X-Client-Mutation-Id": "b0a6f6f0-7d1c-4c5e-8a55-3f2b1c9d0e11",
},
timeout=30,
)
response.raise_for_status()
data = response.json() if response.content else NonePOST/v1/companies/{company}/recurring-entries/{recurringEntry}/generateGenerate the due entries of one template write
Integration tokens need the write ability.
Error codes (code):
period_locked: the period is locked or the fiscal year is closed;reasontells which (period_lockedorfiscal_year_closed)
Operatie-id companies.recurring.generate
Padparameters
| Naam | Type | Beschrijving |
|---|---|---|
company verplicht | string | Public token of the company file (public_token, 12 characters).bv. XBVD5O1L29HC |
recurringEntry verplicht | integer | Id of the recurring entry template. bv. 5 |
Gemeenschappelijke headers: Accept-Language X-Client-Mutation-Id X-Operation-Id X-Device-Id X-Device-Name X-Occurred-At X-Origin
Antwoorden
200OK
Antwoordheaders X-Operation-Id X-Idempotent-Replay
application/json
Schema object
generatedintegerbv.1entriesobject[]Eigenschappen
idintegerreferencestringbv.OD 2026/000031entry_datestring <date>
Voorbeeld
{
"generated": 1,
"entries": [
{
"id": 42,
"reference": "OD 2026/000031",
"entry_date": "2026-03-15"
}
]
}token_ability_missing, session_token_required), demo restriction (demo_mode) or invalid URL signature. Errorcode: period_locked, with reason). PeriodLockedErrorVoorbeeldaanroep
curl -X POST "https://api.novafisko.com/v1/companies/XBVD5O1L29HC/recurring-entries/5/generate" \
-H "Accept: application/json" \
-H "Authorization: Bearer $NOVAFISKO_TOKEN" \
-H "X-Client-Mutation-Id: b0a6f6f0-7d1c-4c5e-8a55-3f2b1c9d0e11"<?php
$client = new \GuzzleHttp\Client();
$response = $client->request('POST', 'https://api.novafisko.com/v1/companies/XBVD5O1L29HC/recurring-entries/5/generate', [
'headers' => [
'Accept' => 'application/json',
'Authorization' => 'Bearer '.getenv('NOVAFISKO_TOKEN'),
'X-Client-Mutation-Id' => 'b0a6f6f0-7d1c-4c5e-8a55-3f2b1c9d0e11',
],
]);
$data = json_decode((string) $response->getBody(), true);const response = await fetch("https://api.novafisko.com/v1/companies/XBVD5O1L29HC/recurring-entries/5/generate", {
method: "POST",
headers: {
"Accept": "application/json",
"Authorization": `Bearer ${process.env.NOVAFISKO_TOKEN}`,
"X-Client-Mutation-Id": "b0a6f6f0-7d1c-4c5e-8a55-3f2b1c9d0e11",
},
});
if (!response.ok) {
const error = await response.json();
throw new Error(error.code ?? error.message);
}
const data = response.status === 204 ? null : await response.json();import os
import requests
response = requests.post(
"https://api.novafisko.com/v1/companies/XBVD5O1L29HC/recurring-entries/5/generate",
headers={
"Accept": "application/json",
"Authorization": f"Bearer {os.environ['NOVAFISKO_TOKEN']}",
"X-Client-Mutation-Id": "b0a6f6f0-7d1c-4c5e-8a55-3f2b1c9d0e11",
},
timeout=30,
)
response.raise_for_status()
data = response.json() if response.content else NoneGET/v1/companies/{company}/qualityQuality checks read
Continuous control of the file: documents and bank transactions pending, unbalanced entries, missing numbers, third parties without VAT number, VAT declarations late…
Integration tokens need the read ability.
Padparameters
| Naam | Type | Beschrijving |
|---|---|---|
company verplicht | string | Public token of the company file (public_token, 12 characters).bv. XBVD5O1L29HC |
Gemeenschappelijke headers: Accept-Language
Antwoorden
200OK
application/json
Schema object
checked_atstring <date-time>scoreintegerChecks passed.bv.8totalintegerbv.10checksobject[]Eigenschappen
codestringbv.bank_pendingseveritystringokinfowarningerrorcountintegerbv.3detailobject | null
Voorbeeld
{
"checked_at": "2026-03-15T09:41:00+00:00",
"score": 8,
"total": 10,
"checks": [
{
"code": "bank_pending",
"severity": "ok",
"count": 3,
"detail": {}
}
]
}token_ability_missing, session_token_required), demo restriction (demo_mode) or invalid URL signature. ErrorVoorbeeldaanroep
curl -X GET "https://api.novafisko.com/v1/companies/XBVD5O1L29HC/quality" \
-H "Accept: application/json" \
-H "Authorization: Bearer $NOVAFISKO_TOKEN"<?php
$client = new \GuzzleHttp\Client();
$response = $client->request('GET', 'https://api.novafisko.com/v1/companies/XBVD5O1L29HC/quality', [
'headers' => [
'Accept' => 'application/json',
'Authorization' => 'Bearer '.getenv('NOVAFISKO_TOKEN'),
],
]);
$data = json_decode((string) $response->getBody(), true);const response = await fetch("https://api.novafisko.com/v1/companies/XBVD5O1L29HC/quality", {
method: "GET",
headers: {
"Accept": "application/json",
"Authorization": `Bearer ${process.env.NOVAFISKO_TOKEN}`,
},
});
if (!response.ok) {
const error = await response.json();
throw new Error(error.code ?? error.message);
}
const data = response.status === 204 ? null : await response.json();import os
import requests
response = requests.get(
"https://api.novafisko.com/v1/companies/XBVD5O1L29HC/quality",
headers={
"Accept": "application/json",
"Authorization": f"Bearer {os.environ['NOVAFISKO_TOKEN']}",
},
timeout=30,
)
response.raise_for_status()
data = response.json() if response.content else NoneDocuments
Invoices and receipts of the file: allocation, booking.
GET/v1/companies/{company}/documentsList the documents read
Invoices, credit notes and receipts of the file (synchronised from Novadesko or created by the importer).
Integration tokens need the read ability.
Operatie-id companies.documents.index
Padparameters
| Naam | Type | Beschrijving |
|---|---|---|
company verplicht | string | Public token of the company file (public_token, 12 characters).bv. XBVD5O1L29HC |
Queryparameters
| Naam | Type | Beschrijving |
|---|---|---|
type | string | |
direction | string | sale purchase |
status | string | pending booked ignored |
from | string <date> | |
to | string <date> | |
q | string | Number, third party or subject. |
page | integer | Page number, starting at 1. bv. 1 |
per_page | integer | Items per page (default 50, maximum 200). bv. 50 |
Gemeenschappelijke headers: Accept-Language
Antwoorden
200Paginated list
application/json
Voorbeeld
{
"current_page": 1,
"data": [
{
"id": 87,
"company_id": 7,
"source": "novadesko",
"origin": "string",
"external_id": "string",
"type": "purchases",
"direction": "sale",
"is_credit_note": false,
"nature": "string",
"number": "F-2026-0412",
"payment_provider": "string",
"number_series": "TK",
"document_date": "2026-03-15T00:00:00.000000Z",
"due_date": "2026-03-15T09:41:00+00:00",
"subject": "Vos documents comptables",
"communication": "string",
"currency": "EUR",
"amount_net": "507.00",
"amount_vat": "106.47",
"amount_gross": "613.47",
"is_paid": true,
"third_party_id": 18,
"third_party_name": "Brasserie Dubuisson SA",
"third_party_vat": "string",
"pdf_url": "https://api.novafisko.com/v1/companies/XBVD5O1L29HC",
"xml_url": "https://api.novafisko.com/v1/companies/XBVD5O1L29HC",
"status": "pending",
"journal_entry_id": 1284,
"accountant_locked": true,
"novadesko_push_status": "string",
"novadesko_pushed_at": "2026-03-15T09:41:00+00:00",
"novadesko_push_error": "string",
"document_import_id": 42,
"synced_at": "2026-03-15T09:41:00+00:00",
"created_at": "2026-03-15T09:41:00+00:00",
"updated_at": "2026-03-15T09:41:00+00:00",
"lock_version": 3,
"version": 3,
"deleted_at": "2026-03-15T09:41:00+00:00",
"deleted_by": 1,
"third_party": {},
"lines": [
{}
],
"journal_entry": null
}
],
"first_page_url": "https://api.novafisko.com/v1/companies/XBVD5O1L29HC",
"from": 1,
"last_page": 4,
"last_page_url": "https://api.novafisko.com/v1/companies/XBVD5O1L29HC",
"links": [
{
"url": "https://api.novafisko.com/v1/companies/XBVD5O1L29HC",
"label": "1",
"page": 1,
"active": true
}
],
"next_page_url": "https://api.novafisko.com/v1/companies/XBVD5O1L29HC",
"path": "https://api.novafisko.com/v1/companies/XBVD5O1L29HC",
"per_page": 50,
"prev_page_url": "https://api.novafisko.com/v1/companies/XBVD5O1L29HC",
"to": 50,
"total": 187
}token_ability_missing, session_token_required), demo restriction (demo_mode) or invalid URL signature. ErrorVoorbeeldaanroep
curl -X GET "https://api.novafisko.com/v1/companies/XBVD5O1L29HC/documents" \
-H "Accept: application/json" \
-H "Authorization: Bearer $NOVAFISKO_TOKEN"<?php
$client = new \GuzzleHttp\Client();
$response = $client->request('GET', 'https://api.novafisko.com/v1/companies/XBVD5O1L29HC/documents', [
'headers' => [
'Accept' => 'application/json',
'Authorization' => 'Bearer '.getenv('NOVAFISKO_TOKEN'),
],
]);
$data = json_decode((string) $response->getBody(), true);const response = await fetch("https://api.novafisko.com/v1/companies/XBVD5O1L29HC/documents", {
method: "GET",
headers: {
"Accept": "application/json",
"Authorization": `Bearer ${process.env.NOVAFISKO_TOKEN}`,
},
});
if (!response.ok) {
const error = await response.json();
throw new Error(error.code ?? error.message);
}
const data = response.status === 204 ? null : await response.json();import os
import requests
response = requests.get(
"https://api.novafisko.com/v1/companies/XBVD5O1L29HC/documents",
headers={
"Accept": "application/json",
"Authorization": f"Bearer {os.environ['NOVAFISKO_TOKEN']}",
},
timeout=30,
)
response.raise_for_status()
data = response.json() if response.content else NonePOST/v1/companies/{company}/documents/book-allBook every pending document write 5 / 1 min
Books what can be booked; the others stay pending with the reason (a locked period is reported per document in skipped_documents).
Integration tokens need the write ability.
Rate limit: 5 requests per minute (429 beyond, see Retry-After).
Error codes (code):
period_locked: the period is locked or the fiscal year is closed;reasontells which (period_lockedorfiscal_year_closed)
Operatie-id companies.documents.book-all
Padparameters
| Naam | Type | Beschrijving |
|---|---|---|
company verplicht | string | Public token of the company file (public_token, 12 characters).bv. XBVD5O1L29HC |
Queryparameters
| Naam | Type | Beschrijving |
|---|---|---|
type | string | |
direction | string | sale purchase |
Gemeenschappelijke headers: Accept-Language X-Client-Mutation-Id X-Operation-Id X-Device-Id X-Device-Name X-Occurred-At X-Origin
Antwoorden
200OK
Antwoordheaders X-Operation-Id X-Idempotent-Replay X-RateLimit-Limit X-RateLimit-Remaining
application/json
Schema object
bookedintegerbv.42skippedintegerbv.3skipped_documentsobject[]Eigenschappen
idintegernumberstring | nullthird_partystring | nullreasonstringbv.Aucun compte d'imputation sur la ligne 2.
Voorbeeld
{
"booked": 42,
"skipped": 3,
"skipped_documents": [
{
"id": 42,
"number": "string",
"third_party": "string",
"reason": "Aucun compte d'imputation sur la ligne 2."
}
]
}token_ability_missing, session_token_required), demo restriction (demo_mode) or invalid URL signature. Errorcode: period_locked, with reason). PeriodLockedErrorVoorbeeldaanroep
curl -X POST "https://api.novafisko.com/v1/companies/XBVD5O1L29HC/documents/book-all" \
-H "Accept: application/json" \
-H "Authorization: Bearer $NOVAFISKO_TOKEN" \
-H "X-Client-Mutation-Id: b0a6f6f0-7d1c-4c5e-8a55-3f2b1c9d0e11"<?php
$client = new \GuzzleHttp\Client();
$response = $client->request('POST', 'https://api.novafisko.com/v1/companies/XBVD5O1L29HC/documents/book-all', [
'headers' => [
'Accept' => 'application/json',
'Authorization' => 'Bearer '.getenv('NOVAFISKO_TOKEN'),
'X-Client-Mutation-Id' => 'b0a6f6f0-7d1c-4c5e-8a55-3f2b1c9d0e11',
],
]);
$data = json_decode((string) $response->getBody(), true);const response = await fetch("https://api.novafisko.com/v1/companies/XBVD5O1L29HC/documents/book-all", {
method: "POST",
headers: {
"Accept": "application/json",
"Authorization": `Bearer ${process.env.NOVAFISKO_TOKEN}`,
"X-Client-Mutation-Id": "b0a6f6f0-7d1c-4c5e-8a55-3f2b1c9d0e11",
},
});
if (!response.ok) {
const error = await response.json();
throw new Error(error.code ?? error.message);
}
const data = response.status === 204 ? null : await response.json();import os
import requests
response = requests.post(
"https://api.novafisko.com/v1/companies/XBVD5O1L29HC/documents/book-all",
headers={
"Accept": "application/json",
"Authorization": f"Bearer {os.environ['NOVAFISKO_TOKEN']}",
"X-Client-Mutation-Id": "b0a6f6f0-7d1c-4c5e-8a55-3f2b1c9d0e11",
},
timeout=30,
)
response.raise_for_status()
data = response.json() if response.content else NoneGET/v1/companies/{company}/documents/{importedDocument}Document read
With its lines (recorded and actual accounts) and the entry it was booked to.
Integration tokens need the read ability.
Operatie-id companies.documents.show
Padparameters
| Naam | Type | Beschrijving |
|---|---|---|
company verplicht | string | Public token of the company file (public_token, 12 characters).bv. XBVD5O1L29HC |
importedDocument verplicht | integer | Id of the document. bv. 87 |
Gemeenschappelijke headers: Accept-Language
Antwoorden
200OK
application/json
Schema ImportedDocument
Voorbeeld
{
"id": 87,
"company_id": 7,
"source": "novadesko",
"origin": "string",
"external_id": "string",
"type": "purchases",
"direction": "sale",
"is_credit_note": false,
"nature": "string",
"number": "F-2026-0412",
"payment_provider": "string",
"number_series": "TK",
"document_date": "2026-03-15T00:00:00.000000Z",
"due_date": "2026-03-15T09:41:00+00:00",
"subject": "Vos documents comptables",
"communication": "string",
"currency": "EUR",
"amount_net": "507.00",
"amount_vat": "106.47",
"amount_gross": "613.47",
"is_paid": true,
"third_party_id": 18,
"third_party_name": "Brasserie Dubuisson SA",
"third_party_vat": "string",
"pdf_url": "https://api.novafisko.com/v1/companies/XBVD5O1L29HC",
"xml_url": "https://api.novafisko.com/v1/companies/XBVD5O1L29HC",
"status": "pending",
"journal_entry_id": 1284,
"accountant_locked": true,
"novadesko_push_status": "string",
"novadesko_pushed_at": "2026-03-15T09:41:00+00:00",
"novadesko_push_error": "string",
"document_import_id": 42,
"synced_at": "2026-03-15T09:41:00+00:00",
"created_at": "2026-03-15T09:41:00+00:00",
"updated_at": "2026-03-15T09:41:00+00:00",
"lock_version": 3,
"version": 3,
"deleted_at": "2026-03-15T09:41:00+00:00",
"deleted_by": 1,
"third_party": {},
"lines": [
{
"id": 640,
"imported_document_id": 87,
"external_id": "string",
"position": 1,
"description": "Fûts Bush Caractère 20 L",
"quantity": "6.000",
"unit_price": "84.5000",
"discount_pct": "1210.00",
"tax_rate": "21.00",
"amount_net": "507.00",
"amount_vat": "106.47",
"recorded_account_number": "604000",
"recorded_account_id": 42,
"actual_account_id": 42,
"vat_code_id": 4,
"purchase_category": "string",
"corrected_at": "2026-03-15T09:41:00+00:00",
"corrected_by": 1,
"correction_pushed": true,
"recorded_account": {},
"actual_account": {},
"vat_code": {}
}
],
"journal_entry": {
"id": 1284,
"company_id": 7,
"fiscal_year_id": 2,
"period_id": 16,
"journal_id": 3,
"number": 412,
"entry_date": "2026-03-15T00:00:00.000000Z",
"due_date": "2026-03-15T09:41:00+00:00",
"label": "Facture Brasserie Dubuisson SA",
"reference": "F-2026-0412",
"structured_communication": "000000000101",
"third_party_id": 18,
"status": "posted",
"origin": "manual",
"created_by": 1,
"posted_at": "2026-03-15T09:41:00+00:00",
"reversed_entry_id": 42,
"reversed_by_entry_id": 42,
"recurring_entry_id": 42,
"created_at": "2026-03-15T09:41:00+00:00",
"updated_at": "2026-03-15T09:41:00+00:00",
"lock_version": 3,
"version": 3,
"journal": {
"id": 3,
"code": "VEN",
"type": "sale"
},
"third_party": {
"id": 18,
"name": "Brasserie Dubuisson SA"
},
"lines": [
{}
]
}
}token_ability_missing, session_token_required), demo restriction (demo_mode) or invalid URL signature. ErrorVoorbeeldaanroep
curl -X GET "https://api.novafisko.com/v1/companies/XBVD5O1L29HC/documents/87" \
-H "Accept: application/json" \
-H "Authorization: Bearer $NOVAFISKO_TOKEN"<?php
$client = new \GuzzleHttp\Client();
$response = $client->request('GET', 'https://api.novafisko.com/v1/companies/XBVD5O1L29HC/documents/87', [
'headers' => [
'Accept' => 'application/json',
'Authorization' => 'Bearer '.getenv('NOVAFISKO_TOKEN'),
],
]);
$data = json_decode((string) $response->getBody(), true);const response = await fetch("https://api.novafisko.com/v1/companies/XBVD5O1L29HC/documents/87", {
method: "GET",
headers: {
"Accept": "application/json",
"Authorization": `Bearer ${process.env.NOVAFISKO_TOKEN}`,
},
});
if (!response.ok) {
const error = await response.json();
throw new Error(error.code ?? error.message);
}
const data = response.status === 204 ? null : await response.json();import os
import requests
response = requests.get(
"https://api.novafisko.com/v1/companies/XBVD5O1L29HC/documents/87",
headers={
"Accept": "application/json",
"Authorization": f"Bearer {os.environ['NOVAFISKO_TOKEN']}",
},
timeout=30,
)
response.raise_for_status()
data = response.json() if response.content else NonePATCH/v1/companies/{company}/documents/{importedDocument}/lines/{line}Correct the allocation of a line write
Sets the account chosen by the accountant (« actual » layer); account_id: null goes back to the recorded account.
Integration tokens need the write ability.
Operatie-id companies.documents.lines.update
Padparameters
| Naam | Type | Beschrijving |
|---|---|---|
company verplicht | string | Public token of the company file (public_token, 12 characters).bv. XBVD5O1L29HC |
importedDocument verplicht | integer | Id of the document. bv. 87 |
line verplicht | integer | Id of the line. bv. 3391 |
Gemeenschappelijke headers: Accept-Language X-Client-Mutation-Id X-Operation-Id X-Device-Id X-Device-Name X-Occurred-At X-Origin X-Base-Version
Body van de aanvraag
application/json
Schema object
account_idinteger | nullPostable account.vat_code_idinteger | null
Voorbeeld
{
"account_id": 361
}Antwoorden
200OK
Antwoordheaders X-Operation-Id X-Idempotent-Replay
application/json
Schema ImportedDocumentLine
Voorbeeld
{
"id": 640,
"imported_document_id": 87,
"external_id": "string",
"position": 1,
"description": "Fûts Bush Caractère 20 L",
"quantity": "6.000",
"unit_price": "84.5000",
"discount_pct": "1210.00",
"tax_rate": "21.00",
"amount_net": "507.00",
"amount_vat": "106.47",
"recorded_account_number": "604000",
"recorded_account_id": 42,
"actual_account_id": 42,
"vat_code_id": 4,
"purchase_category": "string",
"corrected_at": "2026-03-15T09:41:00+00:00",
"corrected_by": 1,
"correction_pushed": true,
"recorded_account": {},
"actual_account": {},
"vat_code": {}
}token_ability_missing, session_token_required), demo restriction (demo_mode) or invalid URL signature. ErrorX-Base-Version. Nothing was modified. VersionConflicterrors maps each field to its messages; code is present when the refusal has a machine reason. ErrorVoorbeeldaanroep
curl -X PATCH "https://api.novafisko.com/v1/companies/XBVD5O1L29HC/documents/87/lines/3391" \
-H "Accept: application/json" \
-H "Authorization: Bearer $NOVAFISKO_TOKEN" \
-H "Content-Type: application/json" \
-H "X-Client-Mutation-Id: b0a6f6f0-7d1c-4c5e-8a55-3f2b1c9d0e11" \
-d '{
"account_id": 361
}'<?php
$client = new \GuzzleHttp\Client();
$response = $client->request('PATCH', 'https://api.novafisko.com/v1/companies/XBVD5O1L29HC/documents/87/lines/3391', [
'headers' => [
'Accept' => 'application/json',
'Authorization' => 'Bearer '.getenv('NOVAFISKO_TOKEN'),
'X-Client-Mutation-Id' => 'b0a6f6f0-7d1c-4c5e-8a55-3f2b1c9d0e11',
],
'json' => [
'account_id' => 361,
],
]);
$data = json_decode((string) $response->getBody(), true);const response = await fetch("https://api.novafisko.com/v1/companies/XBVD5O1L29HC/documents/87/lines/3391", {
method: "PATCH",
headers: {
"Accept": "application/json",
"Authorization": `Bearer ${process.env.NOVAFISKO_TOKEN}`,
"Content-Type": "application/json",
"X-Client-Mutation-Id": "b0a6f6f0-7d1c-4c5e-8a55-3f2b1c9d0e11",
},
body: JSON.stringify({
"account_id": 361
}),
});
if (!response.ok) {
const error = await response.json();
throw new Error(error.code ?? error.message);
}
const data = response.status === 204 ? null : await response.json();import os
import requests
response = requests.patch(
"https://api.novafisko.com/v1/companies/XBVD5O1L29HC/documents/87/lines/3391",
headers={
"Accept": "application/json",
"Authorization": f"Bearer {os.environ['NOVAFISKO_TOKEN']}",
"X-Client-Mutation-Id": "b0a6f6f0-7d1c-4c5e-8a55-3f2b1c9d0e11",
},
json={
"account_id": 361
},
timeout=30,
)
response.raise_for_status()
data = response.json() if response.content else NonePOST/v1/companies/{company}/documents/{importedDocument}/bookBook a document write
Posts the entry of the document in the journal resolved by the journal rules.
Integration tokens need the write ability.
Error codes (code):
period_locked: the period is locked or the fiscal year is closed;reasontells which (period_lockedorfiscal_year_closed)
Operatie-id companies.documents.book
Padparameters
| Naam | Type | Beschrijving |
|---|---|---|
company verplicht | string | Public token of the company file (public_token, 12 characters).bv. XBVD5O1L29HC |
importedDocument verplicht | integer | Id of the document. bv. 87 |
Gemeenschappelijke headers: Accept-Language X-Client-Mutation-Id X-Operation-Id X-Device-Id X-Device-Name X-Occurred-At X-Origin
Antwoorden
201Booked, with journal_entry
Antwoordheaders X-Operation-Id X-Idempotent-Replay
application/json
Schema ImportedDocument
Voorbeeld
{
"id": 87,
"company_id": 7,
"source": "novadesko",
"origin": "string",
"external_id": "string",
"type": "purchases",
"direction": "sale",
"is_credit_note": false,
"nature": "string",
"number": "F-2026-0412",
"payment_provider": "string",
"number_series": "TK",
"document_date": "2026-03-15T00:00:00.000000Z",
"due_date": "2026-03-15T09:41:00+00:00",
"subject": "Vos documents comptables",
"communication": "string",
"currency": "EUR",
"amount_net": "507.00",
"amount_vat": "106.47",
"amount_gross": "613.47",
"is_paid": true,
"third_party_id": 18,
"third_party_name": "Brasserie Dubuisson SA",
"third_party_vat": "string",
"pdf_url": "https://api.novafisko.com/v1/companies/XBVD5O1L29HC",
"xml_url": "https://api.novafisko.com/v1/companies/XBVD5O1L29HC",
"status": "pending",
"journal_entry_id": 1284,
"accountant_locked": true,
"novadesko_push_status": "string",
"novadesko_pushed_at": "2026-03-15T09:41:00+00:00",
"novadesko_push_error": "string",
"document_import_id": 42,
"synced_at": "2026-03-15T09:41:00+00:00",
"created_at": "2026-03-15T09:41:00+00:00",
"updated_at": "2026-03-15T09:41:00+00:00",
"lock_version": 3,
"version": 3,
"deleted_at": "2026-03-15T09:41:00+00:00",
"deleted_by": 1,
"third_party": {},
"lines": [
{
"id": 640,
"imported_document_id": 87,
"external_id": "string",
"position": 1,
"description": "Fûts Bush Caractère 20 L",
"quantity": "6.000",
"unit_price": "84.5000",
"discount_pct": "1210.00",
"tax_rate": "21.00",
"amount_net": "507.00",
"amount_vat": "106.47",
"recorded_account_number": "604000",
"recorded_account_id": 42,
"actual_account_id": 42,
"vat_code_id": 4,
"purchase_category": "string",
"corrected_at": "2026-03-15T09:41:00+00:00",
"corrected_by": 1,
"correction_pushed": true,
"recorded_account": {},
"actual_account": {},
"vat_code": {}
}
],
"journal_entry": {
"id": 1284,
"company_id": 7,
"fiscal_year_id": 2,
"period_id": 16,
"journal_id": 3,
"number": 412,
"entry_date": "2026-03-15T00:00:00.000000Z",
"due_date": "2026-03-15T09:41:00+00:00",
"label": "Facture Brasserie Dubuisson SA",
"reference": "F-2026-0412",
"structured_communication": "000000000101",
"third_party_id": 18,
"status": "posted",
"origin": "manual",
"created_by": 1,
"posted_at": "2026-03-15T09:41:00+00:00",
"reversed_entry_id": 42,
"reversed_by_entry_id": 42,
"recurring_entry_id": 42,
"created_at": "2026-03-15T09:41:00+00:00",
"updated_at": "2026-03-15T09:41:00+00:00",
"lock_version": 3,
"version": 3,
"journal": {
"id": 3,
"code": "VEN",
"type": "sale"
},
"third_party": {
"id": 18,
"name": "Brasserie Dubuisson SA"
},
"lines": [
{}
]
}
}token_ability_missing, session_token_required), demo restriction (demo_mode) or invalid URL signature. Errorcode: period_locked, with reason). PeriodLockedErrorVoorbeeldaanroep
curl -X POST "https://api.novafisko.com/v1/companies/XBVD5O1L29HC/documents/87/book" \
-H "Accept: application/json" \
-H "Authorization: Bearer $NOVAFISKO_TOKEN" \
-H "X-Client-Mutation-Id: b0a6f6f0-7d1c-4c5e-8a55-3f2b1c9d0e11"<?php
$client = new \GuzzleHttp\Client();
$response = $client->request('POST', 'https://api.novafisko.com/v1/companies/XBVD5O1L29HC/documents/87/book', [
'headers' => [
'Accept' => 'application/json',
'Authorization' => 'Bearer '.getenv('NOVAFISKO_TOKEN'),
'X-Client-Mutation-Id' => 'b0a6f6f0-7d1c-4c5e-8a55-3f2b1c9d0e11',
],
]);
$data = json_decode((string) $response->getBody(), true);const response = await fetch("https://api.novafisko.com/v1/companies/XBVD5O1L29HC/documents/87/book", {
method: "POST",
headers: {
"Accept": "application/json",
"Authorization": `Bearer ${process.env.NOVAFISKO_TOKEN}`,
"X-Client-Mutation-Id": "b0a6f6f0-7d1c-4c5e-8a55-3f2b1c9d0e11",
},
});
if (!response.ok) {
const error = await response.json();
throw new Error(error.code ?? error.message);
}
const data = response.status === 204 ? null : await response.json();import os
import requests
response = requests.post(
"https://api.novafisko.com/v1/companies/XBVD5O1L29HC/documents/87/book",
headers={
"Accept": "application/json",
"Authorization": f"Bearer {os.environ['NOVAFISKO_TOKEN']}",
"X-Client-Mutation-Id": "b0a6f6f0-7d1c-4c5e-8a55-3f2b1c9d0e11",
},
timeout=30,
)
response.raise_for_status()
data = response.json() if response.content else NonePOST/v1/companies/{company}/documents/{importedDocument}/ignoreIgnore or restore a document write
An ignored document is left out of the booking; restore: true puts it back to pending. Refused for a booked document.
Integration tokens need the write ability.
Operatie-id companies.documents.ignore
Padparameters
| Naam | Type | Beschrijving |
|---|---|---|
company verplicht | string | Public token of the company file (public_token, 12 characters).bv. XBVD5O1L29HC |
importedDocument verplicht | integer | Id of the document. bv. 87 |
Gemeenschappelijke headers: Accept-Language X-Client-Mutation-Id X-Operation-Id X-Device-Id X-Device-Name X-Occurred-At X-Origin
Body van de aanvraag optioneel
application/json
Schema object
restoreboolean
Voorbeeld
{
"restore": false
}Antwoorden
200OK
Antwoordheaders X-Operation-Id X-Idempotent-Replay
application/json
Schema ImportedDocument
Voorbeeld
{
"id": 87,
"company_id": 7,
"source": "novadesko",
"origin": "string",
"external_id": "string",
"type": "purchases",
"direction": "sale",
"is_credit_note": false,
"nature": "string",
"number": "F-2026-0412",
"payment_provider": "string",
"number_series": "TK",
"document_date": "2026-03-15T00:00:00.000000Z",
"due_date": "2026-03-15T09:41:00+00:00",
"subject": "Vos documents comptables",
"communication": "string",
"currency": "EUR",
"amount_net": "507.00",
"amount_vat": "106.47",
"amount_gross": "613.47",
"is_paid": true,
"third_party_id": 18,
"third_party_name": "Brasserie Dubuisson SA",
"third_party_vat": "string",
"pdf_url": "https://api.novafisko.com/v1/companies/XBVD5O1L29HC",
"xml_url": "https://api.novafisko.com/v1/companies/XBVD5O1L29HC",
"status": "pending",
"journal_entry_id": 1284,
"accountant_locked": true,
"novadesko_push_status": "string",
"novadesko_pushed_at": "2026-03-15T09:41:00+00:00",
"novadesko_push_error": "string",
"document_import_id": 42,
"synced_at": "2026-03-15T09:41:00+00:00",
"created_at": "2026-03-15T09:41:00+00:00",
"updated_at": "2026-03-15T09:41:00+00:00",
"lock_version": 3,
"version": 3,
"deleted_at": "2026-03-15T09:41:00+00:00",
"deleted_by": 1,
"third_party": {},
"lines": [
{
"id": 640,
"imported_document_id": 87,
"external_id": "string",
"position": 1,
"description": "Fûts Bush Caractère 20 L",
"quantity": "6.000",
"unit_price": "84.5000",
"discount_pct": "1210.00",
"tax_rate": "21.00",
"amount_net": "507.00",
"amount_vat": "106.47",
"recorded_account_number": "604000",
"recorded_account_id": 42,
"actual_account_id": 42,
"vat_code_id": 4,
"purchase_category": "string",
"corrected_at": "2026-03-15T09:41:00+00:00",
"corrected_by": 1,
"correction_pushed": true,
"recorded_account": {},
"actual_account": {},
"vat_code": {}
}
],
"journal_entry": {
"id": 1284,
"company_id": 7,
"fiscal_year_id": 2,
"period_id": 16,
"journal_id": 3,
"number": 412,
"entry_date": "2026-03-15T00:00:00.000000Z",
"due_date": "2026-03-15T09:41:00+00:00",
"label": "Facture Brasserie Dubuisson SA",
"reference": "F-2026-0412",
"structured_communication": "000000000101",
"third_party_id": 18,
"status": "posted",
"origin": "manual",
"created_by": 1,
"posted_at": "2026-03-15T09:41:00+00:00",
"reversed_entry_id": 42,
"reversed_by_entry_id": 42,
"recurring_entry_id": 42,
"created_at": "2026-03-15T09:41:00+00:00",
"updated_at": "2026-03-15T09:41:00+00:00",
"lock_version": 3,
"version": 3,
"journal": {
"id": 3,
"code": "VEN",
"type": "sale"
},
"third_party": {
"id": 18,
"name": "Brasserie Dubuisson SA"
},
"lines": [
{}
]
}
}token_ability_missing, session_token_required), demo restriction (demo_mode) or invalid URL signature. Errorerrors maps each field to its messages; code is present when the refusal has a machine reason. ErrorVoorbeeldaanroep
curl -X POST "https://api.novafisko.com/v1/companies/XBVD5O1L29HC/documents/87/ignore" \
-H "Accept: application/json" \
-H "Authorization: Bearer $NOVAFISKO_TOKEN" \
-H "Content-Type: application/json" \
-H "X-Client-Mutation-Id: b0a6f6f0-7d1c-4c5e-8a55-3f2b1c9d0e11" \
-d '{
"restore": false
}'<?php
$client = new \GuzzleHttp\Client();
$response = $client->request('POST', 'https://api.novafisko.com/v1/companies/XBVD5O1L29HC/documents/87/ignore', [
'headers' => [
'Accept' => 'application/json',
'Authorization' => 'Bearer '.getenv('NOVAFISKO_TOKEN'),
'X-Client-Mutation-Id' => 'b0a6f6f0-7d1c-4c5e-8a55-3f2b1c9d0e11',
],
'json' => [
'restore' => false,
],
]);
$data = json_decode((string) $response->getBody(), true);const response = await fetch("https://api.novafisko.com/v1/companies/XBVD5O1L29HC/documents/87/ignore", {
method: "POST",
headers: {
"Accept": "application/json",
"Authorization": `Bearer ${process.env.NOVAFISKO_TOKEN}`,
"Content-Type": "application/json",
"X-Client-Mutation-Id": "b0a6f6f0-7d1c-4c5e-8a55-3f2b1c9d0e11",
},
body: JSON.stringify({
"restore": false
}),
});
if (!response.ok) {
const error = await response.json();
throw new Error(error.code ?? error.message);
}
const data = response.status === 204 ? null : await response.json();import os
import requests
response = requests.post(
"https://api.novafisko.com/v1/companies/XBVD5O1L29HC/documents/87/ignore",
headers={
"Accept": "application/json",
"Authorization": f"Bearer {os.environ['NOVAFISKO_TOKEN']}",
"X-Client-Mutation-Id": "b0a6f6f0-7d1c-4c5e-8a55-3f2b1c9d0e11",
},
json={
"restore": False
},
timeout=30,
)
response.raise_for_status()
data = response.json() if response.content else NoneDocument importer
Upload of PDF, images, UBL / CII XML and ZIP files, analysis, validation.
GET/v1/companies/{company}/document-importsList the imports read
Polling list of the uploaded files, without raw_text.
Integration tokens need the read ability.
Operatie-id companies.document-imports.index
Padparameters
| Naam | Type | Beschrijving |
|---|---|---|
company verplicht | string | Public token of the company file (public_token, 12 characters).bv. XBVD5O1L29HC |
Queryparameters
| Naam | Type | Beschrijving |
|---|---|---|
batch_id | string <uuid> | |
status | string | Comma-separated statuses. bv. ready,needs_review |
page | integer | Page number, starting at 1. bv. 1 |
per_page | integer | Items per page (default 50, maximum 200). bv. 50 |
Gemeenschappelijke headers: Accept-Language
Antwoorden
200Paginated list
application/json
Voorbeeld
{
"current_page": 1,
"data": [
{
"id": 311,
"company_id": 7,
"uploaded_by": 1,
"batch_id": "bf413a19-2136-4504-bc42-b314637eb5c7",
"parent_import_id": 42,
"original_name": "facture-dubuisson-0412.pdf",
"mime": "application/pdf",
"size": 184320,
"file_hash": "string",
"kind": "pdf",
"status": "queued",
"progress": 100,
"step": "upload",
"engine": "api",
"extracted": null,
"raw_text": "string",
"warnings": [
"string"
],
"error": "string",
"suggested_third_party_id": 42,
"suggested_direction": "string",
"duplicate_of_import_id": 42,
"duplicate_of_document_id": 42,
"imported_document_id": 42,
"novadesko_document_id": "string",
"novadesko_locked_at": "2026-03-15T09:41:00+00:00",
"started_at": "2026-03-15T09:41:00+00:00",
"finished_at": "2026-03-15T09:41:00+00:00",
"created_at": "2026-03-15T09:41:00+00:00",
"updated_at": "2026-03-15T09:41:00+00:00",
"lock_version": 3,
"version": 3,
"deleted_at": "2026-03-15T09:41:00+00:00",
"deleted_by": 1,
"suggested_third_party": {}
}
],
"first_page_url": "https://api.novafisko.com/v1/companies/XBVD5O1L29HC",
"from": 1,
"last_page": 4,
"last_page_url": "https://api.novafisko.com/v1/companies/XBVD5O1L29HC",
"links": [
{
"url": "https://api.novafisko.com/v1/companies/XBVD5O1L29HC",
"label": "1",
"page": 1,
"active": true
}
],
"next_page_url": "https://api.novafisko.com/v1/companies/XBVD5O1L29HC",
"path": "https://api.novafisko.com/v1/companies/XBVD5O1L29HC",
"per_page": 50,
"prev_page_url": "https://api.novafisko.com/v1/companies/XBVD5O1L29HC",
"to": 50,
"total": 187
}token_ability_missing, session_token_required), demo restriction (demo_mode) or invalid URL signature. ErrorVoorbeeldaanroep
curl -X GET "https://api.novafisko.com/v1/companies/XBVD5O1L29HC/document-imports" \
-H "Accept: application/json" \
-H "Authorization: Bearer $NOVAFISKO_TOKEN"<?php
$client = new \GuzzleHttp\Client();
$response = $client->request('GET', 'https://api.novafisko.com/v1/companies/XBVD5O1L29HC/document-imports', [
'headers' => [
'Accept' => 'application/json',
'Authorization' => 'Bearer '.getenv('NOVAFISKO_TOKEN'),
],
]);
$data = json_decode((string) $response->getBody(), true);const response = await fetch("https://api.novafisko.com/v1/companies/XBVD5O1L29HC/document-imports", {
method: "GET",
headers: {
"Accept": "application/json",
"Authorization": `Bearer ${process.env.NOVAFISKO_TOKEN}`,
},
});
if (!response.ok) {
const error = await response.json();
throw new Error(error.code ?? error.message);
}
const data = response.status === 204 ? null : await response.json();import os
import requests
response = requests.get(
"https://api.novafisko.com/v1/companies/XBVD5O1L29HC/document-imports",
headers={
"Accept": "application/json",
"Authorization": f"Bearer {os.environ['NOVAFISKO_TOKEN']}",
},
timeout=30,
)
response.raise_for_status()
data = response.json() if response.content else NonePOST/v1/companies/{company}/document-importsUpload files write Niet in demo 30 / 1 min
Multipart upload of 1 to 20 files, 25 MB each: PDF, images (JPEG, PNG, HEIC, WebP), UBL / CII XML, or a ZIP of those (50 files max, expanded into child imports). Files are stored and queued; call process for a synchronous analysis or let the scheduler analyse them within a minute.
Integration tokens need the write ability.
Not available in demo mode: answers 403 demo_mode.
Rate limit: 30 requests per minute (429 beyond, see Retry-After).
Operatie-id companies.document-imports.store
Padparameters
| Naam | Type | Beschrijving |
|---|---|---|
company verplicht | string | Public token of the company file (public_token, 12 characters).bv. XBVD5O1L29HC |
Gemeenschappelijke headers: Accept-Language X-Client-Mutation-Id X-Operation-Id X-Device-Id X-Device-Name X-Occurred-At X-Origin
Body van de aanvraag
multipart/form-data
Schema object
files[]string <binary>[]verplichtbatch_idstring <uuid>Reuse a batch to add files to it.
Antwoorden
201Files stored
Antwoordheaders X-Operation-Id X-Idempotent-Replay X-RateLimit-Limit X-RateLimit-Remaining
application/json
Schema object
batch_idstring <uuid>importsDocumentImport[]
Voorbeeld
{
"batch_id": "bf413a19-2136-4504-bc42-b314637eb5c7",
"imports": [
{
"id": 311,
"company_id": 7,
"uploaded_by": 1,
"batch_id": "bf413a19-2136-4504-bc42-b314637eb5c7",
"parent_import_id": 42,
"original_name": "facture-dubuisson-0412.pdf",
"mime": "application/pdf",
"size": 184320,
"file_hash": "string",
"kind": "pdf",
"status": "queued",
"progress": 100,
"step": "upload",
"engine": "api",
"extracted": null,
"raw_text": "string",
"warnings": [
"string"
],
"error": "string",
"suggested_third_party_id": 42,
"suggested_direction": "string",
"duplicate_of_import_id": 42,
"duplicate_of_document_id": 42,
"imported_document_id": 42,
"novadesko_document_id": "string",
"novadesko_locked_at": "2026-03-15T09:41:00+00:00",
"started_at": "2026-03-15T09:41:00+00:00",
"finished_at": "2026-03-15T09:41:00+00:00",
"created_at": "2026-03-15T09:41:00+00:00",
"updated_at": "2026-03-15T09:41:00+00:00",
"lock_version": 3,
"version": 3,
"deleted_at": "2026-03-15T09:41:00+00:00",
"deleted_by": 1,
"suggested_third_party": {}
}
]
}token_ability_missing, session_token_required), demo restriction (demo_mode) or invalid URL signature. Errorerrors maps each field to its messages; code is present when the refusal has a machine reason. ErrorVoorbeeldaanroep
curl -X POST "https://api.novafisko.com/v1/companies/XBVD5O1L29HC/document-imports" \
-H "Accept: application/json" \
-H "Authorization: Bearer $NOVAFISKO_TOKEN" \
-H "X-Client-Mutation-Id: b0a6f6f0-7d1c-4c5e-8a55-3f2b1c9d0e11" \
-F "files[]=@facture-0412.pdf" \
-F "files[]=@facture-0413.pdf"<?php
$client = new \GuzzleHttp\Client();
$response = $client->request('POST', 'https://api.novafisko.com/v1/companies/XBVD5O1L29HC/document-imports', [
'headers' => [
'Accept' => 'application/json',
'Authorization' => 'Bearer '.getenv('NOVAFISKO_TOKEN'),
'X-Client-Mutation-Id' => 'b0a6f6f0-7d1c-4c5e-8a55-3f2b1c9d0e11',
],
'multipart' => [
['name' => 'files[]', 'contents' => fopen('facture-0412.pdf', 'r'), 'filename' => 'facture-0412.pdf'],
],
]);
$data = json_decode((string) $response->getBody(), true);const form = new FormData();
form.append("files[]", fileInput.files[0]);
const response = await fetch("https://api.novafisko.com/v1/companies/XBVD5O1L29HC/document-imports", {
method: "POST",
headers: {
"Accept": "application/json",
"Authorization": `Bearer ${process.env.NOVAFISKO_TOKEN}`,
"X-Client-Mutation-Id": "b0a6f6f0-7d1c-4c5e-8a55-3f2b1c9d0e11",
},
body: form,
});
if (!response.ok) {
const error = await response.json();
throw new Error(error.code ?? error.message);
}
const data = response.status === 204 ? null : await response.json();import os
import requests
response = requests.post(
"https://api.novafisko.com/v1/companies/XBVD5O1L29HC/document-imports",
headers={
"Accept": "application/json",
"Authorization": f"Bearer {os.environ['NOVAFISKO_TOKEN']}",
"X-Client-Mutation-Id": "b0a6f6f0-7d1c-4c5e-8a55-3f2b1c9d0e11",
},
files=[("files[]", open("facture-0412.pdf", "rb"))],
timeout=30,
)
response.raise_for_status()
data = response.json() if response.content else NoneGET/v1/companies/{company}/document-imports/enginesAnalysis engines read
Engines able to read a document and whether each is configured.
Integration tokens need the read ability.
Operatie-id companies.document-imports.engines
Padparameters
| Naam | Type | Beschrijving |
|---|---|---|
company verplicht | string | Public token of the company file (public_token, 12 characters).bv. XBVD5O1L29HC |
Gemeenschappelijke headers: Accept-Language
Antwoorden
200OK
application/json
Schema object
enginesobject[]Eigenschappen
idstringbv.apiconfiguredboolean
Voorbeeld
{
"engines": [
{
"id": "api",
"configured": true
}
]
}token_ability_missing, session_token_required), demo restriction (demo_mode) or invalid URL signature. ErrorVoorbeeldaanroep
curl -X GET "https://api.novafisko.com/v1/companies/XBVD5O1L29HC/document-imports/engines" \
-H "Accept: application/json" \
-H "Authorization: Bearer $NOVAFISKO_TOKEN"<?php
$client = new \GuzzleHttp\Client();
$response = $client->request('GET', 'https://api.novafisko.com/v1/companies/XBVD5O1L29HC/document-imports/engines', [
'headers' => [
'Accept' => 'application/json',
'Authorization' => 'Bearer '.getenv('NOVAFISKO_TOKEN'),
],
]);
$data = json_decode((string) $response->getBody(), true);const response = await fetch("https://api.novafisko.com/v1/companies/XBVD5O1L29HC/document-imports/engines", {
method: "GET",
headers: {
"Accept": "application/json",
"Authorization": `Bearer ${process.env.NOVAFISKO_TOKEN}`,
},
});
if (!response.ok) {
const error = await response.json();
throw new Error(error.code ?? error.message);
}
const data = response.status === 204 ? null : await response.json();import os
import requests
response = requests.get(
"https://api.novafisko.com/v1/companies/XBVD5O1L29HC/document-imports/engines",
headers={
"Accept": "application/json",
"Authorization": f"Bearer {os.environ['NOVAFISKO_TOKEN']}",
},
timeout=30,
)
response.raise_for_status()
data = response.json() if response.content else NoneGET/v1/companies/{company}/document-imports/{documentImport}Import read
With the extracted data and the text layer.
Integration tokens need the read ability.
Operatie-id companies.document-imports.show
Padparameters
| Naam | Type | Beschrijving |
|---|---|---|
company verplicht | string | Public token of the company file (public_token, 12 characters).bv. XBVD5O1L29HC |
documentImport verplicht | integer | Id of the import (uploaded file). bv. 311 |
Gemeenschappelijke headers: Accept-Language
Antwoorden
200OK
application/json
Schema DocumentImport
Voorbeeld
{
"id": 311,
"company_id": 7,
"uploaded_by": 1,
"batch_id": "bf413a19-2136-4504-bc42-b314637eb5c7",
"parent_import_id": 42,
"original_name": "facture-dubuisson-0412.pdf",
"mime": "application/pdf",
"size": 184320,
"file_hash": "string",
"kind": "pdf",
"status": "queued",
"progress": 100,
"step": "upload",
"engine": "api",
"extracted": {
"direction": "purchase",
"is_credit_note": false,
"number": "F-2026-0412",
"document_date": "2026-03-15",
"due_date": "2026-03-15",
"currency": "EUR",
"supplier": {
"name": "Brasserie Dubuisson SA",
"vat_number": "BE0402531376",
"enterprise_number": "0477472701",
"address": "Grand-Place 14",
"postal_code": "7000",
"city": "Mons",
"country": "BE",
"iban": "BE68539007547034",
"email": "claire.dumont@fiduciaire-dumont.be"
},
"customer": {},
"amount_net": "507.00",
"amount_vat": "106.47",
"amount_gross": "613.47",
"structured_communication": "000000000101",
"confidence": 0.93,
"lines": [
{
"description": "Fûts Bush Caractère 20 L",
"quantity": 6,
"unit_price": 84.5,
"tax_rate": 21,
"amount_net": "507.00",
"amount_vat": "106.47",
"account_id": 580,
"account_number": "604000",
"vat_code_id": 4,
"vat_code": "A21"
}
]
},
"raw_text": "string",
"warnings": [
"string"
],
"error": "string",
"suggested_third_party_id": 42,
"suggested_direction": "string",
"duplicate_of_import_id": 42,
"duplicate_of_document_id": 42,
"imported_document_id": 42,
"novadesko_document_id": "string",
"novadesko_locked_at": "2026-03-15T09:41:00+00:00",
"started_at": "2026-03-15T09:41:00+00:00",
"finished_at": "2026-03-15T09:41:00+00:00",
"created_at": "2026-03-15T09:41:00+00:00",
"updated_at": "2026-03-15T09:41:00+00:00",
"lock_version": 3,
"version": 3,
"deleted_at": "2026-03-15T09:41:00+00:00",
"deleted_by": 1,
"suggested_third_party": {}
}token_ability_missing, session_token_required), demo restriction (demo_mode) or invalid URL signature. ErrorVoorbeeldaanroep
curl -X GET "https://api.novafisko.com/v1/companies/XBVD5O1L29HC/document-imports/311" \
-H "Accept: application/json" \
-H "Authorization: Bearer $NOVAFISKO_TOKEN"<?php
$client = new \GuzzleHttp\Client();
$response = $client->request('GET', 'https://api.novafisko.com/v1/companies/XBVD5O1L29HC/document-imports/311', [
'headers' => [
'Accept' => 'application/json',
'Authorization' => 'Bearer '.getenv('NOVAFISKO_TOKEN'),
],
]);
$data = json_decode((string) $response->getBody(), true);const response = await fetch("https://api.novafisko.com/v1/companies/XBVD5O1L29HC/document-imports/311", {
method: "GET",
headers: {
"Accept": "application/json",
"Authorization": `Bearer ${process.env.NOVAFISKO_TOKEN}`,
},
});
if (!response.ok) {
const error = await response.json();
throw new Error(error.code ?? error.message);
}
const data = response.status === 204 ? null : await response.json();import os
import requests
response = requests.get(
"https://api.novafisko.com/v1/companies/XBVD5O1L29HC/document-imports/311",
headers={
"Accept": "application/json",
"Authorization": f"Bearer {os.environ['NOVAFISKO_TOKEN']}",
},
timeout=30,
)
response.raise_for_status()
data = response.json() if response.content else NonePATCH/v1/companies/{company}/document-imports/{documentImport}Correct the extracted data write
Saves corrections without validating. Only for the statuses ready, needs_review and duplicate.
Integration tokens need the write ability.
Operatie-id companies.document-imports.update
Padparameters
| Naam | Type | Beschrijving |
|---|---|---|
company verplicht | string | Public token of the company file (public_token, 12 characters).bv. XBVD5O1L29HC |
documentImport verplicht | integer | Id of the import (uploaded file). bv. 311 |
Gemeenschappelijke headers: Accept-Language X-Client-Mutation-Id X-Operation-Id X-Device-Id X-Device-Name X-Occurred-At X-Origin X-Base-Version
Body van de aanvraag
application/json
Schema object
Voorbeeld
{
"extracted": {
"direction": "purchase",
"is_credit_note": false,
"number": "F-2026-0412",
"document_date": "2026-03-15",
"due_date": "2026-03-15",
"currency": "EUR",
"supplier": {
"name": "Brasserie Dubuisson SA",
"vat_number": "BE0402531376",
"enterprise_number": "0477472701",
"address": "Grand-Place 14",
"postal_code": "7000",
"city": "Mons",
"country": "BE",
"iban": "BE68539007547034",
"email": "claire.dumont@fiduciaire-dumont.be"
},
"customer": {},
"amount_net": "507.00",
"amount_vat": "106.47",
"amount_gross": "613.47",
"structured_communication": "000000000101",
"confidence": 0.93,
"lines": [
{
"description": "Fûts Bush Caractère 20 L",
"quantity": 6,
"unit_price": 84.5,
"tax_rate": 21,
"amount_net": "507.00",
"amount_vat": "106.47",
"account_id": 580,
"account_number": "604000",
"vat_code_id": 4,
"vat_code": "A21"
}
]
}
}Antwoorden
200OK
Antwoordheaders X-Operation-Id X-Idempotent-Replay
application/json
Schema DocumentImport
Voorbeeld
{
"id": 311,
"company_id": 7,
"uploaded_by": 1,
"batch_id": "bf413a19-2136-4504-bc42-b314637eb5c7",
"parent_import_id": 42,
"original_name": "facture-dubuisson-0412.pdf",
"mime": "application/pdf",
"size": 184320,
"file_hash": "string",
"kind": "pdf",
"status": "queued",
"progress": 100,
"step": "upload",
"engine": "api",
"extracted": {
"direction": "purchase",
"is_credit_note": false,
"number": "F-2026-0412",
"document_date": "2026-03-15",
"due_date": "2026-03-15",
"currency": "EUR",
"supplier": {
"name": "Brasserie Dubuisson SA",
"vat_number": "BE0402531376",
"enterprise_number": "0477472701",
"address": "Grand-Place 14",
"postal_code": "7000",
"city": "Mons",
"country": "BE",
"iban": "BE68539007547034",
"email": "claire.dumont@fiduciaire-dumont.be"
},
"customer": {},
"amount_net": "507.00",
"amount_vat": "106.47",
"amount_gross": "613.47",
"structured_communication": "000000000101",
"confidence": 0.93,
"lines": [
{
"description": "Fûts Bush Caractère 20 L",
"quantity": 6,
"unit_price": 84.5,
"tax_rate": 21,
"amount_net": "507.00",
"amount_vat": "106.47",
"account_id": 580,
"account_number": "604000",
"vat_code_id": 4,
"vat_code": "A21"
}
]
},
"raw_text": "string",
"warnings": [
"string"
],
"error": "string",
"suggested_third_party_id": 42,
"suggested_direction": "string",
"duplicate_of_import_id": 42,
"duplicate_of_document_id": 42,
"imported_document_id": 42,
"novadesko_document_id": "string",
"novadesko_locked_at": "2026-03-15T09:41:00+00:00",
"started_at": "2026-03-15T09:41:00+00:00",
"finished_at": "2026-03-15T09:41:00+00:00",
"created_at": "2026-03-15T09:41:00+00:00",
"updated_at": "2026-03-15T09:41:00+00:00",
"lock_version": 3,
"version": 3,
"deleted_at": "2026-03-15T09:41:00+00:00",
"deleted_by": 1,
"suggested_third_party": {}
}token_ability_missing, session_token_required), demo restriction (demo_mode) or invalid URL signature. ErrorX-Base-Version. Nothing was modified. VersionConflicterrors maps each field to its messages; code is present when the refusal has a machine reason. ErrorVoorbeeldaanroep
curl -X PATCH "https://api.novafisko.com/v1/companies/XBVD5O1L29HC/document-imports/311" \
-H "Accept: application/json" \
-H "Authorization: Bearer $NOVAFISKO_TOKEN" \
-H "Content-Type: application/json" \
-H "X-Client-Mutation-Id: b0a6f6f0-7d1c-4c5e-8a55-3f2b1c9d0e11" \
-d '{
"extracted": {
"direction": "purchase",
"is_credit_note": false,
"number": "F-2026-0412",
"document_date": "2026-03-15",
"due_date": "2026-03-15",
"currency": "EUR",
"supplier": {
"name": "Brasserie Dubuisson SA",
"vat_number": "BE0402531376",
"enterprise_number": "0477472701",
"address": "Grand-Place 14",
"postal_code": "7000",
"city": "Mons",
"country": "BE",
"iban": "BE68539007547034",
"email": "claire.dumont@fiduciaire-dumont.be"
},
"customer": {},
"amount_net": "507.00",
"amount_vat": "106.47",
"amount_gross": "613.47",
"structured_communication": "000000000101",
"confidence": 0.93,
"lines": [
{
"description": "Fûts Bush Caractère 20 L",
"quantity": 6,
"unit_price": 84.5,
"tax_rate": 21,
"amount_net": "507.00",
"amount_vat": "106.47",
"account_id": 580,
"account_number": "604000",
"vat_code_id": 4,
"vat_code": "A21"
}
]
}
}'<?php
$client = new \GuzzleHttp\Client();
$response = $client->request('PATCH', 'https://api.novafisko.com/v1/companies/XBVD5O1L29HC/document-imports/311', [
'headers' => [
'Accept' => 'application/json',
'Authorization' => 'Bearer '.getenv('NOVAFISKO_TOKEN'),
'X-Client-Mutation-Id' => 'b0a6f6f0-7d1c-4c5e-8a55-3f2b1c9d0e11',
],
'json' => [
'extracted' => [
'direction' => 'purchase',
'is_credit_note' => false,
'number' => 'F-2026-0412',
'document_date' => '2026-03-15',
'due_date' => '2026-03-15',
'currency' => 'EUR',
'supplier' => [
'name' => 'Brasserie Dubuisson SA',
'vat_number' => 'BE0402531376',
'enterprise_number' => '0477472701',
'address' => 'Grand-Place 14',
'postal_code' => '7000',
'city' => 'Mons',
'country' => 'BE',
'iban' => 'BE68539007547034',
'email' => 'claire.dumont@fiduciaire-dumont.be',
],
'customer' => [],
'amount_net' => '507.00',
'amount_vat' => '106.47',
'amount_gross' => '613.47',
'structured_communication' => '000000000101',
'confidence' => 0.93,
'lines' => [
[
'description' => 'Fûts Bush Caractère 20 L',
'quantity' => 6,
'unit_price' => 84.5,
'tax_rate' => 21,
'amount_net' => '507.00',
'amount_vat' => '106.47',
'account_id' => 580,
'account_number' => '604000',
'vat_code_id' => 4,
'vat_code' => 'A21',
],
],
],
],
]);
$data = json_decode((string) $response->getBody(), true);const response = await fetch("https://api.novafisko.com/v1/companies/XBVD5O1L29HC/document-imports/311", {
method: "PATCH",
headers: {
"Accept": "application/json",
"Authorization": `Bearer ${process.env.NOVAFISKO_TOKEN}`,
"Content-Type": "application/json",
"X-Client-Mutation-Id": "b0a6f6f0-7d1c-4c5e-8a55-3f2b1c9d0e11",
},
body: JSON.stringify({
"extracted": {
"direction": "purchase",
"is_credit_note": false,
"number": "F-2026-0412",
"document_date": "2026-03-15",
"due_date": "2026-03-15",
"currency": "EUR",
"supplier": {
"name": "Brasserie Dubuisson SA",
"vat_number": "BE0402531376",
"enterprise_number": "0477472701",
"address": "Grand-Place 14",
"postal_code": "7000",
"city": "Mons",
"country": "BE",
"iban": "BE68539007547034",
"email": "claire.dumont@fiduciaire-dumont.be"
},
"customer": {},
"amount_net": "507.00",
"amount_vat": "106.47",
"amount_gross": "613.47",
"structured_communication": "000000000101",
"confidence": 0.93,
"lines": [
{
"description": "Fûts Bush Caractère 20 L",
"quantity": 6,
"unit_price": 84.5,
"tax_rate": 21,
"amount_net": "507.00",
"amount_vat": "106.47",
"account_id": 580,
"account_number": "604000",
"vat_code_id": 4,
"vat_code": "A21"
}
]
}
}),
});
if (!response.ok) {
const error = await response.json();
throw new Error(error.code ?? error.message);
}
const data = response.status === 204 ? null : await response.json();import os
import requests
response = requests.patch(
"https://api.novafisko.com/v1/companies/XBVD5O1L29HC/document-imports/311",
headers={
"Accept": "application/json",
"Authorization": f"Bearer {os.environ['NOVAFISKO_TOKEN']}",
"X-Client-Mutation-Id": "b0a6f6f0-7d1c-4c5e-8a55-3f2b1c9d0e11",
},
json={
"extracted": {
"direction": "purchase",
"is_credit_note": False,
"number": "F-2026-0412",
"document_date": "2026-03-15",
"due_date": "2026-03-15",
"currency": "EUR",
"supplier": {
"name": "Brasserie Dubuisson SA",
"vat_number": "BE0402531376",
"enterprise_number": "0477472701",
"address": "Grand-Place 14",
"postal_code": "7000",
"city": "Mons",
"country": "BE",
"iban": "BE68539007547034",
"email": "claire.dumont@fiduciaire-dumont.be"
},
"customer": {},
"amount_net": "507.00",
"amount_vat": "106.47",
"amount_gross": "613.47",
"structured_communication": "000000000101",
"confidence": 0.93,
"lines": [
{
"description": "Fûts Bush Caractère 20 L",
"quantity": 6,
"unit_price": 84.5,
"tax_rate": 21,
"amount_net": "507.00",
"amount_vat": "106.47",
"account_id": 580,
"account_number": "604000",
"vat_code_id": 4,
"vat_code": "A21"
}
]
}
},
timeout=30,
)
response.raise_for_status()
data = response.json() if response.content else NoneDELETE/v1/companies/{company}/document-imports/{documentImport}Delete an import write
Goes to the recycle bin. A validated import keeps its document.
Integration tokens need the write ability.
Operatie-id companies.document-imports.destroy
Padparameters
| Naam | Type | Beschrijving |
|---|---|---|
company verplicht | string | Public token of the company file (public_token, 12 characters).bv. XBVD5O1L29HC |
documentImport verplicht | integer | Id of the import (uploaded file). bv. 311 |
Gemeenschappelijke headers: Accept-Language X-Client-Mutation-Id X-Operation-Id X-Device-Id X-Device-Name X-Occurred-At X-Origin X-Base-Version
Antwoorden
200OK
Antwoordheaders X-Operation-Id X-Idempotent-Replay X-Trashed
application/json
Schema object
deletedboolean
Voorbeeld
{
"deleted": true
}token_ability_missing, session_token_required), demo restriction (demo_mode) or invalid URL signature. ErrorX-Base-Version. Nothing was modified. VersionConflictVoorbeeldaanroep
curl -X DELETE "https://api.novafisko.com/v1/companies/XBVD5O1L29HC/document-imports/311" \
-H "Accept: application/json" \
-H "Authorization: Bearer $NOVAFISKO_TOKEN" \
-H "X-Client-Mutation-Id: b0a6f6f0-7d1c-4c5e-8a55-3f2b1c9d0e11"<?php
$client = new \GuzzleHttp\Client();
$response = $client->request('DELETE', 'https://api.novafisko.com/v1/companies/XBVD5O1L29HC/document-imports/311', [
'headers' => [
'Accept' => 'application/json',
'Authorization' => 'Bearer '.getenv('NOVAFISKO_TOKEN'),
'X-Client-Mutation-Id' => 'b0a6f6f0-7d1c-4c5e-8a55-3f2b1c9d0e11',
],
]);
$data = json_decode((string) $response->getBody(), true);const response = await fetch("https://api.novafisko.com/v1/companies/XBVD5O1L29HC/document-imports/311", {
method: "DELETE",
headers: {
"Accept": "application/json",
"Authorization": `Bearer ${process.env.NOVAFISKO_TOKEN}`,
"X-Client-Mutation-Id": "b0a6f6f0-7d1c-4c5e-8a55-3f2b1c9d0e11",
},
});
if (!response.ok) {
const error = await response.json();
throw new Error(error.code ?? error.message);
}
const data = response.status === 204 ? null : await response.json();import os
import requests
response = requests.delete(
"https://api.novafisko.com/v1/companies/XBVD5O1L29HC/document-imports/311",
headers={
"Accept": "application/json",
"Authorization": f"Bearer {os.environ['NOVAFISKO_TOKEN']}",
"X-Client-Mutation-Id": "b0a6f6f0-7d1c-4c5e-8a55-3f2b1c9d0e11",
},
timeout=30,
)
response.raise_for_status()
data = response.json() if response.content else NonePOST/v1/companies/{company}/document-imports/{documentImport}/processAnalyse an import now write Niet in demo 120 / 1 min
Synchronous analysis (up to two minutes): text layer, extraction, account suggestions, third party matching, duplicate detection. Already analysed: returns the result.
Integration tokens need the write ability.
Not available in demo mode: answers 403 demo_mode.
Rate limit: 120 requests per minute (429 beyond, see Retry-After).
Operatie-id companies.document-imports.process
Padparameters
| Naam | Type | Beschrijving |
|---|---|---|
company verplicht | string | Public token of the company file (public_token, 12 characters).bv. XBVD5O1L29HC |
documentImport verplicht | integer | Id of the import (uploaded file). bv. 311 |
Gemeenschappelijke headers: Accept-Language X-Client-Mutation-Id X-Operation-Id X-Device-Id X-Device-Name X-Occurred-At X-Origin
Antwoorden
200OK
Antwoordheaders X-Operation-Id X-Idempotent-Replay X-RateLimit-Limit X-RateLimit-Remaining
application/json
Schema DocumentImport
Voorbeeld
{
"id": 311,
"company_id": 7,
"uploaded_by": 1,
"batch_id": "bf413a19-2136-4504-bc42-b314637eb5c7",
"parent_import_id": 42,
"original_name": "facture-dubuisson-0412.pdf",
"mime": "application/pdf",
"size": 184320,
"file_hash": "string",
"kind": "pdf",
"status": "queued",
"progress": 100,
"step": "upload",
"engine": "api",
"extracted": {
"direction": "purchase",
"is_credit_note": false,
"number": "F-2026-0412",
"document_date": "2026-03-15",
"due_date": "2026-03-15",
"currency": "EUR",
"supplier": {
"name": "Brasserie Dubuisson SA",
"vat_number": "BE0402531376",
"enterprise_number": "0477472701",
"address": "Grand-Place 14",
"postal_code": "7000",
"city": "Mons",
"country": "BE",
"iban": "BE68539007547034",
"email": "claire.dumont@fiduciaire-dumont.be"
},
"customer": {},
"amount_net": "507.00",
"amount_vat": "106.47",
"amount_gross": "613.47",
"structured_communication": "000000000101",
"confidence": 0.93,
"lines": [
{
"description": "Fûts Bush Caractère 20 L",
"quantity": 6,
"unit_price": 84.5,
"tax_rate": 21,
"amount_net": "507.00",
"amount_vat": "106.47",
"account_id": 580,
"account_number": "604000",
"vat_code_id": 4,
"vat_code": "A21"
}
]
},
"raw_text": "string",
"warnings": [
"string"
],
"error": "string",
"suggested_third_party_id": 42,
"suggested_direction": "string",
"duplicate_of_import_id": 42,
"duplicate_of_document_id": 42,
"imported_document_id": 42,
"novadesko_document_id": "string",
"novadesko_locked_at": "2026-03-15T09:41:00+00:00",
"started_at": "2026-03-15T09:41:00+00:00",
"finished_at": "2026-03-15T09:41:00+00:00",
"created_at": "2026-03-15T09:41:00+00:00",
"updated_at": "2026-03-15T09:41:00+00:00",
"lock_version": 3,
"version": 3,
"deleted_at": "2026-03-15T09:41:00+00:00",
"deleted_by": 1,
"suggested_third_party": {}
}token_ability_missing, session_token_required), demo restriction (demo_mode) or invalid URL signature. ErrorVoorbeeldaanroep
curl -X POST "https://api.novafisko.com/v1/companies/XBVD5O1L29HC/document-imports/311/process" \
-H "Accept: application/json" \
-H "Authorization: Bearer $NOVAFISKO_TOKEN" \
-H "X-Client-Mutation-Id: b0a6f6f0-7d1c-4c5e-8a55-3f2b1c9d0e11"<?php
$client = new \GuzzleHttp\Client();
$response = $client->request('POST', 'https://api.novafisko.com/v1/companies/XBVD5O1L29HC/document-imports/311/process', [
'headers' => [
'Accept' => 'application/json',
'Authorization' => 'Bearer '.getenv('NOVAFISKO_TOKEN'),
'X-Client-Mutation-Id' => 'b0a6f6f0-7d1c-4c5e-8a55-3f2b1c9d0e11',
],
]);
$data = json_decode((string) $response->getBody(), true);const response = await fetch("https://api.novafisko.com/v1/companies/XBVD5O1L29HC/document-imports/311/process", {
method: "POST",
headers: {
"Accept": "application/json",
"Authorization": `Bearer ${process.env.NOVAFISKO_TOKEN}`,
"X-Client-Mutation-Id": "b0a6f6f0-7d1c-4c5e-8a55-3f2b1c9d0e11",
},
});
if (!response.ok) {
const error = await response.json();
throw new Error(error.code ?? error.message);
}
const data = response.status === 204 ? null : await response.json();import os
import requests
response = requests.post(
"https://api.novafisko.com/v1/companies/XBVD5O1L29HC/document-imports/311/process",
headers={
"Accept": "application/json",
"Authorization": f"Bearer {os.environ['NOVAFISKO_TOKEN']}",
"X-Client-Mutation-Id": "b0a6f6f0-7d1c-4c5e-8a55-3f2b1c9d0e11",
},
timeout=30,
)
response.raise_for_status()
data = response.json() if response.content else NonePOST/v1/companies/{company}/document-imports/{documentImport}/retryAnalyse again write Niet in demo 60 / 1 min
force re-analyses a file flagged as the duplicate of another import.
Integration tokens need the write ability.
Not available in demo mode: answers 403 demo_mode.
Rate limit: 60 requests per minute (429 beyond, see Retry-After).
Operatie-id companies.document-imports.retry
Padparameters
| Naam | Type | Beschrijving |
|---|---|---|
company verplicht | string | Public token of the company file (public_token, 12 characters).bv. XBVD5O1L29HC |
documentImport verplicht | integer | Id of the import (uploaded file). bv. 311 |
Gemeenschappelijke headers: Accept-Language X-Client-Mutation-Id X-Operation-Id X-Device-Id X-Device-Name X-Occurred-At X-Origin
Body van de aanvraag optioneel
application/json
Schema object
forceboolean
Voorbeeld
{
"force": true
}Antwoorden
200OK
Antwoordheaders X-Operation-Id X-Idempotent-Replay X-RateLimit-Limit X-RateLimit-Remaining
application/json
Schema DocumentImport
Voorbeeld
{
"id": 311,
"company_id": 7,
"uploaded_by": 1,
"batch_id": "bf413a19-2136-4504-bc42-b314637eb5c7",
"parent_import_id": 42,
"original_name": "facture-dubuisson-0412.pdf",
"mime": "application/pdf",
"size": 184320,
"file_hash": "string",
"kind": "pdf",
"status": "queued",
"progress": 100,
"step": "upload",
"engine": "api",
"extracted": {
"direction": "purchase",
"is_credit_note": false,
"number": "F-2026-0412",
"document_date": "2026-03-15",
"due_date": "2026-03-15",
"currency": "EUR",
"supplier": {
"name": "Brasserie Dubuisson SA",
"vat_number": "BE0402531376",
"enterprise_number": "0477472701",
"address": "Grand-Place 14",
"postal_code": "7000",
"city": "Mons",
"country": "BE",
"iban": "BE68539007547034",
"email": "claire.dumont@fiduciaire-dumont.be"
},
"customer": {},
"amount_net": "507.00",
"amount_vat": "106.47",
"amount_gross": "613.47",
"structured_communication": "000000000101",
"confidence": 0.93,
"lines": [
{
"description": "Fûts Bush Caractère 20 L",
"quantity": 6,
"unit_price": 84.5,
"tax_rate": 21,
"amount_net": "507.00",
"amount_vat": "106.47",
"account_id": 580,
"account_number": "604000",
"vat_code_id": 4,
"vat_code": "A21"
}
]
},
"raw_text": "string",
"warnings": [
"string"
],
"error": "string",
"suggested_third_party_id": 42,
"suggested_direction": "string",
"duplicate_of_import_id": 42,
"duplicate_of_document_id": 42,
"imported_document_id": 42,
"novadesko_document_id": "string",
"novadesko_locked_at": "2026-03-15T09:41:00+00:00",
"started_at": "2026-03-15T09:41:00+00:00",
"finished_at": "2026-03-15T09:41:00+00:00",
"created_at": "2026-03-15T09:41:00+00:00",
"updated_at": "2026-03-15T09:41:00+00:00",
"lock_version": 3,
"version": 3,
"deleted_at": "2026-03-15T09:41:00+00:00",
"deleted_by": 1,
"suggested_third_party": {}
}token_ability_missing, session_token_required), demo restriction (demo_mode) or invalid URL signature. Errorerrors maps each field to its messages; code is present when the refusal has a machine reason. ErrorVoorbeeldaanroep
curl -X POST "https://api.novafisko.com/v1/companies/XBVD5O1L29HC/document-imports/311/retry" \
-H "Accept: application/json" \
-H "Authorization: Bearer $NOVAFISKO_TOKEN" \
-H "Content-Type: application/json" \
-H "X-Client-Mutation-Id: b0a6f6f0-7d1c-4c5e-8a55-3f2b1c9d0e11" \
-d '{
"force": true
}'<?php
$client = new \GuzzleHttp\Client();
$response = $client->request('POST', 'https://api.novafisko.com/v1/companies/XBVD5O1L29HC/document-imports/311/retry', [
'headers' => [
'Accept' => 'application/json',
'Authorization' => 'Bearer '.getenv('NOVAFISKO_TOKEN'),
'X-Client-Mutation-Id' => 'b0a6f6f0-7d1c-4c5e-8a55-3f2b1c9d0e11',
],
'json' => [
'force' => true,
],
]);
$data = json_decode((string) $response->getBody(), true);const response = await fetch("https://api.novafisko.com/v1/companies/XBVD5O1L29HC/document-imports/311/retry", {
method: "POST",
headers: {
"Accept": "application/json",
"Authorization": `Bearer ${process.env.NOVAFISKO_TOKEN}`,
"Content-Type": "application/json",
"X-Client-Mutation-Id": "b0a6f6f0-7d1c-4c5e-8a55-3f2b1c9d0e11",
},
body: JSON.stringify({
"force": true
}),
});
if (!response.ok) {
const error = await response.json();
throw new Error(error.code ?? error.message);
}
const data = response.status === 204 ? null : await response.json();import os
import requests
response = requests.post(
"https://api.novafisko.com/v1/companies/XBVD5O1L29HC/document-imports/311/retry",
headers={
"Accept": "application/json",
"Authorization": f"Bearer {os.environ['NOVAFISKO_TOKEN']}",
"X-Client-Mutation-Id": "b0a6f6f0-7d1c-4c5e-8a55-3f2b1c9d0e11",
},
json={
"force": True
},
timeout=30,
)
response.raise_for_status()
data = response.json() if response.content else NonePOST/v1/companies/{company}/document-imports/{documentImport}/validateValidate an import write 120 / 1 min
Creates the document (locked for the shop), books it unless book: false, and pushes it to Novadesko when the file is linked (never from the demo). The third party is third_party_id, or created from new_third_party.
Integration tokens need the write ability.
Rate limit: 120 requests per minute (429 beyond, see Retry-After).
Error codes (code):
period_locked: the period is locked or the fiscal year is closed;reasontells which (period_lockedorfiscal_year_closed)
Operatie-id companies.document-imports.validate
Padparameters
| Naam | Type | Beschrijving |
|---|---|---|
company verplicht | string | Public token of the company file (public_token, 12 characters).bv. XBVD5O1L29HC |
documentImport verplicht | integer | Id of the import (uploaded file). bv. 311 |
Gemeenschappelijke headers: Accept-Language X-Client-Mutation-Id X-Operation-Id X-Device-Id X-Device-Name X-Occurred-At X-Origin
Body van de aanvraag
application/json
Schema object
extractedExtractedDocumentthird_party_idinteger | nullnew_third_partyobjectEigenschappen
typestringsuppliercustomernamestringverplichtvat_numberstring | nullenterprise_numberstring | nulladdressstring | nullpostal_codestring | nullcitystring | nullcountrystring | nullibanstring | nullbicstring | nullemailstring <email> | nullphonestring | null
directionstringpurchasesalelinesobject[]Eigenschappen
account_idinteger | nullvat_code_idinteger | null
bookbooleanTrue by default.push_to_novadeskoboolean | nullforcebooleanValidate despite a duplicate warning.
Voorbeeld
{
"third_party_id": 18,
"direction": "purchase",
"lines": [
{
"account_id": 361,
"vat_code_id": 25
}
],
"book": true
}Antwoorden
200OK
Antwoordheaders X-Operation-Id X-Idempotent-Replay X-RateLimit-Limit X-RateLimit-Remaining
application/json
Schema object
importDocumentImportdocumentImportedDocumententryJournalEntry | nullnovadeskoobjectEigenschappen
statusstringpushed, skipped, failed or not_linked.bv.skippedmessagestring | null
Voorbeeld
{
"import": {
"id": 311,
"company_id": 7,
"uploaded_by": 1,
"batch_id": "bf413a19-2136-4504-bc42-b314637eb5c7",
"parent_import_id": 42,
"original_name": "facture-dubuisson-0412.pdf",
"mime": "application/pdf",
"size": 184320,
"file_hash": "string",
"kind": "pdf",
"status": "queued",
"progress": 100,
"step": "upload",
"engine": "api",
"extracted": {
"direction": "purchase",
"is_credit_note": false,
"number": "F-2026-0412",
"document_date": "2026-03-15",
"due_date": "2026-03-15",
"currency": "EUR",
"supplier": {
"name": "Brasserie Dubuisson SA",
"vat_number": "BE0402531376",
"enterprise_number": "0477472701",
"address": "Grand-Place 14",
"postal_code": "7000",
"city": "Mons",
"country": "BE",
"iban": "BE68539007547034",
"email": "claire.dumont@fiduciaire-dumont.be"
},
"customer": {},
"amount_net": "507.00",
"amount_vat": "106.47",
"amount_gross": "613.47",
"structured_communication": "000000000101",
"confidence": 0.93,
"lines": [
{
"description": "Fûts Bush Caractère 20 L",
"quantity": 6,
"unit_price": 84.5,
"tax_rate": 21,
"amount_net": "507.00",
"amount_vat": "106.47",
"account_id": 580,
"account_number": "604000",
"vat_code_id": 4,
"vat_code": "A21"
}
]
},
"raw_text": "string",
"warnings": [
"string"
],
"error": "string",
"suggested_third_party_id": 42,
"suggested_direction": "string",
"duplicate_of_import_id": 42,
"duplicate_of_document_id": 42,
"imported_document_id": 42,
"novadesko_document_id": "string",
"novadesko_locked_at": "2026-03-15T09:41:00+00:00",
"started_at": "2026-03-15T09:41:00+00:00",
"finished_at": "2026-03-15T09:41:00+00:00",
"created_at": "2026-03-15T09:41:00+00:00",
"updated_at": "2026-03-15T09:41:00+00:00",
"lock_version": 3,
"version": 3,
"deleted_at": "2026-03-15T09:41:00+00:00",
"deleted_by": 1,
"suggested_third_party": {}
},
"document": {
"id": 87,
"company_id": 7,
"source": "novadesko",
"origin": "string",
"external_id": "string",
"type": "purchases",
"direction": "sale",
"is_credit_note": false,
"nature": "string",
"number": "F-2026-0412",
"payment_provider": "string",
"number_series": "TK",
"document_date": "2026-03-15T00:00:00.000000Z",
"due_date": "2026-03-15T09:41:00+00:00",
"subject": "Vos documents comptables",
"communication": "string",
"currency": "EUR",
"amount_net": "507.00",
"amount_vat": "106.47",
"amount_gross": "613.47",
"is_paid": true,
"third_party_id": 18,
"third_party_name": "Brasserie Dubuisson SA",
"third_party_vat": "string",
"pdf_url": "https://api.novafisko.com/v1/companies/XBVD5O1L29HC",
"xml_url": "https://api.novafisko.com/v1/companies/XBVD5O1L29HC",
"status": "pending",
"journal_entry_id": 1284,
"accountant_locked": true,
"novadesko_push_status": "string",
"novadesko_pushed_at": "2026-03-15T09:41:00+00:00",
"novadesko_push_error": "string",
"document_import_id": 42,
"synced_at": "2026-03-15T09:41:00+00:00",
"created_at": "2026-03-15T09:41:00+00:00",
"updated_at": "2026-03-15T09:41:00+00:00",
"lock_version": 3,
"version": 3,
"deleted_at": "2026-03-15T09:41:00+00:00",
"deleted_by": 1,
"third_party": {},
"lines": [
{
"id": 640,
"imported_document_id": 87,
"external_id": "string",
"position": 1,
"description": "Fûts Bush Caractère 20 L",
"quantity": "6.000",
"unit_price": "84.5000",
"discount_pct": "1210.00",
"tax_rate": "21.00",
"amount_net": "507.00",
"amount_vat": "106.47",
"recorded_account_number": "604000",
"recorded_account_id": 42,
"actual_account_id": 42,
"vat_code_id": 4,
"purchase_category": "string",
"corrected_at": "2026-03-15T09:41:00+00:00",
"corrected_by": 1,
"correction_pushed": true,
"recorded_account": {},
"actual_account": {},
"vat_code": {}
}
],
"journal_entry": {
"id": 1284,
"company_id": 7,
"fiscal_year_id": 2,
"period_id": 16,
"journal_id": 3,
"number": 412,
"entry_date": "2026-03-15T00:00:00.000000Z",
"due_date": "2026-03-15T09:41:00+00:00",
"label": "Facture Brasserie Dubuisson SA",
"reference": "F-2026-0412",
"structured_communication": "000000000101",
"third_party_id": 18,
"status": "posted",
"origin": "manual",
"created_by": 1,
"posted_at": "2026-03-15T09:41:00+00:00",
"reversed_entry_id": 42,
"reversed_by_entry_id": 42,
"recurring_entry_id": 42,
"created_at": "2026-03-15T09:41:00+00:00",
"updated_at": "2026-03-15T09:41:00+00:00",
"lock_version": 3,
"version": 3,
"journal": {
"id": 3,
"code": "VEN",
"type": "sale"
},
"third_party": {
"id": 18,
"name": "Brasserie Dubuisson SA"
},
"lines": [
{}
]
}
},
"entry": {
"id": 1284,
"company_id": 7,
"fiscal_year_id": 2,
"period_id": 16,
"journal_id": 3,
"number": 412,
"entry_date": "2026-03-15T00:00:00.000000Z",
"due_date": "2026-03-15T09:41:00+00:00",
"label": "Facture Brasserie Dubuisson SA",
"reference": "F-2026-0412",
"structured_communication": "000000000101",
"third_party_id": 18,
"status": "posted",
"origin": "manual",
"created_by": 1,
"posted_at": "2026-03-15T09:41:00+00:00",
"reversed_entry_id": 42,
"reversed_by_entry_id": 42,
"recurring_entry_id": 42,
"created_at": "2026-03-15T09:41:00+00:00",
"updated_at": "2026-03-15T09:41:00+00:00",
"lock_version": 3,
"version": 3,
"journal": {
"id": 3,
"code": "VEN",
"type": "sale"
},
"third_party": {
"id": 18,
"name": "Brasserie Dubuisson SA"
},
"lines": [
{
"id": 3391,
"journal_entry_id": 1284,
"position": 1,
"account_id": 580,
"third_party_id": 18,
"label": "Brasserie Dubuisson SA",
"debit": "0.00",
"credit": "1000.00",
"vat_code_id": 4,
"vat_base": "1000.00",
"reconciliation_code": "AB",
"cost_center_id": 42,
"project_id": 42,
"reminder_level": 0,
"reminder_sent_at": "2026-03-15T09:41:00+00:00",
"account": {
"id": 580,
"number": "702000",
"label": "Prestations de services"
},
"vat_code": {}
}
]
},
"novadesko": {
"status": "skipped",
"message": "OK"
}
}token_ability_missing, session_token_required), demo restriction (demo_mode) or invalid URL signature. Errorcode: period_locked, with reason). PeriodLockedErrorVoorbeeldaanroep
curl -X POST "https://api.novafisko.com/v1/companies/XBVD5O1L29HC/document-imports/311/validate" \
-H "Accept: application/json" \
-H "Authorization: Bearer $NOVAFISKO_TOKEN" \
-H "Content-Type: application/json" \
-H "X-Client-Mutation-Id: b0a6f6f0-7d1c-4c5e-8a55-3f2b1c9d0e11" \
-d '{
"third_party_id": 18,
"direction": "purchase",
"lines": [
{
"account_id": 361,
"vat_code_id": 25
}
],
"book": true
}'<?php
$client = new \GuzzleHttp\Client();
$response = $client->request('POST', 'https://api.novafisko.com/v1/companies/XBVD5O1L29HC/document-imports/311/validate', [
'headers' => [
'Accept' => 'application/json',
'Authorization' => 'Bearer '.getenv('NOVAFISKO_TOKEN'),
'X-Client-Mutation-Id' => 'b0a6f6f0-7d1c-4c5e-8a55-3f2b1c9d0e11',
],
'json' => [
'third_party_id' => 18,
'direction' => 'purchase',
'lines' => [
[
'account_id' => 361,
'vat_code_id' => 25,
],
],
'book' => true,
],
]);
$data = json_decode((string) $response->getBody(), true);const response = await fetch("https://api.novafisko.com/v1/companies/XBVD5O1L29HC/document-imports/311/validate", {
method: "POST",
headers: {
"Accept": "application/json",
"Authorization": `Bearer ${process.env.NOVAFISKO_TOKEN}`,
"Content-Type": "application/json",
"X-Client-Mutation-Id": "b0a6f6f0-7d1c-4c5e-8a55-3f2b1c9d0e11",
},
body: JSON.stringify({
"third_party_id": 18,
"direction": "purchase",
"lines": [
{
"account_id": 361,
"vat_code_id": 25
}
],
"book": true
}),
});
if (!response.ok) {
const error = await response.json();
throw new Error(error.code ?? error.message);
}
const data = response.status === 204 ? null : await response.json();import os
import requests
response = requests.post(
"https://api.novafisko.com/v1/companies/XBVD5O1L29HC/document-imports/311/validate",
headers={
"Accept": "application/json",
"Authorization": f"Bearer {os.environ['NOVAFISKO_TOKEN']}",
"X-Client-Mutation-Id": "b0a6f6f0-7d1c-4c5e-8a55-3f2b1c9d0e11",
},
json={
"third_party_id": 18,
"direction": "purchase",
"lines": [
{
"account_id": 361,
"vat_code_id": 25
}
],
"book": True
},
timeout=30,
)
response.raise_for_status()
data = response.json() if response.content else NoneGET/v1/companies/{company}/document-imports/{documentImport}/fileSigned preview of an uploaded file Ondertekende URL 240 / 1 min
Serves the file inline (or its preview: PDF embedded in a UBL, JPEG converted from HEIC).
Authorised by the signature of the URL (query parameters signature and expires), not by a bearer token. The URL is issued by another endpoint and expires.
Rate limit: 240 requests per minute (429 beyond, see Retry-After).
Operatie-id document-imports.file
Padparameters
| Naam | Type | Beschrijving |
|---|---|---|
company verplicht | string | Public token of the company file (public_token, 12 characters).bv. XBVD5O1L29HC |
documentImport verplicht | integer | Id of the import (uploaded file). bv. 311 |
Queryparameters
| Naam | Type | Beschrijving |
|---|---|---|
preview | string | 0 serves the original file.0 1 |
Gemeenschappelijke headers: signature expires
Antwoorden
200The file, inline.
Antwoordheaders Content-Disposition X-RateLimit-Limit X-RateLimit-Remaining
application/pdf
image/jpeg
image/png
application/xml
token_ability_missing, session_token_required), demo restriction (demo_mode) or invalid URL signature. ErrorVoorbeeldaanroep
curl -X GET "https://api.novafisko.com/v1/companies/XBVD5O1L29HC/document-imports/311/file" \
-H "Accept: application/json"<?php
$client = new \GuzzleHttp\Client();
$response = $client->request('GET', 'https://api.novafisko.com/v1/companies/XBVD5O1L29HC/document-imports/311/file', [
'headers' => [
'Accept' => 'application/json',
],
]);
$data = json_decode((string) $response->getBody(), true);const response = await fetch("https://api.novafisko.com/v1/companies/XBVD5O1L29HC/document-imports/311/file", {
method: "GET",
headers: {
"Accept": "application/json",
},
});
if (!response.ok) {
const error = await response.json();
throw new Error(error.code ?? error.message);
}
const data = response.status === 204 ? null : await response.json();import os
import requests
response = requests.get(
"https://api.novafisko.com/v1/companies/XBVD5O1L29HC/document-imports/311/file",
headers={
"Accept": "application/json",
},
timeout=30,
)
response.raise_for_status()
data = response.json() if response.content else NoneBank
Bank transactions (CODA), matching, rules, treasury, SEPA payment files.
GET/v1/companies/{company}/bank-transactionsList the bank transactions read
Transactions of the CODA statements with the proposed match.
Integration tokens need the read ability.
Operatie-id companies.bank-transactions.index
Padparameters
| Naam | Type | Beschrijving |
|---|---|---|
company verplicht | string | Public token of the company file (public_token, 12 characters).bv. XBVD5O1L29HC |
Queryparameters
| Naam | Type | Beschrijving |
|---|---|---|
unmatched | boolean | Pending and without proposal. |
journal_id | integer | |
status | string | pending booked ignored |
from | string <date> | Value date. |
to | string <date> | |
q | string | Counterpart, communication or description. |
page | integer | Page number, starting at 1. bv. 1 |
per_page | integer | Items per page (default 100, maximum 500). bv. 100 |
Gemeenschappelijke headers: Accept-Language
Antwoorden
200Paginated list
application/json
Voorbeeld
{
"current_page": 1,
"data": [
{
"id": 951,
"company_id": 7,
"source": "novadesko",
"external_id": "string",
"account_iban": "BE68539007547034",
"account_bank": "string",
"journal_id": 7,
"amount": "1210.00",
"currency": "EUR",
"value_date": "2026-03-18T00:00:00.000000Z",
"execution_date": "2026-03-15T09:41:00+00:00",
"counterpart_name": "ACME SA",
"counterpart_iban": "string",
"communication": "+++000/0000/00101+++",
"description": "Description",
"status": "pending",
"journal_entry_id": 1284,
"matched_journal_entry_id": 42,
"match_confidence": "high",
"match_reason": "structured_communication",
"matched_at": "2026-03-15T09:41:00+00:00",
"booked_account_id": 42,
"matched_rule_id": 42,
"synced_at": "2026-03-15T09:41:00+00:00",
"created_at": "2026-03-15T09:41:00+00:00",
"updated_at": "2026-03-15T09:41:00+00:00",
"lock_version": 3,
"version": 3,
"journal": {},
"links": [
{}
],
"matched_entry": {},
"booked_account": {},
"matched_rule": {},
"journal_entry": {}
}
],
"first_page_url": "https://api.novafisko.com/v1/companies/XBVD5O1L29HC",
"from": 1,
"last_page": 4,
"last_page_url": "https://api.novafisko.com/v1/companies/XBVD5O1L29HC",
"links": [
{
"url": "https://api.novafisko.com/v1/companies/XBVD5O1L29HC",
"label": "1",
"page": 1,
"active": true
}
],
"next_page_url": "https://api.novafisko.com/v1/companies/XBVD5O1L29HC",
"path": "https://api.novafisko.com/v1/companies/XBVD5O1L29HC",
"per_page": 50,
"prev_page_url": "https://api.novafisko.com/v1/companies/XBVD5O1L29HC",
"to": 50,
"total": 187
}token_ability_missing, session_token_required), demo restriction (demo_mode) or invalid URL signature. ErrorVoorbeeldaanroep
curl -X GET "https://api.novafisko.com/v1/companies/XBVD5O1L29HC/bank-transactions" \
-H "Accept: application/json" \
-H "Authorization: Bearer $NOVAFISKO_TOKEN"<?php
$client = new \GuzzleHttp\Client();
$response = $client->request('GET', 'https://api.novafisko.com/v1/companies/XBVD5O1L29HC/bank-transactions', [
'headers' => [
'Accept' => 'application/json',
'Authorization' => 'Bearer '.getenv('NOVAFISKO_TOKEN'),
],
]);
$data = json_decode((string) $response->getBody(), true);const response = await fetch("https://api.novafisko.com/v1/companies/XBVD5O1L29HC/bank-transactions", {
method: "GET",
headers: {
"Accept": "application/json",
"Authorization": `Bearer ${process.env.NOVAFISKO_TOKEN}`,
},
});
if (!response.ok) {
const error = await response.json();
throw new Error(error.code ?? error.message);
}
const data = response.status === 204 ? null : await response.json();import os
import requests
response = requests.get(
"https://api.novafisko.com/v1/companies/XBVD5O1L29HC/bank-transactions",
headers={
"Accept": "application/json",
"Authorization": f"Bearer {os.environ['NOVAFISKO_TOKEN']}",
},
timeout=30,
)
response.raise_for_status()
data = response.json() if response.content else NonePOST/v1/companies/{company}/bank-transactions/matchPropose the matches write 10 / 1 min
Looks for the invoice paid by each pending transaction (structured communication, Novadesko link, amount and third party) and applies the bank rules.
Integration tokens need the write ability.
Rate limit: 10 requests per minute (429 beyond, see Retry-After).
Operatie-id companies.bank-transactions.match
Padparameters
| Naam | Type | Beschrijving |
|---|---|---|
company verplicht | string | Public token of the company file (public_token, 12 characters).bv. XBVD5O1L29HC |
Gemeenschappelijke headers: Accept-Language X-Client-Mutation-Id X-Operation-Id X-Device-Id X-Device-Name X-Occurred-At X-Origin
Antwoorden
200OK
Antwoordheaders X-Operation-Id X-Idempotent-Replay X-RateLimit-Limit X-RateLimit-Remaining
application/json
Schema object
proposalsintegerbv.17
Voorbeeld
{
"proposals": 17
}token_ability_missing, session_token_required), demo restriction (demo_mode) or invalid URL signature. ErrorVoorbeeldaanroep
curl -X POST "https://api.novafisko.com/v1/companies/XBVD5O1L29HC/bank-transactions/match" \
-H "Accept: application/json" \
-H "Authorization: Bearer $NOVAFISKO_TOKEN" \
-H "X-Client-Mutation-Id: b0a6f6f0-7d1c-4c5e-8a55-3f2b1c9d0e11"<?php
$client = new \GuzzleHttp\Client();
$response = $client->request('POST', 'https://api.novafisko.com/v1/companies/XBVD5O1L29HC/bank-transactions/match', [
'headers' => [
'Accept' => 'application/json',
'Authorization' => 'Bearer '.getenv('NOVAFISKO_TOKEN'),
'X-Client-Mutation-Id' => 'b0a6f6f0-7d1c-4c5e-8a55-3f2b1c9d0e11',
],
]);
$data = json_decode((string) $response->getBody(), true);const response = await fetch("https://api.novafisko.com/v1/companies/XBVD5O1L29HC/bank-transactions/match", {
method: "POST",
headers: {
"Accept": "application/json",
"Authorization": `Bearer ${process.env.NOVAFISKO_TOKEN}`,
"X-Client-Mutation-Id": "b0a6f6f0-7d1c-4c5e-8a55-3f2b1c9d0e11",
},
});
if (!response.ok) {
const error = await response.json();
throw new Error(error.code ?? error.message);
}
const data = response.status === 204 ? null : await response.json();import os
import requests
response = requests.post(
"https://api.novafisko.com/v1/companies/XBVD5O1L29HC/bank-transactions/match",
headers={
"Accept": "application/json",
"Authorization": f"Bearer {os.environ['NOVAFISKO_TOKEN']}",
"X-Client-Mutation-Id": "b0a6f6f0-7d1c-4c5e-8a55-3f2b1c9d0e11",
},
timeout=30,
)
response.raise_for_status()
data = response.json() if response.content else NonePOST/v1/companies/{company}/bank-transactions/book-matchedBook the matched transactions write 5 / 1 min
Books every transaction with a high-confidence match (and medium ones with include_medium).
Integration tokens need the write ability.
Rate limit: 5 requests per minute (429 beyond, see Retry-After).
Operatie-id companies.bank-transactions.book-matched
Padparameters
| Naam | Type | Beschrijving |
|---|---|---|
company verplicht | string | Public token of the company file (public_token, 12 characters).bv. XBVD5O1L29HC |
Gemeenschappelijke headers: Accept-Language X-Client-Mutation-Id X-Operation-Id X-Device-Id X-Device-Name X-Occurred-At X-Origin
Body van de aanvraag optioneel
application/json
Schema object
include_mediumboolean
Voorbeeld
{
"include_medium": false
}Antwoorden
200OK
Antwoordheaders X-Operation-Id X-Idempotent-Replay X-RateLimit-Limit X-RateLimit-Remaining
application/json
Schema object
bookedintegerbv.14skippedobject[]Eigenschappen
idintegerreasonstring
Voorbeeld
{
"booked": 14,
"skipped": [
{
"id": 42,
"reason": "string"
}
]
}token_ability_missing, session_token_required), demo restriction (demo_mode) or invalid URL signature. Errorerrors maps each field to its messages; code is present when the refusal has a machine reason. ErrorVoorbeeldaanroep
curl -X POST "https://api.novafisko.com/v1/companies/XBVD5O1L29HC/bank-transactions/book-matched" \
-H "Accept: application/json" \
-H "Authorization: Bearer $NOVAFISKO_TOKEN" \
-H "Content-Type: application/json" \
-H "X-Client-Mutation-Id: b0a6f6f0-7d1c-4c5e-8a55-3f2b1c9d0e11" \
-d '{
"include_medium": false
}'<?php
$client = new \GuzzleHttp\Client();
$response = $client->request('POST', 'https://api.novafisko.com/v1/companies/XBVD5O1L29HC/bank-transactions/book-matched', [
'headers' => [
'Accept' => 'application/json',
'Authorization' => 'Bearer '.getenv('NOVAFISKO_TOKEN'),
'X-Client-Mutation-Id' => 'b0a6f6f0-7d1c-4c5e-8a55-3f2b1c9d0e11',
],
'json' => [
'include_medium' => false,
],
]);
$data = json_decode((string) $response->getBody(), true);const response = await fetch("https://api.novafisko.com/v1/companies/XBVD5O1L29HC/bank-transactions/book-matched", {
method: "POST",
headers: {
"Accept": "application/json",
"Authorization": `Bearer ${process.env.NOVAFISKO_TOKEN}`,
"Content-Type": "application/json",
"X-Client-Mutation-Id": "b0a6f6f0-7d1c-4c5e-8a55-3f2b1c9d0e11",
},
body: JSON.stringify({
"include_medium": false
}),
});
if (!response.ok) {
const error = await response.json();
throw new Error(error.code ?? error.message);
}
const data = response.status === 204 ? null : await response.json();import os
import requests
response = requests.post(
"https://api.novafisko.com/v1/companies/XBVD5O1L29HC/bank-transactions/book-matched",
headers={
"Accept": "application/json",
"Authorization": f"Bearer {os.environ['NOVAFISKO_TOKEN']}",
"X-Client-Mutation-Id": "b0a6f6f0-7d1c-4c5e-8a55-3f2b1c9d0e11",
},
json={
"include_medium": False
},
timeout=30,
)
response.raise_for_status()
data = response.json() if response.content else NonePOST/v1/companies/{company}/bank-transactions/{bankTransaction}/bookBook a transaction write
Payment of the matched invoice (lettered with it), or allocation to the chosen account (fees, VAT, salaries…).
Integration tokens need the write ability.
Error codes (code):
period_locked: the period is locked or the fiscal year is closed;reasontells which (period_lockedorfiscal_year_closed)
Operatie-id companies.bank-transactions.book
Padparameters
| Naam | Type | Beschrijving |
|---|---|---|
company verplicht | string | Public token of the company file (public_token, 12 characters).bv. XBVD5O1L29HC |
bankTransaction verplicht | integer | Id of the bank transaction. bv. 951 |
Gemeenschappelijke headers: Accept-Language X-Client-Mutation-Id X-Operation-Id X-Device-Id X-Device-Name X-Occurred-At X-Origin
Body van de aanvraag optioneel
application/json
Schema object
account_idinteger | nullPostable account; absent = payment of the matched invoice.third_party_idinteger | nulllabelstring | null
Voorbeeld
{
"account_id": 517,
"label": "Frais de tenue de compte"
}Antwoorden
201Booked, with journal_entry
Antwoordheaders X-Operation-Id X-Idempotent-Replay
application/json
Schema BankTransaction
Voorbeeld
{
"id": 951,
"company_id": 7,
"source": "novadesko",
"external_id": "string",
"account_iban": "BE68539007547034",
"account_bank": "string",
"journal_id": 7,
"amount": "1210.00",
"currency": "EUR",
"value_date": "2026-03-18T00:00:00.000000Z",
"execution_date": "2026-03-15T09:41:00+00:00",
"counterpart_name": "ACME SA",
"counterpart_iban": "string",
"communication": "+++000/0000/00101+++",
"description": "Description",
"status": "pending",
"journal_entry_id": 1284,
"matched_journal_entry_id": 42,
"match_confidence": "high",
"match_reason": "structured_communication",
"matched_at": "2026-03-15T09:41:00+00:00",
"booked_account_id": 42,
"matched_rule_id": 42,
"synced_at": "2026-03-15T09:41:00+00:00",
"created_at": "2026-03-15T09:41:00+00:00",
"updated_at": "2026-03-15T09:41:00+00:00",
"lock_version": 3,
"version": 3,
"journal": {},
"links": [
{}
],
"matched_entry": {},
"booked_account": {},
"matched_rule": {},
"journal_entry": {}
}token_ability_missing, session_token_required), demo restriction (demo_mode) or invalid URL signature. Errorcode: period_locked, with reason). PeriodLockedErrorVoorbeeldaanroep
curl -X POST "https://api.novafisko.com/v1/companies/XBVD5O1L29HC/bank-transactions/951/book" \
-H "Accept: application/json" \
-H "Authorization: Bearer $NOVAFISKO_TOKEN" \
-H "Content-Type: application/json" \
-H "X-Client-Mutation-Id: b0a6f6f0-7d1c-4c5e-8a55-3f2b1c9d0e11" \
-d '{
"account_id": 517,
"label": "Frais de tenue de compte"
}'<?php
$client = new \GuzzleHttp\Client();
$response = $client->request('POST', 'https://api.novafisko.com/v1/companies/XBVD5O1L29HC/bank-transactions/951/book', [
'headers' => [
'Accept' => 'application/json',
'Authorization' => 'Bearer '.getenv('NOVAFISKO_TOKEN'),
'X-Client-Mutation-Id' => 'b0a6f6f0-7d1c-4c5e-8a55-3f2b1c9d0e11',
],
'json' => [
'account_id' => 517,
'label' => 'Frais de tenue de compte',
],
]);
$data = json_decode((string) $response->getBody(), true);const response = await fetch("https://api.novafisko.com/v1/companies/XBVD5O1L29HC/bank-transactions/951/book", {
method: "POST",
headers: {
"Accept": "application/json",
"Authorization": `Bearer ${process.env.NOVAFISKO_TOKEN}`,
"Content-Type": "application/json",
"X-Client-Mutation-Id": "b0a6f6f0-7d1c-4c5e-8a55-3f2b1c9d0e11",
},
body: JSON.stringify({
"account_id": 517,
"label": "Frais de tenue de compte"
}),
});
if (!response.ok) {
const error = await response.json();
throw new Error(error.code ?? error.message);
}
const data = response.status === 204 ? null : await response.json();import os
import requests
response = requests.post(
"https://api.novafisko.com/v1/companies/XBVD5O1L29HC/bank-transactions/951/book",
headers={
"Accept": "application/json",
"Authorization": f"Bearer {os.environ['NOVAFISKO_TOKEN']}",
"X-Client-Mutation-Id": "b0a6f6f0-7d1c-4c5e-8a55-3f2b1c9d0e11",
},
json={
"account_id": 517,
"label": "Frais de tenue de compte"
},
timeout=30,
)
response.raise_for_status()
data = response.json() if response.content else NonePOST/v1/companies/{company}/bank-transactions/{bankTransaction}/ignoreIgnore or restore a transaction write
Integration tokens need the write ability.
Operatie-id companies.bank-transactions.ignore
Padparameters
| Naam | Type | Beschrijving |
|---|---|---|
company verplicht | string | Public token of the company file (public_token, 12 characters).bv. XBVD5O1L29HC |
bankTransaction verplicht | integer | Id of the bank transaction. bv. 951 |
Gemeenschappelijke headers: Accept-Language X-Client-Mutation-Id X-Operation-Id X-Device-Id X-Device-Name X-Occurred-At X-Origin
Body van de aanvraag optioneel
application/json
Schema object
restoreboolean
Voorbeeld
{
"restore": false
}Antwoorden
200OK
Antwoordheaders X-Operation-Id X-Idempotent-Replay
application/json
Schema BankTransaction
Voorbeeld
{
"id": 951,
"company_id": 7,
"source": "novadesko",
"external_id": "string",
"account_iban": "BE68539007547034",
"account_bank": "string",
"journal_id": 7,
"amount": "1210.00",
"currency": "EUR",
"value_date": "2026-03-18T00:00:00.000000Z",
"execution_date": "2026-03-15T09:41:00+00:00",
"counterpart_name": "ACME SA",
"counterpart_iban": "string",
"communication": "+++000/0000/00101+++",
"description": "Description",
"status": "pending",
"journal_entry_id": 1284,
"matched_journal_entry_id": 42,
"match_confidence": "high",
"match_reason": "structured_communication",
"matched_at": "2026-03-15T09:41:00+00:00",
"booked_account_id": 42,
"matched_rule_id": 42,
"synced_at": "2026-03-15T09:41:00+00:00",
"created_at": "2026-03-15T09:41:00+00:00",
"updated_at": "2026-03-15T09:41:00+00:00",
"lock_version": 3,
"version": 3,
"journal": {},
"links": [
{}
],
"matched_entry": {},
"booked_account": {},
"matched_rule": {},
"journal_entry": {}
}token_ability_missing, session_token_required), demo restriction (demo_mode) or invalid URL signature. Errorerrors maps each field to its messages; code is present when the refusal has a machine reason. ErrorVoorbeeldaanroep
curl -X POST "https://api.novafisko.com/v1/companies/XBVD5O1L29HC/bank-transactions/951/ignore" \
-H "Accept: application/json" \
-H "Authorization: Bearer $NOVAFISKO_TOKEN" \
-H "Content-Type: application/json" \
-H "X-Client-Mutation-Id: b0a6f6f0-7d1c-4c5e-8a55-3f2b1c9d0e11" \
-d '{
"restore": false
}'<?php
$client = new \GuzzleHttp\Client();
$response = $client->request('POST', 'https://api.novafisko.com/v1/companies/XBVD5O1L29HC/bank-transactions/951/ignore', [
'headers' => [
'Accept' => 'application/json',
'Authorization' => 'Bearer '.getenv('NOVAFISKO_TOKEN'),
'X-Client-Mutation-Id' => 'b0a6f6f0-7d1c-4c5e-8a55-3f2b1c9d0e11',
],
'json' => [
'restore' => false,
],
]);
$data = json_decode((string) $response->getBody(), true);const response = await fetch("https://api.novafisko.com/v1/companies/XBVD5O1L29HC/bank-transactions/951/ignore", {
method: "POST",
headers: {
"Accept": "application/json",
"Authorization": `Bearer ${process.env.NOVAFISKO_TOKEN}`,
"Content-Type": "application/json",
"X-Client-Mutation-Id": "b0a6f6f0-7d1c-4c5e-8a55-3f2b1c9d0e11",
},
body: JSON.stringify({
"restore": false
}),
});
if (!response.ok) {
const error = await response.json();
throw new Error(error.code ?? error.message);
}
const data = response.status === 204 ? null : await response.json();import os
import requests
response = requests.post(
"https://api.novafisko.com/v1/companies/XBVD5O1L29HC/bank-transactions/951/ignore",
headers={
"Accept": "application/json",
"Authorization": f"Bearer {os.environ['NOVAFISKO_TOKEN']}",
"X-Client-Mutation-Id": "b0a6f6f0-7d1c-4c5e-8a55-3f2b1c9d0e11",
},
json={
"restore": False
},
timeout=30,
)
response.raise_for_status()
data = response.json() if response.content else NoneGET/v1/companies/{company}/treasuryTreasury read
Accounting balance of each financial journal against the last statement, with the pending transactions.
Integration tokens need the read ability.
Operatie-id companies.treasury
Padparameters
| Naam | Type | Beschrijving |
|---|---|---|
company verplicht | string | Public token of the company file (public_token, 12 characters).bv. XBVD5O1L29HC |
Gemeenschappelijke headers: Accept-Language
Antwoorden
200OK
application/json
Schema Treasury
Voorbeeld
{
"accounts": [
{
"journal_id": 7,
"code": "BNP",
"label": "BNP Paribas Fortis",
"iban": "BE68539007547034",
"account": "550000",
"accounting_balance": "19630.11",
"last_statement_balance": "19630.11",
"last_statement_date": "2026-03-15",
"pending_count": 3,
"pending_amount": "1842.50",
"difference": "0.00"
}
],
"total_accounting_balance": "21480.61"
}token_ability_missing, session_token_required), demo restriction (demo_mode) or invalid URL signature. ErrorVoorbeeldaanroep
curl -X GET "https://api.novafisko.com/v1/companies/XBVD5O1L29HC/treasury" \
-H "Accept: application/json" \
-H "Authorization: Bearer $NOVAFISKO_TOKEN"<?php
$client = new \GuzzleHttp\Client();
$response = $client->request('GET', 'https://api.novafisko.com/v1/companies/XBVD5O1L29HC/treasury', [
'headers' => [
'Accept' => 'application/json',
'Authorization' => 'Bearer '.getenv('NOVAFISKO_TOKEN'),
],
]);
$data = json_decode((string) $response->getBody(), true);const response = await fetch("https://api.novafisko.com/v1/companies/XBVD5O1L29HC/treasury", {
method: "GET",
headers: {
"Accept": "application/json",
"Authorization": `Bearer ${process.env.NOVAFISKO_TOKEN}`,
},
});
if (!response.ok) {
const error = await response.json();
throw new Error(error.code ?? error.message);
}
const data = response.status === 204 ? null : await response.json();import os
import requests
response = requests.get(
"https://api.novafisko.com/v1/companies/XBVD5O1L29HC/treasury",
headers={
"Accept": "application/json",
"Authorization": f"Bearer {os.environ['NOVAFISKO_TOKEN']}",
},
timeout=30,
)
response.raise_for_status()
data = response.json() if response.content else NoneGET/v1/companies/{company}/bank-rulesList the bank rules read
Integration tokens need the read ability.
Operatie-id companies.bank-rules.index
Padparameters
| Naam | Type | Beschrijving |
|---|---|---|
company verplicht | string | Public token of the company file (public_token, 12 characters).bv. XBVD5O1L29HC |
Gemeenschappelijke headers: Accept-Language
Antwoorden
200OK
application/json
Voorbeeld
[
{
"id": 6,
"company_id": 7,
"name": "Frais bancaires",
"field": "counterpart_name",
"operator": "contains",
"pattern": "frais de tenue",
"direction": "in",
"account_id": 517,
"third_party_id": 18,
"label": "Facture Brasserie Dubuisson",
"priority": 100,
"is_active": true,
"applied_count": 14,
"created_at": "2026-03-15T09:41:00+00:00",
"updated_at": "2026-03-15T09:41:00+00:00",
"lock_version": 3,
"version": 3,
"deleted_at": "2026-03-15T09:41:00+00:00",
"deleted_by": 1,
"account": {
"id": 580,
"number": "702000",
"label": "Prestations de services"
},
"third_party": {}
}
]token_ability_missing, session_token_required), demo restriction (demo_mode) or invalid URL signature. ErrorVoorbeeldaanroep
curl -X GET "https://api.novafisko.com/v1/companies/XBVD5O1L29HC/bank-rules" \
-H "Accept: application/json" \
-H "Authorization: Bearer $NOVAFISKO_TOKEN"<?php
$client = new \GuzzleHttp\Client();
$response = $client->request('GET', 'https://api.novafisko.com/v1/companies/XBVD5O1L29HC/bank-rules', [
'headers' => [
'Accept' => 'application/json',
'Authorization' => 'Bearer '.getenv('NOVAFISKO_TOKEN'),
],
]);
$data = json_decode((string) $response->getBody(), true);const response = await fetch("https://api.novafisko.com/v1/companies/XBVD5O1L29HC/bank-rules", {
method: "GET",
headers: {
"Accept": "application/json",
"Authorization": `Bearer ${process.env.NOVAFISKO_TOKEN}`,
},
});
if (!response.ok) {
const error = await response.json();
throw new Error(error.code ?? error.message);
}
const data = response.status === 204 ? null : await response.json();import os
import requests
response = requests.get(
"https://api.novafisko.com/v1/companies/XBVD5O1L29HC/bank-rules",
headers={
"Accept": "application/json",
"Authorization": f"Bearer {os.environ['NOVAFISKO_TOKEN']}",
},
timeout=30,
)
response.raise_for_status()
data = response.json() if response.content else NonePOST/v1/companies/{company}/bank-rulesCreate a bank rule write
Allocates the transactions whose field matches the pattern to an account.
Integration tokens need the write ability.
Operatie-id companies.bank-rules.store
Padparameters
| Naam | Type | Beschrijving |
|---|---|---|
company verplicht | string | Public token of the company file (public_token, 12 characters).bv. XBVD5O1L29HC |
Gemeenschappelijke headers: Accept-Language X-Client-Mutation-Id X-Operation-Id X-Device-Id X-Device-Name X-Occurred-At X-Origin
Body van de aanvraag
application/json
Schema object
namestringverplichtfieldstringverplichtcounterpart_namecounterpart_ibancommunicationdescriptionanyoperatorstringcontainsequalsstartspatternstringverplichtdirectionstringinoutanyaccount_idintegerverplichtPostable account.third_party_idinteger | nulllabelstring | nullpriorityinteger1 to 999.is_activeboolean
Voorbeeld
{
"name": "Frais bancaires",
"field": "description",
"operator": "contains",
"pattern": "frais de tenue",
"direction": "out",
"account_id": 517
}Antwoorden
201Created
Antwoordheaders X-Operation-Id X-Idempotent-Replay
application/json
Schema BankRule
Voorbeeld
{
"id": 6,
"company_id": 7,
"name": "Frais bancaires",
"field": "counterpart_name",
"operator": "contains",
"pattern": "frais de tenue",
"direction": "in",
"account_id": 517,
"third_party_id": 18,
"label": "Facture Brasserie Dubuisson",
"priority": 100,
"is_active": true,
"applied_count": 14,
"created_at": "2026-03-15T09:41:00+00:00",
"updated_at": "2026-03-15T09:41:00+00:00",
"lock_version": 3,
"version": 3,
"deleted_at": "2026-03-15T09:41:00+00:00",
"deleted_by": 1,
"account": {
"id": 580,
"number": "702000",
"label": "Prestations de services"
},
"third_party": {}
}token_ability_missing, session_token_required), demo restriction (demo_mode) or invalid URL signature. Errorerrors maps each field to its messages; code is present when the refusal has a machine reason. ErrorVoorbeeldaanroep
curl -X POST "https://api.novafisko.com/v1/companies/XBVD5O1L29HC/bank-rules" \
-H "Accept: application/json" \
-H "Authorization: Bearer $NOVAFISKO_TOKEN" \
-H "Content-Type: application/json" \
-H "X-Client-Mutation-Id: b0a6f6f0-7d1c-4c5e-8a55-3f2b1c9d0e11" \
-d '{
"name": "Frais bancaires",
"field": "description",
"operator": "contains",
"pattern": "frais de tenue",
"direction": "out",
"account_id": 517
}'<?php
$client = new \GuzzleHttp\Client();
$response = $client->request('POST', 'https://api.novafisko.com/v1/companies/XBVD5O1L29HC/bank-rules', [
'headers' => [
'Accept' => 'application/json',
'Authorization' => 'Bearer '.getenv('NOVAFISKO_TOKEN'),
'X-Client-Mutation-Id' => 'b0a6f6f0-7d1c-4c5e-8a55-3f2b1c9d0e11',
],
'json' => [
'name' => 'Frais bancaires',
'field' => 'description',
'operator' => 'contains',
'pattern' => 'frais de tenue',
'direction' => 'out',
'account_id' => 517,
],
]);
$data = json_decode((string) $response->getBody(), true);const response = await fetch("https://api.novafisko.com/v1/companies/XBVD5O1L29HC/bank-rules", {
method: "POST",
headers: {
"Accept": "application/json",
"Authorization": `Bearer ${process.env.NOVAFISKO_TOKEN}`,
"Content-Type": "application/json",
"X-Client-Mutation-Id": "b0a6f6f0-7d1c-4c5e-8a55-3f2b1c9d0e11",
},
body: JSON.stringify({
"name": "Frais bancaires",
"field": "description",
"operator": "contains",
"pattern": "frais de tenue",
"direction": "out",
"account_id": 517
}),
});
if (!response.ok) {
const error = await response.json();
throw new Error(error.code ?? error.message);
}
const data = response.status === 204 ? null : await response.json();import os
import requests
response = requests.post(
"https://api.novafisko.com/v1/companies/XBVD5O1L29HC/bank-rules",
headers={
"Accept": "application/json",
"Authorization": f"Bearer {os.environ['NOVAFISKO_TOKEN']}",
"X-Client-Mutation-Id": "b0a6f6f0-7d1c-4c5e-8a55-3f2b1c9d0e11",
},
json={
"name": "Frais bancaires",
"field": "description",
"operator": "contains",
"pattern": "frais de tenue",
"direction": "out",
"account_id": 517
},
timeout=30,
)
response.raise_for_status()
data = response.json() if response.content else NonePATCH/v1/companies/{company}/bank-rules/{bankRule}Update a bank rule write
Integration tokens need the write ability.
Operatie-id companies.bank-rules.update
Padparameters
| Naam | Type | Beschrijving |
|---|---|---|
company verplicht | string | Public token of the company file (public_token, 12 characters).bv. XBVD5O1L29HC |
bankRule verplicht | integer | Id of the bank rule. bv. 6 |
Gemeenschappelijke headers: Accept-Language X-Client-Mutation-Id X-Operation-Id X-Device-Id X-Device-Name X-Occurred-At X-Origin X-Base-Version
Body van de aanvraag
application/json
Schema object
namestringfieldstringcounterpart_namecounterpart_ibancommunicationdescriptionanyoperatorstringcontainsequalsstartspatternstringdirectionstringinoutanyaccount_idintegerPostable account.third_party_idinteger | nulllabelstring | nullpriorityinteger1 to 999.is_activeboolean
Voorbeeld
{
"is_active": false
}Antwoorden
200OK
Antwoordheaders X-Operation-Id X-Idempotent-Replay
application/json
Schema BankRule
Voorbeeld
{
"id": 6,
"company_id": 7,
"name": "Frais bancaires",
"field": "counterpart_name",
"operator": "contains",
"pattern": "frais de tenue",
"direction": "in",
"account_id": 517,
"third_party_id": 18,
"label": "Facture Brasserie Dubuisson",
"priority": 100,
"is_active": true,
"applied_count": 14,
"created_at": "2026-03-15T09:41:00+00:00",
"updated_at": "2026-03-15T09:41:00+00:00",
"lock_version": 3,
"version": 3,
"deleted_at": "2026-03-15T09:41:00+00:00",
"deleted_by": 1,
"account": {
"id": 580,
"number": "702000",
"label": "Prestations de services"
},
"third_party": {}
}token_ability_missing, session_token_required), demo restriction (demo_mode) or invalid URL signature. ErrorX-Base-Version. Nothing was modified. VersionConflicterrors maps each field to its messages; code is present when the refusal has a machine reason. ErrorVoorbeeldaanroep
curl -X PATCH "https://api.novafisko.com/v1/companies/XBVD5O1L29HC/bank-rules/6" \
-H "Accept: application/json" \
-H "Authorization: Bearer $NOVAFISKO_TOKEN" \
-H "Content-Type: application/json" \
-H "X-Client-Mutation-Id: b0a6f6f0-7d1c-4c5e-8a55-3f2b1c9d0e11" \
-d '{
"is_active": false
}'<?php
$client = new \GuzzleHttp\Client();
$response = $client->request('PATCH', 'https://api.novafisko.com/v1/companies/XBVD5O1L29HC/bank-rules/6', [
'headers' => [
'Accept' => 'application/json',
'Authorization' => 'Bearer '.getenv('NOVAFISKO_TOKEN'),
'X-Client-Mutation-Id' => 'b0a6f6f0-7d1c-4c5e-8a55-3f2b1c9d0e11',
],
'json' => [
'is_active' => false,
],
]);
$data = json_decode((string) $response->getBody(), true);const response = await fetch("https://api.novafisko.com/v1/companies/XBVD5O1L29HC/bank-rules/6", {
method: "PATCH",
headers: {
"Accept": "application/json",
"Authorization": `Bearer ${process.env.NOVAFISKO_TOKEN}`,
"Content-Type": "application/json",
"X-Client-Mutation-Id": "b0a6f6f0-7d1c-4c5e-8a55-3f2b1c9d0e11",
},
body: JSON.stringify({
"is_active": false
}),
});
if (!response.ok) {
const error = await response.json();
throw new Error(error.code ?? error.message);
}
const data = response.status === 204 ? null : await response.json();import os
import requests
response = requests.patch(
"https://api.novafisko.com/v1/companies/XBVD5O1L29HC/bank-rules/6",
headers={
"Accept": "application/json",
"Authorization": f"Bearer {os.environ['NOVAFISKO_TOKEN']}",
"X-Client-Mutation-Id": "b0a6f6f0-7d1c-4c5e-8a55-3f2b1c9d0e11",
},
json={
"is_active": False
},
timeout=30,
)
response.raise_for_status()
data = response.json() if response.content else NoneDELETE/v1/companies/{company}/bank-rules/{bankRule}Delete a bank rule write
Integration tokens need the write ability.
Operatie-id companies.bank-rules.destroy
Padparameters
| Naam | Type | Beschrijving |
|---|---|---|
company verplicht | string | Public token of the company file (public_token, 12 characters).bv. XBVD5O1L29HC |
bankRule verplicht | integer | Id of the bank rule. bv. 6 |
Gemeenschappelijke headers: Accept-Language X-Client-Mutation-Id X-Operation-Id X-Device-Id X-Device-Name X-Occurred-At X-Origin X-Base-Version
Antwoorden
204Done, no body.
Antwoordheaders X-Operation-Id X-Idempotent-Replay X-Trashed
token_ability_missing, session_token_required), demo restriction (demo_mode) or invalid URL signature. ErrorX-Base-Version. Nothing was modified. VersionConflictVoorbeeldaanroep
curl -X DELETE "https://api.novafisko.com/v1/companies/XBVD5O1L29HC/bank-rules/6" \
-H "Accept: application/json" \
-H "Authorization: Bearer $NOVAFISKO_TOKEN" \
-H "X-Client-Mutation-Id: b0a6f6f0-7d1c-4c5e-8a55-3f2b1c9d0e11"<?php
$client = new \GuzzleHttp\Client();
$response = $client->request('DELETE', 'https://api.novafisko.com/v1/companies/XBVD5O1L29HC/bank-rules/6', [
'headers' => [
'Accept' => 'application/json',
'Authorization' => 'Bearer '.getenv('NOVAFISKO_TOKEN'),
'X-Client-Mutation-Id' => 'b0a6f6f0-7d1c-4c5e-8a55-3f2b1c9d0e11',
],
]);
$data = json_decode((string) $response->getBody(), true);const response = await fetch("https://api.novafisko.com/v1/companies/XBVD5O1L29HC/bank-rules/6", {
method: "DELETE",
headers: {
"Accept": "application/json",
"Authorization": `Bearer ${process.env.NOVAFISKO_TOKEN}`,
"X-Client-Mutation-Id": "b0a6f6f0-7d1c-4c5e-8a55-3f2b1c9d0e11",
},
});
if (!response.ok) {
const error = await response.json();
throw new Error(error.code ?? error.message);
}
const data = response.status === 204 ? null : await response.json();import os
import requests
response = requests.delete(
"https://api.novafisko.com/v1/companies/XBVD5O1L29HC/bank-rules/6",
headers={
"Accept": "application/json",
"Authorization": f"Bearer {os.environ['NOVAFISKO_TOKEN']}",
"X-Client-Mutation-Id": "b0a6f6f0-7d1c-4c5e-8a55-3f2b1c9d0e11",
},
timeout=30,
)
response.raise_for_status()
data = response.json() if response.content else NoneGET/v1/companies/{company}/coda-filesList the CODA files read
Integration tokens need the read ability.
Operatie-id companies.coda-files.index
Padparameters
| Naam | Type | Beschrijving |
|---|---|---|
company verplicht | string | Public token of the company file (public_token, 12 characters).bv. XBVD5O1L29HC |
Queryparameters
| Naam | Type | Beschrijving |
|---|---|---|
journal_id | integer | |
page | integer | Page number, starting at 1. bv. 1 |
per_page | integer | Items per page (default 50, maximum 200). bv. 50 |
Gemeenschappelijke headers: Accept-Language
Antwoorden
200Paginated list
application/json
Voorbeeld
{
"current_page": 1,
"data": [
{
"id": 31,
"company_id": 7,
"source": "novadesko",
"external_id": "string",
"filename": "CODA_2026_031.cod",
"source_url": "https://api.novafisko.com/v1/companies/XBVD5O1L29HC",
"account_iban": "BE68539007547034",
"account_bank": "string",
"journal_id": 3,
"statement_number": "031",
"sequence": "string",
"opening_balance": "18420.11",
"closing_balance": "19630.11",
"period_from": "2026-03-15T09:41:00+00:00",
"period_to": "2026-03-15T09:41:00+00:00",
"transactions_count": 12,
"status": "imported",
"synced_at": "2026-03-15T09:41:00+00:00",
"created_at": "2026-03-15T09:41:00+00:00",
"updated_at": "2026-03-15T09:41:00+00:00",
"journal": {}
}
],
"first_page_url": "https://api.novafisko.com/v1/companies/XBVD5O1L29HC",
"from": 1,
"last_page": 4,
"last_page_url": "https://api.novafisko.com/v1/companies/XBVD5O1L29HC",
"links": [
{
"url": "https://api.novafisko.com/v1/companies/XBVD5O1L29HC",
"label": "1",
"page": 1,
"active": true
}
],
"next_page_url": "https://api.novafisko.com/v1/companies/XBVD5O1L29HC",
"path": "https://api.novafisko.com/v1/companies/XBVD5O1L29HC",
"per_page": 50,
"prev_page_url": "https://api.novafisko.com/v1/companies/XBVD5O1L29HC",
"to": 50,
"total": 187
}token_ability_missing, session_token_required), demo restriction (demo_mode) or invalid URL signature. ErrorVoorbeeldaanroep
curl -X GET "https://api.novafisko.com/v1/companies/XBVD5O1L29HC/coda-files" \
-H "Accept: application/json" \
-H "Authorization: Bearer $NOVAFISKO_TOKEN"<?php
$client = new \GuzzleHttp\Client();
$response = $client->request('GET', 'https://api.novafisko.com/v1/companies/XBVD5O1L29HC/coda-files', [
'headers' => [
'Accept' => 'application/json',
'Authorization' => 'Bearer '.getenv('NOVAFISKO_TOKEN'),
],
]);
$data = json_decode((string) $response->getBody(), true);const response = await fetch("https://api.novafisko.com/v1/companies/XBVD5O1L29HC/coda-files", {
method: "GET",
headers: {
"Accept": "application/json",
"Authorization": `Bearer ${process.env.NOVAFISKO_TOKEN}`,
},
});
if (!response.ok) {
const error = await response.json();
throw new Error(error.code ?? error.message);
}
const data = response.status === 204 ? null : await response.json();import os
import requests
response = requests.get(
"https://api.novafisko.com/v1/companies/XBVD5O1L29HC/coda-files",
headers={
"Accept": "application/json",
"Authorization": f"Bearer {os.environ['NOVAFISKO_TOKEN']}",
},
timeout=30,
)
response.raise_for_status()
data = response.json() if response.content else NoneGET/v1/companies/{company}/coda-files/{codaFile}/downloadDownload a CODA file read
Original statement file.
Integration tokens need the read ability.
Operatie-id companies.coda-files.download
Padparameters
| Naam | Type | Beschrijving |
|---|---|---|
company verplicht | string | Public token of the company file (public_token, 12 characters).bv. XBVD5O1L29HC |
codaFile verplicht | integer | Id of the CODA file. bv. 31 |
Gemeenschappelijke headers: Accept-Language
Antwoorden
200The CODA file.
Antwoordheaders Content-Disposition
text/plain
token_ability_missing, session_token_required), demo restriction (demo_mode) or invalid URL signature. ErrorVoorbeeldaanroep
curl -X GET "https://api.novafisko.com/v1/companies/XBVD5O1L29HC/coda-files/31/download" \
-H "Accept: application/json" \
-H "Authorization: Bearer $NOVAFISKO_TOKEN"<?php
$client = new \GuzzleHttp\Client();
$response = $client->request('GET', 'https://api.novafisko.com/v1/companies/XBVD5O1L29HC/coda-files/31/download', [
'headers' => [
'Accept' => 'application/json',
'Authorization' => 'Bearer '.getenv('NOVAFISKO_TOKEN'),
],
]);
$data = json_decode((string) $response->getBody(), true);const response = await fetch("https://api.novafisko.com/v1/companies/XBVD5O1L29HC/coda-files/31/download", {
method: "GET",
headers: {
"Accept": "application/json",
"Authorization": `Bearer ${process.env.NOVAFISKO_TOKEN}`,
},
});
if (!response.ok) {
const error = await response.json();
throw new Error(error.code ?? error.message);
}
const data = response.status === 204 ? null : await response.json();import os
import requests
response = requests.get(
"https://api.novafisko.com/v1/companies/XBVD5O1L29HC/coda-files/31/download",
headers={
"Accept": "application/json",
"Authorization": f"Bearer {os.environ['NOVAFISKO_TOKEN']}",
},
timeout=30,
)
response.raise_for_status()
data = response.json() if response.content else NoneGET/v1/companies/{company}/payments/open-itemsSupplier items to pay read
Open supplier lines; payable is false when the IBAN of the supplier is missing.
Integration tokens need the read ability.
Operatie-id companies.payments.open-items
Padparameters
| Naam | Type | Beschrijving |
|---|---|---|
company verplicht | string | Public token of the company file (public_token, 12 characters).bv. XBVD5O1L29HC |
Gemeenschappelijke headers: Accept-Language
Antwoorden
200OK
application/json
Schema object
itemsobject[]Eigenschappen
line_idintegerentry_idintegerreferencestringbv.ACH 2026/000412journal_codestringbv.ACHentry_datestring <date>due_datestring <date> | nulloverduebooleanlabelstringexternal_referencestring | nullbv.F-2026-0412structured_communicationstring | nullthird_party_idintegerthird_partystringbv.Brasserie Dubuisson SAibanstring | nullbicstring | nullamountstring <decimal>bv.655.82payableboolean
totalstring <decimal>bv.655.82payable_countintegerbv.1
Voorbeeld
{
"items": [
{
"line_id": 3391,
"entry_id": 1284,
"reference": "ACH 2026/000412",
"journal_code": "ACH",
"entry_date": "2026-03-15",
"due_date": "2026-03-15",
"overdue": true,
"label": "Facture Brasserie Dubuisson",
"external_reference": "F-2026-0412",
"structured_communication": "000000000101",
"third_party_id": 18,
"third_party": "Brasserie Dubuisson SA",
"iban": "BE68539007547034",
"bic": "GEBABEBB",
"amount": "655.82",
"payable": true
}
],
"total": "655.82",
"payable_count": 1
}token_ability_missing, session_token_required), demo restriction (demo_mode) or invalid URL signature. ErrorVoorbeeldaanroep
curl -X GET "https://api.novafisko.com/v1/companies/XBVD5O1L29HC/payments/open-items" \
-H "Accept: application/json" \
-H "Authorization: Bearer $NOVAFISKO_TOKEN"<?php
$client = new \GuzzleHttp\Client();
$response = $client->request('GET', 'https://api.novafisko.com/v1/companies/XBVD5O1L29HC/payments/open-items', [
'headers' => [
'Accept' => 'application/json',
'Authorization' => 'Bearer '.getenv('NOVAFISKO_TOKEN'),
],
]);
$data = json_decode((string) $response->getBody(), true);const response = await fetch("https://api.novafisko.com/v1/companies/XBVD5O1L29HC/payments/open-items", {
method: "GET",
headers: {
"Accept": "application/json",
"Authorization": `Bearer ${process.env.NOVAFISKO_TOKEN}`,
},
});
if (!response.ok) {
const error = await response.json();
throw new Error(error.code ?? error.message);
}
const data = response.status === 204 ? null : await response.json();import os
import requests
response = requests.get(
"https://api.novafisko.com/v1/companies/XBVD5O1L29HC/payments/open-items",
headers={
"Accept": "application/json",
"Authorization": f"Bearer {os.environ['NOVAFISKO_TOKEN']}",
},
timeout=30,
)
response.raise_for_status()
data = response.json() if response.content else NonePOST/v1/companies/{company}/payments/sepaGenerate a SEPA credit transfer file write Niet in demo 20 / 1 min
pain.001 XML for the chosen open items, debited from the bank of a financial journal. The file is to be uploaded to the bank: NovaFisko never initiates a payment.
Integration tokens need the write ability.
Not available in demo mode: answers 403 demo_mode.
Rate limit: 20 requests per minute (429 beyond, see Retry-After).
Operatie-id companies.payments.sepa
Padparameters
| Naam | Type | Beschrijving |
|---|---|---|
company verplicht | string | Public token of the company file (public_token, 12 characters).bv. XBVD5O1L29HC |
Gemeenschappelijke headers: Accept-Language X-Client-Mutation-Id X-Operation-Id X-Device-Id X-Device-Name X-Occurred-At X-Origin
Body van de aanvraag
application/json
Schema object
journal_idintegerverplichtFinancial journal with an IBAN.line_idsinteger[]verplichtexecution_datestring <date>verplichtToday or later.
Voorbeeld
{
"journal_id": 7,
"line_ids": [
3394,
3410
],
"execution_date": "2026-04-02"
}Antwoorden
200SEPA pain.001 file. Headers X-Sepa-Count and X-Sepa-Total give the number of transfers and their total.
Antwoordheaders Content-Disposition X-Operation-Id X-Idempotent-Replay X-RateLimit-Limit X-RateLimit-Remaining
application/xml
token_ability_missing, session_token_required), demo restriction (demo_mode) or invalid URL signature. Errorerrors maps each field to its messages; code is present when the refusal has a machine reason. ErrorVoorbeeldaanroep
curl -X POST "https://api.novafisko.com/v1/companies/XBVD5O1L29HC/payments/sepa" \
-H "Accept: application/json" \
-H "Authorization: Bearer $NOVAFISKO_TOKEN" \
-H "Content-Type: application/json" \
-H "X-Client-Mutation-Id: b0a6f6f0-7d1c-4c5e-8a55-3f2b1c9d0e11" \
-d '{
"journal_id": 7,
"line_ids": [
3394,
3410
],
"execution_date": "2026-04-02"
}'<?php
$client = new \GuzzleHttp\Client();
$response = $client->request('POST', 'https://api.novafisko.com/v1/companies/XBVD5O1L29HC/payments/sepa', [
'headers' => [
'Accept' => 'application/json',
'Authorization' => 'Bearer '.getenv('NOVAFISKO_TOKEN'),
'X-Client-Mutation-Id' => 'b0a6f6f0-7d1c-4c5e-8a55-3f2b1c9d0e11',
],
'json' => [
'journal_id' => 7,
'line_ids' => [
3394,
3410,
],
'execution_date' => '2026-04-02',
],
]);
$data = json_decode((string) $response->getBody(), true);const response = await fetch("https://api.novafisko.com/v1/companies/XBVD5O1L29HC/payments/sepa", {
method: "POST",
headers: {
"Accept": "application/json",
"Authorization": `Bearer ${process.env.NOVAFISKO_TOKEN}`,
"Content-Type": "application/json",
"X-Client-Mutation-Id": "b0a6f6f0-7d1c-4c5e-8a55-3f2b1c9d0e11",
},
body: JSON.stringify({
"journal_id": 7,
"line_ids": [
3394,
3410
],
"execution_date": "2026-04-02"
}),
});
if (!response.ok) {
const error = await response.json();
throw new Error(error.code ?? error.message);
}
const data = response.status === 204 ? null : await response.json();import os
import requests
response = requests.post(
"https://api.novafisko.com/v1/companies/XBVD5O1L29HC/payments/sepa",
headers={
"Accept": "application/json",
"Authorization": f"Bearer {os.environ['NOVAFISKO_TOKEN']}",
"X-Client-Mutation-Id": "b0a6f6f0-7d1c-4c5e-8a55-3f2b1c9d0e11",
},
json={
"journal_id": 7,
"line_ids": [
3394,
3410
],
"execution_date": "2026-04-02"
},
timeout=30,
)
response.raise_for_status()
data = response.json() if response.content else NoneVAT
VAT codes, periodic declarations, Intervat XML, customer and intra-community listings.
GET/v1/companies/{company}/vat-codesVAT codes read
Codes of the country pack with their rate, nature and declaration grids.
Integration tokens need the read ability.
Operatie-id companies.vat-codes.index
Padparameters
| Naam | Type | Beschrijving |
|---|---|---|
company verplicht | string | Public token of the company file (public_token, 12 characters).bv. XBVD5O1L29HC |
Queryparameters
| Naam | Type | Beschrijving |
|---|---|---|
all | boolean | Include the inactive codes. |
Gemeenschappelijke headers: Accept-Language
Antwoorden
200OK
application/json
Voorbeeld
[
{
"id": 4,
"company_id": 7,
"code": "V21",
"label": "Ventes 21 %",
"direction": "sale",
"rate": "21.00",
"nature": "standard",
"deductible_pct": "100.00",
"base_grid": "03",
"vat_grid": "54",
"due_vat_grid": "string",
"credit_base_grid": "49",
"credit_vat_grid": "64",
"vat_account": "451100",
"due_vat_account": "string",
"description": "Description",
"is_active": true,
"sort_order": 13,
"created_at": "2026-03-15T09:41:00+00:00",
"updated_at": "2026-03-15T09:41:00+00:00",
"lock_version": 3,
"version": 3
}
]token_ability_missing, session_token_required), demo restriction (demo_mode) or invalid URL signature. ErrorVoorbeeldaanroep
curl -X GET "https://api.novafisko.com/v1/companies/XBVD5O1L29HC/vat-codes" \
-H "Accept: application/json" \
-H "Authorization: Bearer $NOVAFISKO_TOKEN"<?php
$client = new \GuzzleHttp\Client();
$response = $client->request('GET', 'https://api.novafisko.com/v1/companies/XBVD5O1L29HC/vat-codes', [
'headers' => [
'Accept' => 'application/json',
'Authorization' => 'Bearer '.getenv('NOVAFISKO_TOKEN'),
],
]);
$data = json_decode((string) $response->getBody(), true);const response = await fetch("https://api.novafisko.com/v1/companies/XBVD5O1L29HC/vat-codes", {
method: "GET",
headers: {
"Accept": "application/json",
"Authorization": `Bearer ${process.env.NOVAFISKO_TOKEN}`,
},
});
if (!response.ok) {
const error = await response.json();
throw new Error(error.code ?? error.message);
}
const data = response.status === 204 ? null : await response.json();import os
import requests
response = requests.get(
"https://api.novafisko.com/v1/companies/XBVD5O1L29HC/vat-codes",
headers={
"Accept": "application/json",
"Authorization": f"Bearer {os.environ['NOVAFISKO_TOKEN']}",
},
timeout=30,
)
response.raise_for_status()
data = response.json() if response.content else NonePATCH/v1/companies/{company}/vat-codes/{vatCode}Activate or describe a VAT code write
Rates and grids are part of the country pack and cannot be edited.
Integration tokens need the write ability.
Operatie-id companies.vat-codes.update
Padparameters
| Naam | Type | Beschrijving |
|---|---|---|
company verplicht | string | Public token of the company file (public_token, 12 characters).bv. XBVD5O1L29HC |
vatCode verplicht | integer | Id of the VAT code. bv. 4 |
Gemeenschappelijke headers: Accept-Language X-Client-Mutation-Id X-Operation-Id X-Device-Id X-Device-Name X-Occurred-At X-Origin X-Base-Version
Body van de aanvraag
application/json
Schema object
is_activebooleandescriptionstring | null
Voorbeeld
{
"is_active": false
}Antwoorden
200OK
Antwoordheaders X-Operation-Id X-Idempotent-Replay
application/json
Schema VatCode
Voorbeeld
{
"id": 4,
"company_id": 7,
"code": "V21",
"label": "Ventes 21 %",
"direction": "sale",
"rate": "21.00",
"nature": "standard",
"deductible_pct": "100.00",
"base_grid": "03",
"vat_grid": "54",
"due_vat_grid": "string",
"credit_base_grid": "49",
"credit_vat_grid": "64",
"vat_account": "451100",
"due_vat_account": "string",
"description": "Description",
"is_active": true,
"sort_order": 13,
"created_at": "2026-03-15T09:41:00+00:00",
"updated_at": "2026-03-15T09:41:00+00:00",
"lock_version": 3,
"version": 3
}token_ability_missing, session_token_required), demo restriction (demo_mode) or invalid URL signature. ErrorX-Base-Version. Nothing was modified. VersionConflicterrors maps each field to its messages; code is present when the refusal has a machine reason. ErrorVoorbeeldaanroep
curl -X PATCH "https://api.novafisko.com/v1/companies/XBVD5O1L29HC/vat-codes/4" \
-H "Accept: application/json" \
-H "Authorization: Bearer $NOVAFISKO_TOKEN" \
-H "Content-Type: application/json" \
-H "X-Client-Mutation-Id: b0a6f6f0-7d1c-4c5e-8a55-3f2b1c9d0e11" \
-d '{
"is_active": false
}'<?php
$client = new \GuzzleHttp\Client();
$response = $client->request('PATCH', 'https://api.novafisko.com/v1/companies/XBVD5O1L29HC/vat-codes/4', [
'headers' => [
'Accept' => 'application/json',
'Authorization' => 'Bearer '.getenv('NOVAFISKO_TOKEN'),
'X-Client-Mutation-Id' => 'b0a6f6f0-7d1c-4c5e-8a55-3f2b1c9d0e11',
],
'json' => [
'is_active' => false,
],
]);
$data = json_decode((string) $response->getBody(), true);const response = await fetch("https://api.novafisko.com/v1/companies/XBVD5O1L29HC/vat-codes/4", {
method: "PATCH",
headers: {
"Accept": "application/json",
"Authorization": `Bearer ${process.env.NOVAFISKO_TOKEN}`,
"Content-Type": "application/json",
"X-Client-Mutation-Id": "b0a6f6f0-7d1c-4c5e-8a55-3f2b1c9d0e11",
},
body: JSON.stringify({
"is_active": false
}),
});
if (!response.ok) {
const error = await response.json();
throw new Error(error.code ?? error.message);
}
const data = response.status === 204 ? null : await response.json();import os
import requests
response = requests.patch(
"https://api.novafisko.com/v1/companies/XBVD5O1L29HC/vat-codes/4",
headers={
"Accept": "application/json",
"Authorization": f"Bearer {os.environ['NOVAFISKO_TOKEN']}",
"X-Client-Mutation-Id": "b0a6f6f0-7d1c-4c5e-8a55-3f2b1c9d0e11",
},
json={
"is_active": False
},
timeout=30,
)
response.raise_for_status()
data = response.json() if response.content else NoneGET/v1/companies/{company}/vat-declarationsVAT periods of a year read
Every period of the year with its declaration, or a computed preview when none exists yet.
Integration tokens need the read ability.
Operatie-id companies.vat.index
Padparameters
| Naam | Type | Beschrijving |
|---|---|---|
company verplicht | string | Public token of the company file (public_token, 12 characters).bv. XBVD5O1L29HC |
Queryparameters
| Naam | Type | Beschrijving |
|---|---|---|
year | integer | Current year by default. bv. 2026 |
Gemeenschappelijke headers: Accept-Language
Antwoorden
200OK
application/json
Schema object
yearintegerbv.2026period_typestringmonthlyquarterlyperiodsobject[]Eigenschappen
periodintegerbv.1labelstringbv.1T 2026starts_onstring <date>ends_onstring <date>declarationVatDeclaration | nullpreviewVatComputation | null
Voorbeeld
{
"year": 2026,
"period_type": "monthly",
"periods": [
{
"period": 1,
"label": "1T 2026",
"starts_on": "2026-03-15",
"ends_on": "2026-03-15",
"declaration": {
"id": 14,
"company_id": 7,
"period_type": "monthly",
"year": 2026,
"period": 1,
"starts_on": "2026-03-15T09:41:00+00:00",
"ends_on": "2026-03-15T09:41:00+00:00",
"grids": {
"00": "0.00",
"01": "0.00",
"02": "0.00",
"03": "1000.00",
"54": "210.00",
"59": "52.50",
"71": "157.50",
"72": "0.00",
"81": "0.00",
"82": "250.00",
"83": "0.00"
},
"amount_due": "157.50",
"amount_refund": "0.00",
"status": "draft",
"validated_at": "2026-03-15T09:41:00+00:00",
"validated_by": 1,
"submitted_at": "2026-03-15T09:41:00+00:00",
"submission_reference": "string",
"journal_entry_id": 1284,
"warnings": [
"string"
],
"created_at": "2026-03-15T09:41:00+00:00",
"updated_at": "2026-03-15T09:41:00+00:00",
"lock_version": 3,
"version": 3,
"journal_entry": {}
},
"preview": {
"grids": {
"00": "0.00",
"01": "0.00",
"02": "0.00",
"03": "1000.00",
"54": "210.00",
"59": "52.50",
"71": "157.50",
"72": "0.00",
"81": "0.00",
"82": "250.00",
"83": "0.00"
},
"amount_due": "157.50",
"amount_refund": "0.00",
"warnings": [
"string"
],
"entries": 38
}
}
]
}token_ability_missing, session_token_required), demo restriction (demo_mode) or invalid URL signature. ErrorVoorbeeldaanroep
curl -X GET "https://api.novafisko.com/v1/companies/XBVD5O1L29HC/vat-declarations" \
-H "Accept: application/json" \
-H "Authorization: Bearer $NOVAFISKO_TOKEN"<?php
$client = new \GuzzleHttp\Client();
$response = $client->request('GET', 'https://api.novafisko.com/v1/companies/XBVD5O1L29HC/vat-declarations', [
'headers' => [
'Accept' => 'application/json',
'Authorization' => 'Bearer '.getenv('NOVAFISKO_TOKEN'),
],
]);
$data = json_decode((string) $response->getBody(), true);const response = await fetch("https://api.novafisko.com/v1/companies/XBVD5O1L29HC/vat-declarations", {
method: "GET",
headers: {
"Accept": "application/json",
"Authorization": `Bearer ${process.env.NOVAFISKO_TOKEN}`,
},
});
if (!response.ok) {
const error = await response.json();
throw new Error(error.code ?? error.message);
}
const data = response.status === 204 ? null : await response.json();import os
import requests
response = requests.get(
"https://api.novafisko.com/v1/companies/XBVD5O1L29HC/vat-declarations",
headers={
"Accept": "application/json",
"Authorization": f"Bearer {os.environ['NOVAFISKO_TOKEN']}",
},
timeout=30,
)
response.raise_for_status()
data = response.json() if response.content else NonePOST/v1/companies/{company}/vat-declarationsCreate or refresh a draft declaration write
Computes the grids of the period and stores them as a draft. Calling it again recomputes the draft.
Integration tokens need the write ability.
Operatie-id companies.vat.store
Padparameters
| Naam | Type | Beschrijving |
|---|---|---|
company verplicht | string | Public token of the company file (public_token, 12 characters).bv. XBVD5O1L29HC |
Gemeenschappelijke headers: Accept-Language X-Client-Mutation-Id X-Operation-Id X-Device-Id X-Device-Name X-Occurred-At X-Origin
Body van de aanvraag
application/json
Schema object
yearintegerverplicht2000 to 2100.bv.2026periodintegerverplichtMonth (1-12) or quarter (1-4) according to the VAT regime of the file.bv.1
Voorbeeld
{
"year": 2026,
"period": 1
}Antwoorden
201Created
Antwoordheaders X-Operation-Id X-Idempotent-Replay
application/json
Schema VatDeclaration
Voorbeeld
{
"id": 14,
"company_id": 7,
"period_type": "monthly",
"year": 2026,
"period": 1,
"starts_on": "2026-03-15T09:41:00+00:00",
"ends_on": "2026-03-15T09:41:00+00:00",
"grids": {
"00": "0.00",
"01": "0.00",
"02": "0.00",
"03": "1000.00",
"54": "210.00",
"59": "52.50",
"71": "157.50",
"72": "0.00",
"81": "0.00",
"82": "250.00",
"83": "0.00"
},
"amount_due": "157.50",
"amount_refund": "0.00",
"status": "draft",
"validated_at": "2026-03-15T09:41:00+00:00",
"validated_by": 1,
"submitted_at": "2026-03-15T09:41:00+00:00",
"submission_reference": "string",
"journal_entry_id": 1284,
"warnings": [
"string"
],
"created_at": "2026-03-15T09:41:00+00:00",
"updated_at": "2026-03-15T09:41:00+00:00",
"lock_version": 3,
"version": 3,
"journal_entry": {}
}token_ability_missing, session_token_required), demo restriction (demo_mode) or invalid URL signature. Errorerrors maps each field to its messages; code is present when the refusal has a machine reason. ErrorVoorbeeldaanroep
curl -X POST "https://api.novafisko.com/v1/companies/XBVD5O1L29HC/vat-declarations" \
-H "Accept: application/json" \
-H "Authorization: Bearer $NOVAFISKO_TOKEN" \
-H "Content-Type: application/json" \
-H "X-Client-Mutation-Id: b0a6f6f0-7d1c-4c5e-8a55-3f2b1c9d0e11" \
-d '{
"year": 2026,
"period": 1
}'<?php
$client = new \GuzzleHttp\Client();
$response = $client->request('POST', 'https://api.novafisko.com/v1/companies/XBVD5O1L29HC/vat-declarations', [
'headers' => [
'Accept' => 'application/json',
'Authorization' => 'Bearer '.getenv('NOVAFISKO_TOKEN'),
'X-Client-Mutation-Id' => 'b0a6f6f0-7d1c-4c5e-8a55-3f2b1c9d0e11',
],
'json' => [
'year' => 2026,
'period' => 1,
],
]);
$data = json_decode((string) $response->getBody(), true);const response = await fetch("https://api.novafisko.com/v1/companies/XBVD5O1L29HC/vat-declarations", {
method: "POST",
headers: {
"Accept": "application/json",
"Authorization": `Bearer ${process.env.NOVAFISKO_TOKEN}`,
"Content-Type": "application/json",
"X-Client-Mutation-Id": "b0a6f6f0-7d1c-4c5e-8a55-3f2b1c9d0e11",
},
body: JSON.stringify({
"year": 2026,
"period": 1
}),
});
if (!response.ok) {
const error = await response.json();
throw new Error(error.code ?? error.message);
}
const data = response.status === 204 ? null : await response.json();import os
import requests
response = requests.post(
"https://api.novafisko.com/v1/companies/XBVD5O1L29HC/vat-declarations",
headers={
"Accept": "application/json",
"Authorization": f"Bearer {os.environ['NOVAFISKO_TOKEN']}",
"X-Client-Mutation-Id": "b0a6f6f0-7d1c-4c5e-8a55-3f2b1c9d0e11",
},
json={
"year": 2026,
"period": 1
},
timeout=30,
)
response.raise_for_status()
data = response.json() if response.content else NoneGET/v1/companies/{company}/vat-declarations/previewCompute a VAT period read
Grids computed from the entries of the period, without saving anything.
Integration tokens need the read ability.
Operatie-id companies.vat.preview
Padparameters
| Naam | Type | Beschrijving |
|---|---|---|
company verplicht | string | Public token of the company file (public_token, 12 characters).bv. XBVD5O1L29HC |
Queryparameters
| Naam | Type | Beschrijving |
|---|---|---|
year verplicht | integer | 2000 to 2100. bv. 2026 |
period verplicht | integer | Month (1-12) or quarter (1-4) according to the VAT regime of the file. bv. 1 |
Gemeenschappelijke headers: Accept-Language
Antwoorden
200OK
application/json
Voorbeeld
{
"starts_on": "2026-03-15",
"ends_on": "2026-03-15",
"grids": {
"00": "0.00",
"01": "0.00",
"02": "0.00",
"03": "1000.00",
"54": "210.00",
"59": "52.50",
"71": "157.50",
"72": "0.00",
"81": "0.00",
"82": "250.00",
"83": "0.00"
},
"amount_due": "157.50",
"amount_refund": "0.00",
"warnings": [
"string"
],
"entries": 38
}token_ability_missing, session_token_required), demo restriction (demo_mode) or invalid URL signature. ErrorVoorbeeldaanroep
curl -X GET "https://api.novafisko.com/v1/companies/XBVD5O1L29HC/vat-declarations/preview?year=2026&period=1" \
-H "Accept: application/json" \
-H "Authorization: Bearer $NOVAFISKO_TOKEN"<?php
$client = new \GuzzleHttp\Client();
$response = $client->request('GET', 'https://api.novafisko.com/v1/companies/XBVD5O1L29HC/vat-declarations/preview', [
'headers' => [
'Accept' => 'application/json',
'Authorization' => 'Bearer '.getenv('NOVAFISKO_TOKEN'),
],
'query' => [
'year' => '2026',
'period' => '1',
],
]);
$data = json_decode((string) $response->getBody(), true);const response = await fetch("https://api.novafisko.com/v1/companies/XBVD5O1L29HC/vat-declarations/preview?year=2026&period=1", {
method: "GET",
headers: {
"Accept": "application/json",
"Authorization": `Bearer ${process.env.NOVAFISKO_TOKEN}`,
},
});
if (!response.ok) {
const error = await response.json();
throw new Error(error.code ?? error.message);
}
const data = response.status === 204 ? null : await response.json();import os
import requests
response = requests.get(
"https://api.novafisko.com/v1/companies/XBVD5O1L29HC/vat-declarations/preview",
headers={
"Accept": "application/json",
"Authorization": f"Bearer {os.environ['NOVAFISKO_TOKEN']}",
},
params={
"year": "2026",
"period": "1"
},
timeout=30,
)
response.raise_for_status()
data = response.json() if response.content else NoneGET/v1/companies/{company}/vat-declarations/intracom-listingIntra-community listing read
Intra-EU supplies of goods and services per customer for the period. format=xml downloads the Intervat file.
Integration tokens need the read ability.
Operatie-id companies.vat.intracom-listing
Padparameters
| Naam | Type | Beschrijving |
|---|---|---|
company verplicht | string | Public token of the company file (public_token, 12 characters).bv. XBVD5O1L29HC |
Queryparameters
| Naam | Type | Beschrijving |
|---|---|---|
year verplicht | integer | 2000 to 2100. bv. 2026 |
period verplicht | integer | Month (1-12) or quarter (1-4) according to the VAT regime of the file. bv. 1 |
format | string | xml |
Gemeenschappelijke headers: Accept-Language
Antwoorden
200OK
application/json
Schema object
yearintegerperiodintegerperiod_typestringfromstring <date>tostring <date>clientsobject[]Eigenschappen
vat_numberstringbv.NL853746333B01countrystringbv.NLnamestringcodestringL goods, S services, T triangular.bv.Samountstring <decimal>
totalstring <decimal>total_goodsstring <decimal>total_servicesstring <decimal>
Voorbeeld
{
"year": 2026,
"period": 3,
"period_type": "string",
"from": "2026-03-15",
"to": "2026-03-15",
"clients": [
{
"vat_number": "NL853746333B01",
"country": "NL",
"name": "Le Comptoir Montois SRL",
"code": "S",
"amount": "1210.00"
}
],
"total": "1210.00",
"total_goods": "1210.00",
"total_services": "1210.00"
}token_ability_missing, session_token_required), demo restriction (demo_mode) or invalid URL signature. ErrorVoorbeeldaanroep
curl -X GET "https://api.novafisko.com/v1/companies/XBVD5O1L29HC/vat-declarations/intracom-listing?year=2026&period=1" \
-H "Accept: application/json" \
-H "Authorization: Bearer $NOVAFISKO_TOKEN"<?php
$client = new \GuzzleHttp\Client();
$response = $client->request('GET', 'https://api.novafisko.com/v1/companies/XBVD5O1L29HC/vat-declarations/intracom-listing', [
'headers' => [
'Accept' => 'application/json',
'Authorization' => 'Bearer '.getenv('NOVAFISKO_TOKEN'),
],
'query' => [
'year' => '2026',
'period' => '1',
],
]);
$data = json_decode((string) $response->getBody(), true);const response = await fetch("https://api.novafisko.com/v1/companies/XBVD5O1L29HC/vat-declarations/intracom-listing?year=2026&period=1", {
method: "GET",
headers: {
"Accept": "application/json",
"Authorization": `Bearer ${process.env.NOVAFISKO_TOKEN}`,
},
});
if (!response.ok) {
const error = await response.json();
throw new Error(error.code ?? error.message);
}
const data = response.status === 204 ? null : await response.json();import os
import requests
response = requests.get(
"https://api.novafisko.com/v1/companies/XBVD5O1L29HC/vat-declarations/intracom-listing",
headers={
"Accept": "application/json",
"Authorization": f"Bearer {os.environ['NOVAFISKO_TOKEN']}",
},
params={
"year": "2026",
"period": "1"
},
timeout=30,
)
response.raise_for_status()
data = response.json() if response.content else NoneGET/v1/companies/{company}/vat-declarations/client-listing/{year}Annual customer listing read
Belgian VAT-liable customers of the year with turnover and VAT; declare is true above the legal threshold of 250 EUR. format=xml downloads the Intervat file.
Integration tokens need the read ability.
Operatie-id companies.vat.client-listing
Padparameters
| Naam | Type | Beschrijving |
|---|---|---|
company verplicht | string | Public token of the company file (public_token, 12 characters).bv. XBVD5O1L29HC |
year verplicht | integer | Calendar year. bv. 2026 |
Queryparameters
| Naam | Type | Beschrijving |
|---|---|---|
format | string | xml |
Gemeenschappelijke headers: Accept-Language
Antwoorden
200OK
application/json
Schema object
yearintegerbv.2026clientsobject[]Eigenschappen
vat_numberstringbv.BE0403170701namestringbv.ACME SAturnovernumberbv.18250vatnumberbv.3832.5declareboolean
total_turnovernumbertotal_vatnumber
Voorbeeld
{
"year": 2026,
"clients": [
{
"vat_number": "BE0403170701",
"name": "ACME SA",
"turnover": 18250,
"vat": 3832.5,
"declare": true
}
],
"total_turnover": 12.5,
"total_vat": 12.5
}token_ability_missing, session_token_required), demo restriction (demo_mode) or invalid URL signature. ErrorVoorbeeldaanroep
curl -X GET "https://api.novafisko.com/v1/companies/XBVD5O1L29HC/vat-declarations/client-listing/2026" \
-H "Accept: application/json" \
-H "Authorization: Bearer $NOVAFISKO_TOKEN"<?php
$client = new \GuzzleHttp\Client();
$response = $client->request('GET', 'https://api.novafisko.com/v1/companies/XBVD5O1L29HC/vat-declarations/client-listing/2026', [
'headers' => [
'Accept' => 'application/json',
'Authorization' => 'Bearer '.getenv('NOVAFISKO_TOKEN'),
],
]);
$data = json_decode((string) $response->getBody(), true);const response = await fetch("https://api.novafisko.com/v1/companies/XBVD5O1L29HC/vat-declarations/client-listing/2026", {
method: "GET",
headers: {
"Accept": "application/json",
"Authorization": `Bearer ${process.env.NOVAFISKO_TOKEN}`,
},
});
if (!response.ok) {
const error = await response.json();
throw new Error(error.code ?? error.message);
}
const data = response.status === 204 ? null : await response.json();import os
import requests
response = requests.get(
"https://api.novafisko.com/v1/companies/XBVD5O1L29HC/vat-declarations/client-listing/2026",
headers={
"Accept": "application/json",
"Authorization": f"Bearer {os.environ['NOVAFISKO_TOKEN']}",
},
timeout=30,
)
response.raise_for_status()
data = response.json() if response.content else NoneGET/v1/companies/{company}/vat-declarations/{vatDeclaration}VAT declaration read
With its settlement entry once validated.
Integration tokens need the read ability.
Operatie-id companies.vat.show
Padparameters
| Naam | Type | Beschrijving |
|---|---|---|
company verplicht | string | Public token of the company file (public_token, 12 characters).bv. XBVD5O1L29HC |
vatDeclaration verplicht | integer | Id of the VAT declaration. bv. 14 |
Gemeenschappelijke headers: Accept-Language
Antwoorden
200OK
application/json
Schema VatDeclaration
Voorbeeld
{
"id": 14,
"company_id": 7,
"period_type": "monthly",
"year": 2026,
"period": 1,
"starts_on": "2026-03-15T09:41:00+00:00",
"ends_on": "2026-03-15T09:41:00+00:00",
"grids": {
"00": "0.00",
"01": "0.00",
"02": "0.00",
"03": "1000.00",
"54": "210.00",
"59": "52.50",
"71": "157.50",
"72": "0.00",
"81": "0.00",
"82": "250.00",
"83": "0.00"
},
"amount_due": "157.50",
"amount_refund": "0.00",
"status": "draft",
"validated_at": "2026-03-15T09:41:00+00:00",
"validated_by": 1,
"submitted_at": "2026-03-15T09:41:00+00:00",
"submission_reference": "string",
"journal_entry_id": 1284,
"warnings": [
"string"
],
"created_at": "2026-03-15T09:41:00+00:00",
"updated_at": "2026-03-15T09:41:00+00:00",
"lock_version": 3,
"version": 3,
"journal_entry": {}
}token_ability_missing, session_token_required), demo restriction (demo_mode) or invalid URL signature. ErrorVoorbeeldaanroep
curl -X GET "https://api.novafisko.com/v1/companies/XBVD5O1L29HC/vat-declarations/14" \
-H "Accept: application/json" \
-H "Authorization: Bearer $NOVAFISKO_TOKEN"<?php
$client = new \GuzzleHttp\Client();
$response = $client->request('GET', 'https://api.novafisko.com/v1/companies/XBVD5O1L29HC/vat-declarations/14', [
'headers' => [
'Accept' => 'application/json',
'Authorization' => 'Bearer '.getenv('NOVAFISKO_TOKEN'),
],
]);
$data = json_decode((string) $response->getBody(), true);const response = await fetch("https://api.novafisko.com/v1/companies/XBVD5O1L29HC/vat-declarations/14", {
method: "GET",
headers: {
"Accept": "application/json",
"Authorization": `Bearer ${process.env.NOVAFISKO_TOKEN}`,
},
});
if (!response.ok) {
const error = await response.json();
throw new Error(error.code ?? error.message);
}
const data = response.status === 204 ? null : await response.json();import os
import requests
response = requests.get(
"https://api.novafisko.com/v1/companies/XBVD5O1L29HC/vat-declarations/14",
headers={
"Accept": "application/json",
"Authorization": f"Bearer {os.environ['NOVAFISKO_TOKEN']}",
},
timeout=30,
)
response.raise_for_status()
data = response.json() if response.content else NonePOST/v1/companies/{company}/vat-declarations/{vatDeclaration}/validateValidate a declaration write
Freezes the grids and posts the VAT settlement entry (accounts of settings.auto_entries.vat). Emits the webhook vat.declaration_validated.
Integration tokens need the write ability.
Error codes (code):
period_locked: the period is locked or the fiscal year is closed;reasontells which (period_lockedorfiscal_year_closed)
Operatie-id companies.vat.validate
Padparameters
| Naam | Type | Beschrijving |
|---|---|---|
company verplicht | string | Public token of the company file (public_token, 12 characters).bv. XBVD5O1L29HC |
vatDeclaration verplicht | integer | Id of the VAT declaration. bv. 14 |
Gemeenschappelijke headers: Accept-Language X-Client-Mutation-Id X-Operation-Id X-Device-Id X-Device-Name X-Occurred-At X-Origin
Antwoorden
200OK
Antwoordheaders X-Operation-Id X-Idempotent-Replay
application/json
Schema VatDeclaration
Voorbeeld
{
"id": 14,
"company_id": 7,
"period_type": "monthly",
"year": 2026,
"period": 1,
"starts_on": "2026-03-15T09:41:00+00:00",
"ends_on": "2026-03-15T09:41:00+00:00",
"grids": {
"00": "0.00",
"01": "0.00",
"02": "0.00",
"03": "1000.00",
"54": "210.00",
"59": "52.50",
"71": "157.50",
"72": "0.00",
"81": "0.00",
"82": "250.00",
"83": "0.00"
},
"amount_due": "157.50",
"amount_refund": "0.00",
"status": "draft",
"validated_at": "2026-03-15T09:41:00+00:00",
"validated_by": 1,
"submitted_at": "2026-03-15T09:41:00+00:00",
"submission_reference": "string",
"journal_entry_id": 1284,
"warnings": [
"string"
],
"created_at": "2026-03-15T09:41:00+00:00",
"updated_at": "2026-03-15T09:41:00+00:00",
"lock_version": 3,
"version": 3,
"journal_entry": {}
}token_ability_missing, session_token_required), demo restriction (demo_mode) or invalid URL signature. Errorcode: period_locked, with reason). PeriodLockedErrorVoorbeeldaanroep
curl -X POST "https://api.novafisko.com/v1/companies/XBVD5O1L29HC/vat-declarations/14/validate" \
-H "Accept: application/json" \
-H "Authorization: Bearer $NOVAFISKO_TOKEN" \
-H "X-Client-Mutation-Id: b0a6f6f0-7d1c-4c5e-8a55-3f2b1c9d0e11"<?php
$client = new \GuzzleHttp\Client();
$response = $client->request('POST', 'https://api.novafisko.com/v1/companies/XBVD5O1L29HC/vat-declarations/14/validate', [
'headers' => [
'Accept' => 'application/json',
'Authorization' => 'Bearer '.getenv('NOVAFISKO_TOKEN'),
'X-Client-Mutation-Id' => 'b0a6f6f0-7d1c-4c5e-8a55-3f2b1c9d0e11',
],
]);
$data = json_decode((string) $response->getBody(), true);const response = await fetch("https://api.novafisko.com/v1/companies/XBVD5O1L29HC/vat-declarations/14/validate", {
method: "POST",
headers: {
"Accept": "application/json",
"Authorization": `Bearer ${process.env.NOVAFISKO_TOKEN}`,
"X-Client-Mutation-Id": "b0a6f6f0-7d1c-4c5e-8a55-3f2b1c9d0e11",
},
});
if (!response.ok) {
const error = await response.json();
throw new Error(error.code ?? error.message);
}
const data = response.status === 204 ? null : await response.json();import os
import requests
response = requests.post(
"https://api.novafisko.com/v1/companies/XBVD5O1L29HC/vat-declarations/14/validate",
headers={
"Accept": "application/json",
"Authorization": f"Bearer {os.environ['NOVAFISKO_TOKEN']}",
"X-Client-Mutation-Id": "b0a6f6f0-7d1c-4c5e-8a55-3f2b1c9d0e11",
},
timeout=30,
)
response.raise_for_status()
data = response.json() if response.content else NonePOST/v1/companies/{company}/vat-declarations/{vatDeclaration}/submitMark a declaration as submitted write
Records the Intervat reference. NovaFisko does not file the declaration itself: download the XML and upload it on Intervat.
Integration tokens need the write ability.
Operatie-id companies.vat.submit
Padparameters
| Naam | Type | Beschrijving |
|---|---|---|
company verplicht | string | Public token of the company file (public_token, 12 characters).bv. XBVD5O1L29HC |
vatDeclaration verplicht | integer | Id of the VAT declaration. bv. 14 |
Gemeenschappelijke headers: Accept-Language X-Client-Mutation-Id X-Operation-Id X-Device-Id X-Device-Name X-Occurred-At X-Origin
Body van de aanvraag optioneel
application/json
Schema object
referencestring | nullIntervat receipt reference.
Voorbeeld
{
"reference": "INTERVAT-2026-04-0098123"
}Antwoorden
200OK
Antwoordheaders X-Operation-Id X-Idempotent-Replay
application/json
Schema VatDeclaration
Voorbeeld
{
"id": 14,
"company_id": 7,
"period_type": "monthly",
"year": 2026,
"period": 1,
"starts_on": "2026-03-15T09:41:00+00:00",
"ends_on": "2026-03-15T09:41:00+00:00",
"grids": {
"00": "0.00",
"01": "0.00",
"02": "0.00",
"03": "1000.00",
"54": "210.00",
"59": "52.50",
"71": "157.50",
"72": "0.00",
"81": "0.00",
"82": "250.00",
"83": "0.00"
},
"amount_due": "157.50",
"amount_refund": "0.00",
"status": "draft",
"validated_at": "2026-03-15T09:41:00+00:00",
"validated_by": 1,
"submitted_at": "2026-03-15T09:41:00+00:00",
"submission_reference": "string",
"journal_entry_id": 1284,
"warnings": [
"string"
],
"created_at": "2026-03-15T09:41:00+00:00",
"updated_at": "2026-03-15T09:41:00+00:00",
"lock_version": 3,
"version": 3,
"journal_entry": {}
}token_ability_missing, session_token_required), demo restriction (demo_mode) or invalid URL signature. Errorerrors maps each field to its messages; code is present when the refusal has a machine reason. ErrorVoorbeeldaanroep
curl -X POST "https://api.novafisko.com/v1/companies/XBVD5O1L29HC/vat-declarations/14/submit" \
-H "Accept: application/json" \
-H "Authorization: Bearer $NOVAFISKO_TOKEN" \
-H "Content-Type: application/json" \
-H "X-Client-Mutation-Id: b0a6f6f0-7d1c-4c5e-8a55-3f2b1c9d0e11" \
-d '{
"reference": "INTERVAT-2026-04-0098123"
}'<?php
$client = new \GuzzleHttp\Client();
$response = $client->request('POST', 'https://api.novafisko.com/v1/companies/XBVD5O1L29HC/vat-declarations/14/submit', [
'headers' => [
'Accept' => 'application/json',
'Authorization' => 'Bearer '.getenv('NOVAFISKO_TOKEN'),
'X-Client-Mutation-Id' => 'b0a6f6f0-7d1c-4c5e-8a55-3f2b1c9d0e11',
],
'json' => [
'reference' => 'INTERVAT-2026-04-0098123',
],
]);
$data = json_decode((string) $response->getBody(), true);const response = await fetch("https://api.novafisko.com/v1/companies/XBVD5O1L29HC/vat-declarations/14/submit", {
method: "POST",
headers: {
"Accept": "application/json",
"Authorization": `Bearer ${process.env.NOVAFISKO_TOKEN}`,
"Content-Type": "application/json",
"X-Client-Mutation-Id": "b0a6f6f0-7d1c-4c5e-8a55-3f2b1c9d0e11",
},
body: JSON.stringify({
"reference": "INTERVAT-2026-04-0098123"
}),
});
if (!response.ok) {
const error = await response.json();
throw new Error(error.code ?? error.message);
}
const data = response.status === 204 ? null : await response.json();import os
import requests
response = requests.post(
"https://api.novafisko.com/v1/companies/XBVD5O1L29HC/vat-declarations/14/submit",
headers={
"Accept": "application/json",
"Authorization": f"Bearer {os.environ['NOVAFISKO_TOKEN']}",
"X-Client-Mutation-Id": "b0a6f6f0-7d1c-4c5e-8a55-3f2b1c9d0e11",
},
json={
"reference": "INTERVAT-2026-04-0098123"
},
timeout=30,
)
response.raise_for_status()
data = response.json() if response.content else NoneGET/v1/companies/{company}/vat-declarations/{vatDeclaration}/xmlIntervat XML of a declaration read
File ready to upload on Intervat (VATConsignment).
Integration tokens need the read ability.
Padparameters
| Naam | Type | Beschrijving |
|---|---|---|
company verplicht | string | Public token of the company file (public_token, 12 characters).bv. XBVD5O1L29HC |
vatDeclaration verplicht | integer | Id of the VAT declaration. bv. 14 |
Gemeenschappelijke headers: Accept-Language
Antwoorden
200Intervat XML file.
Antwoordheaders Content-Disposition
application/xml
token_ability_missing, session_token_required), demo restriction (demo_mode) or invalid URL signature. ErrorVoorbeeldaanroep
curl -X GET "https://api.novafisko.com/v1/companies/XBVD5O1L29HC/vat-declarations/14/xml" \
-H "Accept: application/json" \
-H "Authorization: Bearer $NOVAFISKO_TOKEN"<?php
$client = new \GuzzleHttp\Client();
$response = $client->request('GET', 'https://api.novafisko.com/v1/companies/XBVD5O1L29HC/vat-declarations/14/xml', [
'headers' => [
'Accept' => 'application/json',
'Authorization' => 'Bearer '.getenv('NOVAFISKO_TOKEN'),
],
]);
$data = json_decode((string) $response->getBody(), true);const response = await fetch("https://api.novafisko.com/v1/companies/XBVD5O1L29HC/vat-declarations/14/xml", {
method: "GET",
headers: {
"Accept": "application/json",
"Authorization": `Bearer ${process.env.NOVAFISKO_TOKEN}`,
},
});
if (!response.ok) {
const error = await response.json();
throw new Error(error.code ?? error.message);
}
const data = response.status === 204 ? null : await response.json();import os
import requests
response = requests.get(
"https://api.novafisko.com/v1/companies/XBVD5O1L29HC/vat-declarations/14/xml",
headers={
"Accept": "application/json",
"Authorization": f"Bearer {os.environ['NOVAFISKO_TOKEN']}",
},
timeout=30,
)
response.raise_for_status()
data = response.json() if response.content else NoneFixed assets
Fixed asset register, depreciation plans, bookings, disposals.
GET/v1/companies/{company}/fixed-assetsFixed asset register read
With the depreciation plan of each asset.
Integration tokens need the read ability.
Operatie-id companies.fixed-assets.index
Padparameters
| Naam | Type | Beschrijving |
|---|---|---|
company verplicht | string | Public token of the company file (public_token, 12 characters).bv. XBVD5O1L29HC |
Gemeenschappelijke headers: Accept-Language
Antwoorden
200OK
application/json
Schema FixedAsset[]
Array van FixedAsset
Voorbeeld
[
{
"id": 9,
"company_id": 7,
"source": "manual",
"external_id": "string",
"reference": "IMM-2026-003",
"name": "Four mixte Rational",
"category": "it_equipment",
"asset_group": "string",
"asset_account_id": 42,
"depreciation_account_id": 42,
"expense_account_id": 42,
"imported_document_id": 42,
"acquisition_date": "2026-02-01T00:00:00.000000Z",
"acquisition_cost": "12400.00",
"residual_value": "0.00",
"useful_life_years": 5,
"method": "linear",
"prorata_temporis": true,
"start_date": "2026-03-15T09:41:00+00:00",
"status": "active",
"notes": "string",
"disposed_on": "2026-03-15T09:41:00+00:00",
"disposal_price": "1210.00",
"disposal_entry_id": 42,
"investment_deduction_pct": "1210.00",
"investment_deduction_spread": true,
"created_at": "2026-03-15T09:41:00+00:00",
"updated_at": "2026-03-15T09:41:00+00:00",
"lock_version": 3,
"version": 3,
"deleted_at": "2026-03-15T09:41:00+00:00",
"deleted_by": 1,
"lines": [
{
"id": 42,
"fixed_asset_id": 9,
"year": 2026,
"period_start": "2026-03-15T09:41:00+00:00",
"period_end": "2026-03-15T09:41:00+00:00",
"amount": "2269.37",
"cumulative_amount": "2269.37",
"remaining_value": "10130.63",
"status": "planned",
"journal_entry_id": 1284,
"booked_amount": "0.00"
}
],
"asset_account": {
"id": 580,
"number": "702000",
"label": "Prestations de services"
},
"depreciation_account": {
"id": 580,
"number": "702000",
"label": "Prestations de services"
},
"expense_account": {
"id": 580,
"number": "702000",
"label": "Prestations de services"
}
}
]token_ability_missing, session_token_required), demo restriction (demo_mode) or invalid URL signature. ErrorVoorbeeldaanroep
curl -X GET "https://api.novafisko.com/v1/companies/XBVD5O1L29HC/fixed-assets" \
-H "Accept: application/json" \
-H "Authorization: Bearer $NOVAFISKO_TOKEN"<?php
$client = new \GuzzleHttp\Client();
$response = $client->request('GET', 'https://api.novafisko.com/v1/companies/XBVD5O1L29HC/fixed-assets', [
'headers' => [
'Accept' => 'application/json',
'Authorization' => 'Bearer '.getenv('NOVAFISKO_TOKEN'),
],
]);
$data = json_decode((string) $response->getBody(), true);const response = await fetch("https://api.novafisko.com/v1/companies/XBVD5O1L29HC/fixed-assets", {
method: "GET",
headers: {
"Accept": "application/json",
"Authorization": `Bearer ${process.env.NOVAFISKO_TOKEN}`,
},
});
if (!response.ok) {
const error = await response.json();
throw new Error(error.code ?? error.message);
}
const data = response.status === 204 ? null : await response.json();import os
import requests
response = requests.get(
"https://api.novafisko.com/v1/companies/XBVD5O1L29HC/fixed-assets",
headers={
"Accept": "application/json",
"Authorization": f"Bearer {os.environ['NOVAFISKO_TOKEN']}",
},
timeout=30,
)
response.raise_for_status()
data = response.json() if response.content else NonePOST/v1/companies/{company}/fixed-assetsCreate a fixed asset write
Builds the depreciation plan (linear or declining, pro rata temporis) and resolves the asset, depreciation and expense accounts.
Integration tokens need the write ability.
Operatie-id companies.fixed-assets.store
Padparameters
| Naam | Type | Beschrijving |
|---|---|---|
company verplicht | string | Public token of the company file (public_token, 12 characters).bv. XBVD5O1L29HC |
Gemeenschappelijke headers: Accept-Language X-Client-Mutation-Id X-Operation-Id X-Device-Id X-Device-Name X-Occurred-At X-Origin
Body van de aanvraag
application/json
Schema object
namestringverplichtreferencestring | nullcategorystringverplichtit_equipmentvehiclefurnituremachinerybuildingsoftwareotherasset_groupstring | nullinvestment_deduction_pctnumber | null0 to 100.investment_deduction_spreadbooleanasset_account_idinteger | nullClass 2 account; resolved from the category when absent.acquisition_datestring <date>verplichtacquisition_coststringverplichtDecimal, excl. VAT.residual_valuestring | nullDecimal.useful_life_yearsintegerverplicht1 to 50.methodstringlineardecliningprorata_temporisbooleanTrue by default.start_datestring <date> | nullStart of the depreciation; the acquisition date by default.notesstring | null
Voorbeeld
{
"name": "Four mixte Rational",
"category": "machinery",
"acquisition_date": "2026-02-01",
"acquisition_cost": "12400.00",
"useful_life_years": 5
}Antwoorden
201Created
Antwoordheaders X-Operation-Id X-Idempotent-Replay
application/json
Schema FixedAsset
Voorbeeld
{
"id": 9,
"company_id": 7,
"source": "manual",
"external_id": "string",
"reference": "IMM-2026-003",
"name": "Four mixte Rational",
"category": "it_equipment",
"asset_group": "string",
"asset_account_id": 42,
"depreciation_account_id": 42,
"expense_account_id": 42,
"imported_document_id": 42,
"acquisition_date": "2026-02-01T00:00:00.000000Z",
"acquisition_cost": "12400.00",
"residual_value": "0.00",
"useful_life_years": 5,
"method": "linear",
"prorata_temporis": true,
"start_date": "2026-03-15T09:41:00+00:00",
"status": "active",
"notes": "string",
"disposed_on": "2026-03-15T09:41:00+00:00",
"disposal_price": "1210.00",
"disposal_entry_id": 42,
"investment_deduction_pct": "1210.00",
"investment_deduction_spread": true,
"created_at": "2026-03-15T09:41:00+00:00",
"updated_at": "2026-03-15T09:41:00+00:00",
"lock_version": 3,
"version": 3,
"deleted_at": "2026-03-15T09:41:00+00:00",
"deleted_by": 1,
"lines": [
{
"id": 42,
"fixed_asset_id": 9,
"year": 2026,
"period_start": "2026-03-15T09:41:00+00:00",
"period_end": "2026-03-15T09:41:00+00:00",
"amount": "2269.37",
"cumulative_amount": "2269.37",
"remaining_value": "10130.63",
"status": "planned",
"journal_entry_id": 1284,
"booked_amount": "0.00"
}
],
"asset_account": {
"id": 580,
"number": "702000",
"label": "Prestations de services"
},
"depreciation_account": {
"id": 580,
"number": "702000",
"label": "Prestations de services"
},
"expense_account": {
"id": 580,
"number": "702000",
"label": "Prestations de services"
}
}token_ability_missing, session_token_required), demo restriction (demo_mode) or invalid URL signature. Errorerrors maps each field to its messages; code is present when the refusal has a machine reason. ErrorVoorbeeldaanroep
curl -X POST "https://api.novafisko.com/v1/companies/XBVD5O1L29HC/fixed-assets" \
-H "Accept: application/json" \
-H "Authorization: Bearer $NOVAFISKO_TOKEN" \
-H "Content-Type: application/json" \
-H "X-Client-Mutation-Id: b0a6f6f0-7d1c-4c5e-8a55-3f2b1c9d0e11" \
-d '{
"name": "Four mixte Rational",
"category": "machinery",
"acquisition_date": "2026-02-01",
"acquisition_cost": "12400.00",
"useful_life_years": 5
}'<?php
$client = new \GuzzleHttp\Client();
$response = $client->request('POST', 'https://api.novafisko.com/v1/companies/XBVD5O1L29HC/fixed-assets', [
'headers' => [
'Accept' => 'application/json',
'Authorization' => 'Bearer '.getenv('NOVAFISKO_TOKEN'),
'X-Client-Mutation-Id' => 'b0a6f6f0-7d1c-4c5e-8a55-3f2b1c9d0e11',
],
'json' => [
'name' => 'Four mixte Rational',
'category' => 'machinery',
'acquisition_date' => '2026-02-01',
'acquisition_cost' => '12400.00',
'useful_life_years' => 5,
],
]);
$data = json_decode((string) $response->getBody(), true);const response = await fetch("https://api.novafisko.com/v1/companies/XBVD5O1L29HC/fixed-assets", {
method: "POST",
headers: {
"Accept": "application/json",
"Authorization": `Bearer ${process.env.NOVAFISKO_TOKEN}`,
"Content-Type": "application/json",
"X-Client-Mutation-Id": "b0a6f6f0-7d1c-4c5e-8a55-3f2b1c9d0e11",
},
body: JSON.stringify({
"name": "Four mixte Rational",
"category": "machinery",
"acquisition_date": "2026-02-01",
"acquisition_cost": "12400.00",
"useful_life_years": 5
}),
});
if (!response.ok) {
const error = await response.json();
throw new Error(error.code ?? error.message);
}
const data = response.status === 204 ? null : await response.json();import os
import requests
response = requests.post(
"https://api.novafisko.com/v1/companies/XBVD5O1L29HC/fixed-assets",
headers={
"Accept": "application/json",
"Authorization": f"Bearer {os.environ['NOVAFISKO_TOKEN']}",
"X-Client-Mutation-Id": "b0a6f6f0-7d1c-4c5e-8a55-3f2b1c9d0e11",
},
json={
"name": "Four mixte Rational",
"category": "machinery",
"acquisition_date": "2026-02-01",
"acquisition_cost": "12400.00",
"useful_life_years": 5
},
timeout=30,
)
response.raise_for_status()
data = response.json() if response.content else NoneGET/v1/companies/{company}/fixed-assets/groups/{fiscalYear}Depreciation table per group read
Acquisition cost, accumulated depreciation, depreciation of the year and net book value per group, for a fiscal year.
Integration tokens need the read ability.
Operatie-id companies.fixed-assets.groups
Padparameters
| Naam | Type | Beschrijving |
|---|---|---|
company verplicht | string | Public token of the company file (public_token, 12 characters).bv. XBVD5O1L29HC |
fiscalYear verplicht | integer | Id of the fiscal year. bv. 2 |
Gemeenschappelijke headers: Accept-Language
Antwoorden
200OK
application/json
Schema object
fiscal_yearstringbv.2026groupsobject[]Eigenschappen
groupstringbv.machinerycountintegerbv.1acquisition_coststring <decimal>bv.12400.00accumulatedstring <decimal>bv.2269.37net_book_valuestring <decimal>bv.10130.63year_depreciationstring <decimal>bv.2269.37investment_deductionstring <decimal>bv.0.00assetsobject[]
totalsobjectEigenschappen
acquisition_coststring <decimal>accumulatedstring <decimal>net_book_valuestring <decimal>year_depreciationstring <decimal>investment_deductionstring <decimal>
Voorbeeld
{
"fiscal_year": "2026",
"groups": [
{
"group": "machinery",
"count": 1,
"acquisition_cost": "12400.00",
"accumulated": "2269.37",
"net_book_value": "10130.63",
"year_depreciation": "2269.37",
"investment_deduction": "0.00",
"assets": [
{}
]
}
],
"totals": {
"acquisition_cost": "1210.00",
"accumulated": "1210.00",
"net_book_value": "1210.00",
"year_depreciation": "1210.00",
"investment_deduction": "1210.00"
}
}token_ability_missing, session_token_required), demo restriction (demo_mode) or invalid URL signature. ErrorVoorbeeldaanroep
curl -X GET "https://api.novafisko.com/v1/companies/XBVD5O1L29HC/fixed-assets/groups/2" \
-H "Accept: application/json" \
-H "Authorization: Bearer $NOVAFISKO_TOKEN"<?php
$client = new \GuzzleHttp\Client();
$response = $client->request('GET', 'https://api.novafisko.com/v1/companies/XBVD5O1L29HC/fixed-assets/groups/2', [
'headers' => [
'Accept' => 'application/json',
'Authorization' => 'Bearer '.getenv('NOVAFISKO_TOKEN'),
],
]);
$data = json_decode((string) $response->getBody(), true);const response = await fetch("https://api.novafisko.com/v1/companies/XBVD5O1L29HC/fixed-assets/groups/2", {
method: "GET",
headers: {
"Accept": "application/json",
"Authorization": `Bearer ${process.env.NOVAFISKO_TOKEN}`,
},
});
if (!response.ok) {
const error = await response.json();
throw new Error(error.code ?? error.message);
}
const data = response.status === 204 ? null : await response.json();import os
import requests
response = requests.get(
"https://api.novafisko.com/v1/companies/XBVD5O1L29HC/fixed-assets/groups/2",
headers={
"Accept": "application/json",
"Authorization": f"Bearer {os.environ['NOVAFISKO_TOKEN']}",
},
timeout=30,
)
response.raise_for_status()
data = response.json() if response.content else NoneGET/v1/companies/{company}/fixed-assets/{fixedAsset}Fixed asset read
Integration tokens need the read ability.
Operatie-id companies.fixed-assets.show
Padparameters
| Naam | Type | Beschrijving |
|---|---|---|
company verplicht | string | Public token of the company file (public_token, 12 characters).bv. XBVD5O1L29HC |
fixedAsset verplicht | integer | Id of the fixed asset. bv. 9 |
Gemeenschappelijke headers: Accept-Language
Antwoorden
200OK
application/json
Schema FixedAsset
Voorbeeld
{
"id": 9,
"company_id": 7,
"source": "manual",
"external_id": "string",
"reference": "IMM-2026-003",
"name": "Four mixte Rational",
"category": "it_equipment",
"asset_group": "string",
"asset_account_id": 42,
"depreciation_account_id": 42,
"expense_account_id": 42,
"imported_document_id": 42,
"acquisition_date": "2026-02-01T00:00:00.000000Z",
"acquisition_cost": "12400.00",
"residual_value": "0.00",
"useful_life_years": 5,
"method": "linear",
"prorata_temporis": true,
"start_date": "2026-03-15T09:41:00+00:00",
"status": "active",
"notes": "string",
"disposed_on": "2026-03-15T09:41:00+00:00",
"disposal_price": "1210.00",
"disposal_entry_id": 42,
"investment_deduction_pct": "1210.00",
"investment_deduction_spread": true,
"created_at": "2026-03-15T09:41:00+00:00",
"updated_at": "2026-03-15T09:41:00+00:00",
"lock_version": 3,
"version": 3,
"deleted_at": "2026-03-15T09:41:00+00:00",
"deleted_by": 1,
"lines": [
{
"id": 42,
"fixed_asset_id": 9,
"year": 2026,
"period_start": "2026-03-15T09:41:00+00:00",
"period_end": "2026-03-15T09:41:00+00:00",
"amount": "2269.37",
"cumulative_amount": "2269.37",
"remaining_value": "10130.63",
"status": "planned",
"journal_entry_id": 1284,
"booked_amount": "0.00"
}
],
"asset_account": {
"id": 580,
"number": "702000",
"label": "Prestations de services"
},
"depreciation_account": {
"id": 580,
"number": "702000",
"label": "Prestations de services"
},
"expense_account": {
"id": 580,
"number": "702000",
"label": "Prestations de services"
}
}token_ability_missing, session_token_required), demo restriction (demo_mode) or invalid URL signature. ErrorVoorbeeldaanroep
curl -X GET "https://api.novafisko.com/v1/companies/XBVD5O1L29HC/fixed-assets/9" \
-H "Accept: application/json" \
-H "Authorization: Bearer $NOVAFISKO_TOKEN"<?php
$client = new \GuzzleHttp\Client();
$response = $client->request('GET', 'https://api.novafisko.com/v1/companies/XBVD5O1L29HC/fixed-assets/9', [
'headers' => [
'Accept' => 'application/json',
'Authorization' => 'Bearer '.getenv('NOVAFISKO_TOKEN'),
],
]);
$data = json_decode((string) $response->getBody(), true);const response = await fetch("https://api.novafisko.com/v1/companies/XBVD5O1L29HC/fixed-assets/9", {
method: "GET",
headers: {
"Accept": "application/json",
"Authorization": `Bearer ${process.env.NOVAFISKO_TOKEN}`,
},
});
if (!response.ok) {
const error = await response.json();
throw new Error(error.code ?? error.message);
}
const data = response.status === 204 ? null : await response.json();import os
import requests
response = requests.get(
"https://api.novafisko.com/v1/companies/XBVD5O1L29HC/fixed-assets/9",
headers={
"Accept": "application/json",
"Authorization": f"Bearer {os.environ['NOVAFISKO_TOKEN']}",
},
timeout=30,
)
response.raise_for_status()
data = response.json() if response.content else NonePATCH/v1/companies/{company}/fixed-assets/{fixedAsset}Update a fixed asset write
The plan is rebuilt for the years not booked yet.
Integration tokens need the write ability.
Operatie-id companies.fixed-assets.update
Padparameters
| Naam | Type | Beschrijving |
|---|---|---|
company verplicht | string | Public token of the company file (public_token, 12 characters).bv. XBVD5O1L29HC |
fixedAsset verplicht | integer | Id of the fixed asset. bv. 9 |
Gemeenschappelijke headers: Accept-Language X-Client-Mutation-Id X-Operation-Id X-Device-Id X-Device-Name X-Occurred-At X-Origin X-Base-Version
Body van de aanvraag
application/json
Schema object
namestringcategorystringit_equipmentvehiclefurnituremachinerybuildingsoftwareotherasset_groupstring | nullinvestment_deduction_pctnumber | nullinvestment_deduction_spreadbooleanasset_account_idinteger | nullresidual_valuestringuseful_life_yearsintegermethodstringlineardecliningprorata_temporisbooleanstatusstringactivefully_depreciateddisposednotesstring | null
Voorbeeld
{
"useful_life_years": 7
}Antwoorden
200OK
Antwoordheaders X-Operation-Id X-Idempotent-Replay
application/json
Schema FixedAsset
Voorbeeld
{
"id": 9,
"company_id": 7,
"source": "manual",
"external_id": "string",
"reference": "IMM-2026-003",
"name": "Four mixte Rational",
"category": "it_equipment",
"asset_group": "string",
"asset_account_id": 42,
"depreciation_account_id": 42,
"expense_account_id": 42,
"imported_document_id": 42,
"acquisition_date": "2026-02-01T00:00:00.000000Z",
"acquisition_cost": "12400.00",
"residual_value": "0.00",
"useful_life_years": 5,
"method": "linear",
"prorata_temporis": true,
"start_date": "2026-03-15T09:41:00+00:00",
"status": "active",
"notes": "string",
"disposed_on": "2026-03-15T09:41:00+00:00",
"disposal_price": "1210.00",
"disposal_entry_id": 42,
"investment_deduction_pct": "1210.00",
"investment_deduction_spread": true,
"created_at": "2026-03-15T09:41:00+00:00",
"updated_at": "2026-03-15T09:41:00+00:00",
"lock_version": 3,
"version": 3,
"deleted_at": "2026-03-15T09:41:00+00:00",
"deleted_by": 1,
"lines": [
{
"id": 42,
"fixed_asset_id": 9,
"year": 2026,
"period_start": "2026-03-15T09:41:00+00:00",
"period_end": "2026-03-15T09:41:00+00:00",
"amount": "2269.37",
"cumulative_amount": "2269.37",
"remaining_value": "10130.63",
"status": "planned",
"journal_entry_id": 1284,
"booked_amount": "0.00"
}
],
"asset_account": {
"id": 580,
"number": "702000",
"label": "Prestations de services"
},
"depreciation_account": {
"id": 580,
"number": "702000",
"label": "Prestations de services"
},
"expense_account": {
"id": 580,
"number": "702000",
"label": "Prestations de services"
}
}token_ability_missing, session_token_required), demo restriction (demo_mode) or invalid URL signature. ErrorX-Base-Version. Nothing was modified. VersionConflicterrors maps each field to its messages; code is present when the refusal has a machine reason. ErrorVoorbeeldaanroep
curl -X PATCH "https://api.novafisko.com/v1/companies/XBVD5O1L29HC/fixed-assets/9" \
-H "Accept: application/json" \
-H "Authorization: Bearer $NOVAFISKO_TOKEN" \
-H "Content-Type: application/json" \
-H "X-Client-Mutation-Id: b0a6f6f0-7d1c-4c5e-8a55-3f2b1c9d0e11" \
-d '{
"useful_life_years": 7
}'<?php
$client = new \GuzzleHttp\Client();
$response = $client->request('PATCH', 'https://api.novafisko.com/v1/companies/XBVD5O1L29HC/fixed-assets/9', [
'headers' => [
'Accept' => 'application/json',
'Authorization' => 'Bearer '.getenv('NOVAFISKO_TOKEN'),
'X-Client-Mutation-Id' => 'b0a6f6f0-7d1c-4c5e-8a55-3f2b1c9d0e11',
],
'json' => [
'useful_life_years' => 7,
],
]);
$data = json_decode((string) $response->getBody(), true);const response = await fetch("https://api.novafisko.com/v1/companies/XBVD5O1L29HC/fixed-assets/9", {
method: "PATCH",
headers: {
"Accept": "application/json",
"Authorization": `Bearer ${process.env.NOVAFISKO_TOKEN}`,
"Content-Type": "application/json",
"X-Client-Mutation-Id": "b0a6f6f0-7d1c-4c5e-8a55-3f2b1c9d0e11",
},
body: JSON.stringify({
"useful_life_years": 7
}),
});
if (!response.ok) {
const error = await response.json();
throw new Error(error.code ?? error.message);
}
const data = response.status === 204 ? null : await response.json();import os
import requests
response = requests.patch(
"https://api.novafisko.com/v1/companies/XBVD5O1L29HC/fixed-assets/9",
headers={
"Accept": "application/json",
"Authorization": f"Bearer {os.environ['NOVAFISKO_TOKEN']}",
"X-Client-Mutation-Id": "b0a6f6f0-7d1c-4c5e-8a55-3f2b1c9d0e11",
},
json={
"useful_life_years": 7
},
timeout=30,
)
response.raise_for_status()
data = response.json() if response.content else NonePOST/v1/companies/{company}/fixed-assets/book-period/{fiscalYear}Book the depreciation of a period write
One miscellaneous entry for every asset, for a month of the fiscal year. 200 with entry: null when there is nothing to book.
Integration tokens need the write ability.
Operatie-id companies.fixed-assets.book-period
Padparameters
| Naam | Type | Beschrijving |
|---|---|---|
company verplicht | string | Public token of the company file (public_token, 12 characters).bv. XBVD5O1L29HC |
fiscalYear verplicht | integer | Id of the fiscal year. bv. 2 |
Gemeenschappelijke headers: Accept-Language X-Client-Mutation-Id X-Operation-Id X-Device-Id X-Device-Name X-Occurred-At X-Origin
Body van de aanvraag
application/json
Schema object
period_numberintegerverplicht1 to 12.
Voorbeeld
{
"period_number": 3
}Antwoorden
200Nothing to book
Antwoordheaders X-Operation-Id X-Idempotent-Replay
application/json
Schema object
entryJournalEntry | nullperiodstringbv.Mars 2026
Voorbeeld
{
"entry": {
"id": 1284,
"company_id": 7,
"fiscal_year_id": 2,
"period_id": 16,
"journal_id": 3,
"number": 412,
"entry_date": "2026-03-15T00:00:00.000000Z",
"due_date": "2026-03-15T09:41:00+00:00",
"label": "Facture Brasserie Dubuisson SA",
"reference": "F-2026-0412",
"structured_communication": "000000000101",
"third_party_id": 18,
"status": "posted",
"origin": "manual",
"created_by": 1,
"posted_at": "2026-03-15T09:41:00+00:00",
"reversed_entry_id": 42,
"reversed_by_entry_id": 42,
"recurring_entry_id": 42,
"created_at": "2026-03-15T09:41:00+00:00",
"updated_at": "2026-03-15T09:41:00+00:00",
"lock_version": 3,
"version": 3,
"journal": {
"id": 3,
"code": "VEN",
"type": "sale"
},
"third_party": {
"id": 18,
"name": "Brasserie Dubuisson SA"
},
"lines": [
{
"id": 3391,
"journal_entry_id": 1284,
"position": 1,
"account_id": 580,
"third_party_id": 18,
"label": "Brasserie Dubuisson SA",
"debit": "0.00",
"credit": "1000.00",
"vat_code_id": 4,
"vat_base": "1000.00",
"reconciliation_code": "AB",
"cost_center_id": 42,
"project_id": 42,
"reminder_level": 0,
"reminder_sent_at": "2026-03-15T09:41:00+00:00",
"account": {
"id": 580,
"number": "702000",
"label": "Prestations de services"
},
"vat_code": {}
}
]
},
"period": "Mars 2026"
}201Depreciation booked
Antwoordheaders X-Operation-Id X-Idempotent-Replay
application/json
Schema object
entryJournalEntryperiodstringbv.Mars 2026
Voorbeeld
{
"entry": {
"id": 1284,
"company_id": 7,
"fiscal_year_id": 2,
"period_id": 16,
"journal_id": 3,
"number": 412,
"entry_date": "2026-03-15T00:00:00.000000Z",
"due_date": "2026-03-15T09:41:00+00:00",
"label": "Facture Brasserie Dubuisson SA",
"reference": "F-2026-0412",
"structured_communication": "000000000101",
"third_party_id": 18,
"status": "posted",
"origin": "manual",
"created_by": 1,
"posted_at": "2026-03-15T09:41:00+00:00",
"reversed_entry_id": 42,
"reversed_by_entry_id": 42,
"recurring_entry_id": 42,
"created_at": "2026-03-15T09:41:00+00:00",
"updated_at": "2026-03-15T09:41:00+00:00",
"lock_version": 3,
"version": 3,
"journal": {
"id": 3,
"code": "VEN",
"type": "sale"
},
"third_party": {
"id": 18,
"name": "Brasserie Dubuisson SA"
},
"lines": [
{
"id": 3391,
"journal_entry_id": 1284,
"position": 1,
"account_id": 580,
"third_party_id": 18,
"label": "Brasserie Dubuisson SA",
"debit": "0.00",
"credit": "1000.00",
"vat_code_id": 4,
"vat_base": "1000.00",
"reconciliation_code": "AB",
"cost_center_id": 42,
"project_id": 42,
"reminder_level": 0,
"reminder_sent_at": "2026-03-15T09:41:00+00:00",
"account": {
"id": 580,
"number": "702000",
"label": "Prestations de services"
},
"vat_code": {}
}
]
},
"period": "Mars 2026"
}token_ability_missing, session_token_required), demo restriction (demo_mode) or invalid URL signature. Errorerrors maps each field to its messages; code is present when the refusal has a machine reason. ErrorVoorbeeldaanroep
curl -X POST "https://api.novafisko.com/v1/companies/XBVD5O1L29HC/fixed-assets/book-period/2" \
-H "Accept: application/json" \
-H "Authorization: Bearer $NOVAFISKO_TOKEN" \
-H "Content-Type: application/json" \
-H "X-Client-Mutation-Id: b0a6f6f0-7d1c-4c5e-8a55-3f2b1c9d0e11" \
-d '{
"period_number": 3
}'<?php
$client = new \GuzzleHttp\Client();
$response = $client->request('POST', 'https://api.novafisko.com/v1/companies/XBVD5O1L29HC/fixed-assets/book-period/2', [
'headers' => [
'Accept' => 'application/json',
'Authorization' => 'Bearer '.getenv('NOVAFISKO_TOKEN'),
'X-Client-Mutation-Id' => 'b0a6f6f0-7d1c-4c5e-8a55-3f2b1c9d0e11',
],
'json' => [
'period_number' => 3,
],
]);
$data = json_decode((string) $response->getBody(), true);const response = await fetch("https://api.novafisko.com/v1/companies/XBVD5O1L29HC/fixed-assets/book-period/2", {
method: "POST",
headers: {
"Accept": "application/json",
"Authorization": `Bearer ${process.env.NOVAFISKO_TOKEN}`,
"Content-Type": "application/json",
"X-Client-Mutation-Id": "b0a6f6f0-7d1c-4c5e-8a55-3f2b1c9d0e11",
},
body: JSON.stringify({
"period_number": 3
}),
});
if (!response.ok) {
const error = await response.json();
throw new Error(error.code ?? error.message);
}
const data = response.status === 204 ? null : await response.json();import os
import requests
response = requests.post(
"https://api.novafisko.com/v1/companies/XBVD5O1L29HC/fixed-assets/book-period/2",
headers={
"Accept": "application/json",
"Authorization": f"Bearer {os.environ['NOVAFISKO_TOKEN']}",
"X-Client-Mutation-Id": "b0a6f6f0-7d1c-4c5e-8a55-3f2b1c9d0e11",
},
json={
"period_number": 3
},
timeout=30,
)
response.raise_for_status()
data = response.json() if response.content else NonePOST/v1/companies/{company}/fixed-assets/{fixedAsset}/book/{fiscalYear}Book the yearly depreciation of an asset write
Miscellaneous entry 6302 / 2x09 for the fiscal year.
Integration tokens need the write ability.
Error codes (code):
period_locked: the period is locked or the fiscal year is closed;reasontells which (period_lockedorfiscal_year_closed)
Operatie-id companies.fixed-assets.book
Padparameters
| Naam | Type | Beschrijving |
|---|---|---|
company verplicht | string | Public token of the company file (public_token, 12 characters).bv. XBVD5O1L29HC |
fixedAsset verplicht | integer | Id of the fixed asset. bv. 9 |
fiscalYear verplicht | integer | Id of the fiscal year. bv. 2 |
Gemeenschappelijke headers: Accept-Language X-Client-Mutation-Id X-Operation-Id X-Device-Id X-Device-Name X-Occurred-At X-Origin
Antwoorden
201Created
Antwoordheaders X-Operation-Id X-Idempotent-Replay
application/json
Schema FixedAsset
Voorbeeld
{
"id": 9,
"company_id": 7,
"source": "manual",
"external_id": "string",
"reference": "IMM-2026-003",
"name": "Four mixte Rational",
"category": "it_equipment",
"asset_group": "string",
"asset_account_id": 42,
"depreciation_account_id": 42,
"expense_account_id": 42,
"imported_document_id": 42,
"acquisition_date": "2026-02-01T00:00:00.000000Z",
"acquisition_cost": "12400.00",
"residual_value": "0.00",
"useful_life_years": 5,
"method": "linear",
"prorata_temporis": true,
"start_date": "2026-03-15T09:41:00+00:00",
"status": "active",
"notes": "string",
"disposed_on": "2026-03-15T09:41:00+00:00",
"disposal_price": "1210.00",
"disposal_entry_id": 42,
"investment_deduction_pct": "1210.00",
"investment_deduction_spread": true,
"created_at": "2026-03-15T09:41:00+00:00",
"updated_at": "2026-03-15T09:41:00+00:00",
"lock_version": 3,
"version": 3,
"deleted_at": "2026-03-15T09:41:00+00:00",
"deleted_by": 1,
"lines": [
{
"id": 42,
"fixed_asset_id": 9,
"year": 2026,
"period_start": "2026-03-15T09:41:00+00:00",
"period_end": "2026-03-15T09:41:00+00:00",
"amount": "2269.37",
"cumulative_amount": "2269.37",
"remaining_value": "10130.63",
"status": "planned",
"journal_entry_id": 1284,
"booked_amount": "0.00"
}
],
"asset_account": {
"id": 580,
"number": "702000",
"label": "Prestations de services"
},
"depreciation_account": {
"id": 580,
"number": "702000",
"label": "Prestations de services"
},
"expense_account": {
"id": 580,
"number": "702000",
"label": "Prestations de services"
}
}token_ability_missing, session_token_required), demo restriction (demo_mode) or invalid URL signature. Errorcode: period_locked, with reason). PeriodLockedErrorVoorbeeldaanroep
curl -X POST "https://api.novafisko.com/v1/companies/XBVD5O1L29HC/fixed-assets/9/book/2" \
-H "Accept: application/json" \
-H "Authorization: Bearer $NOVAFISKO_TOKEN" \
-H "X-Client-Mutation-Id: b0a6f6f0-7d1c-4c5e-8a55-3f2b1c9d0e11"<?php
$client = new \GuzzleHttp\Client();
$response = $client->request('POST', 'https://api.novafisko.com/v1/companies/XBVD5O1L29HC/fixed-assets/9/book/2', [
'headers' => [
'Accept' => 'application/json',
'Authorization' => 'Bearer '.getenv('NOVAFISKO_TOKEN'),
'X-Client-Mutation-Id' => 'b0a6f6f0-7d1c-4c5e-8a55-3f2b1c9d0e11',
],
]);
$data = json_decode((string) $response->getBody(), true);const response = await fetch("https://api.novafisko.com/v1/companies/XBVD5O1L29HC/fixed-assets/9/book/2", {
method: "POST",
headers: {
"Accept": "application/json",
"Authorization": `Bearer ${process.env.NOVAFISKO_TOKEN}`,
"X-Client-Mutation-Id": "b0a6f6f0-7d1c-4c5e-8a55-3f2b1c9d0e11",
},
});
if (!response.ok) {
const error = await response.json();
throw new Error(error.code ?? error.message);
}
const data = response.status === 204 ? null : await response.json();import os
import requests
response = requests.post(
"https://api.novafisko.com/v1/companies/XBVD5O1L29HC/fixed-assets/9/book/2",
headers={
"Accept": "application/json",
"Authorization": f"Bearer {os.environ['NOVAFISKO_TOKEN']}",
"X-Client-Mutation-Id": "b0a6f6f0-7d1c-4c5e-8a55-3f2b1c9d0e11",
},
timeout=30,
)
response.raise_for_status()
data = response.json() if response.content else NonePOST/v1/companies/{company}/fixed-assets/{fixedAsset}/disposeDispose of an asset write
Sale (price above 0) or scrapping (price 0): posts the disposal entry with the gain or loss.
Integration tokens need the write ability.
Operatie-id companies.fixed-assets.dispose
Padparameters
| Naam | Type | Beschrijving |
|---|---|---|
company verplicht | string | Public token of the company file (public_token, 12 characters).bv. XBVD5O1L29HC |
fixedAsset verplicht | integer | Id of the fixed asset. bv. 9 |
Gemeenschappelijke headers: Accept-Language X-Client-Mutation-Id X-Operation-Id X-Device-Id X-Device-Name X-Occurred-At X-Origin
Body van de aanvraag
application/json
Schema object
datestring <date>verplichtsale_pricestring | nullDecimal, excl. VAT.labelstring | null
Voorbeeld
{
"date": "2026-09-30",
"sale_price": "4500.00"
}Antwoorden
201Created
Antwoordheaders X-Operation-Id X-Idempotent-Replay
application/json
Schema object
assetFixedAssetentryJournalEntry
Voorbeeld
{
"asset": {
"id": 9,
"company_id": 7,
"source": "manual",
"external_id": "string",
"reference": "IMM-2026-003",
"name": "Four mixte Rational",
"category": "it_equipment",
"asset_group": "string",
"asset_account_id": 42,
"depreciation_account_id": 42,
"expense_account_id": 42,
"imported_document_id": 42,
"acquisition_date": "2026-02-01T00:00:00.000000Z",
"acquisition_cost": "12400.00",
"residual_value": "0.00",
"useful_life_years": 5,
"method": "linear",
"prorata_temporis": true,
"start_date": "2026-03-15T09:41:00+00:00",
"status": "active",
"notes": "string",
"disposed_on": "2026-03-15T09:41:00+00:00",
"disposal_price": "1210.00",
"disposal_entry_id": 42,
"investment_deduction_pct": "1210.00",
"investment_deduction_spread": true,
"created_at": "2026-03-15T09:41:00+00:00",
"updated_at": "2026-03-15T09:41:00+00:00",
"lock_version": 3,
"version": 3,
"deleted_at": "2026-03-15T09:41:00+00:00",
"deleted_by": 1,
"lines": [
{
"id": 42,
"fixed_asset_id": 9,
"year": 2026,
"period_start": "2026-03-15T09:41:00+00:00",
"period_end": "2026-03-15T09:41:00+00:00",
"amount": "2269.37",
"cumulative_amount": "2269.37",
"remaining_value": "10130.63",
"status": "planned",
"journal_entry_id": 1284,
"booked_amount": "0.00"
}
],
"asset_account": {
"id": 580,
"number": "702000",
"label": "Prestations de services"
},
"depreciation_account": {
"id": 580,
"number": "702000",
"label": "Prestations de services"
},
"expense_account": {
"id": 580,
"number": "702000",
"label": "Prestations de services"
}
},
"entry": {
"id": 1284,
"company_id": 7,
"fiscal_year_id": 2,
"period_id": 16,
"journal_id": 3,
"number": 412,
"entry_date": "2026-03-15T00:00:00.000000Z",
"due_date": "2026-03-15T09:41:00+00:00",
"label": "Facture Brasserie Dubuisson SA",
"reference": "F-2026-0412",
"structured_communication": "000000000101",
"third_party_id": 18,
"status": "posted",
"origin": "manual",
"created_by": 1,
"posted_at": "2026-03-15T09:41:00+00:00",
"reversed_entry_id": 42,
"reversed_by_entry_id": 42,
"recurring_entry_id": 42,
"created_at": "2026-03-15T09:41:00+00:00",
"updated_at": "2026-03-15T09:41:00+00:00",
"lock_version": 3,
"version": 3,
"journal": {
"id": 3,
"code": "VEN",
"type": "sale"
},
"third_party": {
"id": 18,
"name": "Brasserie Dubuisson SA"
},
"lines": [
{
"id": 3391,
"journal_entry_id": 1284,
"position": 1,
"account_id": 580,
"third_party_id": 18,
"label": "Brasserie Dubuisson SA",
"debit": "0.00",
"credit": "1000.00",
"vat_code_id": 4,
"vat_base": "1000.00",
"reconciliation_code": "AB",
"cost_center_id": 42,
"project_id": 42,
"reminder_level": 0,
"reminder_sent_at": "2026-03-15T09:41:00+00:00",
"account": {
"id": 580,
"number": "702000",
"label": "Prestations de services"
},
"vat_code": {}
}
]
}
}token_ability_missing, session_token_required), demo restriction (demo_mode) or invalid URL signature. Errorerrors maps each field to its messages; code is present when the refusal has a machine reason. ErrorVoorbeeldaanroep
curl -X POST "https://api.novafisko.com/v1/companies/XBVD5O1L29HC/fixed-assets/9/dispose" \
-H "Accept: application/json" \
-H "Authorization: Bearer $NOVAFISKO_TOKEN" \
-H "Content-Type: application/json" \
-H "X-Client-Mutation-Id: b0a6f6f0-7d1c-4c5e-8a55-3f2b1c9d0e11" \
-d '{
"date": "2026-09-30",
"sale_price": "4500.00"
}'<?php
$client = new \GuzzleHttp\Client();
$response = $client->request('POST', 'https://api.novafisko.com/v1/companies/XBVD5O1L29HC/fixed-assets/9/dispose', [
'headers' => [
'Accept' => 'application/json',
'Authorization' => 'Bearer '.getenv('NOVAFISKO_TOKEN'),
'X-Client-Mutation-Id' => 'b0a6f6f0-7d1c-4c5e-8a55-3f2b1c9d0e11',
],
'json' => [
'date' => '2026-09-30',
'sale_price' => '4500.00',
],
]);
$data = json_decode((string) $response->getBody(), true);const response = await fetch("https://api.novafisko.com/v1/companies/XBVD5O1L29HC/fixed-assets/9/dispose", {
method: "POST",
headers: {
"Accept": "application/json",
"Authorization": `Bearer ${process.env.NOVAFISKO_TOKEN}`,
"Content-Type": "application/json",
"X-Client-Mutation-Id": "b0a6f6f0-7d1c-4c5e-8a55-3f2b1c9d0e11",
},
body: JSON.stringify({
"date": "2026-09-30",
"sale_price": "4500.00"
}),
});
if (!response.ok) {
const error = await response.json();
throw new Error(error.code ?? error.message);
}
const data = response.status === 204 ? null : await response.json();import os
import requests
response = requests.post(
"https://api.novafisko.com/v1/companies/XBVD5O1L29HC/fixed-assets/9/dispose",
headers={
"Accept": "application/json",
"Authorization": f"Bearer {os.environ['NOVAFISKO_TOKEN']}",
"X-Client-Mutation-Id": "b0a6f6f0-7d1c-4c5e-8a55-3f2b1c9d0e11",
},
json={
"date": "2026-09-30",
"sale_price": "4500.00"
},
timeout=30,
)
response.raise_for_status()
data = response.json() if response.content else NoneReports
Trial balance, general ledger, balance sheet and income statement, third party and aged balances.
GET/v1/companies/{company}/journals/{journal}/entriesEntries of a journal read
Full entries of the journal over a date range, in number order (journal book).
Integration tokens need the read ability.
Operatie-id companies.reports.journal
Padparameters
| Naam | Type | Beschrijving |
|---|---|---|
company verplicht | string | Public token of the company file (public_token, 12 characters).bv. XBVD5O1L29HC |
journal verplicht | integer | Id of the journal. bv. 3 |
Queryparameters
| Naam | Type | Beschrijving |
|---|---|---|
from | string <date> | |
to | string <date> |
Gemeenschappelijke headers: Accept-Language
Antwoorden
200OK
application/json
Schema JournalEntry[]
Array van JournalEntry
Voorbeeld
[
{
"id": 1284,
"company_id": 7,
"fiscal_year_id": 2,
"period_id": 16,
"journal_id": 3,
"number": 412,
"entry_date": "2026-03-15T00:00:00.000000Z",
"due_date": "2026-03-15T09:41:00+00:00",
"label": "Facture Brasserie Dubuisson SA",
"reference": "F-2026-0412",
"structured_communication": "000000000101",
"third_party_id": 18,
"status": "posted",
"origin": "manual",
"created_by": 1,
"posted_at": "2026-03-15T09:41:00+00:00",
"reversed_entry_id": 42,
"reversed_by_entry_id": 42,
"recurring_entry_id": 42,
"created_at": "2026-03-15T09:41:00+00:00",
"updated_at": "2026-03-15T09:41:00+00:00",
"lock_version": 3,
"version": 3,
"journal": {
"id": 3,
"code": "VEN",
"type": "sale"
},
"third_party": {
"id": 18,
"name": "Brasserie Dubuisson SA"
},
"lines": [
{
"id": 3391,
"journal_entry_id": 1284,
"position": 1,
"account_id": 580,
"third_party_id": 18,
"label": "Brasserie Dubuisson SA",
"debit": "0.00",
"credit": "1000.00",
"vat_code_id": 4,
"vat_base": "1000.00",
"reconciliation_code": "AB",
"cost_center_id": 42,
"project_id": 42,
"reminder_level": 0,
"reminder_sent_at": "2026-03-15T09:41:00+00:00",
"account": {
"id": 580,
"number": "702000",
"label": "Prestations de services"
},
"vat_code": {}
}
]
}
]token_ability_missing, session_token_required), demo restriction (demo_mode) or invalid URL signature. ErrorVoorbeeldaanroep
curl -X GET "https://api.novafisko.com/v1/companies/XBVD5O1L29HC/journals/3/entries" \
-H "Accept: application/json" \
-H "Authorization: Bearer $NOVAFISKO_TOKEN"<?php
$client = new \GuzzleHttp\Client();
$response = $client->request('GET', 'https://api.novafisko.com/v1/companies/XBVD5O1L29HC/journals/3/entries', [
'headers' => [
'Accept' => 'application/json',
'Authorization' => 'Bearer '.getenv('NOVAFISKO_TOKEN'),
],
]);
$data = json_decode((string) $response->getBody(), true);const response = await fetch("https://api.novafisko.com/v1/companies/XBVD5O1L29HC/journals/3/entries", {
method: "GET",
headers: {
"Accept": "application/json",
"Authorization": `Bearer ${process.env.NOVAFISKO_TOKEN}`,
},
});
if (!response.ok) {
const error = await response.json();
throw new Error(error.code ?? error.message);
}
const data = response.status === 204 ? null : await response.json();import os
import requests
response = requests.get(
"https://api.novafisko.com/v1/companies/XBVD5O1L29HC/journals/3/entries",
headers={
"Accept": "application/json",
"Authorization": f"Bearer {os.environ['NOVAFISKO_TOKEN']}",
},
timeout=30,
)
response.raise_for_status()
data = response.json() if response.content else NoneGET/v1/companies/{company}/fiscal-years/{fiscalYear}/trial-balanceTrial balance read
Integration tokens need the read ability.
Operatie-id companies.reports.trial-balance
Padparameters
| Naam | Type | Beschrijving |
|---|---|---|
company verplicht | string | Public token of the company file (public_token, 12 characters).bv. XBVD5O1L29HC |
fiscalYear verplicht | integer | Id of the fiscal year. bv. 2 |
Queryparameters
| Naam | Type | Beschrijving |
|---|---|---|
from | string <date> | |
to | string <date> | |
include_empty | boolean | Include the accounts without movement. |
Gemeenschappelijke headers: Accept-Language
Antwoorden
200OK
application/json
Schema object
fiscal_yearstringbv.2026fromstring <date>tostring <date>linesobject[]Eigenschappen
account_idintegerbv.223numberstringbv.400000labelstringbv.Clientstypestringbv.assetdebitstring <decimal>bv.1210.00creditstring <decimal>bv.0.00debit_balancestring <decimal>bv.1210.00credit_balancestring <decimal>bv.0.00balancestring <decimal>bv.1210.00
totalsobjectEigenschappen
debitstring <decimal>bv.1512.50creditstring <decimal>bv.1512.50is_balancedbooleanresultstring <decimal>Result of the period.bv.750.00
Voorbeeld
{
"fiscal_year": "2026",
"from": "2026-03-15",
"to": "2026-03-15",
"lines": [
{
"account_id": 223,
"number": "400000",
"label": "Clients",
"type": "asset",
"debit": "1210.00",
"credit": "0.00",
"debit_balance": "1210.00",
"credit_balance": "0.00",
"balance": "1210.00"
}
],
"totals": {
"debit": "1512.50",
"credit": "1512.50",
"is_balanced": true,
"result": "750.00"
}
}token_ability_missing, session_token_required), demo restriction (demo_mode) or invalid URL signature. ErrorVoorbeeldaanroep
curl -X GET "https://api.novafisko.com/v1/companies/XBVD5O1L29HC/fiscal-years/2/trial-balance" \
-H "Accept: application/json" \
-H "Authorization: Bearer $NOVAFISKO_TOKEN"<?php
$client = new \GuzzleHttp\Client();
$response = $client->request('GET', 'https://api.novafisko.com/v1/companies/XBVD5O1L29HC/fiscal-years/2/trial-balance', [
'headers' => [
'Accept' => 'application/json',
'Authorization' => 'Bearer '.getenv('NOVAFISKO_TOKEN'),
],
]);
$data = json_decode((string) $response->getBody(), true);const response = await fetch("https://api.novafisko.com/v1/companies/XBVD5O1L29HC/fiscal-years/2/trial-balance", {
method: "GET",
headers: {
"Accept": "application/json",
"Authorization": `Bearer ${process.env.NOVAFISKO_TOKEN}`,
},
});
if (!response.ok) {
const error = await response.json();
throw new Error(error.code ?? error.message);
}
const data = response.status === 204 ? null : await response.json();import os
import requests
response = requests.get(
"https://api.novafisko.com/v1/companies/XBVD5O1L29HC/fiscal-years/2/trial-balance",
headers={
"Accept": "application/json",
"Authorization": f"Bearer {os.environ['NOVAFISKO_TOKEN']}",
},
timeout=30,
)
response.raise_for_status()
data = response.json() if response.content else NoneGET/v1/companies/{company}/fiscal-years/{fiscalYear}/balance-by-periodBalance by period read
One column per period of the fiscal year.
Integration tokens need the read ability.
Operatie-id companies.reports.balance-by-period
Padparameters
| Naam | Type | Beschrijving |
|---|---|---|
company verplicht | string | Public token of the company file (public_token, 12 characters).bv. XBVD5O1L29HC |
fiscalYear verplicht | integer | Id of the fiscal year. bv. 2 |
Gemeenschappelijke headers: Accept-Language
Antwoorden
200OK
application/json
Schema object
fiscal_yearstringbv.2026periodsobject[]Eigenschappen
idintegernumberintegerlabelstringbv.Janvier 2026is_lockedboolean
accountsobject[]Eigenschappen
account_idintegerbv.223numberstringbv.400000labelstringbv.Clientstypestringbv.assetperiodsstring <decimal>[]totalstring <decimal>
Voorbeeld
{
"fiscal_year": "2026",
"periods": [
{
"id": 42,
"number": 412,
"label": "Janvier 2026",
"is_locked": false
}
],
"accounts": [
{
"account_id": 223,
"number": "400000",
"label": "Clients",
"type": "asset",
"periods": [
"1210.00"
],
"total": "1210.00"
}
]
}token_ability_missing, session_token_required), demo restriction (demo_mode) or invalid URL signature. ErrorVoorbeeldaanroep
curl -X GET "https://api.novafisko.com/v1/companies/XBVD5O1L29HC/fiscal-years/2/balance-by-period" \
-H "Accept: application/json" \
-H "Authorization: Bearer $NOVAFISKO_TOKEN"<?php
$client = new \GuzzleHttp\Client();
$response = $client->request('GET', 'https://api.novafisko.com/v1/companies/XBVD5O1L29HC/fiscal-years/2/balance-by-period', [
'headers' => [
'Accept' => 'application/json',
'Authorization' => 'Bearer '.getenv('NOVAFISKO_TOKEN'),
],
]);
$data = json_decode((string) $response->getBody(), true);const response = await fetch("https://api.novafisko.com/v1/companies/XBVD5O1L29HC/fiscal-years/2/balance-by-period", {
method: "GET",
headers: {
"Accept": "application/json",
"Authorization": `Bearer ${process.env.NOVAFISKO_TOKEN}`,
},
});
if (!response.ok) {
const error = await response.json();
throw new Error(error.code ?? error.message);
}
const data = response.status === 204 ? null : await response.json();import os
import requests
response = requests.get(
"https://api.novafisko.com/v1/companies/XBVD5O1L29HC/fiscal-years/2/balance-by-period",
headers={
"Accept": "application/json",
"Authorization": f"Bearer {os.environ['NOVAFISKO_TOKEN']}",
},
timeout=30,
)
response.raise_for_status()
data = response.json() if response.content else NoneGET/v1/companies/{company}/fiscal-years/{fiscalYear}/financial-statementsBalance sheet and income statement read
Belgian legal scheme (BNB / NBB headings), in real time.
Integration tokens need the read ability.
Operatie-id companies.reports.financial-statements
Padparameters
| Naam | Type | Beschrijving |
|---|---|---|
company verplicht | string | Public token of the company file (public_token, 12 characters).bv. XBVD5O1L29HC |
fiscalYear verplicht | integer | Id of the fiscal year. bv. 2 |
Queryparameters
| Naam | Type | Beschrijving |
|---|---|---|
to | string <date> | Situation at this date. |
Gemeenschappelijke headers: Accept-Language
Antwoorden
200OK
application/json
Schema object
fiscal_yearstringbv.2026tostring <date>schemestringbv.BEbalance_sheetobject[]Eigenschappen
codestringbv.20/28labelstringbv.ACTIFS IMMOBILISÉSsidestringassetliabilitygroupbooleanamountstring <decimal> | null
totalsobjectEigenschappen
assetsstring <decimal>bv.1262.50liabilitiesstring <decimal>bv.1262.50is_balancedboolean
income_statementobject[]Eigenschappen
codestringbv.70labelstringbv.Chiffre d'affairessidestringincomeexpensedetailbooleanamountstring <decimal>bv.1000.00
resultstring <decimal>bv.750.00
Voorbeeld
{
"fiscal_year": "2026",
"to": "2026-03-15",
"scheme": "BE",
"balance_sheet": [
{
"code": "20/28",
"label": "ACTIFS IMMOBILISÉS",
"side": "asset",
"group": true,
"amount": "1210.00"
}
],
"totals": {
"assets": "1262.50",
"liabilities": "1262.50",
"is_balanced": true
},
"income_statement": [
{
"code": "70",
"label": "Chiffre d'affaires",
"side": "income",
"detail": true,
"amount": "1000.00"
}
],
"result": "750.00"
}token_ability_missing, session_token_required), demo restriction (demo_mode) or invalid URL signature. ErrorVoorbeeldaanroep
curl -X GET "https://api.novafisko.com/v1/companies/XBVD5O1L29HC/fiscal-years/2/financial-statements" \
-H "Accept: application/json" \
-H "Authorization: Bearer $NOVAFISKO_TOKEN"<?php
$client = new \GuzzleHttp\Client();
$response = $client->request('GET', 'https://api.novafisko.com/v1/companies/XBVD5O1L29HC/fiscal-years/2/financial-statements', [
'headers' => [
'Accept' => 'application/json',
'Authorization' => 'Bearer '.getenv('NOVAFISKO_TOKEN'),
],
]);
$data = json_decode((string) $response->getBody(), true);const response = await fetch("https://api.novafisko.com/v1/companies/XBVD5O1L29HC/fiscal-years/2/financial-statements", {
method: "GET",
headers: {
"Accept": "application/json",
"Authorization": `Bearer ${process.env.NOVAFISKO_TOKEN}`,
},
});
if (!response.ok) {
const error = await response.json();
throw new Error(error.code ?? error.message);
}
const data = response.status === 204 ? null : await response.json();import os
import requests
response = requests.get(
"https://api.novafisko.com/v1/companies/XBVD5O1L29HC/fiscal-years/2/financial-statements",
headers={
"Accept": "application/json",
"Authorization": f"Bearer {os.environ['NOVAFISKO_TOKEN']}",
},
timeout=30,
)
response.raise_for_status()
data = response.json() if response.content else NoneGET/v1/companies/{company}/fiscal-years/{fiscalYear}/general-ledger/{account}General ledger of an account read
Movements of one account with the running balance.
Integration tokens need the read ability.
Operatie-id companies.reports.general-ledger
Padparameters
| Naam | Type | Beschrijving |
|---|---|---|
company verplicht | string | Public token of the company file (public_token, 12 characters).bv. XBVD5O1L29HC |
fiscalYear verplicht | integer | Id of the fiscal year. bv. 2 |
account verplicht | integer | Id of the account (not its number). bv. 223 |
Queryparameters
| Naam | Type | Beschrijving |
|---|---|---|
from | string <date> | |
to | string <date> |
Gemeenschappelijke headers: Accept-Language
Antwoorden
200OK
application/json
Schema object
account_idintegerbv.223fromstring <date>tostring <date>opening_balancestring <decimal>bv.0.00movementsobject[]Eigenschappen
line_idintegerentry_idintegerentry_datestring <date>journalstringbv.VENdocumentstringbv.2026/000412labelstring | nullreferencestring | nullthird_partystring | nulldebitstring <decimal>creditstring <decimal>balancestring <decimal>reconciliation_codestring | null
totalsobjectEigenschappen
debitstring <decimal>creditstring <decimal>balancestring <decimal>
Voorbeeld
{
"account_id": 223,
"from": "2026-03-15",
"to": "2026-03-15",
"opening_balance": "0.00",
"movements": [
{
"line_id": 3391,
"entry_id": 1284,
"entry_date": "2026-03-15",
"journal": "VEN",
"document": "2026/000412",
"label": "Facture Brasserie Dubuisson",
"reference": "F-2026-0412",
"third_party": "string",
"debit": "1210.00",
"credit": "0.00",
"balance": "1210.00",
"reconciliation_code": "string"
}
],
"totals": {
"debit": "1210.00",
"credit": "0.00",
"balance": "1210.00"
}
}token_ability_missing, session_token_required), demo restriction (demo_mode) or invalid URL signature. ErrorVoorbeeldaanroep
curl -X GET "https://api.novafisko.com/v1/companies/XBVD5O1L29HC/fiscal-years/2/general-ledger/223" \
-H "Accept: application/json" \
-H "Authorization: Bearer $NOVAFISKO_TOKEN"<?php
$client = new \GuzzleHttp\Client();
$response = $client->request('GET', 'https://api.novafisko.com/v1/companies/XBVD5O1L29HC/fiscal-years/2/general-ledger/223', [
'headers' => [
'Accept' => 'application/json',
'Authorization' => 'Bearer '.getenv('NOVAFISKO_TOKEN'),
],
]);
$data = json_decode((string) $response->getBody(), true);const response = await fetch("https://api.novafisko.com/v1/companies/XBVD5O1L29HC/fiscal-years/2/general-ledger/223", {
method: "GET",
headers: {
"Accept": "application/json",
"Authorization": `Bearer ${process.env.NOVAFISKO_TOKEN}`,
},
});
if (!response.ok) {
const error = await response.json();
throw new Error(error.code ?? error.message);
}
const data = response.status === 204 ? null : await response.json();import os
import requests
response = requests.get(
"https://api.novafisko.com/v1/companies/XBVD5O1L29HC/fiscal-years/2/general-ledger/223",
headers={
"Accept": "application/json",
"Authorization": f"Bearer {os.environ['NOVAFISKO_TOKEN']}",
},
timeout=30,
)
response.raise_for_status()
data = response.json() if response.content else NoneGET/v1/companies/{company}/fiscal-years/{fiscalYear}/consistencyConsistency of the fiscal year read
Gaps in the numbering, entries whose period does not match their date, entries outside the fiscal year.
Integration tokens need the read ability.
Operatie-id companies.reports.consistency
Padparameters
| Naam | Type | Beschrijving |
|---|---|---|
company verplicht | string | Public token of the company file (public_token, 12 characters).bv. XBVD5O1L29HC |
fiscalYear verplicht | integer | Id of the fiscal year. bv. 2 |
Gemeenschappelijke headers: Accept-Language
Antwoorden
200OK
application/json
Schema object
fiscal_yearstringbv.2026missing_numbersobject[]period_mismatchesobject[]entries_outside_fiscal_yearintegerbv.0is_consistentboolean
Voorbeeld
{
"fiscal_year": "2026",
"missing_numbers": [
{}
],
"period_mismatches": [
{}
],
"entries_outside_fiscal_year": 0,
"is_consistent": true
}token_ability_missing, session_token_required), demo restriction (demo_mode) or invalid URL signature. ErrorVoorbeeldaanroep
curl -X GET "https://api.novafisko.com/v1/companies/XBVD5O1L29HC/fiscal-years/2/consistency" \
-H "Accept: application/json" \
-H "Authorization: Bearer $NOVAFISKO_TOKEN"<?php
$client = new \GuzzleHttp\Client();
$response = $client->request('GET', 'https://api.novafisko.com/v1/companies/XBVD5O1L29HC/fiscal-years/2/consistency', [
'headers' => [
'Accept' => 'application/json',
'Authorization' => 'Bearer '.getenv('NOVAFISKO_TOKEN'),
],
]);
$data = json_decode((string) $response->getBody(), true);const response = await fetch("https://api.novafisko.com/v1/companies/XBVD5O1L29HC/fiscal-years/2/consistency", {
method: "GET",
headers: {
"Accept": "application/json",
"Authorization": `Bearer ${process.env.NOVAFISKO_TOKEN}`,
},
});
if (!response.ok) {
const error = await response.json();
throw new Error(error.code ?? error.message);
}
const data = response.status === 204 ? null : await response.json();import os
import requests
response = requests.get(
"https://api.novafisko.com/v1/companies/XBVD5O1L29HC/fiscal-years/2/consistency",
headers={
"Accept": "application/json",
"Authorization": f"Bearer {os.environ['NOVAFISKO_TOKEN']}",
},
timeout=30,
)
response.raise_for_status()
data = response.json() if response.content else NoneGET/v1/companies/{company}/third-party-balance/{type}Customer or supplier balance read
Integration tokens need the read ability.
Operatie-id companies.reports.third-party-balance
Padparameters
| Naam | Type | Beschrijving |
|---|---|---|
company verplicht | string | Public token of the company file (public_token, 12 characters).bv. XBVD5O1L29HC |
type verplicht | string | Side of the balance.customer supplier |
Queryparameters
| Naam | Type | Beschrijving |
|---|---|---|
to | string <date> |
Gemeenschappelijke headers: Accept-Language
Antwoorden
200OK
application/json
Schema object[]
Array van
third_party_idintegercodestringbv.ACMEnamestringbv.ACME SAdebitstring <decimal>creditstring <decimal>outstandingstring <decimal>bv.1210.00open_itemsintegerbv.1
Voorbeeld
[
{
"third_party_id": 18,
"code": "ACME",
"name": "ACME SA",
"debit": "1210.00",
"credit": "0.00",
"outstanding": "1210.00",
"open_items": 1
}
]token_ability_missing, session_token_required), demo restriction (demo_mode) or invalid URL signature. ErrorVoorbeeldaanroep
curl -X GET "https://api.novafisko.com/v1/companies/XBVD5O1L29HC/third-party-balance/customer" \
-H "Accept: application/json" \
-H "Authorization: Bearer $NOVAFISKO_TOKEN"<?php
$client = new \GuzzleHttp\Client();
$response = $client->request('GET', 'https://api.novafisko.com/v1/companies/XBVD5O1L29HC/third-party-balance/customer', [
'headers' => [
'Accept' => 'application/json',
'Authorization' => 'Bearer '.getenv('NOVAFISKO_TOKEN'),
],
]);
$data = json_decode((string) $response->getBody(), true);const response = await fetch("https://api.novafisko.com/v1/companies/XBVD5O1L29HC/third-party-balance/customer", {
method: "GET",
headers: {
"Accept": "application/json",
"Authorization": `Bearer ${process.env.NOVAFISKO_TOKEN}`,
},
});
if (!response.ok) {
const error = await response.json();
throw new Error(error.code ?? error.message);
}
const data = response.status === 204 ? null : await response.json();import os
import requests
response = requests.get(
"https://api.novafisko.com/v1/companies/XBVD5O1L29HC/third-party-balance/customer",
headers={
"Accept": "application/json",
"Authorization": f"Bearer {os.environ['NOVAFISKO_TOKEN']}",
},
timeout=30,
)
response.raise_for_status()
data = response.json() if response.content else NoneGET/v1/companies/{company}/aged-balance/{type}Aged balance read
Open amounts per third party, split by age: not due, 1-30, 31-60, 61-90 and more than 90 days.
Integration tokens need the read ability.
Operatie-id companies.reports.aged-balance
Padparameters
| Naam | Type | Beschrijving |
|---|---|---|
company verplicht | string | Public token of the company file (public_token, 12 characters).bv. XBVD5O1L29HC |
type verplicht | string | Side of the balance.customer supplier |
Queryparameters
| Naam | Type | Beschrijving |
|---|---|---|
to | string <date> | Today by default. |
Gemeenschappelijke headers: Accept-Language
Antwoorden
200OK
application/json
Schema object
typestringbv.customertostring <date>rowsobject[]Eigenschappen
third_party_idintegercodestringnamestringtotalstring <decimal>currentstring <decimal>d30string <decimal>d60string <decimal>d90string <decimal>d90plusstring <decimal>
totalsobjectEigenschappen
currentstring <decimal>d30string <decimal>d60string <decimal>d90string <decimal>d90plusstring <decimal>totalstring <decimal>
Voorbeeld
{
"type": "customer",
"to": "2026-03-15",
"rows": [
{
"third_party_id": 18,
"code": "COMPTOIR",
"name": "Le Comptoir Montois SRL",
"total": "1210.00",
"current": "1210.00",
"d30": "1210.00",
"d60": "1210.00",
"d90": "1210.00",
"d90plus": "1210.00"
}
],
"totals": {
"current": "1210.00",
"d30": "1210.00",
"d60": "1210.00",
"d90": "1210.00",
"d90plus": "1210.00",
"total": "1210.00"
}
}token_ability_missing, session_token_required), demo restriction (demo_mode) or invalid URL signature. ErrorVoorbeeldaanroep
curl -X GET "https://api.novafisko.com/v1/companies/XBVD5O1L29HC/aged-balance/customer" \
-H "Accept: application/json" \
-H "Authorization: Bearer $NOVAFISKO_TOKEN"<?php
$client = new \GuzzleHttp\Client();
$response = $client->request('GET', 'https://api.novafisko.com/v1/companies/XBVD5O1L29HC/aged-balance/customer', [
'headers' => [
'Accept' => 'application/json',
'Authorization' => 'Bearer '.getenv('NOVAFISKO_TOKEN'),
],
]);
$data = json_decode((string) $response->getBody(), true);const response = await fetch("https://api.novafisko.com/v1/companies/XBVD5O1L29HC/aged-balance/customer", {
method: "GET",
headers: {
"Accept": "application/json",
"Authorization": `Bearer ${process.env.NOVAFISKO_TOKEN}`,
},
});
if (!response.ok) {
const error = await response.json();
throw new Error(error.code ?? error.message);
}
const data = response.status === 204 ? null : await response.json();import os
import requests
response = requests.get(
"https://api.novafisko.com/v1/companies/XBVD5O1L29HC/aged-balance/customer",
headers={
"Accept": "application/json",
"Authorization": f"Bearer {os.environ['NOVAFISKO_TOKEN']}",
},
timeout=30,
)
response.raise_for_status()
data = response.json() if response.content else NoneAnalytics & budgets
Analytic codes, analytic report, budgets.
GET/v1/companies/{company}/analytic-codesAnalytic codes read
Integration tokens need the read ability.
Operatie-id companies.analytic-codes.index
Padparameters
| Naam | Type | Beschrijving |
|---|---|---|
company verplicht | string | Public token of the company file (public_token, 12 characters).bv. XBVD5O1L29HC |
Queryparameters
| Naam | Type | Beschrijving |
|---|---|---|
axis | string | cost_center project |
Gemeenschappelijke headers: Accept-Language
Antwoorden
200OK
application/json
Schema AnalyticCode[]
Array van AnalyticCode
Voorbeeld
[
{
"id": 2,
"company_id": 7,
"axis": "cost_center",
"code": "SALLE",
"label": "Salle",
"is_active": true,
"created_at": "2026-03-15T09:41:00+00:00",
"updated_at": "2026-03-15T09:41:00+00:00",
"lock_version": 3,
"version": 3,
"deleted_at": "2026-03-15T09:41:00+00:00",
"deleted_by": 1
}
]token_ability_missing, session_token_required), demo restriction (demo_mode) or invalid URL signature. ErrorVoorbeeldaanroep
curl -X GET "https://api.novafisko.com/v1/companies/XBVD5O1L29HC/analytic-codes" \
-H "Accept: application/json" \
-H "Authorization: Bearer $NOVAFISKO_TOKEN"<?php
$client = new \GuzzleHttp\Client();
$response = $client->request('GET', 'https://api.novafisko.com/v1/companies/XBVD5O1L29HC/analytic-codes', [
'headers' => [
'Accept' => 'application/json',
'Authorization' => 'Bearer '.getenv('NOVAFISKO_TOKEN'),
],
]);
$data = json_decode((string) $response->getBody(), true);const response = await fetch("https://api.novafisko.com/v1/companies/XBVD5O1L29HC/analytic-codes", {
method: "GET",
headers: {
"Accept": "application/json",
"Authorization": `Bearer ${process.env.NOVAFISKO_TOKEN}`,
},
});
if (!response.ok) {
const error = await response.json();
throw new Error(error.code ?? error.message);
}
const data = response.status === 204 ? null : await response.json();import os
import requests
response = requests.get(
"https://api.novafisko.com/v1/companies/XBVD5O1L29HC/analytic-codes",
headers={
"Accept": "application/json",
"Authorization": f"Bearer {os.environ['NOVAFISKO_TOKEN']}",
},
timeout=30,
)
response.raise_for_status()
data = response.json() if response.content else NonePOST/v1/companies/{company}/analytic-codesCreate an analytic code write
Integration tokens need the write ability.
Operatie-id companies.analytic-codes.store
Padparameters
| Naam | Type | Beschrijving |
|---|---|---|
company verplicht | string | Public token of the company file (public_token, 12 characters).bv. XBVD5O1L29HC |
Gemeenschappelijke headers: Accept-Language X-Client-Mutation-Id X-Operation-Id X-Device-Id X-Device-Name X-Occurred-At X-Origin
Body van de aanvraag
application/json
Schema object
axisstringverplichtcost_centerprojectcodestringverplichtUnique per axis, 20 max.labelstringverplichtis_activeboolean
Voorbeeld
{
"axis": "cost_center",
"code": "SALLE",
"label": "Salle"
}Antwoorden
201Created
Antwoordheaders X-Operation-Id X-Idempotent-Replay
application/json
Schema AnalyticCode
Voorbeeld
{
"id": 2,
"company_id": 7,
"axis": "cost_center",
"code": "SALLE",
"label": "Salle",
"is_active": true,
"created_at": "2026-03-15T09:41:00+00:00",
"updated_at": "2026-03-15T09:41:00+00:00",
"lock_version": 3,
"version": 3,
"deleted_at": "2026-03-15T09:41:00+00:00",
"deleted_by": 1
}token_ability_missing, session_token_required), demo restriction (demo_mode) or invalid URL signature. Errorerrors maps each field to its messages; code is present when the refusal has a machine reason. ErrorVoorbeeldaanroep
curl -X POST "https://api.novafisko.com/v1/companies/XBVD5O1L29HC/analytic-codes" \
-H "Accept: application/json" \
-H "Authorization: Bearer $NOVAFISKO_TOKEN" \
-H "Content-Type: application/json" \
-H "X-Client-Mutation-Id: b0a6f6f0-7d1c-4c5e-8a55-3f2b1c9d0e11" \
-d '{
"axis": "cost_center",
"code": "SALLE",
"label": "Salle"
}'<?php
$client = new \GuzzleHttp\Client();
$response = $client->request('POST', 'https://api.novafisko.com/v1/companies/XBVD5O1L29HC/analytic-codes', [
'headers' => [
'Accept' => 'application/json',
'Authorization' => 'Bearer '.getenv('NOVAFISKO_TOKEN'),
'X-Client-Mutation-Id' => 'b0a6f6f0-7d1c-4c5e-8a55-3f2b1c9d0e11',
],
'json' => [
'axis' => 'cost_center',
'code' => 'SALLE',
'label' => 'Salle',
],
]);
$data = json_decode((string) $response->getBody(), true);const response = await fetch("https://api.novafisko.com/v1/companies/XBVD5O1L29HC/analytic-codes", {
method: "POST",
headers: {
"Accept": "application/json",
"Authorization": `Bearer ${process.env.NOVAFISKO_TOKEN}`,
"Content-Type": "application/json",
"X-Client-Mutation-Id": "b0a6f6f0-7d1c-4c5e-8a55-3f2b1c9d0e11",
},
body: JSON.stringify({
"axis": "cost_center",
"code": "SALLE",
"label": "Salle"
}),
});
if (!response.ok) {
const error = await response.json();
throw new Error(error.code ?? error.message);
}
const data = response.status === 204 ? null : await response.json();import os
import requests
response = requests.post(
"https://api.novafisko.com/v1/companies/XBVD5O1L29HC/analytic-codes",
headers={
"Accept": "application/json",
"Authorization": f"Bearer {os.environ['NOVAFISKO_TOKEN']}",
"X-Client-Mutation-Id": "b0a6f6f0-7d1c-4c5e-8a55-3f2b1c9d0e11",
},
json={
"axis": "cost_center",
"code": "SALLE",
"label": "Salle"
},
timeout=30,
)
response.raise_for_status()
data = response.json() if response.content else NonePATCH/v1/companies/{company}/analytic-codes/{analyticCode}Update an analytic code write
Integration tokens need the write ability.
Operatie-id companies.analytic-codes.update
Padparameters
| Naam | Type | Beschrijving |
|---|---|---|
company verplicht | string | Public token of the company file (public_token, 12 characters).bv. XBVD5O1L29HC |
analyticCode verplicht | integer | Id of the analytic code. bv. 2 |
Gemeenschappelijke headers: Accept-Language X-Client-Mutation-Id X-Operation-Id X-Device-Id X-Device-Name X-Occurred-At X-Origin X-Base-Version
Body van de aanvraag
application/json
Schema object
labelstringis_activeboolean
Voorbeeld
{
"is_active": false
}Antwoorden
200OK
Antwoordheaders X-Operation-Id X-Idempotent-Replay
application/json
Schema AnalyticCode
Voorbeeld
{
"id": 2,
"company_id": 7,
"axis": "cost_center",
"code": "SALLE",
"label": "Salle",
"is_active": true,
"created_at": "2026-03-15T09:41:00+00:00",
"updated_at": "2026-03-15T09:41:00+00:00",
"lock_version": 3,
"version": 3,
"deleted_at": "2026-03-15T09:41:00+00:00",
"deleted_by": 1
}token_ability_missing, session_token_required), demo restriction (demo_mode) or invalid URL signature. ErrorX-Base-Version. Nothing was modified. VersionConflicterrors maps each field to its messages; code is present when the refusal has a machine reason. ErrorVoorbeeldaanroep
curl -X PATCH "https://api.novafisko.com/v1/companies/XBVD5O1L29HC/analytic-codes/2" \
-H "Accept: application/json" \
-H "Authorization: Bearer $NOVAFISKO_TOKEN" \
-H "Content-Type: application/json" \
-H "X-Client-Mutation-Id: b0a6f6f0-7d1c-4c5e-8a55-3f2b1c9d0e11" \
-d '{
"is_active": false
}'<?php
$client = new \GuzzleHttp\Client();
$response = $client->request('PATCH', 'https://api.novafisko.com/v1/companies/XBVD5O1L29HC/analytic-codes/2', [
'headers' => [
'Accept' => 'application/json',
'Authorization' => 'Bearer '.getenv('NOVAFISKO_TOKEN'),
'X-Client-Mutation-Id' => 'b0a6f6f0-7d1c-4c5e-8a55-3f2b1c9d0e11',
],
'json' => [
'is_active' => false,
],
]);
$data = json_decode((string) $response->getBody(), true);const response = await fetch("https://api.novafisko.com/v1/companies/XBVD5O1L29HC/analytic-codes/2", {
method: "PATCH",
headers: {
"Accept": "application/json",
"Authorization": `Bearer ${process.env.NOVAFISKO_TOKEN}`,
"Content-Type": "application/json",
"X-Client-Mutation-Id": "b0a6f6f0-7d1c-4c5e-8a55-3f2b1c9d0e11",
},
body: JSON.stringify({
"is_active": false
}),
});
if (!response.ok) {
const error = await response.json();
throw new Error(error.code ?? error.message);
}
const data = response.status === 204 ? null : await response.json();import os
import requests
response = requests.patch(
"https://api.novafisko.com/v1/companies/XBVD5O1L29HC/analytic-codes/2",
headers={
"Accept": "application/json",
"Authorization": f"Bearer {os.environ['NOVAFISKO_TOKEN']}",
"X-Client-Mutation-Id": "b0a6f6f0-7d1c-4c5e-8a55-3f2b1c9d0e11",
},
json={
"is_active": False
},
timeout=30,
)
response.raise_for_status()
data = response.json() if response.content else NoneGET/v1/companies/{company}/fiscal-years/{fiscalYear}/analytic-reportAnalytic report read
Expenses, income and result per analytic code.
Integration tokens need the read ability.
Operatie-id companies.reports.analytic
Padparameters
| Naam | Type | Beschrijving |
|---|---|---|
company verplicht | string | Public token of the company file (public_token, 12 characters).bv. XBVD5O1L29HC |
fiscalYear verplicht | integer | Id of the fiscal year. bv. 2 |
Queryparameters
| Naam | Type | Beschrijving |
|---|---|---|
axis | string | cost_center project |
from | string <date> | |
to | string <date> |
Gemeenschappelijke headers: Accept-Language
Antwoorden
200OK
application/json
Schema object
axisstringfiscal_yearstringgroupsobject[]Eigenschappen
codestring | nullbv.SALLElabelstring | nullexpensesstring <decimal>incomestring <decimal>resultstring <decimal>accountsobject[]Eigenschappen
account_idintegerbv.223numberstringbv.400000labelstringbv.Clientstypestringbv.assetamountstring <decimal>
Voorbeeld
{
"axis": "string",
"fiscal_year": "string",
"groups": [
{
"code": "SALLE",
"label": "Facture Brasserie Dubuisson",
"expenses": "1210.00",
"income": "1210.00",
"result": "1210.00",
"accounts": [
{
"account_id": 223,
"number": "400000",
"label": "Clients",
"type": "asset",
"amount": "1210.00"
}
]
}
]
}token_ability_missing, session_token_required), demo restriction (demo_mode) or invalid URL signature. ErrorVoorbeeldaanroep
curl -X GET "https://api.novafisko.com/v1/companies/XBVD5O1L29HC/fiscal-years/2/analytic-report" \
-H "Accept: application/json" \
-H "Authorization: Bearer $NOVAFISKO_TOKEN"<?php
$client = new \GuzzleHttp\Client();
$response = $client->request('GET', 'https://api.novafisko.com/v1/companies/XBVD5O1L29HC/fiscal-years/2/analytic-report', [
'headers' => [
'Accept' => 'application/json',
'Authorization' => 'Bearer '.getenv('NOVAFISKO_TOKEN'),
],
]);
$data = json_decode((string) $response->getBody(), true);const response = await fetch("https://api.novafisko.com/v1/companies/XBVD5O1L29HC/fiscal-years/2/analytic-report", {
method: "GET",
headers: {
"Accept": "application/json",
"Authorization": `Bearer ${process.env.NOVAFISKO_TOKEN}`,
},
});
if (!response.ok) {
const error = await response.json();
throw new Error(error.code ?? error.message);
}
const data = response.status === 204 ? null : await response.json();import os
import requests
response = requests.get(
"https://api.novafisko.com/v1/companies/XBVD5O1L29HC/fiscal-years/2/analytic-report",
headers={
"Accept": "application/json",
"Authorization": f"Bearer {os.environ['NOVAFISKO_TOKEN']}",
},
timeout=30,
)
response.raise_for_status()
data = response.json() if response.content else NoneGET/v1/companies/{company}/fiscal-years/{fiscalYear}/budgetsBudget cells read
Integration tokens need the read ability.
Operatie-id companies.budgets.index
Padparameters
| Naam | Type | Beschrijving |
|---|---|---|
company verplicht | string | Public token of the company file (public_token, 12 characters).bv. XBVD5O1L29HC |
fiscalYear verplicht | integer | Id of the fiscal year. bv. 2 |
Queryparameters
| Naam | Type | Beschrijving |
|---|---|---|
scenario | string | default when absent. |
Gemeenschappelijke headers: Accept-Language
Antwoorden
200OK
token_ability_missing, session_token_required), demo restriction (demo_mode) or invalid URL signature. ErrorVoorbeeldaanroep
curl -X GET "https://api.novafisko.com/v1/companies/XBVD5O1L29HC/fiscal-years/2/budgets" \
-H "Accept: application/json" \
-H "Authorization: Bearer $NOVAFISKO_TOKEN"<?php
$client = new \GuzzleHttp\Client();
$response = $client->request('GET', 'https://api.novafisko.com/v1/companies/XBVD5O1L29HC/fiscal-years/2/budgets', [
'headers' => [
'Accept' => 'application/json',
'Authorization' => 'Bearer '.getenv('NOVAFISKO_TOKEN'),
],
]);
$data = json_decode((string) $response->getBody(), true);const response = await fetch("https://api.novafisko.com/v1/companies/XBVD5O1L29HC/fiscal-years/2/budgets", {
method: "GET",
headers: {
"Accept": "application/json",
"Authorization": `Bearer ${process.env.NOVAFISKO_TOKEN}`,
},
});
if (!response.ok) {
const error = await response.json();
throw new Error(error.code ?? error.message);
}
const data = response.status === 204 ? null : await response.json();import os
import requests
response = requests.get(
"https://api.novafisko.com/v1/companies/XBVD5O1L29HC/fiscal-years/2/budgets",
headers={
"Accept": "application/json",
"Authorization": f"Bearer {os.environ['NOVAFISKO_TOKEN']}",
},
timeout=30,
)
response.raise_for_status()
data = response.json() if response.content else NonePUT/v1/companies/{company}/fiscal-years/{fiscalYear}/budgetsSave budget cells write
Batch of cells (account × period, optionally × cost centre). An amount of 0 deletes the cell; spread_yearly spreads a yearly amount over twelve months.
Integration tokens need the write ability.
Operatie-id companies.budgets.save
Padparameters
| Naam | Type | Beschrijving |
|---|---|---|
company verplicht | string | Public token of the company file (public_token, 12 characters).bv. XBVD5O1L29HC |
fiscalYear verplicht | integer | Id of the fiscal year. bv. 2 |
Gemeenschappelijke headers: Accept-Language X-Client-Mutation-Id X-Operation-Id X-Device-Id X-Device-Name X-Occurred-At X-Origin X-Base-Version
Body van de aanvraag
application/json
Schema object
scenariostringcellsobject[]verplichtEigenschappen
account_idintegerverplichtcost_center_idinteger | nullperiod_numberintegerverplicht1 to 12.amountstringverplichtDecimal.
spread_yearlyboolean
Voorbeeld
{
"cells": [
{
"account_id": 378,
"period_number": 1,
"amount": "18000.00"
}
],
"spread_yearly": true
}Antwoorden
200OK
Antwoordheaders X-Operation-Id X-Idempotent-Replay
application/json
Schema object
savedintegerbv.1
Voorbeeld
{
"saved": 1
}token_ability_missing, session_token_required), demo restriction (demo_mode) or invalid URL signature. ErrorX-Base-Version. Nothing was modified. VersionConflicterrors maps each field to its messages; code is present when the refusal has a machine reason. ErrorVoorbeeldaanroep
curl -X PUT "https://api.novafisko.com/v1/companies/XBVD5O1L29HC/fiscal-years/2/budgets" \
-H "Accept: application/json" \
-H "Authorization: Bearer $NOVAFISKO_TOKEN" \
-H "Content-Type: application/json" \
-H "X-Client-Mutation-Id: b0a6f6f0-7d1c-4c5e-8a55-3f2b1c9d0e11" \
-d '{
"cells": [
{
"account_id": 378,
"period_number": 1,
"amount": "18000.00"
}
],
"spread_yearly": true
}'<?php
$client = new \GuzzleHttp\Client();
$response = $client->request('PUT', 'https://api.novafisko.com/v1/companies/XBVD5O1L29HC/fiscal-years/2/budgets', [
'headers' => [
'Accept' => 'application/json',
'Authorization' => 'Bearer '.getenv('NOVAFISKO_TOKEN'),
'X-Client-Mutation-Id' => 'b0a6f6f0-7d1c-4c5e-8a55-3f2b1c9d0e11',
],
'json' => [
'cells' => [
[
'account_id' => 378,
'period_number' => 1,
'amount' => '18000.00',
],
],
'spread_yearly' => true,
],
]);
$data = json_decode((string) $response->getBody(), true);const response = await fetch("https://api.novafisko.com/v1/companies/XBVD5O1L29HC/fiscal-years/2/budgets", {
method: "PUT",
headers: {
"Accept": "application/json",
"Authorization": `Bearer ${process.env.NOVAFISKO_TOKEN}`,
"Content-Type": "application/json",
"X-Client-Mutation-Id": "b0a6f6f0-7d1c-4c5e-8a55-3f2b1c9d0e11",
},
body: JSON.stringify({
"cells": [
{
"account_id": 378,
"period_number": 1,
"amount": "18000.00"
}
],
"spread_yearly": true
}),
});
if (!response.ok) {
const error = await response.json();
throw new Error(error.code ?? error.message);
}
const data = response.status === 204 ? null : await response.json();import os
import requests
response = requests.put(
"https://api.novafisko.com/v1/companies/XBVD5O1L29HC/fiscal-years/2/budgets",
headers={
"Accept": "application/json",
"Authorization": f"Bearer {os.environ['NOVAFISKO_TOKEN']}",
"X-Client-Mutation-Id": "b0a6f6f0-7d1c-4c5e-8a55-3f2b1c9d0e11",
},
json={
"cells": [
{
"account_id": 378,
"period_number": 1,
"amount": "18000.00"
}
],
"spread_yearly": True
},
timeout=30,
)
response.raise_for_status()
data = response.json() if response.content else NoneGET/v1/companies/{company}/fiscal-years/{fiscalYear}/budget-reportBudget against actuals read
Integration tokens need the read ability.
Operatie-id companies.reports.budget
Padparameters
| Naam | Type | Beschrijving |
|---|---|---|
company verplicht | string | Public token of the company file (public_token, 12 characters).bv. XBVD5O1L29HC |
fiscalYear verplicht | integer | Id of the fiscal year. bv. 2 |
Queryparameters
| Naam | Type | Beschrijving |
|---|---|---|
scenario | string | |
cost_center_id | integer | |
upto_period | integer | 1 to 12. |
Gemeenschappelijke headers: Accept-Language
Antwoorden
200OK
application/json
Schema object
scenariostringfiscal_yearstringupto_periodintegerlinesobject[]Eigenschappen
account_idintegerbv.223numberstringbv.400000labelstringbv.Clientstypestringbv.assetbudgetobjectPeriod number => amount.actualobjectPeriod number => amount.budget_ytdstring <decimal>actual_ytdstring <decimal>variancestring <decimal>variance_pctnumber | nullbudget_yearstring <decimal>
totalsobjectEigenschappen
expenses_minus_income_budgetstring <decimal>expenses_minus_income_actualstring <decimal>
Voorbeeld
{
"scenario": "string",
"fiscal_year": "string",
"upto_period": 1,
"lines": [
{
"account_id": 223,
"number": "400000",
"label": "Clients",
"type": "asset",
"budget": {},
"actual": {},
"budget_ytd": "1210.00",
"actual_ytd": "1210.00",
"variance": "1210.00",
"variance_pct": 12.5,
"budget_year": "1210.00"
}
],
"totals": {
"expenses_minus_income_budget": "1210.00",
"expenses_minus_income_actual": "1210.00"
}
}token_ability_missing, session_token_required), demo restriction (demo_mode) or invalid URL signature. ErrorVoorbeeldaanroep
curl -X GET "https://api.novafisko.com/v1/companies/XBVD5O1L29HC/fiscal-years/2/budget-report" \
-H "Accept: application/json" \
-H "Authorization: Bearer $NOVAFISKO_TOKEN"<?php
$client = new \GuzzleHttp\Client();
$response = $client->request('GET', 'https://api.novafisko.com/v1/companies/XBVD5O1L29HC/fiscal-years/2/budget-report', [
'headers' => [
'Accept' => 'application/json',
'Authorization' => 'Bearer '.getenv('NOVAFISKO_TOKEN'),
],
]);
$data = json_decode((string) $response->getBody(), true);const response = await fetch("https://api.novafisko.com/v1/companies/XBVD5O1L29HC/fiscal-years/2/budget-report", {
method: "GET",
headers: {
"Accept": "application/json",
"Authorization": `Bearer ${process.env.NOVAFISKO_TOKEN}`,
},
});
if (!response.ok) {
const error = await response.json();
throw new Error(error.code ?? error.message);
}
const data = response.status === 204 ? null : await response.json();import os
import requests
response = requests.get(
"https://api.novafisko.com/v1/companies/XBVD5O1L29HC/fiscal-years/2/budget-report",
headers={
"Accept": "application/json",
"Authorization": f"Bearer {os.environ['NOVAFISKO_TOKEN']}",
},
timeout=30,
)
response.raise_for_status()
data = response.json() if response.content else NoneExports
Legal books, statements and data as PDF, XLSX or CSV; full dossier as ZIP.
GET/v1/companies/{company}/exportsCatalogue of exports read
Every export with its group, formats and parameters. types keeps the historical list of CSV codes.
Integration tokens need the read ability.
Operatie-id companies.exports.index
Padparameters
| Naam | Type | Beschrijving |
|---|---|---|
company verplicht | string | Public token of the company file (public_token, 12 characters).bv. XBVD5O1L29HC |
Queryparameters
| Naam | Type | Beschrijving |
|---|---|---|
lang | string | fr nl en de |
Gemeenschappelijke headers: Accept-Language
Antwoorden
200OK
application/json
Schema object
typesstring[]formatsstring[]pdfxlsxcsvdefault_formatstringbv.csvfull_dossierstringbv.zipgroupsobject[]Eigenschappen
codestringbooksstatementsvatthird_partiesassetsdatalabelstringbv.Livres comptables
common_paramsstring[]catalogobject[]Eigenschappen
codestringbv.general-ledgerlabelstringbv.Grand livredescriptionstringgroupstringbv.booksgroup_labelstringformatsstring[]datedbooleanrequires_fiscal_yearbooleanparamsobject[]
Voorbeeld
{
"types": [
"string"
],
"formats": [
"pdf"
],
"default_format": "csv",
"full_dossier": "zip",
"groups": [
{
"code": "books",
"label": "Livres comptables"
}
],
"common_params": [
"string"
],
"catalog": [
{
"code": "general-ledger",
"label": "Grand livre",
"description": "Description",
"group": "books",
"group_label": "string",
"formats": [
"string"
],
"dated": true,
"requires_fiscal_year": true,
"params": [
{}
]
}
]
}token_ability_missing, session_token_required), demo restriction (demo_mode) or invalid URL signature. ErrorVoorbeeldaanroep
curl -X GET "https://api.novafisko.com/v1/companies/XBVD5O1L29HC/exports" \
-H "Accept: application/json" \
-H "Authorization: Bearer $NOVAFISKO_TOKEN"<?php
$client = new \GuzzleHttp\Client();
$response = $client->request('GET', 'https://api.novafisko.com/v1/companies/XBVD5O1L29HC/exports', [
'headers' => [
'Accept' => 'application/json',
'Authorization' => 'Bearer '.getenv('NOVAFISKO_TOKEN'),
],
]);
$data = json_decode((string) $response->getBody(), true);const response = await fetch("https://api.novafisko.com/v1/companies/XBVD5O1L29HC/exports", {
method: "GET",
headers: {
"Accept": "application/json",
"Authorization": `Bearer ${process.env.NOVAFISKO_TOKEN}`,
},
});
if (!response.ok) {
const error = await response.json();
throw new Error(error.code ?? error.message);
}
const data = response.status === 204 ? null : await response.json();import os
import requests
response = requests.get(
"https://api.novafisko.com/v1/companies/XBVD5O1L29HC/exports",
headers={
"Accept": "application/json",
"Authorization": f"Bearer {os.environ['NOVAFISKO_TOKEN']}",
},
timeout=30,
)
response.raise_for_status()
data = response.json() if response.content else NoneGET/v1/companies/{company}/exports/full-dossier/{fiscalYear}Full dossier (ZIP) read 10 / 1 min
Every book, statement, VAT document, third party listing, fixed asset table and the source documents of the fiscal year, in numbered folders with a manifest of SHA-256 fingerprints.
Integration tokens need the read ability.
Rate limit: 10 requests per minute (429 beyond, see Retry-After).
Operatie-id companies.exports.full-dossier
Padparameters
| Naam | Type | Beschrijving |
|---|---|---|
company verplicht | string | Public token of the company file (public_token, 12 characters).bv. XBVD5O1L29HC |
fiscalYear verplicht | integer | Id of the fiscal year. bv. 2 |
Queryparameters
| Naam | Type | Beschrijving |
|---|---|---|
lang | string | fr nl en de |
Gemeenschappelijke headers: Accept-Language
Antwoorden
200ZIP archive.
Antwoordheaders Content-Disposition X-RateLimit-Limit X-RateLimit-Remaining
application/zip
token_ability_missing, session_token_required), demo restriction (demo_mode) or invalid URL signature. ErrorVoorbeeldaanroep
curl -X GET "https://api.novafisko.com/v1/companies/XBVD5O1L29HC/exports/full-dossier/2" \
-H "Accept: application/json" \
-H "Authorization: Bearer $NOVAFISKO_TOKEN"<?php
$client = new \GuzzleHttp\Client();
$response = $client->request('GET', 'https://api.novafisko.com/v1/companies/XBVD5O1L29HC/exports/full-dossier/2', [
'headers' => [
'Accept' => 'application/json',
'Authorization' => 'Bearer '.getenv('NOVAFISKO_TOKEN'),
],
]);
$data = json_decode((string) $response->getBody(), true);const response = await fetch("https://api.novafisko.com/v1/companies/XBVD5O1L29HC/exports/full-dossier/2", {
method: "GET",
headers: {
"Accept": "application/json",
"Authorization": `Bearer ${process.env.NOVAFISKO_TOKEN}`,
},
});
if (!response.ok) {
const error = await response.json();
throw new Error(error.code ?? error.message);
}
const data = response.status === 204 ? null : await response.json();import os
import requests
response = requests.get(
"https://api.novafisko.com/v1/companies/XBVD5O1L29HC/exports/full-dossier/2",
headers={
"Accept": "application/json",
"Authorization": f"Bearer {os.environ['NOVAFISKO_TOKEN']}",
},
timeout=30,
)
response.raise_for_status()
data = response.json() if response.content else NoneGET/v1/companies/{company}/exports/{type}/preview-urlSigned preview URL of an export read 60 / 1 min
URL valid 15 minutes that serves the PDF inline (preview pane).
Integration tokens need the read ability.
Rate limit: 60 requests per minute (429 beyond, see Retry-After).
Operatie-id companies.exports.preview-url
Padparameters
| Naam | Type | Beschrijving |
|---|---|---|
company verplicht | string | Public token of the company file (public_token, 12 characters).bv. XBVD5O1L29HC |
type verplicht | string | Export code from the catalogue of GET exports (journals, general-ledger, trial-balance, vat-declaration, …).bv. trial-balance |
Queryparameters
| Naam | Type | Beschrijving |
|---|---|---|
fiscal_year_id | integer | The current fiscal year when absent. |
from | string <date> | |
to | string <date> | |
lang | string | fr nl en de |
account_from | string | general-ledger. |
account_to | string | general-ledger. |
scheme | string | annual-accounts.abbreviated micro |
general_meeting_date | string <date> | annual-accounts. |
declaration_id | integer | vat-declaration. |
year | integer | intracom-listing. |
period | integer | intracom-listing. |
third_party_id | integer | third-party-ledger. |
party_type | string | third-party-ledger.customer supplier |
Gemeenschappelijke headers: Accept-Language
Antwoorden
200OK
Antwoordheaders X-RateLimit-Limit X-RateLimit-Remaining
application/json
Schema object
urlstring <uri>expires_inintegerSeconds.bv.900formatstringbv.pdf
Voorbeeld
{
"url": "https://api.novafisko.com/v1/companies/XBVD5O1L29HC",
"expires_in": 900,
"format": "pdf"
}token_ability_missing, session_token_required), demo restriction (demo_mode) or invalid URL signature. ErrorVoorbeeldaanroep
curl -X GET "https://api.novafisko.com/v1/companies/XBVD5O1L29HC/exports/trial-balance/preview-url" \
-H "Accept: application/json" \
-H "Authorization: Bearer $NOVAFISKO_TOKEN"<?php
$client = new \GuzzleHttp\Client();
$response = $client->request('GET', 'https://api.novafisko.com/v1/companies/XBVD5O1L29HC/exports/trial-balance/preview-url', [
'headers' => [
'Accept' => 'application/json',
'Authorization' => 'Bearer '.getenv('NOVAFISKO_TOKEN'),
],
]);
$data = json_decode((string) $response->getBody(), true);const response = await fetch("https://api.novafisko.com/v1/companies/XBVD5O1L29HC/exports/trial-balance/preview-url", {
method: "GET",
headers: {
"Accept": "application/json",
"Authorization": `Bearer ${process.env.NOVAFISKO_TOKEN}`,
},
});
if (!response.ok) {
const error = await response.json();
throw new Error(error.code ?? error.message);
}
const data = response.status === 204 ? null : await response.json();import os
import requests
response = requests.get(
"https://api.novafisko.com/v1/companies/XBVD5O1L29HC/exports/trial-balance/preview-url",
headers={
"Accept": "application/json",
"Authorization": f"Bearer {os.environ['NOVAFISKO_TOKEN']}",
},
timeout=30,
)
response.raise_for_status()
data = response.json() if response.content else NoneGET/v1/companies/{company}/exports/{type}Download an export read 30 / 1 min
Codes: journals, purchases, sales, financial, miscellaneous, general-ledger, trial-balance, balance-by-period, financial-statements, annual-accounts, vat-summary, vat-declaration, customer-listing, intracom-listing, third-parties, customer-balance, supplier-balance, aged-customers, aged-suppliers, third-party-ledger, fixed-assets, accounts, documents, audit-trail. Generation is synchronous. PDFs of a period that is not locked carry a « provisional » mention.
Integration tokens need the read ability.
Rate limit: 30 requests per minute (429 beyond, see Retry-After).
Operatie-id companies.exports.download
Padparameters
| Naam | Type | Beschrijving |
|---|---|---|
company verplicht | string | Public token of the company file (public_token, 12 characters).bv. XBVD5O1L29HC |
type verplicht | string | Export code from the catalogue of GET exports (journals, general-ledger, trial-balance, vat-declaration, …).bv. trial-balance |
Queryparameters
| Naam | Type | Beschrijving |
|---|---|---|
format | string | CSV by default.pdf xlsx csv |
fiscal_year_id | integer | The current fiscal year when absent. |
from | string <date> | |
to | string <date> | |
lang | string | fr nl en de |
account_from | string | general-ledger. |
account_to | string | general-ledger. |
scheme | string | annual-accounts.abbreviated micro |
general_meeting_date | string <date> | annual-accounts. |
declaration_id | integer | vat-declaration. |
year | integer | intracom-listing. |
period | integer | intracom-listing. |
third_party_id | integer | third-party-ledger. |
party_type | string | third-party-ledger.customer supplier |
Gemeenschappelijke headers: Accept-Language
Antwoorden
200The file.
Antwoordheaders Content-Disposition X-Export-Fingerprint X-RateLimit-Limit X-RateLimit-Remaining
application/pdf
application/vnd.openxmlformats-officedocument.spreadsheetml.sheet
text/csv
token_ability_missing, session_token_required), demo restriction (demo_mode) or invalid URL signature. ErrorVoorbeeldaanroep
curl -X GET "https://api.novafisko.com/v1/companies/XBVD5O1L29HC/exports/trial-balance" \
-H "Accept: application/json" \
-H "Authorization: Bearer $NOVAFISKO_TOKEN"<?php
$client = new \GuzzleHttp\Client();
$response = $client->request('GET', 'https://api.novafisko.com/v1/companies/XBVD5O1L29HC/exports/trial-balance', [
'headers' => [
'Accept' => 'application/json',
'Authorization' => 'Bearer '.getenv('NOVAFISKO_TOKEN'),
],
]);
$data = json_decode((string) $response->getBody(), true);const response = await fetch("https://api.novafisko.com/v1/companies/XBVD5O1L29HC/exports/trial-balance", {
method: "GET",
headers: {
"Accept": "application/json",
"Authorization": `Bearer ${process.env.NOVAFISKO_TOKEN}`,
},
});
if (!response.ok) {
const error = await response.json();
throw new Error(error.code ?? error.message);
}
const data = response.status === 204 ? null : await response.json();import os
import requests
response = requests.get(
"https://api.novafisko.com/v1/companies/XBVD5O1L29HC/exports/trial-balance",
headers={
"Accept": "application/json",
"Authorization": f"Bearer {os.environ['NOVAFISKO_TOKEN']}",
},
timeout=30,
)
response.raise_for_status()
data = response.json() if response.content else NoneGET/v1/companies/{company}/exports/{type}/viewInline PDF of an export (signed) Ondertekende URL 30 / 1 min
Target of the URL returned by preview-url.
Authorised by the signature of the URL (query parameters signature and expires), not by a bearer token. The URL is issued by another endpoint and expires.
Rate limit: 30 requests per minute (429 beyond, see Retry-After).
Padparameters
| Naam | Type | Beschrijving |
|---|---|---|
company verplicht | string | Public token of the company file (public_token, 12 characters).bv. XBVD5O1L29HC |
type verplicht | string | Export code from the catalogue of GET exports (journals, general-ledger, trial-balance, vat-declaration, …).bv. trial-balance |
Gemeenschappelijke headers: signature expires
Antwoorden
200The PDF, inline.
Antwoordheaders Content-Disposition X-RateLimit-Limit X-RateLimit-Remaining
application/pdf
token_ability_missing, session_token_required), demo restriction (demo_mode) or invalid URL signature. ErrorVoorbeeldaanroep
curl -X GET "https://api.novafisko.com/v1/companies/XBVD5O1L29HC/exports/trial-balance/view" \
-H "Accept: application/json"<?php
$client = new \GuzzleHttp\Client();
$response = $client->request('GET', 'https://api.novafisko.com/v1/companies/XBVD5O1L29HC/exports/trial-balance/view', [
'headers' => [
'Accept' => 'application/json',
],
]);
$data = json_decode((string) $response->getBody(), true);const response = await fetch("https://api.novafisko.com/v1/companies/XBVD5O1L29HC/exports/trial-balance/view", {
method: "GET",
headers: {
"Accept": "application/json",
},
});
if (!response.ok) {
const error = await response.json();
throw new Error(error.code ?? error.message);
}
const data = response.status === 204 ? null : await response.json();import os
import requests
response = requests.get(
"https://api.novafisko.com/v1/companies/XBVD5O1L29HC/exports/trial-balance/view",
headers={
"Accept": "application/json",
},
timeout=30,
)
response.raise_for_status()
data = response.json() if response.content else NonePeppol
Registration of a company file on Peppol, transport options, network lookups.
GET/v1/companies/{company}/peppolPeppol state of the file read
Registration, transport options, SMP publication, supported documents and what blocks a registration.
Integration tokens need the read ability.
Operatie-id companies.peppol.show
Padparameters
| Naam | Type | Beschrijving |
|---|---|---|
company verplicht | string | Public token of the company file (public_token, 12 characters).bv. XBVD5O1L29HC |
Gemeenschappelijke headers: Accept-Language
Antwoorden
200OK
application/json
Schema PeppolState
Voorbeeld
{
"identity": {},
"participant_id": "0208:0477472701",
"status": "none",
"account": {
"id": "string",
"name": "Le Comptoir Montois SRL",
"archived": true
},
"transport": {},
"smp": {
"published": true,
"checked_at": "2026-03-15T09:41:00+00:00"
},
"access_point": {
"smp_host": "smp.b2brouter.net",
"provider_name": "B2Brouter",
"endpoint_url": "https://api.novafisko.com/v1/companies/XBVD5O1L29HC",
"technical_contact": "string"
},
"supported_documents": [
{
"id": "bis_billing_invoice",
"name": "Invoice BIS Billing 3.0",
"family": "billing",
"description": "Facture électronique européenne (EN 16931), format Peppol BIS Billing 3.0.",
"document_id": "string"
}
],
"can_register": true,
"blockers": [
"string"
],
"blocker_codes": [
"string"
],
"managed_by_novadesko": true,
"registered_elsewhere": true,
"external_provider": "string",
"provider_configured": true,
"environment": "production",
"contact": {},
"last_error": "string"
}token_ability_missing, session_token_required), demo restriction (demo_mode) or invalid URL signature. ErrorVoorbeeldaanroep
curl -X GET "https://api.novafisko.com/v1/companies/XBVD5O1L29HC/peppol" \
-H "Accept: application/json" \
-H "Authorization: Bearer $NOVAFISKO_TOKEN"<?php
$client = new \GuzzleHttp\Client();
$response = $client->request('GET', 'https://api.novafisko.com/v1/companies/XBVD5O1L29HC/peppol', [
'headers' => [
'Accept' => 'application/json',
'Authorization' => 'Bearer '.getenv('NOVAFISKO_TOKEN'),
],
]);
$data = json_decode((string) $response->getBody(), true);const response = await fetch("https://api.novafisko.com/v1/companies/XBVD5O1L29HC/peppol", {
method: "GET",
headers: {
"Accept": "application/json",
"Authorization": `Bearer ${process.env.NOVAFISKO_TOKEN}`,
},
});
if (!response.ok) {
const error = await response.json();
throw new Error(error.code ?? error.message);
}
const data = response.status === 204 ? null : await response.json();import os
import requests
response = requests.get(
"https://api.novafisko.com/v1/companies/XBVD5O1L29HC/peppol",
headers={
"Accept": "application/json",
"Authorization": f"Bearer {os.environ['NOVAFISKO_TOKEN']}",
},
timeout=30,
)
response.raise_for_status()
data = response.json() if response.content else NoneDELETE/v1/companies/{company}/peppolUnregister the file from Peppol write Niet in demo
Archives the account at the access point and records the reason.
Integration tokens need the write ability.
Not available in demo mode: answers 403 demo_mode.
Operatie-id companies.peppol.destroy
Padparameters
| Naam | Type | Beschrijving |
|---|---|---|
company verplicht | string | Public token of the company file (public_token, 12 characters).bv. XBVD5O1L29HC |
Gemeenschappelijke headers: Accept-Language X-Client-Mutation-Id X-Operation-Id X-Device-Id X-Device-Name X-Occurred-At X-Origin X-Base-Version
Body van de aanvraag
application/json
Schema object
reason_typestringverplichtexpensiveaccountantothercustom_reasonstring | nullRequired when the reason isother.
Voorbeeld
{
"reason_type": "accountant"
}Antwoorden
200OK
Antwoordheaders X-Operation-Id X-Idempotent-Replay X-Trashed
application/json
Schema PeppolState
Voorbeeld
{
"identity": {},
"participant_id": "0208:0477472701",
"status": "none",
"account": {
"id": "string",
"name": "Le Comptoir Montois SRL",
"archived": true
},
"transport": {},
"smp": {
"published": true,
"checked_at": "2026-03-15T09:41:00+00:00"
},
"access_point": {
"smp_host": "smp.b2brouter.net",
"provider_name": "B2Brouter",
"endpoint_url": "https://api.novafisko.com/v1/companies/XBVD5O1L29HC",
"technical_contact": "string"
},
"supported_documents": [
{
"id": "bis_billing_invoice",
"name": "Invoice BIS Billing 3.0",
"family": "billing",
"description": "Facture électronique européenne (EN 16931), format Peppol BIS Billing 3.0.",
"document_id": "string"
}
],
"can_register": true,
"blockers": [
"string"
],
"blocker_codes": [
"string"
],
"managed_by_novadesko": true,
"registered_elsewhere": true,
"external_provider": "string",
"provider_configured": true,
"environment": "production",
"contact": {},
"last_error": "string"
}token_ability_missing, session_token_required), demo restriction (demo_mode) or invalid URL signature. ErrorX-Base-Version. Nothing was modified. VersionConflict422Refused: missing data on the file, provider error or not registered. blocker_codes lists the machine reasons and state carries the current Peppol state.
application/json
Voorbeeld
{
"message": "Le numéro de TVA du dossier est requis pour l'inscription Peppol.",
"errors": {
"peppol": [
"Le numéro de TVA du dossier est requis pour l'inscription Peppol."
]
},
"blockers": [
"Numéro de TVA manquant"
],
"blocker_codes": [
"missing_vat_number"
]
}Voorbeeldaanroep
curl -X DELETE "https://api.novafisko.com/v1/companies/XBVD5O1L29HC/peppol" \
-H "Accept: application/json" \
-H "Authorization: Bearer $NOVAFISKO_TOKEN" \
-H "Content-Type: application/json" \
-H "X-Client-Mutation-Id: b0a6f6f0-7d1c-4c5e-8a55-3f2b1c9d0e11" \
-d '{
"reason_type": "accountant"
}'<?php
$client = new \GuzzleHttp\Client();
$response = $client->request('DELETE', 'https://api.novafisko.com/v1/companies/XBVD5O1L29HC/peppol', [
'headers' => [
'Accept' => 'application/json',
'Authorization' => 'Bearer '.getenv('NOVAFISKO_TOKEN'),
'X-Client-Mutation-Id' => 'b0a6f6f0-7d1c-4c5e-8a55-3f2b1c9d0e11',
],
'json' => [
'reason_type' => 'accountant',
],
]);
$data = json_decode((string) $response->getBody(), true);const response = await fetch("https://api.novafisko.com/v1/companies/XBVD5O1L29HC/peppol", {
method: "DELETE",
headers: {
"Accept": "application/json",
"Authorization": `Bearer ${process.env.NOVAFISKO_TOKEN}`,
"Content-Type": "application/json",
"X-Client-Mutation-Id": "b0a6f6f0-7d1c-4c5e-8a55-3f2b1c9d0e11",
},
body: JSON.stringify({
"reason_type": "accountant"
}),
});
if (!response.ok) {
const error = await response.json();
throw new Error(error.code ?? error.message);
}
const data = response.status === 204 ? null : await response.json();import os
import requests
response = requests.delete(
"https://api.novafisko.com/v1/companies/XBVD5O1L29HC/peppol",
headers={
"Accept": "application/json",
"Authorization": f"Bearer {os.environ['NOVAFISKO_TOKEN']}",
"X-Client-Mutation-Id": "b0a6f6f0-7d1c-4c5e-8a55-3f2b1c9d0e11",
},
json={
"reason_type": "accountant"
},
timeout=30,
)
response.raise_for_status()
data = response.json() if response.content else NonePOST/v1/companies/{company}/peppol/registerRegister the file on Peppol write Niet in demo 6 / 1 min
Creates the account at the access point (B2Brouter) and publishes the participant 0208:<enterprise number>. 201 for a new registration, 200 when it was already active. Emits the webhook peppol.status_changed.
Integration tokens need the write ability.
Not available in demo mode: answers 403 demo_mode.
Rate limit: 6 requests per minute (429 beyond, see Retry-After).
Operatie-id companies.peppol.register
Padparameters
| Naam | Type | Beschrijving |
|---|---|---|
company verplicht | string | Public token of the company file (public_token, 12 characters).bv. XBVD5O1L29HC |
Gemeenschappelijke headers: Accept-Language X-Client-Mutation-Id X-Operation-Id X-Device-Id X-Device-Name X-Occurred-At X-Origin
Body van de aanvraag optioneel
application/json
Schema object
emailstring <email> | nullContact of the registration.phonestring | nulladdressstring | nullpostal_codestring | nullcitystring | nullprovincestring | nulloptionsobjectEigenschappen
round_before_sumboolean | nullapply_taxes_per_lineboolean | nullregistered_for_empl_taxboolean | null
Voorbeeld
{
"email": "gerant@comptoir-montois.example",
"address": "Grand-Place 14",
"postal_code": "7000",
"city": "Mons"
}Antwoorden
200Already registered
Antwoordheaders X-Operation-Id X-Idempotent-Replay X-RateLimit-Limit X-RateLimit-Remaining
application/json
Schema PeppolState
Voorbeeld
{
"identity": {},
"participant_id": "0208:0477472701",
"status": "none",
"account": {
"id": "string",
"name": "Le Comptoir Montois SRL",
"archived": true
},
"transport": {},
"smp": {
"published": true,
"checked_at": "2026-03-15T09:41:00+00:00"
},
"access_point": {
"smp_host": "smp.b2brouter.net",
"provider_name": "B2Brouter",
"endpoint_url": "https://api.novafisko.com/v1/companies/XBVD5O1L29HC",
"technical_contact": "string"
},
"supported_documents": [
{
"id": "bis_billing_invoice",
"name": "Invoice BIS Billing 3.0",
"family": "billing",
"description": "Facture électronique européenne (EN 16931), format Peppol BIS Billing 3.0.",
"document_id": "string"
}
],
"can_register": true,
"blockers": [
"string"
],
"blocker_codes": [
"string"
],
"managed_by_novadesko": true,
"registered_elsewhere": true,
"external_provider": "string",
"provider_configured": true,
"environment": "production",
"contact": {},
"last_error": "string"
}201Registered
Antwoordheaders X-Operation-Id X-Idempotent-Replay X-RateLimit-Limit X-RateLimit-Remaining
application/json
Schema PeppolState
Voorbeeld
{
"identity": {},
"participant_id": "0208:0477472701",
"status": "none",
"account": {
"id": "string",
"name": "Le Comptoir Montois SRL",
"archived": true
},
"transport": {},
"smp": {
"published": true,
"checked_at": "2026-03-15T09:41:00+00:00"
},
"access_point": {
"smp_host": "smp.b2brouter.net",
"provider_name": "B2Brouter",
"endpoint_url": "https://api.novafisko.com/v1/companies/XBVD5O1L29HC",
"technical_contact": "string"
},
"supported_documents": [
{
"id": "bis_billing_invoice",
"name": "Invoice BIS Billing 3.0",
"family": "billing",
"description": "Facture électronique européenne (EN 16931), format Peppol BIS Billing 3.0.",
"document_id": "string"
}
],
"can_register": true,
"blockers": [
"string"
],
"blocker_codes": [
"string"
],
"managed_by_novadesko": true,
"registered_elsewhere": true,
"external_provider": "string",
"provider_configured": true,
"environment": "production",
"contact": {},
"last_error": "string"
}token_ability_missing, session_token_required), demo restriction (demo_mode) or invalid URL signature. Error422Refused: missing data on the file, provider error or not registered. blocker_codes lists the machine reasons and state carries the current Peppol state.
application/json
Voorbeeld
{
"message": "Le numéro de TVA du dossier est requis pour l'inscription Peppol.",
"errors": {
"peppol": [
"Le numéro de TVA du dossier est requis pour l'inscription Peppol."
]
},
"blockers": [
"Numéro de TVA manquant"
],
"blocker_codes": [
"missing_vat_number"
]
}Voorbeeldaanroep
curl -X POST "https://api.novafisko.com/v1/companies/XBVD5O1L29HC/peppol/register" \
-H "Accept: application/json" \
-H "Authorization: Bearer $NOVAFISKO_TOKEN" \
-H "Content-Type: application/json" \
-H "X-Client-Mutation-Id: b0a6f6f0-7d1c-4c5e-8a55-3f2b1c9d0e11" \
-d '{
"email": "gerant@comptoir-montois.example",
"address": "Grand-Place 14",
"postal_code": "7000",
"city": "Mons"
}'<?php
$client = new \GuzzleHttp\Client();
$response = $client->request('POST', 'https://api.novafisko.com/v1/companies/XBVD5O1L29HC/peppol/register', [
'headers' => [
'Accept' => 'application/json',
'Authorization' => 'Bearer '.getenv('NOVAFISKO_TOKEN'),
'X-Client-Mutation-Id' => 'b0a6f6f0-7d1c-4c5e-8a55-3f2b1c9d0e11',
],
'json' => [
'email' => 'gerant@comptoir-montois.example',
'address' => 'Grand-Place 14',
'postal_code' => '7000',
'city' => 'Mons',
],
]);
$data = json_decode((string) $response->getBody(), true);const response = await fetch("https://api.novafisko.com/v1/companies/XBVD5O1L29HC/peppol/register", {
method: "POST",
headers: {
"Accept": "application/json",
"Authorization": `Bearer ${process.env.NOVAFISKO_TOKEN}`,
"Content-Type": "application/json",
"X-Client-Mutation-Id": "b0a6f6f0-7d1c-4c5e-8a55-3f2b1c9d0e11",
},
body: JSON.stringify({
"email": "gerant@comptoir-montois.example",
"address": "Grand-Place 14",
"postal_code": "7000",
"city": "Mons"
}),
});
if (!response.ok) {
const error = await response.json();
throw new Error(error.code ?? error.message);
}
const data = response.status === 204 ? null : await response.json();import os
import requests
response = requests.post(
"https://api.novafisko.com/v1/companies/XBVD5O1L29HC/peppol/register",
headers={
"Accept": "application/json",
"Authorization": f"Bearer {os.environ['NOVAFISKO_TOKEN']}",
"X-Client-Mutation-Id": "b0a6f6f0-7d1c-4c5e-8a55-3f2b1c9d0e11",
},
json={
"email": "gerant@comptoir-montois.example",
"address": "Grand-Place 14",
"postal_code": "7000",
"city": "Mons"
},
timeout=30,
)
response.raise_for_status()
data = response.json() if response.content else NonePOST/v1/companies/{company}/peppol/refreshRefresh the Peppol state write Niet in demo 12 / 1 min
Reads the account at the access point and the network (SML / SMP) again.
Integration tokens need the write ability.
Not available in demo mode: answers 403 demo_mode.
Rate limit: 12 requests per minute (429 beyond, see Retry-After).
Operatie-id companies.peppol.refresh
Padparameters
| Naam | Type | Beschrijving |
|---|---|---|
company verplicht | string | Public token of the company file (public_token, 12 characters).bv. XBVD5O1L29HC |
Gemeenschappelijke headers: Accept-Language X-Client-Mutation-Id X-Operation-Id X-Device-Id X-Device-Name X-Occurred-At X-Origin
Antwoorden
200OK
Antwoordheaders X-Operation-Id X-Idempotent-Replay X-RateLimit-Limit X-RateLimit-Remaining
application/json
Schema PeppolState
Voorbeeld
{
"identity": {},
"participant_id": "0208:0477472701",
"status": "none",
"account": {
"id": "string",
"name": "Le Comptoir Montois SRL",
"archived": true
},
"transport": {},
"smp": {
"published": true,
"checked_at": "2026-03-15T09:41:00+00:00"
},
"access_point": {
"smp_host": "smp.b2brouter.net",
"provider_name": "B2Brouter",
"endpoint_url": "https://api.novafisko.com/v1/companies/XBVD5O1L29HC",
"technical_contact": "string"
},
"supported_documents": [
{
"id": "bis_billing_invoice",
"name": "Invoice BIS Billing 3.0",
"family": "billing",
"description": "Facture électronique européenne (EN 16931), format Peppol BIS Billing 3.0.",
"document_id": "string"
}
],
"can_register": true,
"blockers": [
"string"
],
"blocker_codes": [
"string"
],
"managed_by_novadesko": true,
"registered_elsewhere": true,
"external_provider": "string",
"provider_configured": true,
"environment": "production",
"contact": {},
"last_error": "string"
}token_ability_missing, session_token_required), demo restriction (demo_mode) or invalid URL signature. Error422Refused: missing data on the file, provider error or not registered. blocker_codes lists the machine reasons and state carries the current Peppol state.
application/json
Voorbeeld
{
"message": "Le numéro de TVA du dossier est requis pour l'inscription Peppol.",
"errors": {
"peppol": [
"Le numéro de TVA du dossier est requis pour l'inscription Peppol."
]
},
"blockers": [
"Numéro de TVA manquant"
],
"blocker_codes": [
"missing_vat_number"
]
}Voorbeeldaanroep
curl -X POST "https://api.novafisko.com/v1/companies/XBVD5O1L29HC/peppol/refresh" \
-H "Accept: application/json" \
-H "Authorization: Bearer $NOVAFISKO_TOKEN" \
-H "X-Client-Mutation-Id: b0a6f6f0-7d1c-4c5e-8a55-3f2b1c9d0e11"<?php
$client = new \GuzzleHttp\Client();
$response = $client->request('POST', 'https://api.novafisko.com/v1/companies/XBVD5O1L29HC/peppol/refresh', [
'headers' => [
'Accept' => 'application/json',
'Authorization' => 'Bearer '.getenv('NOVAFISKO_TOKEN'),
'X-Client-Mutation-Id' => 'b0a6f6f0-7d1c-4c5e-8a55-3f2b1c9d0e11',
],
]);
$data = json_decode((string) $response->getBody(), true);const response = await fetch("https://api.novafisko.com/v1/companies/XBVD5O1L29HC/peppol/refresh", {
method: "POST",
headers: {
"Accept": "application/json",
"Authorization": `Bearer ${process.env.NOVAFISKO_TOKEN}`,
"X-Client-Mutation-Id": "b0a6f6f0-7d1c-4c5e-8a55-3f2b1c9d0e11",
},
});
if (!response.ok) {
const error = await response.json();
throw new Error(error.code ?? error.message);
}
const data = response.status === 204 ? null : await response.json();import os
import requests
response = requests.post(
"https://api.novafisko.com/v1/companies/XBVD5O1L29HC/peppol/refresh",
headers={
"Accept": "application/json",
"Authorization": f"Bearer {os.environ['NOVAFISKO_TOKEN']}",
"X-Client-Mutation-Id": "b0a6f6f0-7d1c-4c5e-8a55-3f2b1c9d0e11",
},
timeout=30,
)
response.raise_for_status()
data = response.json() if response.content else NonePATCH/v1/companies/{company}/peppol/transportUpdate the transport options write Niet in demo
Reception and the document families received through Peppol.
Integration tokens need the write ability.
Not available in demo mode: answers 403 demo_mode.
Operatie-id companies.peppol.transport
Padparameters
| Naam | Type | Beschrijving |
|---|---|---|
company verplicht | string | Public token of the company file (public_token, 12 characters).bv. XBVD5O1L29HC |
Gemeenschappelijke headers: Accept-Language X-Client-Mutation-Id X-Operation-Id X-Device-Id X-Device-Name X-Occurred-At X-Origin X-Base-Version
Body van de aanvraag
application/json
Schema object
enabledboolean | nullreceptionboolean | nullstandard_documentsboolean | nullinvoiceboolean | nullcredit_noteboolean | nullself_billingboolean | nullorderboolean | nullapplication_responseboolean | null
Voorbeeld
{
"reception": true,
"credit_note": true
}Antwoorden
200OK
Antwoordheaders X-Operation-Id X-Idempotent-Replay
application/json
Schema PeppolState
Voorbeeld
{
"identity": {},
"participant_id": "0208:0477472701",
"status": "none",
"account": {
"id": "string",
"name": "Le Comptoir Montois SRL",
"archived": true
},
"transport": {},
"smp": {
"published": true,
"checked_at": "2026-03-15T09:41:00+00:00"
},
"access_point": {
"smp_host": "smp.b2brouter.net",
"provider_name": "B2Brouter",
"endpoint_url": "https://api.novafisko.com/v1/companies/XBVD5O1L29HC",
"technical_contact": "string"
},
"supported_documents": [
{
"id": "bis_billing_invoice",
"name": "Invoice BIS Billing 3.0",
"family": "billing",
"description": "Facture électronique européenne (EN 16931), format Peppol BIS Billing 3.0.",
"document_id": "string"
}
],
"can_register": true,
"blockers": [
"string"
],
"blocker_codes": [
"string"
],
"managed_by_novadesko": true,
"registered_elsewhere": true,
"external_provider": "string",
"provider_configured": true,
"environment": "production",
"contact": {},
"last_error": "string"
}token_ability_missing, session_token_required), demo restriction (demo_mode) or invalid URL signature. ErrorX-Base-Version. Nothing was modified. VersionConflict422Refused: missing data on the file, provider error or not registered. blocker_codes lists the machine reasons and state carries the current Peppol state.
application/json
Voorbeeld
{
"message": "Le numéro de TVA du dossier est requis pour l'inscription Peppol.",
"errors": {
"peppol": [
"Le numéro de TVA du dossier est requis pour l'inscription Peppol."
]
},
"blockers": [
"Numéro de TVA manquant"
],
"blocker_codes": [
"missing_vat_number"
]
}Voorbeeldaanroep
curl -X PATCH "https://api.novafisko.com/v1/companies/XBVD5O1L29HC/peppol/transport" \
-H "Accept: application/json" \
-H "Authorization: Bearer $NOVAFISKO_TOKEN" \
-H "Content-Type: application/json" \
-H "X-Client-Mutation-Id: b0a6f6f0-7d1c-4c5e-8a55-3f2b1c9d0e11" \
-d '{
"reception": true,
"credit_note": true
}'<?php
$client = new \GuzzleHttp\Client();
$response = $client->request('PATCH', 'https://api.novafisko.com/v1/companies/XBVD5O1L29HC/peppol/transport', [
'headers' => [
'Accept' => 'application/json',
'Authorization' => 'Bearer '.getenv('NOVAFISKO_TOKEN'),
'X-Client-Mutation-Id' => 'b0a6f6f0-7d1c-4c5e-8a55-3f2b1c9d0e11',
],
'json' => [
'reception' => true,
'credit_note' => true,
],
]);
$data = json_decode((string) $response->getBody(), true);const response = await fetch("https://api.novafisko.com/v1/companies/XBVD5O1L29HC/peppol/transport", {
method: "PATCH",
headers: {
"Accept": "application/json",
"Authorization": `Bearer ${process.env.NOVAFISKO_TOKEN}`,
"Content-Type": "application/json",
"X-Client-Mutation-Id": "b0a6f6f0-7d1c-4c5e-8a55-3f2b1c9d0e11",
},
body: JSON.stringify({
"reception": true,
"credit_note": true
}),
});
if (!response.ok) {
const error = await response.json();
throw new Error(error.code ?? error.message);
}
const data = response.status === 204 ? null : await response.json();import os
import requests
response = requests.patch(
"https://api.novafisko.com/v1/companies/XBVD5O1L29HC/peppol/transport",
headers={
"Accept": "application/json",
"Authorization": f"Bearer {os.environ['NOVAFISKO_TOKEN']}",
"X-Client-Mutation-Id": "b0a6f6f0-7d1c-4c5e-8a55-3f2b1c9d0e11",
},
json={
"reception": True,
"credit_note": True
},
timeout=30,
)
response.raise_for_status()
data = response.json() if response.content else NoneGET/v1/companies/{company}/peppol/lookupLook a participant up on the Peppol network read Niet in demo 30 / 1 min
By identifier (0208:0402531376) or by VAT / enterprise number and country. Reads the SML and the SMP of the participant.
Integration tokens need the read ability.
Not available in demo mode: answers 403 demo_mode.
Rate limit: 30 requests per minute (429 beyond, see Retry-After).
Operatie-id companies.peppol.lookup
Padparameters
| Naam | Type | Beschrijving |
|---|---|---|
company verplicht | string | Public token of the company file (public_token, 12 characters).bv. XBVD5O1L29HC |
Queryparameters
| Naam | Type | Beschrijving |
|---|---|---|
identifier | string | bv. 0208:0402531376 |
vat | string | bv. BE0402531376 |
country | string | bv. BE |
enterprise_number | string |
Gemeenschappelijke headers: Accept-Language
Antwoorden
200OK
Antwoordheaders X-RateLimit-Limit X-RateLimit-Remaining
application/json
Schema PeppolThirdPartyStatus
Voorbeeld
{
"identifier": "0208:0402531376",
"registered": true,
"access_point": {
"smp_host": "smp.b2brouter.net",
"provider_name": "B2Brouter",
"endpoint_url": "https://api.novafisko.com/v1/companies/XBVD5O1L29HC",
"technical_contact": "string"
},
"document_types": [
{
"id": "bis_billing_invoice",
"name": "Invoice BIS Billing 3.0",
"family": "billing",
"description": "Facture électronique européenne (EN 16931), format Peppol BIS Billing 3.0.",
"document_id": "string"
}
],
"checked_at": "2026-03-15T09:41:00+00:00",
"stale": true,
"error": "string",
"source": "sml+smp"
}token_ability_missing, session_token_required), demo restriction (demo_mode) or invalid URL signature. Errorerrors maps each field to its messages; code is present when the refusal has a machine reason. ErrorVoorbeeldaanroep
curl -X GET "https://api.novafisko.com/v1/companies/XBVD5O1L29HC/peppol/lookup" \
-H "Accept: application/json" \
-H "Authorization: Bearer $NOVAFISKO_TOKEN"<?php
$client = new \GuzzleHttp\Client();
$response = $client->request('GET', 'https://api.novafisko.com/v1/companies/XBVD5O1L29HC/peppol/lookup', [
'headers' => [
'Accept' => 'application/json',
'Authorization' => 'Bearer '.getenv('NOVAFISKO_TOKEN'),
],
]);
$data = json_decode((string) $response->getBody(), true);const response = await fetch("https://api.novafisko.com/v1/companies/XBVD5O1L29HC/peppol/lookup", {
method: "GET",
headers: {
"Accept": "application/json",
"Authorization": `Bearer ${process.env.NOVAFISKO_TOKEN}`,
},
});
if (!response.ok) {
const error = await response.json();
throw new Error(error.code ?? error.message);
}
const data = response.status === 204 ? null : await response.json();import os
import requests
response = requests.get(
"https://api.novafisko.com/v1/companies/XBVD5O1L29HC/peppol/lookup",
headers={
"Accept": "application/json",
"Authorization": f"Bearer {os.environ['NOVAFISKO_TOKEN']}",
},
timeout=30,
)
response.raise_for_status()
data = response.json() if response.content else NoneGET/v1/companies/{company}/peppol/document-typesSupported Peppol document types read
Integration tokens need the read ability.
Operatie-id companies.peppol.document-types
Padparameters
| Naam | Type | Beschrijving |
|---|---|---|
company verplicht | string | Public token of the company file (public_token, 12 characters).bv. XBVD5O1L29HC |
Gemeenschappelijke headers: Accept-Language
Antwoorden
200OK
application/json
Schema object
document_typesPeppolDocumentType[]familiesstring[]identifier_schemesobjectCountry => ISO 6523 scheme (BE: 0208).
Voorbeeld
{
"document_types": [
{
"id": "bis_billing_invoice",
"name": "Invoice BIS Billing 3.0",
"family": "billing",
"description": "Facture électronique européenne (EN 16931), format Peppol BIS Billing 3.0.",
"document_id": "string"
}
],
"families": [
"string"
],
"identifier_schemes": {}
}token_ability_missing, session_token_required), demo restriction (demo_mode) or invalid URL signature. ErrorVoorbeeldaanroep
curl -X GET "https://api.novafisko.com/v1/companies/XBVD5O1L29HC/peppol/document-types" \
-H "Accept: application/json" \
-H "Authorization: Bearer $NOVAFISKO_TOKEN"<?php
$client = new \GuzzleHttp\Client();
$response = $client->request('GET', 'https://api.novafisko.com/v1/companies/XBVD5O1L29HC/peppol/document-types', [
'headers' => [
'Accept' => 'application/json',
'Authorization' => 'Bearer '.getenv('NOVAFISKO_TOKEN'),
],
]);
$data = json_decode((string) $response->getBody(), true);const response = await fetch("https://api.novafisko.com/v1/companies/XBVD5O1L29HC/peppol/document-types", {
method: "GET",
headers: {
"Accept": "application/json",
"Authorization": `Bearer ${process.env.NOVAFISKO_TOKEN}`,
},
});
if (!response.ok) {
const error = await response.json();
throw new Error(error.code ?? error.message);
}
const data = response.status === 204 ? null : await response.json();import os
import requests
response = requests.get(
"https://api.novafisko.com/v1/companies/XBVD5O1L29HC/peppol/document-types",
headers={
"Accept": "application/json",
"Authorization": f"Bearer {os.environ['NOVAFISKO_TOKEN']}",
},
timeout=30,
)
response.raise_for_status()
data = response.json() if response.content else NoneGET/v1/companies/{company}/peppol/logsCalls to the access point read
Last calls made for the file, for support.
Integration tokens need the read ability.
Operatie-id companies.peppol.logs
Padparameters
| Naam | Type | Beschrijving |
|---|---|---|
company verplicht | string | Public token of the company file (public_token, 12 characters).bv. XBVD5O1L29HC |
Queryparameters
| Naam | Type | Beschrijving |
|---|---|---|
limit | integer | 1 to 200, 50 by default. |
Gemeenschappelijke headers: Accept-Language
Antwoorden
200OK
application/json
Schema object
logsobject[]
Voorbeeld
{
"logs": [
{}
]
}token_ability_missing, session_token_required), demo restriction (demo_mode) or invalid URL signature. ErrorVoorbeeldaanroep
curl -X GET "https://api.novafisko.com/v1/companies/XBVD5O1L29HC/peppol/logs" \
-H "Accept: application/json" \
-H "Authorization: Bearer $NOVAFISKO_TOKEN"<?php
$client = new \GuzzleHttp\Client();
$response = $client->request('GET', 'https://api.novafisko.com/v1/companies/XBVD5O1L29HC/peppol/logs', [
'headers' => [
'Accept' => 'application/json',
'Authorization' => 'Bearer '.getenv('NOVAFISKO_TOKEN'),
],
]);
$data = json_decode((string) $response->getBody(), true);const response = await fetch("https://api.novafisko.com/v1/companies/XBVD5O1L29HC/peppol/logs", {
method: "GET",
headers: {
"Accept": "application/json",
"Authorization": `Bearer ${process.env.NOVAFISKO_TOKEN}`,
},
});
if (!response.ok) {
const error = await response.json();
throw new Error(error.code ?? error.message);
}
const data = response.status === 204 ? null : await response.json();import os
import requests
response = requests.get(
"https://api.novafisko.com/v1/companies/XBVD5O1L29HC/peppol/logs",
headers={
"Accept": "application/json",
"Authorization": f"Bearer {os.environ['NOVAFISKO_TOKEN']}",
},
timeout=30,
)
response.raise_for_status()
data = response.json() if response.content else NonePOST/v1/companies/{company}/third-parties/peppol/check-allCheck the Peppol status of every third party write Niet in demo 6 / 1 min
Up to 100 third parties per call.
Integration tokens need the write ability.
Not available in demo mode: answers 403 demo_mode.
Rate limit: 6 requests per minute (429 beyond, see Retry-After).
Operatie-id companies.third-parties.peppol.check-all
Padparameters
| Naam | Type | Beschrijving |
|---|---|---|
company verplicht | string | Public token of the company file (public_token, 12 characters).bv. XBVD5O1L29HC |
Gemeenschappelijke headers: Accept-Language X-Client-Mutation-Id X-Operation-Id X-Device-Id X-Device-Name X-Occurred-At X-Origin
Body van de aanvraag optioneel
application/json
Schema object
only_staleboolean | nullOnly the statuses older than 7 days.
Voorbeeld
{
"only_stale": true
}Antwoorden
200OK
Antwoordheaders X-Operation-Id X-Idempotent-Replay X-RateLimit-Limit X-RateLimit-Remaining
application/json
Schema object
checkedintegerbv.42registeredintegerbv.17errorsintegerbv.0skippedintegerThird parties without a usable identifier.bv.1
Voorbeeld
{
"checked": 42,
"registered": 17,
"errors": 0,
"skipped": 1
}token_ability_missing, session_token_required), demo restriction (demo_mode) or invalid URL signature. Errorerrors maps each field to its messages; code is present when the refusal has a machine reason. ErrorVoorbeeldaanroep
curl -X POST "https://api.novafisko.com/v1/companies/XBVD5O1L29HC/third-parties/peppol/check-all" \
-H "Accept: application/json" \
-H "Authorization: Bearer $NOVAFISKO_TOKEN" \
-H "Content-Type: application/json" \
-H "X-Client-Mutation-Id: b0a6f6f0-7d1c-4c5e-8a55-3f2b1c9d0e11" \
-d '{
"only_stale": true
}'<?php
$client = new \GuzzleHttp\Client();
$response = $client->request('POST', 'https://api.novafisko.com/v1/companies/XBVD5O1L29HC/third-parties/peppol/check-all', [
'headers' => [
'Accept' => 'application/json',
'Authorization' => 'Bearer '.getenv('NOVAFISKO_TOKEN'),
'X-Client-Mutation-Id' => 'b0a6f6f0-7d1c-4c5e-8a55-3f2b1c9d0e11',
],
'json' => [
'only_stale' => true,
],
]);
$data = json_decode((string) $response->getBody(), true);const response = await fetch("https://api.novafisko.com/v1/companies/XBVD5O1L29HC/third-parties/peppol/check-all", {
method: "POST",
headers: {
"Accept": "application/json",
"Authorization": `Bearer ${process.env.NOVAFISKO_TOKEN}`,
"Content-Type": "application/json",
"X-Client-Mutation-Id": "b0a6f6f0-7d1c-4c5e-8a55-3f2b1c9d0e11",
},
body: JSON.stringify({
"only_stale": true
}),
});
if (!response.ok) {
const error = await response.json();
throw new Error(error.code ?? error.message);
}
const data = response.status === 204 ? null : await response.json();import os
import requests
response = requests.post(
"https://api.novafisko.com/v1/companies/XBVD5O1L29HC/third-parties/peppol/check-all",
headers={
"Accept": "application/json",
"Authorization": f"Bearer {os.environ['NOVAFISKO_TOKEN']}",
"X-Client-Mutation-Id": "b0a6f6f0-7d1c-4c5e-8a55-3f2b1c9d0e11",
},
json={
"only_stale": True
},
timeout=30,
)
response.raise_for_status()
data = response.json() if response.content else NoneGET/v1/companies/{company}/third-parties/{thirdParty}/peppolPeppol status of a third party read 60 / 1 min
Cached 7 days; refresh=1 asks the network again.
Integration tokens need the read ability.
Rate limit: 60 requests per minute (429 beyond, see Retry-After).
Operatie-id companies.third-parties.peppol
Padparameters
| Naam | Type | Beschrijving |
|---|---|---|
company verplicht | string | Public token of the company file (public_token, 12 characters).bv. XBVD5O1L29HC |
thirdParty verplicht | integer | Id of the third party. bv. 18 |
Queryparameters
| Naam | Type | Beschrijving |
|---|---|---|
refresh | boolean |
Gemeenschappelijke headers: Accept-Language
Antwoorden
200OK
Antwoordheaders X-RateLimit-Limit X-RateLimit-Remaining
application/json
Schema PeppolThirdPartyStatus
Voorbeeld
{
"identifier": "0208:0402531376",
"registered": true,
"access_point": {
"smp_host": "smp.b2brouter.net",
"provider_name": "B2Brouter",
"endpoint_url": "https://api.novafisko.com/v1/companies/XBVD5O1L29HC",
"technical_contact": "string"
},
"document_types": [
{
"id": "bis_billing_invoice",
"name": "Invoice BIS Billing 3.0",
"family": "billing",
"description": "Facture électronique européenne (EN 16931), format Peppol BIS Billing 3.0.",
"document_id": "string"
}
],
"checked_at": "2026-03-15T09:41:00+00:00",
"stale": true,
"error": "string",
"source": "sml+smp"
}token_ability_missing, session_token_required), demo restriction (demo_mode) or invalid URL signature. ErrorVoorbeeldaanroep
curl -X GET "https://api.novafisko.com/v1/companies/XBVD5O1L29HC/third-parties/18/peppol" \
-H "Accept: application/json" \
-H "Authorization: Bearer $NOVAFISKO_TOKEN"<?php
$client = new \GuzzleHttp\Client();
$response = $client->request('GET', 'https://api.novafisko.com/v1/companies/XBVD5O1L29HC/third-parties/18/peppol', [
'headers' => [
'Accept' => 'application/json',
'Authorization' => 'Bearer '.getenv('NOVAFISKO_TOKEN'),
],
]);
$data = json_decode((string) $response->getBody(), true);const response = await fetch("https://api.novafisko.com/v1/companies/XBVD5O1L29HC/third-parties/18/peppol", {
method: "GET",
headers: {
"Accept": "application/json",
"Authorization": `Bearer ${process.env.NOVAFISKO_TOKEN}`,
},
});
if (!response.ok) {
const error = await response.json();
throw new Error(error.code ?? error.message);
}
const data = response.status === 204 ? null : await response.json();import os
import requests
response = requests.get(
"https://api.novafisko.com/v1/companies/XBVD5O1L29HC/third-parties/18/peppol",
headers={
"Accept": "application/json",
"Authorization": f"Bearer {os.environ['NOVAFISKO_TOKEN']}",
},
timeout=30,
)
response.raise_for_status()
data = response.json() if response.content else NoneIntegrations
Catalogue of integrations, Novadesko synchronisation, file relays.
GET/v1/companies/{company}/integrationsCatalogue of integrations read
Every integration with its status, its configuration schema and the connection of the file.
Integration tokens need the read ability.
Operatie-id companies.integrations.index
Padparameters
| Naam | Type | Beschrijving |
|---|---|---|
company verplicht | string | Public token of the company file (public_token, 12 characters).bv. XBVD5O1L29HC |
Queryparameters
| Naam | Type | Beschrijving |
|---|---|---|
lang | string | fr nl en de |
Gemeenschappelijke headers: Accept-Language
Antwoorden
200OK
application/json
Schema object
integrationsIntegration[]
Voorbeeld
{
"integrations": [
{
"slug": "novadesko",
"name": "Novadesko",
"category": "accounting",
"description": "Description",
"logo_url": "https://api.novafisko.com/v1/companies/XBVD5O1L29HC",
"status": "available",
"capabilities": [
"import_documents"
],
"config_schema": [
{
"key": "string",
"label": "Facture Brasserie Dubuisson",
"type": "text",
"required": true
}
],
"open_tab": "string",
"has_driver": true,
"is_enabled": true,
"connection": {
"is_active": true,
"status": "connected",
"config_masked": {},
"last_sync_at": "2026-03-15T09:41:00+00:00",
"last_error": "string"
},
"interested": true,
"actions": [
"string"
]
}
]
}token_ability_missing, session_token_required), demo restriction (demo_mode) or invalid URL signature. ErrorVoorbeeldaanroep
curl -X GET "https://api.novafisko.com/v1/companies/XBVD5O1L29HC/integrations" \
-H "Accept: application/json" \
-H "Authorization: Bearer $NOVAFISKO_TOKEN"<?php
$client = new \GuzzleHttp\Client();
$response = $client->request('GET', 'https://api.novafisko.com/v1/companies/XBVD5O1L29HC/integrations', [
'headers' => [
'Accept' => 'application/json',
'Authorization' => 'Bearer '.getenv('NOVAFISKO_TOKEN'),
],
]);
$data = json_decode((string) $response->getBody(), true);const response = await fetch("https://api.novafisko.com/v1/companies/XBVD5O1L29HC/integrations", {
method: "GET",
headers: {
"Accept": "application/json",
"Authorization": `Bearer ${process.env.NOVAFISKO_TOKEN}`,
},
});
if (!response.ok) {
const error = await response.json();
throw new Error(error.code ?? error.message);
}
const data = response.status === 204 ? null : await response.json();import os
import requests
response = requests.get(
"https://api.novafisko.com/v1/companies/XBVD5O1L29HC/integrations",
headers={
"Accept": "application/json",
"Authorization": f"Bearer {os.environ['NOVAFISKO_TOKEN']}",
},
timeout=30,
)
response.raise_for_status()
data = response.json() if response.content else NonePOST/v1/companies/{company}/integrations/{integration}/activateActivate an integration write Niet in demo
Integration tokens need the write ability.
Not available in demo mode: answers 403 demo_mode.
Error codes (code):
integration_error: generic driver errornot_available: integration not available yetnot_connected: the integration is not active on the fileintegration_inactive: the integration is switched offno_driver: nothing to run for this integrationnot_linked: the file is not linked to the external systemuse_open_tab: managed from its own tab (Peppol)file_required: a file is expectedfile_too_large: file above the size limitsync_failed: the run failednovadesko_locked: locked on the Novadesko side
Operatie-id companies.integrations.activate
Padparameters
| Naam | Type | Beschrijving |
|---|---|---|
company verplicht | string | Public token of the company file (public_token, 12 characters).bv. XBVD5O1L29HC |
integration verplicht | string | Slug of the integration (novadesko, peppol, file_import, …).bv. novadesko |
Gemeenschappelijke headers: Accept-Language X-Client-Mutation-Id X-Operation-Id X-Device-Id X-Device-Name X-Occurred-At X-Origin
Body van de aanvraag optioneel
application/json
Schema object
configobject | nullValues of the configuration schema.
Voorbeeld
{
"config": []
}Antwoorden
201Created
Antwoordheaders X-Operation-Id X-Idempotent-Replay
application/json
Schema Integration
Voorbeeld
{
"slug": "novadesko",
"name": "Novadesko",
"category": "accounting",
"description": "Description",
"logo_url": "https://api.novafisko.com/v1/companies/XBVD5O1L29HC",
"status": "available",
"capabilities": [
"import_documents"
],
"config_schema": [
{
"key": "string",
"label": "Facture Brasserie Dubuisson",
"type": "text",
"required": true
}
],
"open_tab": "string",
"has_driver": true,
"is_enabled": true,
"connection": {
"is_active": true,
"status": "connected",
"config_masked": {},
"last_sync_at": "2026-03-15T09:41:00+00:00",
"last_error": "string"
},
"interested": true,
"actions": [
"string"
]
}token_ability_missing, session_token_required), demo restriction (demo_mode) or invalid URL signature. Errorerrors maps each field to its messages; code is present when the refusal has a machine reason. ErrorVoorbeeldaanroep
curl -X POST "https://api.novafisko.com/v1/companies/XBVD5O1L29HC/integrations/novadesko/activate" \
-H "Accept: application/json" \
-H "Authorization: Bearer $NOVAFISKO_TOKEN" \
-H "Content-Type: application/json" \
-H "X-Client-Mutation-Id: b0a6f6f0-7d1c-4c5e-8a55-3f2b1c9d0e11" \
-d '{
"config": []
}'<?php
$client = new \GuzzleHttp\Client();
$response = $client->request('POST', 'https://api.novafisko.com/v1/companies/XBVD5O1L29HC/integrations/novadesko/activate', [
'headers' => [
'Accept' => 'application/json',
'Authorization' => 'Bearer '.getenv('NOVAFISKO_TOKEN'),
'X-Client-Mutation-Id' => 'b0a6f6f0-7d1c-4c5e-8a55-3f2b1c9d0e11',
],
'json' => [
'config' => [],
],
]);
$data = json_decode((string) $response->getBody(), true);const response = await fetch("https://api.novafisko.com/v1/companies/XBVD5O1L29HC/integrations/novadesko/activate", {
method: "POST",
headers: {
"Accept": "application/json",
"Authorization": `Bearer ${process.env.NOVAFISKO_TOKEN}`,
"Content-Type": "application/json",
"X-Client-Mutation-Id": "b0a6f6f0-7d1c-4c5e-8a55-3f2b1c9d0e11",
},
body: JSON.stringify({
"config": []
}),
});
if (!response.ok) {
const error = await response.json();
throw new Error(error.code ?? error.message);
}
const data = response.status === 204 ? null : await response.json();import os
import requests
response = requests.post(
"https://api.novafisko.com/v1/companies/XBVD5O1L29HC/integrations/novadesko/activate",
headers={
"Accept": "application/json",
"Authorization": f"Bearer {os.environ['NOVAFISKO_TOKEN']}",
"X-Client-Mutation-Id": "b0a6f6f0-7d1c-4c5e-8a55-3f2b1c9d0e11",
},
json={
"config": []
},
timeout=30,
)
response.raise_for_status()
data = response.json() if response.content else NonePOST/v1/companies/{company}/integrations/{integration}/deactivateDeactivate an integration write Niet in demo
Integration tokens need the write ability.
Not available in demo mode: answers 403 demo_mode.
Error codes (code):
integration_error: generic driver errornot_available: integration not available yetnot_connected: the integration is not active on the fileintegration_inactive: the integration is switched offno_driver: nothing to run for this integrationnot_linked: the file is not linked to the external systemuse_open_tab: managed from its own tab (Peppol)file_required: a file is expectedfile_too_large: file above the size limitsync_failed: the run failednovadesko_locked: locked on the Novadesko side
Operatie-id companies.integrations.deactivate
Padparameters
| Naam | Type | Beschrijving |
|---|---|---|
company verplicht | string | Public token of the company file (public_token, 12 characters).bv. XBVD5O1L29HC |
integration verplicht | string | Slug of the integration (novadesko, peppol, file_import, …).bv. novadesko |
Gemeenschappelijke headers: Accept-Language X-Client-Mutation-Id X-Operation-Id X-Device-Id X-Device-Name X-Occurred-At X-Origin
Antwoorden
200OK
Antwoordheaders X-Operation-Id X-Idempotent-Replay
application/json
Schema Integration
Voorbeeld
{
"slug": "novadesko",
"name": "Novadesko",
"category": "accounting",
"description": "Description",
"logo_url": "https://api.novafisko.com/v1/companies/XBVD5O1L29HC",
"status": "available",
"capabilities": [
"import_documents"
],
"config_schema": [
{
"key": "string",
"label": "Facture Brasserie Dubuisson",
"type": "text",
"required": true
}
],
"open_tab": "string",
"has_driver": true,
"is_enabled": true,
"connection": {
"is_active": true,
"status": "connected",
"config_masked": {},
"last_sync_at": "2026-03-15T09:41:00+00:00",
"last_error": "string"
},
"interested": true,
"actions": [
"string"
]
}token_ability_missing, session_token_required), demo restriction (demo_mode) or invalid URL signature. Errorerrors maps each field to its messages; code is present when the refusal has a machine reason. ErrorVoorbeeldaanroep
curl -X POST "https://api.novafisko.com/v1/companies/XBVD5O1L29HC/integrations/novadesko/deactivate" \
-H "Accept: application/json" \
-H "Authorization: Bearer $NOVAFISKO_TOKEN" \
-H "X-Client-Mutation-Id: b0a6f6f0-7d1c-4c5e-8a55-3f2b1c9d0e11"<?php
$client = new \GuzzleHttp\Client();
$response = $client->request('POST', 'https://api.novafisko.com/v1/companies/XBVD5O1L29HC/integrations/novadesko/deactivate', [
'headers' => [
'Accept' => 'application/json',
'Authorization' => 'Bearer '.getenv('NOVAFISKO_TOKEN'),
'X-Client-Mutation-Id' => 'b0a6f6f0-7d1c-4c5e-8a55-3f2b1c9d0e11',
],
]);
$data = json_decode((string) $response->getBody(), true);const response = await fetch("https://api.novafisko.com/v1/companies/XBVD5O1L29HC/integrations/novadesko/deactivate", {
method: "POST",
headers: {
"Accept": "application/json",
"Authorization": `Bearer ${process.env.NOVAFISKO_TOKEN}`,
"X-Client-Mutation-Id": "b0a6f6f0-7d1c-4c5e-8a55-3f2b1c9d0e11",
},
});
if (!response.ok) {
const error = await response.json();
throw new Error(error.code ?? error.message);
}
const data = response.status === 204 ? null : await response.json();import os
import requests
response = requests.post(
"https://api.novafisko.com/v1/companies/XBVD5O1L29HC/integrations/novadesko/deactivate",
headers={
"Accept": "application/json",
"Authorization": f"Bearer {os.environ['NOVAFISKO_TOKEN']}",
"X-Client-Mutation-Id": "b0a6f6f0-7d1c-4c5e-8a55-3f2b1c9d0e11",
},
timeout=30,
)
response.raise_for_status()
data = response.json() if response.content else NonePATCH/v1/companies/{company}/integrations/{integration}/configUpdate the configuration write Niet in demo
Secrets are stored encrypted and returned masked.
Integration tokens need the write ability.
Not available in demo mode: answers 403 demo_mode.
Error codes (code):
integration_error: generic driver errornot_available: integration not available yetnot_connected: the integration is not active on the fileintegration_inactive: the integration is switched offno_driver: nothing to run for this integrationnot_linked: the file is not linked to the external systemuse_open_tab: managed from its own tab (Peppol)file_required: a file is expectedfile_too_large: file above the size limitsync_failed: the run failednovadesko_locked: locked on the Novadesko side
Operatie-id companies.integrations.config
Padparameters
| Naam | Type | Beschrijving |
|---|---|---|
company verplicht | string | Public token of the company file (public_token, 12 characters).bv. XBVD5O1L29HC |
integration verplicht | string | Slug of the integration (novadesko, peppol, file_import, …).bv. novadesko |
Gemeenschappelijke headers: Accept-Language X-Client-Mutation-Id X-Operation-Id X-Device-Id X-Device-Name X-Occurred-At X-Origin X-Base-Version
Body van de aanvraag
application/json
Schema object
configobjectverplicht
Voorbeeld
{
"config": {}
}Antwoorden
200OK
Antwoordheaders X-Operation-Id X-Idempotent-Replay
application/json
Schema Integration
Voorbeeld
{
"slug": "novadesko",
"name": "Novadesko",
"category": "accounting",
"description": "Description",
"logo_url": "https://api.novafisko.com/v1/companies/XBVD5O1L29HC",
"status": "available",
"capabilities": [
"import_documents"
],
"config_schema": [
{
"key": "string",
"label": "Facture Brasserie Dubuisson",
"type": "text",
"required": true
}
],
"open_tab": "string",
"has_driver": true,
"is_enabled": true,
"connection": {
"is_active": true,
"status": "connected",
"config_masked": {},
"last_sync_at": "2026-03-15T09:41:00+00:00",
"last_error": "string"
},
"interested": true,
"actions": [
"string"
]
}token_ability_missing, session_token_required), demo restriction (demo_mode) or invalid URL signature. ErrorX-Base-Version. Nothing was modified. VersionConflicterrors maps each field to its messages; code is present when the refusal has a machine reason. ErrorVoorbeeldaanroep
curl -X PATCH "https://api.novafisko.com/v1/companies/XBVD5O1L29HC/integrations/novadesko/config" \
-H "Accept: application/json" \
-H "Authorization: Bearer $NOVAFISKO_TOKEN" \
-H "Content-Type: application/json" \
-H "X-Client-Mutation-Id: b0a6f6f0-7d1c-4c5e-8a55-3f2b1c9d0e11" \
-d '{
"config": {}
}'<?php
$client = new \GuzzleHttp\Client();
$response = $client->request('PATCH', 'https://api.novafisko.com/v1/companies/XBVD5O1L29HC/integrations/novadesko/config', [
'headers' => [
'Accept' => 'application/json',
'Authorization' => 'Bearer '.getenv('NOVAFISKO_TOKEN'),
'X-Client-Mutation-Id' => 'b0a6f6f0-7d1c-4c5e-8a55-3f2b1c9d0e11',
],
'json' => [
'config' => [],
],
]);
$data = json_decode((string) $response->getBody(), true);const response = await fetch("https://api.novafisko.com/v1/companies/XBVD5O1L29HC/integrations/novadesko/config", {
method: "PATCH",
headers: {
"Accept": "application/json",
"Authorization": `Bearer ${process.env.NOVAFISKO_TOKEN}`,
"Content-Type": "application/json",
"X-Client-Mutation-Id": "b0a6f6f0-7d1c-4c5e-8a55-3f2b1c9d0e11",
},
body: JSON.stringify({
"config": {}
}),
});
if (!response.ok) {
const error = await response.json();
throw new Error(error.code ?? error.message);
}
const data = response.status === 204 ? null : await response.json();import os
import requests
response = requests.patch(
"https://api.novafisko.com/v1/companies/XBVD5O1L29HC/integrations/novadesko/config",
headers={
"Accept": "application/json",
"Authorization": f"Bearer {os.environ['NOVAFISKO_TOKEN']}",
"X-Client-Mutation-Id": "b0a6f6f0-7d1c-4c5e-8a55-3f2b1c9d0e11",
},
json={
"config": {}
},
timeout=30,
)
response.raise_for_status()
data = response.json() if response.content else NonePOST/v1/companies/{company}/integrations/{integration}/testTest the connection write Niet in demo 12 / 1 min
Integration tokens need the write ability.
Not available in demo mode: answers 403 demo_mode.
Rate limit: 12 requests per minute (429 beyond, see Retry-After).
Error codes (code):
integration_error: generic driver errornot_available: integration not available yetnot_connected: the integration is not active on the fileintegration_inactive: the integration is switched offno_driver: nothing to run for this integrationnot_linked: the file is not linked to the external systemuse_open_tab: managed from its own tab (Peppol)file_required: a file is expectedfile_too_large: file above the size limitsync_failed: the run failednovadesko_locked: locked on the Novadesko side
Operatie-id companies.integrations.test
Padparameters
| Naam | Type | Beschrijving |
|---|---|---|
company verplicht | string | Public token of the company file (public_token, 12 characters).bv. XBVD5O1L29HC |
integration verplicht | string | Slug of the integration (novadesko, peppol, file_import, …).bv. novadesko |
Gemeenschappelijke headers: Accept-Language X-Client-Mutation-Id X-Operation-Id X-Device-Id X-Device-Name X-Occurred-At X-Origin
Antwoorden
200OK
Antwoordheaders X-Operation-Id X-Idempotent-Replay X-RateLimit-Limit X-RateLimit-Remaining
application/json
Schema object
okbooleanmessagestring | nullintegrationIntegration
Voorbeeld
{
"ok": true,
"message": "OK",
"integration": {
"slug": "novadesko",
"name": "Novadesko",
"category": "accounting",
"description": "Description",
"logo_url": "https://api.novafisko.com/v1/companies/XBVD5O1L29HC",
"status": "available",
"capabilities": [
"import_documents"
],
"config_schema": [
{
"key": "string",
"label": "Facture Brasserie Dubuisson",
"type": "text",
"required": true
}
],
"open_tab": "string",
"has_driver": true,
"is_enabled": true,
"connection": {
"is_active": true,
"status": "connected",
"config_masked": {},
"last_sync_at": "2026-03-15T09:41:00+00:00",
"last_error": "string"
},
"interested": true,
"actions": [
"string"
]
}
}token_ability_missing, session_token_required), demo restriction (demo_mode) or invalid URL signature. Errorerrors maps each field to its messages; code is present when the refusal has a machine reason. ErrorVoorbeeldaanroep
curl -X POST "https://api.novafisko.com/v1/companies/XBVD5O1L29HC/integrations/novadesko/test" \
-H "Accept: application/json" \
-H "Authorization: Bearer $NOVAFISKO_TOKEN" \
-H "X-Client-Mutation-Id: b0a6f6f0-7d1c-4c5e-8a55-3f2b1c9d0e11"<?php
$client = new \GuzzleHttp\Client();
$response = $client->request('POST', 'https://api.novafisko.com/v1/companies/XBVD5O1L29HC/integrations/novadesko/test', [
'headers' => [
'Accept' => 'application/json',
'Authorization' => 'Bearer '.getenv('NOVAFISKO_TOKEN'),
'X-Client-Mutation-Id' => 'b0a6f6f0-7d1c-4c5e-8a55-3f2b1c9d0e11',
],
]);
$data = json_decode((string) $response->getBody(), true);const response = await fetch("https://api.novafisko.com/v1/companies/XBVD5O1L29HC/integrations/novadesko/test", {
method: "POST",
headers: {
"Accept": "application/json",
"Authorization": `Bearer ${process.env.NOVAFISKO_TOKEN}`,
"X-Client-Mutation-Id": "b0a6f6f0-7d1c-4c5e-8a55-3f2b1c9d0e11",
},
});
if (!response.ok) {
const error = await response.json();
throw new Error(error.code ?? error.message);
}
const data = response.status === 204 ? null : await response.json();import os
import requests
response = requests.post(
"https://api.novafisko.com/v1/companies/XBVD5O1L29HC/integrations/novadesko/test",
headers={
"Accept": "application/json",
"Authorization": f"Bearer {os.environ['NOVAFISKO_TOKEN']}",
"X-Client-Mutation-Id": "b0a6f6f0-7d1c-4c5e-8a55-3f2b1c9d0e11",
},
timeout=30,
)
response.raise_for_status()
data = response.json() if response.content else NonePOST/v1/companies/{company}/integrations/{integration}/syncRun a synchronisation write Niet in demo 12 / 1 min
Runs the driver synchronously. JSON options (full) or, for file_import, a multipart upload (file: CODA, CSV…). On failure the answer is 422 with the last run.
Integration tokens need the write ability.
Not available in demo mode: answers 403 demo_mode.
Rate limit: 12 requests per minute (429 beyond, see Retry-After).
Error codes (code):
integration_error: generic driver errornot_available: integration not available yetnot_connected: the integration is not active on the fileintegration_inactive: the integration is switched offno_driver: nothing to run for this integrationnot_linked: the file is not linked to the external systemuse_open_tab: managed from its own tab (Peppol)file_required: a file is expectedfile_too_large: file above the size limitsync_failed: the run failednovadesko_locked: locked on the Novadesko side
Operatie-id companies.integrations.sync
Padparameters
| Naam | Type | Beschrijving |
|---|---|---|
company verplicht | string | Public token of the company file (public_token, 12 characters).bv. XBVD5O1L29HC |
integration verplicht | string | Slug of the integration (novadesko, peppol, file_import, …).bv. novadesko |
Gemeenschappelijke headers: Accept-Language X-Client-Mutation-Id X-Operation-Id X-Device-Id X-Device-Name X-Occurred-At X-Origin
Body van de aanvraag optioneel
application/json
Schema object
fullbooleanFull resynchronisation instead of incremental.
Voorbeeld
{
"full": false
}Antwoorden
200OK
Antwoordheaders X-Operation-Id X-Idempotent-Replay X-RateLimit-Limit X-RateLimit-Remaining
application/json
Schema object
resultobject | nullCounters of the driver (documents, bank transactions, assets…).integrationIntegration
Voorbeeld
{
"run": {
"id": 77,
"status": "running",
"started_at": "2026-03-15T09:41:00+00:00",
"finished_at": "2026-03-15T09:41:00+00:00",
"duration_ms": 1840,
"summary": {},
"message": "OK"
},
"result": {},
"integration": {
"slug": "novadesko",
"name": "Novadesko",
"category": "accounting",
"description": "Description",
"logo_url": "https://api.novafisko.com/v1/companies/XBVD5O1L29HC",
"status": "available",
"capabilities": [
"import_documents"
],
"config_schema": [
{
"key": "string",
"label": "Facture Brasserie Dubuisson",
"type": "text",
"required": true
}
],
"open_tab": "string",
"has_driver": true,
"is_enabled": true,
"connection": {
"is_active": true,
"status": "connected",
"config_masked": {},
"last_sync_at": "2026-03-15T09:41:00+00:00",
"last_error": "string"
},
"interested": true,
"actions": [
"string"
]
}
}token_ability_missing, session_token_required), demo restriction (demo_mode) or invalid URL signature. Errorerrors maps each field to its messages; code is present when the refusal has a machine reason. ErrorVoorbeeldaanroep
curl -X POST "https://api.novafisko.com/v1/companies/XBVD5O1L29HC/integrations/novadesko/sync" \
-H "Accept: application/json" \
-H "Authorization: Bearer $NOVAFISKO_TOKEN" \
-H "Content-Type: application/json" \
-H "X-Client-Mutation-Id: b0a6f6f0-7d1c-4c5e-8a55-3f2b1c9d0e11" \
-d '{
"full": false
}'<?php
$client = new \GuzzleHttp\Client();
$response = $client->request('POST', 'https://api.novafisko.com/v1/companies/XBVD5O1L29HC/integrations/novadesko/sync', [
'headers' => [
'Accept' => 'application/json',
'Authorization' => 'Bearer '.getenv('NOVAFISKO_TOKEN'),
'X-Client-Mutation-Id' => 'b0a6f6f0-7d1c-4c5e-8a55-3f2b1c9d0e11',
],
'json' => [
'full' => false,
],
]);
$data = json_decode((string) $response->getBody(), true);const response = await fetch("https://api.novafisko.com/v1/companies/XBVD5O1L29HC/integrations/novadesko/sync", {
method: "POST",
headers: {
"Accept": "application/json",
"Authorization": `Bearer ${process.env.NOVAFISKO_TOKEN}`,
"Content-Type": "application/json",
"X-Client-Mutation-Id": "b0a6f6f0-7d1c-4c5e-8a55-3f2b1c9d0e11",
},
body: JSON.stringify({
"full": false
}),
});
if (!response.ok) {
const error = await response.json();
throw new Error(error.code ?? error.message);
}
const data = response.status === 204 ? null : await response.json();import os
import requests
response = requests.post(
"https://api.novafisko.com/v1/companies/XBVD5O1L29HC/integrations/novadesko/sync",
headers={
"Accept": "application/json",
"Authorization": f"Bearer {os.environ['NOVAFISKO_TOKEN']}",
"X-Client-Mutation-Id": "b0a6f6f0-7d1c-4c5e-8a55-3f2b1c9d0e11",
},
json={
"full": False
},
timeout=30,
)
response.raise_for_status()
data = response.json() if response.content else NoneGET/v1/companies/{company}/integrations/{integration}/runsSynchronisation runs read
Integration tokens need the read ability.
Operatie-id companies.integrations.runs
Padparameters
| Naam | Type | Beschrijving |
|---|---|---|
company verplicht | string | Public token of the company file (public_token, 12 characters).bv. XBVD5O1L29HC |
integration verplicht | string | Slug of the integration (novadesko, peppol, file_import, …).bv. novadesko |
Queryparameters
| Naam | Type | Beschrijving |
|---|---|---|
limit | integer | 1 to 100, 20 by default. |
Gemeenschappelijke headers: Accept-Language
Antwoorden
200OK
application/json
Schema object
runsIntegrationRun[]
Voorbeeld
{
"runs": [
{
"id": 77,
"status": "running",
"started_at": "2026-03-15T09:41:00+00:00",
"finished_at": "2026-03-15T09:41:00+00:00",
"duration_ms": 1840,
"summary": {},
"message": "OK"
}
]
}token_ability_missing, session_token_required), demo restriction (demo_mode) or invalid URL signature. ErrorVoorbeeldaanroep
curl -X GET "https://api.novafisko.com/v1/companies/XBVD5O1L29HC/integrations/novadesko/runs" \
-H "Accept: application/json" \
-H "Authorization: Bearer $NOVAFISKO_TOKEN"<?php
$client = new \GuzzleHttp\Client();
$response = $client->request('GET', 'https://api.novafisko.com/v1/companies/XBVD5O1L29HC/integrations/novadesko/runs', [
'headers' => [
'Accept' => 'application/json',
'Authorization' => 'Bearer '.getenv('NOVAFISKO_TOKEN'),
],
]);
$data = json_decode((string) $response->getBody(), true);const response = await fetch("https://api.novafisko.com/v1/companies/XBVD5O1L29HC/integrations/novadesko/runs", {
method: "GET",
headers: {
"Accept": "application/json",
"Authorization": `Bearer ${process.env.NOVAFISKO_TOKEN}`,
},
});
if (!response.ok) {
const error = await response.json();
throw new Error(error.code ?? error.message);
}
const data = response.status === 204 ? null : await response.json();import os
import requests
response = requests.get(
"https://api.novafisko.com/v1/companies/XBVD5O1L29HC/integrations/novadesko/runs",
headers={
"Accept": "application/json",
"Authorization": f"Bearer {os.environ['NOVAFISKO_TOKEN']}",
},
timeout=30,
)
response.raise_for_status()
data = response.json() if response.content else NonePOST/v1/companies/{company}/integrations/{integration}/interestRegister an interest write Niet in demo
For an integration that is not available yet (coming_soon).
Integration tokens need the write ability.
Not available in demo mode: answers 403 demo_mode.
Operatie-id companies.integrations.interest
Padparameters
| Naam | Type | Beschrijving |
|---|---|---|
company verplicht | string | Public token of the company file (public_token, 12 characters).bv. XBVD5O1L29HC |
integration verplicht | string | Slug of the integration (novadesko, peppol, file_import, …).bv. novadesko |
Gemeenschappelijke headers: Accept-Language X-Client-Mutation-Id X-Operation-Id X-Device-Id X-Device-Name X-Occurred-At X-Origin
Antwoorden
200OK
Antwoordheaders X-Operation-Id X-Idempotent-Replay
application/json
Schema object
registeredbooleanregistered_atstring <date-time>slugstringbv.codabox
Voorbeeld
{
"registered": true,
"registered_at": "2026-03-15T09:41:00+00:00",
"slug": "codabox"
}token_ability_missing, session_token_required), demo restriction (demo_mode) or invalid URL signature. ErrorVoorbeeldaanroep
curl -X POST "https://api.novafisko.com/v1/companies/XBVD5O1L29HC/integrations/novadesko/interest" \
-H "Accept: application/json" \
-H "Authorization: Bearer $NOVAFISKO_TOKEN" \
-H "X-Client-Mutation-Id: b0a6f6f0-7d1c-4c5e-8a55-3f2b1c9d0e11"<?php
$client = new \GuzzleHttp\Client();
$response = $client->request('POST', 'https://api.novafisko.com/v1/companies/XBVD5O1L29HC/integrations/novadesko/interest', [
'headers' => [
'Accept' => 'application/json',
'Authorization' => 'Bearer '.getenv('NOVAFISKO_TOKEN'),
'X-Client-Mutation-Id' => 'b0a6f6f0-7d1c-4c5e-8a55-3f2b1c9d0e11',
],
]);
$data = json_decode((string) $response->getBody(), true);const response = await fetch("https://api.novafisko.com/v1/companies/XBVD5O1L29HC/integrations/novadesko/interest", {
method: "POST",
headers: {
"Accept": "application/json",
"Authorization": `Bearer ${process.env.NOVAFISKO_TOKEN}`,
"X-Client-Mutation-Id": "b0a6f6f0-7d1c-4c5e-8a55-3f2b1c9d0e11",
},
});
if (!response.ok) {
const error = await response.json();
throw new Error(error.code ?? error.message);
}
const data = response.status === 204 ? null : await response.json();import os
import requests
response = requests.post(
"https://api.novafisko.com/v1/companies/XBVD5O1L29HC/integrations/novadesko/interest",
headers={
"Accept": "application/json",
"Authorization": f"Bearer {os.environ['NOVAFISKO_TOKEN']}",
"X-Client-Mutation-Id": "b0a6f6f0-7d1c-4c5e-8a55-3f2b1c9d0e11",
},
timeout=30,
)
response.raise_for_status()
data = response.json() if response.content else NonePOST/v1/companies/{company}/sync/novadeskoSynchronise the file from Novadesko write Niet in demo 10 / 1 min
Reads documents, bank statements (CODA) and fixed assets of the linked shop. Read-only on the Novadesko side. 422 when the file is not linked or the integration is inactive.
Integration tokens need the write ability.
Not available in demo mode: answers 403 demo_mode.
Rate limit: 10 requests per minute (429 beyond, see Retry-After).
Operatie-id companies.sync.novadesko
Padparameters
| Naam | Type | Beschrijving |
|---|---|---|
company verplicht | string | Public token of the company file (public_token, 12 characters).bv. XBVD5O1L29HC |
Gemeenschappelijke headers: Accept-Language X-Client-Mutation-Id X-Operation-Id X-Device-Id X-Device-Name X-Occurred-At X-Origin
Body van de aanvraag optioneel
application/json
Schema object
fullbooleanReload everything instead of the changes since the last run.
Voorbeeld
{
"full": false
}Antwoorden
200OK
Antwoordheaders X-Operation-Id X-Idempotent-Replay X-RateLimit-Limit X-RateLimit-Remaining
application/json
Schema object
documentsintegerDocuments created or updated.bv.12bank_transactionsintegerbv.34coda_filesintegerbv.2fixed_assetsintegerbv.0errorstring | nullsynced_atstring <date-time>
Voorbeeld
{
"documents": 12,
"bank_transactions": 34,
"coda_files": 2,
"fixed_assets": 0,
"error": "string",
"synced_at": "2026-03-15T09:41:00+00:00"
}token_ability_missing, session_token_required), demo restriction (demo_mode) or invalid URL signature. Errorerrors maps each field to its messages; code is present when the refusal has a machine reason. ErrorVoorbeeldaanroep
curl -X POST "https://api.novafisko.com/v1/companies/XBVD5O1L29HC/sync/novadesko" \
-H "Accept: application/json" \
-H "Authorization: Bearer $NOVAFISKO_TOKEN" \
-H "Content-Type: application/json" \
-H "X-Client-Mutation-Id: b0a6f6f0-7d1c-4c5e-8a55-3f2b1c9d0e11" \
-d '{
"full": false
}'<?php
$client = new \GuzzleHttp\Client();
$response = $client->request('POST', 'https://api.novafisko.com/v1/companies/XBVD5O1L29HC/sync/novadesko', [
'headers' => [
'Accept' => 'application/json',
'Authorization' => 'Bearer '.getenv('NOVAFISKO_TOKEN'),
'X-Client-Mutation-Id' => 'b0a6f6f0-7d1c-4c5e-8a55-3f2b1c9d0e11',
],
'json' => [
'full' => false,
],
]);
$data = json_decode((string) $response->getBody(), true);const response = await fetch("https://api.novafisko.com/v1/companies/XBVD5O1L29HC/sync/novadesko", {
method: "POST",
headers: {
"Accept": "application/json",
"Authorization": `Bearer ${process.env.NOVAFISKO_TOKEN}`,
"Content-Type": "application/json",
"X-Client-Mutation-Id": "b0a6f6f0-7d1c-4c5e-8a55-3f2b1c9d0e11",
},
body: JSON.stringify({
"full": false
}),
});
if (!response.ok) {
const error = await response.json();
throw new Error(error.code ?? error.message);
}
const data = response.status === 204 ? null : await response.json();import os
import requests
response = requests.post(
"https://api.novafisko.com/v1/companies/XBVD5O1L29HC/sync/novadesko",
headers={
"Accept": "application/json",
"Authorization": f"Bearer {os.environ['NOVAFISKO_TOKEN']}",
"X-Client-Mutation-Id": "b0a6f6f0-7d1c-4c5e-8a55-3f2b1c9d0e11",
},
json={
"full": False
},
timeout=30,
)
response.raise_for_status()
data = response.json() if response.content else NoneGET/v1/companies/{company}/files/preview-urlSigned URL of a Novadesko file read
Novadesko files cannot be framed directly; this returns a signed relay URL valid 20 minutes. Only whitelisted hosts and paths are relayed.
Integration tokens need the read ability.
Operatie-id companies.files.preview-url
Padparameters
| Naam | Type | Beschrijving |
|---|---|---|
company verplicht | string | Public token of the company file (public_token, 12 characters).bv. XBVD5O1L29HC |
Queryparameters
| Naam | Type | Beschrijving |
|---|---|---|
url verplicht | string <uri> | File on web.novadesko.com. |
Gemeenschappelijke headers: Accept-Language
Antwoorden
200OK
application/json
Schema object
urlstring <uri>expires_inintegerbv.1200
Voorbeeld
{
"url": "https://api.novafisko.com/v1/companies/XBVD5O1L29HC",
"expires_in": 1200
}token_ability_missing, session_token_required), demo restriction (demo_mode) or invalid URL signature. Errorerrors maps each field to its messages; code is present when the refusal has a machine reason. ErrorVoorbeeldaanroep
curl -X GET "https://api.novafisko.com/v1/companies/XBVD5O1L29HC/files/preview-url?url=https%3A%2F%2Fapi.novafisko.com%2Fv1%2Fcompanies%2FXBVD5O1L29HC" \
-H "Accept: application/json" \
-H "Authorization: Bearer $NOVAFISKO_TOKEN"<?php
$client = new \GuzzleHttp\Client();
$response = $client->request('GET', 'https://api.novafisko.com/v1/companies/XBVD5O1L29HC/files/preview-url', [
'headers' => [
'Accept' => 'application/json',
'Authorization' => 'Bearer '.getenv('NOVAFISKO_TOKEN'),
],
'query' => [
'url' => 'https://api.novafisko.com/v1/companies/XBVD5O1L29HC',
],
]);
$data = json_decode((string) $response->getBody(), true);const response = await fetch("https://api.novafisko.com/v1/companies/XBVD5O1L29HC/files/preview-url?url=https%3A%2F%2Fapi.novafisko.com%2Fv1%2Fcompanies%2FXBVD5O1L29HC", {
method: "GET",
headers: {
"Accept": "application/json",
"Authorization": `Bearer ${process.env.NOVAFISKO_TOKEN}`,
},
});
if (!response.ok) {
const error = await response.json();
throw new Error(error.code ?? error.message);
}
const data = response.status === 204 ? null : await response.json();import os
import requests
response = requests.get(
"https://api.novafisko.com/v1/companies/XBVD5O1L29HC/files/preview-url",
headers={
"Accept": "application/json",
"Authorization": f"Bearer {os.environ['NOVAFISKO_TOKEN']}",
},
params={
"url": "https://api.novafisko.com/v1/companies/XBVD5O1L29HC"
},
timeout=30,
)
response.raise_for_status()
data = response.json() if response.content else NoneGET/v1/companies/{company}/files/viewSigned relay of a Novadesko file Ondertekende URL 120 / 1 min
Target of files/preview-url: serves the PDF or image inline with frame-ancestors allowing the app.
Authorised by the signature of the URL (query parameters signature and expires), not by a bearer token. The URL is issued by another endpoint and expires.
Rate limit: 120 requests per minute (429 beyond, see Retry-After).
Padparameters
| Naam | Type | Beschrijving |
|---|---|---|
company verplicht | string | Public token of the company file (public_token, 12 characters).bv. XBVD5O1L29HC |
Queryparameters
| Naam | Type | Beschrijving |
|---|---|---|
url verplicht | string <uri> |
Gemeenschappelijke headers: signature expires
Antwoorden
200The file, inline.
Antwoordheaders Content-Disposition X-RateLimit-Limit X-RateLimit-Remaining
application/pdf
image/png
image/jpeg
token_ability_missing, session_token_required), demo restriction (demo_mode) or invalid URL signature. ErrorVoorbeeldaanroep
curl -X GET "https://api.novafisko.com/v1/companies/XBVD5O1L29HC/files/view?url=https%3A%2F%2Fapi.novafisko.com%2Fv1%2Fcompanies%2FXBVD5O1L29HC" \
-H "Accept: application/json"<?php
$client = new \GuzzleHttp\Client();
$response = $client->request('GET', 'https://api.novafisko.com/v1/companies/XBVD5O1L29HC/files/view', [
'headers' => [
'Accept' => 'application/json',
],
'query' => [
'url' => 'https://api.novafisko.com/v1/companies/XBVD5O1L29HC',
],
]);
$data = json_decode((string) $response->getBody(), true);const response = await fetch("https://api.novafisko.com/v1/companies/XBVD5O1L29HC/files/view?url=https%3A%2F%2Fapi.novafisko.com%2Fv1%2Fcompanies%2FXBVD5O1L29HC", {
method: "GET",
headers: {
"Accept": "application/json",
},
});
if (!response.ok) {
const error = await response.json();
throw new Error(error.code ?? error.message);
}
const data = response.status === 204 ? null : await response.json();import os
import requests
response = requests.get(
"https://api.novafisko.com/v1/companies/XBVD5O1L29HC/files/view",
headers={
"Accept": "application/json",
},
params={
"url": "https://api.novafisko.com/v1/companies/XBVD5O1L29HC"
},
timeout=30,
)
response.raise_for_status()
data = response.json() if response.content else NoneHistory & recycle bin
Version history, revert, recycle bin, activity feed.
GET/v1/companies/{company}/historyVersion history read
Who changed what, from which device, newest first.
Integration tokens need the read ability.
Operatie-id companies.history.index
Padparameters
| Naam | Type | Beschrijving |
|---|---|---|
company verplicht | string | Public token of the company file (public_token, 12 characters).bv. XBVD5O1L29HC |
Queryparameters
| Naam | Type | Beschrijving |
|---|---|---|
subject_type | string | third_parties, accounts, journals, entries, documents, bank_transactions, fixed_assets… |
subject_id | integer | |
user_id | integer | |
action | string | created updated deleted restored reverted synced |
origin | string | online offline_sync system bridge |
operation_id | string <uuid> | |
device_id | string | |
from | string <date> | |
to | string <date> | |
q | string | Record label, user or device. |
page | integer | Page number, starting at 1. bv. 1 |
per_page | integer | Items per page (default 50, maximum 200). bv. 50 |
Gemeenschappelijke headers: Accept-Language
Antwoorden
200Paginated list
application/json
Voorbeeld
{
"current_page": 1,
"data": [
{
"id": 2301,
"action": "created",
"effect": "updated",
"action_label": "Modification · Tiers",
"subject_type": "third_parties",
"subject_type_label": "Tiers",
"subject_id": 18,
"subject_label": "DUBUISSON · Brasserie Dubuisson SA",
"user": null,
"actor_name": "Claire Dumont",
"changes": [
{
"field": "payment_terms_days",
"label": "Délai de paiement",
"old": null,
"new": null
}
],
"version": 4,
"operation_id": "bf413a19-2136-4504-bc42-b314637eb5c7",
"client_mutation_id": "b0a6f6f0-7d1c-4c5e-8a55-3f2b1c9d0e11",
"origin": "online",
"device_id": "mac-7F3A21",
"device_name": "MacBook de Claire",
"reason": "string",
"reverts_revision_id": 42,
"reverted_at": "2026-03-15T09:41:00+00:00",
"reverted_by_revision_id": 42,
"occurred_at": "2026-03-15T09:41:00+00:00",
"created_at": "2026-03-15T09:41:00+00:00",
"can_revert": true,
"revert_blocked_reason": "string",
"revert_blocked_message": "string",
"revert_effect": "string",
"snapshot_before": {},
"snapshot_after": {},
"ip": "string"
}
],
"first_page_url": "https://api.novafisko.com/v1/companies/XBVD5O1L29HC",
"from": 1,
"last_page": 4,
"last_page_url": "https://api.novafisko.com/v1/companies/XBVD5O1L29HC",
"links": [
{
"url": "https://api.novafisko.com/v1/companies/XBVD5O1L29HC",
"label": "1",
"page": 1,
"active": true
}
],
"next_page_url": "https://api.novafisko.com/v1/companies/XBVD5O1L29HC",
"path": "https://api.novafisko.com/v1/companies/XBVD5O1L29HC",
"per_page": 50,
"prev_page_url": "https://api.novafisko.com/v1/companies/XBVD5O1L29HC",
"to": 50,
"total": 187
}token_ability_missing, session_token_required), demo restriction (demo_mode) or invalid URL signature. ErrorVoorbeeldaanroep
curl -X GET "https://api.novafisko.com/v1/companies/XBVD5O1L29HC/history" \
-H "Accept: application/json" \
-H "Authorization: Bearer $NOVAFISKO_TOKEN"<?php
$client = new \GuzzleHttp\Client();
$response = $client->request('GET', 'https://api.novafisko.com/v1/companies/XBVD5O1L29HC/history', [
'headers' => [
'Accept' => 'application/json',
'Authorization' => 'Bearer '.getenv('NOVAFISKO_TOKEN'),
],
]);
$data = json_decode((string) $response->getBody(), true);const response = await fetch("https://api.novafisko.com/v1/companies/XBVD5O1L29HC/history", {
method: "GET",
headers: {
"Accept": "application/json",
"Authorization": `Bearer ${process.env.NOVAFISKO_TOKEN}`,
},
});
if (!response.ok) {
const error = await response.json();
throw new Error(error.code ?? error.message);
}
const data = response.status === 204 ? null : await response.json();import os
import requests
response = requests.get(
"https://api.novafisko.com/v1/companies/XBVD5O1L29HC/history",
headers={
"Accept": "application/json",
"Authorization": f"Bearer {os.environ['NOVAFISKO_TOKEN']}",
},
timeout=30,
)
response.raise_for_status()
data = response.json() if response.content else NoneGET/v1/companies/{company}/history/usersFilters of the history read
People and devices that changed something, subject types and actions.
Integration tokens need the read ability.
Operatie-id companies.history.users
Padparameters
| Naam | Type | Beschrijving |
|---|---|---|
company verplicht | string | Public token of the company file (public_token, 12 characters).bv. XBVD5O1L29HC |
Gemeenschappelijke headers: Accept-Language
Antwoorden
200OK
application/json
Schema object
dataobject[]Eigenschappen
idintegernamestringbv.Claire Dumontrevisionsintegerbv.214last_atstring <date-time> | nullrolestringbv.firm_admin
devicesobject[]Eigenschappen
idstringnamestring | nullrevisionsinteger
subject_typesobject[]Eigenschappen
keystringbv.third_partieslabelstringbv.Tiers
actionsobject[]Eigenschappen
keystringbv.createdlabelstringbv.Création
Voorbeeld
{
"data": [
{
"id": 42,
"name": "Claire Dumont",
"revisions": 214,
"last_at": "2026-03-15T09:41:00+00:00",
"role": "firm_admin"
}
],
"devices": [
{
"id": "string",
"name": "Le Comptoir Montois SRL",
"revisions": 1
}
],
"subject_types": [
{
"key": "third_parties",
"label": "Tiers"
}
],
"actions": [
{
"key": "created",
"label": "Création"
}
]
}token_ability_missing, session_token_required), demo restriction (demo_mode) or invalid URL signature. ErrorVoorbeeldaanroep
curl -X GET "https://api.novafisko.com/v1/companies/XBVD5O1L29HC/history/users" \
-H "Accept: application/json" \
-H "Authorization: Bearer $NOVAFISKO_TOKEN"<?php
$client = new \GuzzleHttp\Client();
$response = $client->request('GET', 'https://api.novafisko.com/v1/companies/XBVD5O1L29HC/history/users', [
'headers' => [
'Accept' => 'application/json',
'Authorization' => 'Bearer '.getenv('NOVAFISKO_TOKEN'),
],
]);
$data = json_decode((string) $response->getBody(), true);const response = await fetch("https://api.novafisko.com/v1/companies/XBVD5O1L29HC/history/users", {
method: "GET",
headers: {
"Accept": "application/json",
"Authorization": `Bearer ${process.env.NOVAFISKO_TOKEN}`,
},
});
if (!response.ok) {
const error = await response.json();
throw new Error(error.code ?? error.message);
}
const data = response.status === 204 ? null : await response.json();import os
import requests
response = requests.get(
"https://api.novafisko.com/v1/companies/XBVD5O1L29HC/history/users",
headers={
"Accept": "application/json",
"Authorization": f"Bearer {os.environ['NOVAFISKO_TOKEN']}",
},
timeout=30,
)
response.raise_for_status()
data = response.json() if response.content else NoneGET/v1/companies/{company}/history/exportExport the history (CSV) read 30 / 1 min
Same filters as the list. UTF-8 with BOM, semicolon separated.
Integration tokens need the read ability.
Rate limit: 30 requests per minute (429 beyond, see Retry-After).
Operatie-id companies.history.export
Padparameters
| Naam | Type | Beschrijving |
|---|---|---|
company verplicht | string | Public token of the company file (public_token, 12 characters).bv. XBVD5O1L29HC |
Queryparameters
| Naam | Type | Beschrijving |
|---|---|---|
subject_type | string | third_parties, accounts, journals, entries, documents, bank_transactions, fixed_assets… |
subject_id | integer | |
user_id | integer | |
action | string | created updated deleted restored reverted synced |
origin | string | online offline_sync system bridge |
operation_id | string <uuid> | |
device_id | string | |
from | string <date> | |
to | string <date> | |
q | string | Record label, user or device. |
Gemeenschappelijke headers: Accept-Language
Antwoorden
200CSV file.
Antwoordheaders Content-Disposition X-RateLimit-Limit X-RateLimit-Remaining
text/csv
token_ability_missing, session_token_required), demo restriction (demo_mode) or invalid URL signature. ErrorVoorbeeldaanroep
curl -X GET "https://api.novafisko.com/v1/companies/XBVD5O1L29HC/history/export" \
-H "Accept: application/json" \
-H "Authorization: Bearer $NOVAFISKO_TOKEN"<?php
$client = new \GuzzleHttp\Client();
$response = $client->request('GET', 'https://api.novafisko.com/v1/companies/XBVD5O1L29HC/history/export', [
'headers' => [
'Accept' => 'application/json',
'Authorization' => 'Bearer '.getenv('NOVAFISKO_TOKEN'),
],
]);
$data = json_decode((string) $response->getBody(), true);const response = await fetch("https://api.novafisko.com/v1/companies/XBVD5O1L29HC/history/export", {
method: "GET",
headers: {
"Accept": "application/json",
"Authorization": `Bearer ${process.env.NOVAFISKO_TOKEN}`,
},
});
if (!response.ok) {
const error = await response.json();
throw new Error(error.code ?? error.message);
}
const data = response.status === 204 ? null : await response.json();import os
import requests
response = requests.get(
"https://api.novafisko.com/v1/companies/XBVD5O1L29HC/history/export",
headers={
"Accept": "application/json",
"Authorization": f"Bearer {os.environ['NOVAFISKO_TOKEN']}",
},
timeout=30,
)
response.raise_for_status()
data = response.json() if response.content else NoneGET/v1/companies/{company}/history/settingsRetention settings read
Integration tokens need the read ability.
Operatie-id companies.history.settings
Padparameters
| Naam | Type | Beschrijving |
|---|---|---|
company verplicht | string | Public token of the company file (public_token, 12 characters).bv. XBVD5O1L29HC |
Gemeenschappelijke headers: Accept-Language
Antwoorden
200OK
application/json
Schema object
trash_retention_daysintegerbv.90default_trash_retention_daysintegerbv.90min_trash_retention_daysintegerbv.7max_trash_retention_daysintegerbv.3650sync_retention_daysintegerbv.90can_editboolean
Voorbeeld
{
"trash_retention_days": 90,
"default_trash_retention_days": 90,
"min_trash_retention_days": 7,
"max_trash_retention_days": 3650,
"sync_retention_days": 90,
"can_edit": true
}token_ability_missing, session_token_required), demo restriction (demo_mode) or invalid URL signature. ErrorVoorbeeldaanroep
curl -X GET "https://api.novafisko.com/v1/companies/XBVD5O1L29HC/history/settings" \
-H "Accept: application/json" \
-H "Authorization: Bearer $NOVAFISKO_TOKEN"<?php
$client = new \GuzzleHttp\Client();
$response = $client->request('GET', 'https://api.novafisko.com/v1/companies/XBVD5O1L29HC/history/settings', [
'headers' => [
'Accept' => 'application/json',
'Authorization' => 'Bearer '.getenv('NOVAFISKO_TOKEN'),
],
]);
$data = json_decode((string) $response->getBody(), true);const response = await fetch("https://api.novafisko.com/v1/companies/XBVD5O1L29HC/history/settings", {
method: "GET",
headers: {
"Accept": "application/json",
"Authorization": `Bearer ${process.env.NOVAFISKO_TOKEN}`,
},
});
if (!response.ok) {
const error = await response.json();
throw new Error(error.code ?? error.message);
}
const data = response.status === 204 ? null : await response.json();import os
import requests
response = requests.get(
"https://api.novafisko.com/v1/companies/XBVD5O1L29HC/history/settings",
headers={
"Accept": "application/json",
"Authorization": f"Bearer {os.environ['NOVAFISKO_TOKEN']}",
},
timeout=30,
)
response.raise_for_status()
data = response.json() if response.content else NonePATCH/v1/companies/{company}/history/settingsUpdate the retention of the recycle bin write
Managers only.
Integration tokens need the write ability.
Error codes (code):
settings_forbidden: only a manager can change this setting
Operatie-id companies.history.settings.update
Padparameters
| Naam | Type | Beschrijving |
|---|---|---|
company verplicht | string | Public token of the company file (public_token, 12 characters).bv. XBVD5O1L29HC |
Gemeenschappelijke headers: Accept-Language X-Client-Mutation-Id X-Operation-Id X-Device-Id X-Device-Name X-Occurred-At X-Origin X-Base-Version
Body van de aanvraag
application/json
Schema object
trash_retention_daysintegerverplicht7 to 3650.
Voorbeeld
{
"trash_retention_days": 180
}Antwoorden
200OK
Antwoordheaders X-Operation-Id X-Idempotent-Replay
application/json
Schema object
trash_retention_daysintegerbv.180default_trash_retention_daysintegerbv.90min_trash_retention_daysintegerbv.7max_trash_retention_daysintegerbv.3650sync_retention_daysintegerbv.90can_editboolean
Voorbeeld
{
"trash_retention_days": 180,
"default_trash_retention_days": 90,
"min_trash_retention_days": 7,
"max_trash_retention_days": 3650,
"sync_retention_days": 90,
"can_edit": true
}token_ability_missing, session_token_required), demo restriction (demo_mode) or invalid URL signature. ErrorX-Base-Version. Nothing was modified. VersionConflicterrors maps each field to its messages; code is present when the refusal has a machine reason. ErrorVoorbeeldaanroep
curl -X PATCH "https://api.novafisko.com/v1/companies/XBVD5O1L29HC/history/settings" \
-H "Accept: application/json" \
-H "Authorization: Bearer $NOVAFISKO_TOKEN" \
-H "Content-Type: application/json" \
-H "X-Client-Mutation-Id: b0a6f6f0-7d1c-4c5e-8a55-3f2b1c9d0e11" \
-d '{
"trash_retention_days": 180
}'<?php
$client = new \GuzzleHttp\Client();
$response = $client->request('PATCH', 'https://api.novafisko.com/v1/companies/XBVD5O1L29HC/history/settings', [
'headers' => [
'Accept' => 'application/json',
'Authorization' => 'Bearer '.getenv('NOVAFISKO_TOKEN'),
'X-Client-Mutation-Id' => 'b0a6f6f0-7d1c-4c5e-8a55-3f2b1c9d0e11',
],
'json' => [
'trash_retention_days' => 180,
],
]);
$data = json_decode((string) $response->getBody(), true);const response = await fetch("https://api.novafisko.com/v1/companies/XBVD5O1L29HC/history/settings", {
method: "PATCH",
headers: {
"Accept": "application/json",
"Authorization": `Bearer ${process.env.NOVAFISKO_TOKEN}`,
"Content-Type": "application/json",
"X-Client-Mutation-Id": "b0a6f6f0-7d1c-4c5e-8a55-3f2b1c9d0e11",
},
body: JSON.stringify({
"trash_retention_days": 180
}),
});
if (!response.ok) {
const error = await response.json();
throw new Error(error.code ?? error.message);
}
const data = response.status === 204 ? null : await response.json();import os
import requests
response = requests.patch(
"https://api.novafisko.com/v1/companies/XBVD5O1L29HC/history/settings",
headers={
"Accept": "application/json",
"Authorization": f"Bearer {os.environ['NOVAFISKO_TOKEN']}",
"X-Client-Mutation-Id": "b0a6f6f0-7d1c-4c5e-8a55-3f2b1c9d0e11",
},
json={
"trash_retention_days": 180
},
timeout=30,
)
response.raise_for_status()
data = response.json() if response.content else NonePOST/v1/companies/{company}/history/operations/{operation}/revertUndo a whole operation write
Reverts every change recorded under one X-Operation-Id, newest first, in one transaction: all or nothing.
Integration tokens need the write ability.
Error codes (code):
conflict: the record changed since then (forceable by a manager withforce: true)period_locked: locked period or closed fiscal yearvat_locked: VAT return validated or submittedalready_reverted: already revertednot_revertible: this kind of change cannot be revertedentry_immutable: a posted entry is reversed, not modifiedin_use: the record is in usebooked: the record is bookedcode_taken: the code is used by another recordforce_forbidden: only a manager can forceread_only: read-only access to the fileoperation_not_found: unknown operationoperation_not_revertible: one change of the batch cannot be revertednothing_to_revert: nothing to revert
Operatie-id companies.history.operations.revert
Padparameters
| Naam | Type | Beschrijving |
|---|---|---|
company verplicht | string | Public token of the company file (public_token, 12 characters).bv. XBVD5O1L29HC |
operation verplicht | string <uuid> | Operation id (X-Operation-Id) grouping the changes of one action.bv. bf413a19-2136-4504-bc42-b314637eb5c7 |
Gemeenschappelijke headers: Accept-Language X-Client-Mutation-Id X-Operation-Id X-Device-Id X-Device-Name X-Occurred-At X-Origin
Body van de aanvraag optioneel
application/json
Schema object
reasonstring | nullforcebooleanOverwrite newer values (managers).
Voorbeeld
{
"reason": "Erreur de saisie"
}Antwoorden
200OK
Antwoordheaders X-Operation-Id X-Idempotent-Replay
application/json
Schema object
revertedbooleanoperation_idstring <uuid>countintegerbv.3revisionsRevision[]skippedobject[]
Voorbeeld
{
"reverted": true,
"operation_id": "bf413a19-2136-4504-bc42-b314637eb5c7",
"count": 3,
"revisions": [
{
"id": 2301,
"action": "created",
"effect": "updated",
"action_label": "Modification · Tiers",
"subject_type": "third_parties",
"subject_type_label": "Tiers",
"subject_id": 18,
"subject_label": "DUBUISSON · Brasserie Dubuisson SA",
"user": null,
"actor_name": "Claire Dumont",
"changes": [
{
"field": "payment_terms_days",
"label": "Délai de paiement",
"old": null,
"new": null
}
],
"version": 4,
"operation_id": "bf413a19-2136-4504-bc42-b314637eb5c7",
"client_mutation_id": "b0a6f6f0-7d1c-4c5e-8a55-3f2b1c9d0e11",
"origin": "online",
"device_id": "mac-7F3A21",
"device_name": "MacBook de Claire",
"reason": "string",
"reverts_revision_id": 42,
"reverted_at": "2026-03-15T09:41:00+00:00",
"reverted_by_revision_id": 42,
"occurred_at": "2026-03-15T09:41:00+00:00",
"created_at": "2026-03-15T09:41:00+00:00",
"can_revert": true,
"revert_blocked_reason": "string",
"revert_blocked_message": "string",
"revert_effect": "string",
"snapshot_before": {},
"snapshot_after": {},
"ip": "string"
}
],
"skipped": [
{}
]
}token_ability_missing, session_token_required), demo restriction (demo_mode) or invalid URL signature. Errorerrors maps each field to its messages; code is present when the refusal has a machine reason. ErrorVoorbeeldaanroep
curl -X POST "https://api.novafisko.com/v1/companies/XBVD5O1L29HC/history/operations/bf413a19-2136-4504-bc42-b314637eb5c7/revert" \
-H "Accept: application/json" \
-H "Authorization: Bearer $NOVAFISKO_TOKEN" \
-H "Content-Type: application/json" \
-H "X-Client-Mutation-Id: b0a6f6f0-7d1c-4c5e-8a55-3f2b1c9d0e11" \
-d '{
"reason": "Erreur de saisie"
}'<?php
$client = new \GuzzleHttp\Client();
$response = $client->request('POST', 'https://api.novafisko.com/v1/companies/XBVD5O1L29HC/history/operations/bf413a19-2136-4504-bc42-b314637eb5c7/revert', [
'headers' => [
'Accept' => 'application/json',
'Authorization' => 'Bearer '.getenv('NOVAFISKO_TOKEN'),
'X-Client-Mutation-Id' => 'b0a6f6f0-7d1c-4c5e-8a55-3f2b1c9d0e11',
],
'json' => [
'reason' => 'Erreur de saisie',
],
]);
$data = json_decode((string) $response->getBody(), true);const response = await fetch("https://api.novafisko.com/v1/companies/XBVD5O1L29HC/history/operations/bf413a19-2136-4504-bc42-b314637eb5c7/revert", {
method: "POST",
headers: {
"Accept": "application/json",
"Authorization": `Bearer ${process.env.NOVAFISKO_TOKEN}`,
"Content-Type": "application/json",
"X-Client-Mutation-Id": "b0a6f6f0-7d1c-4c5e-8a55-3f2b1c9d0e11",
},
body: JSON.stringify({
"reason": "Erreur de saisie"
}),
});
if (!response.ok) {
const error = await response.json();
throw new Error(error.code ?? error.message);
}
const data = response.status === 204 ? null : await response.json();import os
import requests
response = requests.post(
"https://api.novafisko.com/v1/companies/XBVD5O1L29HC/history/operations/bf413a19-2136-4504-bc42-b314637eb5c7/revert",
headers={
"Accept": "application/json",
"Authorization": f"Bearer {os.environ['NOVAFISKO_TOKEN']}",
"X-Client-Mutation-Id": "b0a6f6f0-7d1c-4c5e-8a55-3f2b1c9d0e11",
},
json={
"reason": "Erreur de saisie"
},
timeout=30,
)
response.raise_for_status()
data = response.json() if response.content else NoneGET/v1/companies/{company}/history/{revision}Revision read
With the snapshots before and after.
Integration tokens need the read ability.
Operatie-id companies.history.show
Padparameters
| Naam | Type | Beschrijving |
|---|---|---|
company verplicht | string | Public token of the company file (public_token, 12 characters).bv. XBVD5O1L29HC |
revision verplicht | integer | Id of the revision (history line). bv. 2301 |
Gemeenschappelijke headers: Accept-Language
Antwoorden
200OK
application/json
Schema Revision
Voorbeeld
{
"id": 2301,
"action": "created",
"effect": "updated",
"action_label": "Modification · Tiers",
"subject_type": "third_parties",
"subject_type_label": "Tiers",
"subject_id": 18,
"subject_label": "DUBUISSON · Brasserie Dubuisson SA",
"user": {
"id": 12,
"name": "Claire Dumont"
},
"actor_name": "Claire Dumont",
"changes": [
{
"field": "payment_terms_days",
"label": "Délai de paiement",
"old": null,
"new": null
}
],
"version": 4,
"operation_id": "bf413a19-2136-4504-bc42-b314637eb5c7",
"client_mutation_id": "b0a6f6f0-7d1c-4c5e-8a55-3f2b1c9d0e11",
"origin": "online",
"device_id": "mac-7F3A21",
"device_name": "MacBook de Claire",
"reason": "string",
"reverts_revision_id": 42,
"reverted_at": "2026-03-15T09:41:00+00:00",
"reverted_by_revision_id": 42,
"occurred_at": "2026-03-15T09:41:00+00:00",
"created_at": "2026-03-15T09:41:00+00:00",
"can_revert": true,
"revert_blocked_reason": "string",
"revert_blocked_message": "string",
"revert_effect": "string",
"snapshot_before": {},
"snapshot_after": {},
"ip": "string"
}token_ability_missing, session_token_required), demo restriction (demo_mode) or invalid URL signature. ErrorVoorbeeldaanroep
curl -X GET "https://api.novafisko.com/v1/companies/XBVD5O1L29HC/history/2301" \
-H "Accept: application/json" \
-H "Authorization: Bearer $NOVAFISKO_TOKEN"<?php
$client = new \GuzzleHttp\Client();
$response = $client->request('GET', 'https://api.novafisko.com/v1/companies/XBVD5O1L29HC/history/2301', [
'headers' => [
'Accept' => 'application/json',
'Authorization' => 'Bearer '.getenv('NOVAFISKO_TOKEN'),
],
]);
$data = json_decode((string) $response->getBody(), true);const response = await fetch("https://api.novafisko.com/v1/companies/XBVD5O1L29HC/history/2301", {
method: "GET",
headers: {
"Accept": "application/json",
"Authorization": `Bearer ${process.env.NOVAFISKO_TOKEN}`,
},
});
if (!response.ok) {
const error = await response.json();
throw new Error(error.code ?? error.message);
}
const data = response.status === 204 ? null : await response.json();import os
import requests
response = requests.get(
"https://api.novafisko.com/v1/companies/XBVD5O1L29HC/history/2301",
headers={
"Accept": "application/json",
"Authorization": f"Bearer {os.environ['NOVAFISKO_TOKEN']}",
},
timeout=30,
)
response.raise_for_status()
data = response.json() if response.content else NonePOST/v1/companies/{company}/history/{revision}/revertRevert a change write
Puts back the state before the change: an update restores the previous values, a deletion restores the record, a creation sends it to the recycle bin, a posted entry is reversed. The revert is itself recorded and revertible.
Integration tokens need the write ability.
Error codes (code):
conflict: the record changed since then (forceable by a manager withforce: true)period_locked: locked period or closed fiscal yearvat_locked: VAT return validated or submittedalready_reverted: already revertednot_revertible: this kind of change cannot be revertedentry_immutable: a posted entry is reversed, not modifiedin_use: the record is in usebooked: the record is bookedcode_taken: the code is used by another recordforce_forbidden: only a manager can forceread_only: read-only access to the fileoperation_not_found: unknown operationoperation_not_revertible: one change of the batch cannot be revertednothing_to_revert: nothing to revert
Operatie-id companies.history.revert
Padparameters
| Naam | Type | Beschrijving |
|---|---|---|
company verplicht | string | Public token of the company file (public_token, 12 characters).bv. XBVD5O1L29HC |
revision verplicht | integer | Id of the revision (history line). bv. 2301 |
Gemeenschappelijke headers: Accept-Language X-Client-Mutation-Id X-Operation-Id X-Device-Id X-Device-Name X-Occurred-At X-Origin
Body van de aanvraag optioneel
application/json
Schema object
reasonstring | nullforceboolean
Voorbeeld
{
"reason": "Mauvais tiers"
}Antwoorden
200OK
Antwoordheaders X-Operation-Id X-Idempotent-Replay
application/json
Schema object
Voorbeeld
{
"reverted": true,
"effect": "updated",
"revision_ids": [
1
],
"subject_type": "string",
"subject_id": 42,
"reversal_entry_id": 42,
"revision": {
"id": 2301,
"action": "created",
"effect": "updated",
"action_label": "Modification · Tiers",
"subject_type": "third_parties",
"subject_type_label": "Tiers",
"subject_id": 18,
"subject_label": "DUBUISSON · Brasserie Dubuisson SA",
"user": {
"id": 12,
"name": "Claire Dumont"
},
"actor_name": "Claire Dumont",
"changes": [
{
"field": "payment_terms_days",
"label": "Délai de paiement",
"old": null,
"new": null
}
],
"version": 4,
"operation_id": "bf413a19-2136-4504-bc42-b314637eb5c7",
"client_mutation_id": "b0a6f6f0-7d1c-4c5e-8a55-3f2b1c9d0e11",
"origin": "online",
"device_id": "mac-7F3A21",
"device_name": "MacBook de Claire",
"reason": "string",
"reverts_revision_id": 42,
"reverted_at": "2026-03-15T09:41:00+00:00",
"reverted_by_revision_id": 42,
"occurred_at": "2026-03-15T09:41:00+00:00",
"created_at": "2026-03-15T09:41:00+00:00",
"can_revert": true,
"revert_blocked_reason": "string",
"revert_blocked_message": "string",
"revert_effect": "string",
"snapshot_before": {},
"snapshot_after": {},
"ip": "string"
},
"revisions": [
{
"id": 2301,
"action": "created",
"effect": "updated",
"action_label": "Modification · Tiers",
"subject_type": "third_parties",
"subject_type_label": "Tiers",
"subject_id": 18,
"subject_label": "DUBUISSON · Brasserie Dubuisson SA",
"user": null,
"actor_name": "Claire Dumont",
"changes": [
{
"field": "payment_terms_days",
"label": "Délai de paiement",
"old": null,
"new": null
}
],
"version": 4,
"operation_id": "bf413a19-2136-4504-bc42-b314637eb5c7",
"client_mutation_id": "b0a6f6f0-7d1c-4c5e-8a55-3f2b1c9d0e11",
"origin": "online",
"device_id": "mac-7F3A21",
"device_name": "MacBook de Claire",
"reason": "string",
"reverts_revision_id": 42,
"reverted_at": "2026-03-15T09:41:00+00:00",
"reverted_by_revision_id": 42,
"occurred_at": "2026-03-15T09:41:00+00:00",
"created_at": "2026-03-15T09:41:00+00:00",
"can_revert": true,
"revert_blocked_reason": "string",
"revert_blocked_message": "string",
"revert_effect": "string",
"snapshot_before": {},
"snapshot_after": {},
"ip": "string"
}
]
}token_ability_missing, session_token_required), demo restriction (demo_mode) or invalid URL signature. Errorerrors maps each field to its messages; code is present when the refusal has a machine reason. ErrorVoorbeeldaanroep
curl -X POST "https://api.novafisko.com/v1/companies/XBVD5O1L29HC/history/2301/revert" \
-H "Accept: application/json" \
-H "Authorization: Bearer $NOVAFISKO_TOKEN" \
-H "Content-Type: application/json" \
-H "X-Client-Mutation-Id: b0a6f6f0-7d1c-4c5e-8a55-3f2b1c9d0e11" \
-d '{
"reason": "Mauvais tiers"
}'<?php
$client = new \GuzzleHttp\Client();
$response = $client->request('POST', 'https://api.novafisko.com/v1/companies/XBVD5O1L29HC/history/2301/revert', [
'headers' => [
'Accept' => 'application/json',
'Authorization' => 'Bearer '.getenv('NOVAFISKO_TOKEN'),
'X-Client-Mutation-Id' => 'b0a6f6f0-7d1c-4c5e-8a55-3f2b1c9d0e11',
],
'json' => [
'reason' => 'Mauvais tiers',
],
]);
$data = json_decode((string) $response->getBody(), true);const response = await fetch("https://api.novafisko.com/v1/companies/XBVD5O1L29HC/history/2301/revert", {
method: "POST",
headers: {
"Accept": "application/json",
"Authorization": `Bearer ${process.env.NOVAFISKO_TOKEN}`,
"Content-Type": "application/json",
"X-Client-Mutation-Id": "b0a6f6f0-7d1c-4c5e-8a55-3f2b1c9d0e11",
},
body: JSON.stringify({
"reason": "Mauvais tiers"
}),
});
if (!response.ok) {
const error = await response.json();
throw new Error(error.code ?? error.message);
}
const data = response.status === 204 ? null : await response.json();import os
import requests
response = requests.post(
"https://api.novafisko.com/v1/companies/XBVD5O1L29HC/history/2301/revert",
headers={
"Accept": "application/json",
"Authorization": f"Bearer {os.environ['NOVAFISKO_TOKEN']}",
"X-Client-Mutation-Id": "b0a6f6f0-7d1c-4c5e-8a55-3f2b1c9d0e11",
},
json={
"reason": "Mauvais tiers"
},
timeout=30,
)
response.raise_for_status()
data = response.json() if response.content else NoneGET/v1/companies/{company}/activityActivity of the file read
Audit trail (sign-ins, exports, bookings…) and history merged, newest first. No total: use has_more.
Integration tokens need the read ability.
Operatie-id companies.activity
Padparameters
| Naam | Type | Beschrijving |
|---|---|---|
company verplicht | string | Public token of the company file (public_token, 12 characters).bv. XBVD5O1L29HC |
Queryparameters
| Naam | Type | Beschrijving |
|---|---|---|
user_id | integer | |
from | string <date> | |
to | string <date> | |
type | string | |
source | string | audit revision |
q | string | |
page | integer | Page number, starting at 1. bv. 1 |
per_page | integer | Items per page (default 50, maximum 200). bv. 50 |
Gemeenschappelijke headers: Accept-Language
Antwoorden
200OK
application/json
Schema ActivityFeed
Voorbeeld
{
"data": [
{
"source": "audit",
"at": "2026-03-15T09:41:00+00:00",
"recorded_at": "2026-03-15T09:41:00+00:00",
"user": null,
"action": "entry.posted",
"action_label": "Écriture validée",
"subject_type": "string",
"subject_id": 42,
"subject_label": "string",
"origin": "string",
"device_name": "MacBook de Claire",
"revision_id": 42,
"operation_id": "bf413a19-2136-4504-bc42-b314637eb5c7",
"company_id": 7,
"changed_fields": [
"string"
],
"company": {
"token": "XBVD5O1L29HC",
"name": "Le Comptoir Montois SRL"
}
}
],
"current_page": 1,
"per_page": 50,
"has_more": true
}token_ability_missing, session_token_required), demo restriction (demo_mode) or invalid URL signature. ErrorVoorbeeldaanroep
curl -X GET "https://api.novafisko.com/v1/companies/XBVD5O1L29HC/activity" \
-H "Accept: application/json" \
-H "Authorization: Bearer $NOVAFISKO_TOKEN"<?php
$client = new \GuzzleHttp\Client();
$response = $client->request('GET', 'https://api.novafisko.com/v1/companies/XBVD5O1L29HC/activity', [
'headers' => [
'Accept' => 'application/json',
'Authorization' => 'Bearer '.getenv('NOVAFISKO_TOKEN'),
],
]);
$data = json_decode((string) $response->getBody(), true);const response = await fetch("https://api.novafisko.com/v1/companies/XBVD5O1L29HC/activity", {
method: "GET",
headers: {
"Accept": "application/json",
"Authorization": `Bearer ${process.env.NOVAFISKO_TOKEN}`,
},
});
if (!response.ok) {
const error = await response.json();
throw new Error(error.code ?? error.message);
}
const data = response.status === 204 ? null : await response.json();import os
import requests
response = requests.get(
"https://api.novafisko.com/v1/companies/XBVD5O1L29HC/activity",
headers={
"Accept": "application/json",
"Authorization": f"Bearer {os.environ['NOVAFISKO_TOKEN']}",
},
timeout=30,
)
response.raise_for_status()
data = response.json() if response.content else NoneGET/v1/companies/{company}/trashRecycle bin read
Integration tokens need the read ability.
Operatie-id companies.trash.index
Padparameters
| Naam | Type | Beschrijving |
|---|---|---|
company verplicht | string | Public token of the company file (public_token, 12 characters).bv. XBVD5O1L29HC |
Queryparameters
| Naam | Type | Beschrijving |
|---|---|---|
type | string | Recycle bin type. |
q | string | |
page | integer | Page number, starting at 1. bv. 1 |
per_page | integer | Items per page (default 50, maximum 200). bv. 50 |
Gemeenschappelijke headers: Accept-Language
Antwoorden
200OK
application/json
Schema object
dataTrashItem[]countsobjectType => count.typesobject[]Eigenschappen
keystringlabelstringcountinteger
totalintegercurrent_pageintegerper_pageintegerlast_pageintegerretention_daysintegerbv.90can_purgeboolean
Voorbeeld
{
"data": [
{
"type": "third_parties",
"id": 18,
"label": "DUBUISSON · Brasserie Dubuisson SA",
"deleted_at": "2026-03-15T09:41:00+00:00",
"deleted_by": null,
"purge_at": "2026-03-15T09:41:00+00:00",
"restorable": true,
"blocked_reason": "string",
"blocked_message": "string",
"version": 3
}
],
"counts": {},
"types": [
{
"key": "string",
"label": "Facture Brasserie Dubuisson",
"count": 12
}
],
"total": 1,
"current_page": 1,
"per_page": 50,
"last_page": 1,
"retention_days": 90,
"can_purge": true
}token_ability_missing, session_token_required), demo restriction (demo_mode) or invalid URL signature. ErrorVoorbeeldaanroep
curl -X GET "https://api.novafisko.com/v1/companies/XBVD5O1L29HC/trash" \
-H "Accept: application/json" \
-H "Authorization: Bearer $NOVAFISKO_TOKEN"<?php
$client = new \GuzzleHttp\Client();
$response = $client->request('GET', 'https://api.novafisko.com/v1/companies/XBVD5O1L29HC/trash', [
'headers' => [
'Accept' => 'application/json',
'Authorization' => 'Bearer '.getenv('NOVAFISKO_TOKEN'),
],
]);
$data = json_decode((string) $response->getBody(), true);const response = await fetch("https://api.novafisko.com/v1/companies/XBVD5O1L29HC/trash", {
method: "GET",
headers: {
"Accept": "application/json",
"Authorization": `Bearer ${process.env.NOVAFISKO_TOKEN}`,
},
});
if (!response.ok) {
const error = await response.json();
throw new Error(error.code ?? error.message);
}
const data = response.status === 204 ? null : await response.json();import os
import requests
response = requests.get(
"https://api.novafisko.com/v1/companies/XBVD5O1L29HC/trash",
headers={
"Accept": "application/json",
"Authorization": f"Bearer {os.environ['NOVAFISKO_TOKEN']}",
},
timeout=30,
)
response.raise_for_status()
data = response.json() if response.content else NonePOST/v1/companies/{company}/trash/restore-allRestore everything write
Optionally one type only.
Integration tokens need the write ability.
Operatie-id companies.trash.restore-all
Padparameters
| Naam | Type | Beschrijving |
|---|---|---|
company verplicht | string | Public token of the company file (public_token, 12 characters).bv. XBVD5O1L29HC |
Gemeenschappelijke headers: Accept-Language X-Client-Mutation-Id X-Operation-Id X-Device-Id X-Device-Name X-Occurred-At X-Origin
Body van de aanvraag optioneel
application/json
Schema object
typestring | null
Voorbeeld
{
"type": "third_parties"
}Antwoorden
200OK
Antwoordheaders X-Operation-Id X-Idempotent-Replay
application/json
Schema object
restoredintegerbv.4skippedobject[]Eigenschappen
typestringidintegerlabelstringblocked_reasonstringbv.code_taken
Voorbeeld
{
"restored": 4,
"skipped": [
{
"type": "string",
"id": 42,
"label": "Facture Brasserie Dubuisson",
"blocked_reason": "code_taken"
}
]
}token_ability_missing, session_token_required), demo restriction (demo_mode) or invalid URL signature. Errorerrors maps each field to its messages; code is present when the refusal has a machine reason. ErrorVoorbeeldaanroep
curl -X POST "https://api.novafisko.com/v1/companies/XBVD5O1L29HC/trash/restore-all" \
-H "Accept: application/json" \
-H "Authorization: Bearer $NOVAFISKO_TOKEN" \
-H "Content-Type: application/json" \
-H "X-Client-Mutation-Id: b0a6f6f0-7d1c-4c5e-8a55-3f2b1c9d0e11" \
-d '{
"type": "third_parties"
}'<?php
$client = new \GuzzleHttp\Client();
$response = $client->request('POST', 'https://api.novafisko.com/v1/companies/XBVD5O1L29HC/trash/restore-all', [
'headers' => [
'Accept' => 'application/json',
'Authorization' => 'Bearer '.getenv('NOVAFISKO_TOKEN'),
'X-Client-Mutation-Id' => 'b0a6f6f0-7d1c-4c5e-8a55-3f2b1c9d0e11',
],
'json' => [
'type' => 'third_parties',
],
]);
$data = json_decode((string) $response->getBody(), true);const response = await fetch("https://api.novafisko.com/v1/companies/XBVD5O1L29HC/trash/restore-all", {
method: "POST",
headers: {
"Accept": "application/json",
"Authorization": `Bearer ${process.env.NOVAFISKO_TOKEN}`,
"Content-Type": "application/json",
"X-Client-Mutation-Id": "b0a6f6f0-7d1c-4c5e-8a55-3f2b1c9d0e11",
},
body: JSON.stringify({
"type": "third_parties"
}),
});
if (!response.ok) {
const error = await response.json();
throw new Error(error.code ?? error.message);
}
const data = response.status === 204 ? null : await response.json();import os
import requests
response = requests.post(
"https://api.novafisko.com/v1/companies/XBVD5O1L29HC/trash/restore-all",
headers={
"Accept": "application/json",
"Authorization": f"Bearer {os.environ['NOVAFISKO_TOKEN']}",
"X-Client-Mutation-Id": "b0a6f6f0-7d1c-4c5e-8a55-3f2b1c9d0e11",
},
json={
"type": "third_parties"
},
timeout=30,
)
response.raise_for_status()
data = response.json() if response.content else NonePOST/v1/companies/{company}/trash/{type}/{id}/restoreRestore a record write
A third party whose code was taken comes back with a suffixed code; an account, journal or analytic code is refused (code_taken).
Integration tokens need the write ability.
Error codes (code):
code_taken: the code is used by another recordparent_missing: the linked record no longer existsnot_in_trash: the record is not in the recycle binrestore_failed: the restore failed
Operatie-id companies.trash.restore
Padparameters
| Naam | Type | Beschrijving |
|---|---|---|
company verplicht | string | Public token of the company file (public_token, 12 characters).bv. XBVD5O1L29HC |
type verplicht | string | Recycle bin type: third_parties, accounts, journals, journal_rules, bank_rules, recurring_entries, analytic_codes, fixed_assets, documents, document_imports, integrations.bv. third_parties |
id verplicht | integer | Id of the record. bv. 42 |
Gemeenschappelijke headers: Accept-Language X-Client-Mutation-Id X-Operation-Id X-Device-Id X-Device-Name X-Occurred-At X-Origin
Antwoorden
200OK
Antwoordheaders X-Operation-Id X-Idempotent-Replay
application/json
Schema object
restoredbooleantypestringidintegerlabelstringversionintegerdataobject
Voorbeeld
{
"restored": true,
"type": "string",
"id": 42,
"label": "Facture Brasserie Dubuisson",
"version": 3,
"data": {}
}token_ability_missing, session_token_required), demo restriction (demo_mode) or invalid URL signature. Errorerrors maps each field to its messages; code is present when the refusal has a machine reason. ErrorVoorbeeldaanroep
curl -X POST "https://api.novafisko.com/v1/companies/XBVD5O1L29HC/trash/third_parties/42/restore" \
-H "Accept: application/json" \
-H "Authorization: Bearer $NOVAFISKO_TOKEN" \
-H "X-Client-Mutation-Id: b0a6f6f0-7d1c-4c5e-8a55-3f2b1c9d0e11"<?php
$client = new \GuzzleHttp\Client();
$response = $client->request('POST', 'https://api.novafisko.com/v1/companies/XBVD5O1L29HC/trash/third_parties/42/restore', [
'headers' => [
'Accept' => 'application/json',
'Authorization' => 'Bearer '.getenv('NOVAFISKO_TOKEN'),
'X-Client-Mutation-Id' => 'b0a6f6f0-7d1c-4c5e-8a55-3f2b1c9d0e11',
],
]);
$data = json_decode((string) $response->getBody(), true);const response = await fetch("https://api.novafisko.com/v1/companies/XBVD5O1L29HC/trash/third_parties/42/restore", {
method: "POST",
headers: {
"Accept": "application/json",
"Authorization": `Bearer ${process.env.NOVAFISKO_TOKEN}`,
"X-Client-Mutation-Id": "b0a6f6f0-7d1c-4c5e-8a55-3f2b1c9d0e11",
},
});
if (!response.ok) {
const error = await response.json();
throw new Error(error.code ?? error.message);
}
const data = response.status === 204 ? null : await response.json();import os
import requests
response = requests.post(
"https://api.novafisko.com/v1/companies/XBVD5O1L29HC/trash/third_parties/42/restore",
headers={
"Accept": "application/json",
"Authorization": f"Bearer {os.environ['NOVAFISKO_TOKEN']}",
"X-Client-Mutation-Id": "b0a6f6f0-7d1c-4c5e-8a55-3f2b1c9d0e11",
},
timeout=30,
)
response.raise_for_status()
data = response.json() if response.content else NoneDELETE/v1/companies/{company}/trash/{type}/{id}Delete definitively write
Managers only; recorded in the audit trail. Cannot be undone.
Integration tokens need the write ability.
Error codes (code):
purge_forbidden: only a manager can purge
Operatie-id companies.trash.purge
Padparameters
| Naam | Type | Beschrijving |
|---|---|---|
company verplicht | string | Public token of the company file (public_token, 12 characters).bv. XBVD5O1L29HC |
type verplicht | string | Recycle bin type: third_parties, accounts, journals, journal_rules, bank_rules, recurring_entries, analytic_codes, fixed_assets, documents, document_imports, integrations.bv. third_parties |
id verplicht | integer | Id of the record. bv. 42 |
Gemeenschappelijke headers: Accept-Language X-Client-Mutation-Id X-Operation-Id X-Device-Id X-Device-Name X-Occurred-At X-Origin X-Base-Version
Antwoorden
204Done, no body.
Antwoordheaders X-Operation-Id X-Idempotent-Replay X-Trashed
token_ability_missing, session_token_required), demo restriction (demo_mode) or invalid URL signature. ErrorX-Base-Version. Nothing was modified. VersionConflictVoorbeeldaanroep
curl -X DELETE "https://api.novafisko.com/v1/companies/XBVD5O1L29HC/trash/third_parties/42" \
-H "Accept: application/json" \
-H "Authorization: Bearer $NOVAFISKO_TOKEN" \
-H "X-Client-Mutation-Id: b0a6f6f0-7d1c-4c5e-8a55-3f2b1c9d0e11"<?php
$client = new \GuzzleHttp\Client();
$response = $client->request('DELETE', 'https://api.novafisko.com/v1/companies/XBVD5O1L29HC/trash/third_parties/42', [
'headers' => [
'Accept' => 'application/json',
'Authorization' => 'Bearer '.getenv('NOVAFISKO_TOKEN'),
'X-Client-Mutation-Id' => 'b0a6f6f0-7d1c-4c5e-8a55-3f2b1c9d0e11',
],
]);
$data = json_decode((string) $response->getBody(), true);const response = await fetch("https://api.novafisko.com/v1/companies/XBVD5O1L29HC/trash/third_parties/42", {
method: "DELETE",
headers: {
"Accept": "application/json",
"Authorization": `Bearer ${process.env.NOVAFISKO_TOKEN}`,
"X-Client-Mutation-Id": "b0a6f6f0-7d1c-4c5e-8a55-3f2b1c9d0e11",
},
});
if (!response.ok) {
const error = await response.json();
throw new Error(error.code ?? error.message);
}
const data = response.status === 204 ? null : await response.json();import os
import requests
response = requests.delete(
"https://api.novafisko.com/v1/companies/XBVD5O1L29HC/trash/third_parties/42",
headers={
"Accept": "application/json",
"Authorization": f"Bearer {os.environ['NOVAFISKO_TOKEN']}",
"X-Client-Mutation-Id": "b0a6f6f0-7d1c-4c5e-8a55-3f2b1c9d0e11",
},
timeout=30,
)
response.raise_for_status()
data = response.json() if response.content else NoneGET/v1/companies/{company}/third-parties/{id}/historyHistory of one record (third parties) read
Same items as the version history, limited to one record.
Integration tokens need the read ability.
Operatie-id companies.history.subject.third-parties
Padparameters
| Naam | Type | Beschrijving |
|---|---|---|
company verplicht | string | Public token of the company file (public_token, 12 characters).bv. XBVD5O1L29HC |
id verplicht | integer | Id of the record. bv. 42 |
Queryparameters
| Naam | Type | Beschrijving |
|---|---|---|
page | integer | Page number, starting at 1. bv. 1 |
per_page | integer | Items per page (default 50, maximum 200). bv. 50 |
Gemeenschappelijke headers: Accept-Language
Antwoorden
200Paginated list
application/json
Voorbeeld
{
"current_page": 1,
"data": [
{
"id": 2301,
"action": "created",
"effect": "updated",
"action_label": "Modification · Tiers",
"subject_type": "third_parties",
"subject_type_label": "Tiers",
"subject_id": 18,
"subject_label": "DUBUISSON · Brasserie Dubuisson SA",
"user": null,
"actor_name": "Claire Dumont",
"changes": [
{
"field": "payment_terms_days",
"label": "Délai de paiement",
"old": null,
"new": null
}
],
"version": 4,
"operation_id": "bf413a19-2136-4504-bc42-b314637eb5c7",
"client_mutation_id": "b0a6f6f0-7d1c-4c5e-8a55-3f2b1c9d0e11",
"origin": "online",
"device_id": "mac-7F3A21",
"device_name": "MacBook de Claire",
"reason": "string",
"reverts_revision_id": 42,
"reverted_at": "2026-03-15T09:41:00+00:00",
"reverted_by_revision_id": 42,
"occurred_at": "2026-03-15T09:41:00+00:00",
"created_at": "2026-03-15T09:41:00+00:00",
"can_revert": true,
"revert_blocked_reason": "string",
"revert_blocked_message": "string",
"revert_effect": "string",
"snapshot_before": {},
"snapshot_after": {},
"ip": "string"
}
],
"first_page_url": "https://api.novafisko.com/v1/companies/XBVD5O1L29HC",
"from": 1,
"last_page": 4,
"last_page_url": "https://api.novafisko.com/v1/companies/XBVD5O1L29HC",
"links": [
{
"url": "https://api.novafisko.com/v1/companies/XBVD5O1L29HC",
"label": "1",
"page": 1,
"active": true
}
],
"next_page_url": "https://api.novafisko.com/v1/companies/XBVD5O1L29HC",
"path": "https://api.novafisko.com/v1/companies/XBVD5O1L29HC",
"per_page": 50,
"prev_page_url": "https://api.novafisko.com/v1/companies/XBVD5O1L29HC",
"to": 50,
"total": 187
}token_ability_missing, session_token_required), demo restriction (demo_mode) or invalid URL signature. ErrorVoorbeeldaanroep
curl -X GET "https://api.novafisko.com/v1/companies/XBVD5O1L29HC/third-parties/42/history" \
-H "Accept: application/json" \
-H "Authorization: Bearer $NOVAFISKO_TOKEN"<?php
$client = new \GuzzleHttp\Client();
$response = $client->request('GET', 'https://api.novafisko.com/v1/companies/XBVD5O1L29HC/third-parties/42/history', [
'headers' => [
'Accept' => 'application/json',
'Authorization' => 'Bearer '.getenv('NOVAFISKO_TOKEN'),
],
]);
$data = json_decode((string) $response->getBody(), true);const response = await fetch("https://api.novafisko.com/v1/companies/XBVD5O1L29HC/third-parties/42/history", {
method: "GET",
headers: {
"Accept": "application/json",
"Authorization": `Bearer ${process.env.NOVAFISKO_TOKEN}`,
},
});
if (!response.ok) {
const error = await response.json();
throw new Error(error.code ?? error.message);
}
const data = response.status === 204 ? null : await response.json();import os
import requests
response = requests.get(
"https://api.novafisko.com/v1/companies/XBVD5O1L29HC/third-parties/42/history",
headers={
"Accept": "application/json",
"Authorization": f"Bearer {os.environ['NOVAFISKO_TOKEN']}",
},
timeout=30,
)
response.raise_for_status()
data = response.json() if response.content else NoneGET/v1/companies/{company}/entries/{id}/historyHistory of one record (entries) read
Same items as the version history, limited to one record.
Integration tokens need the read ability.
Operatie-id companies.history.subject.entries
Padparameters
| Naam | Type | Beschrijving |
|---|---|---|
company verplicht | string | Public token of the company file (public_token, 12 characters).bv. XBVD5O1L29HC |
id verplicht | integer | Id of the record. bv. 42 |
Queryparameters
| Naam | Type | Beschrijving |
|---|---|---|
page | integer | Page number, starting at 1. bv. 1 |
per_page | integer | Items per page (default 50, maximum 200). bv. 50 |
Gemeenschappelijke headers: Accept-Language
Antwoorden
200Paginated list
application/json
Voorbeeld
{
"current_page": 1,
"data": [
{
"id": 2301,
"action": "created",
"effect": "updated",
"action_label": "Modification · Tiers",
"subject_type": "third_parties",
"subject_type_label": "Tiers",
"subject_id": 18,
"subject_label": "DUBUISSON · Brasserie Dubuisson SA",
"user": null,
"actor_name": "Claire Dumont",
"changes": [
{
"field": "payment_terms_days",
"label": "Délai de paiement",
"old": null,
"new": null
}
],
"version": 4,
"operation_id": "bf413a19-2136-4504-bc42-b314637eb5c7",
"client_mutation_id": "b0a6f6f0-7d1c-4c5e-8a55-3f2b1c9d0e11",
"origin": "online",
"device_id": "mac-7F3A21",
"device_name": "MacBook de Claire",
"reason": "string",
"reverts_revision_id": 42,
"reverted_at": "2026-03-15T09:41:00+00:00",
"reverted_by_revision_id": 42,
"occurred_at": "2026-03-15T09:41:00+00:00",
"created_at": "2026-03-15T09:41:00+00:00",
"can_revert": true,
"revert_blocked_reason": "string",
"revert_blocked_message": "string",
"revert_effect": "string",
"snapshot_before": {},
"snapshot_after": {},
"ip": "string"
}
],
"first_page_url": "https://api.novafisko.com/v1/companies/XBVD5O1L29HC",
"from": 1,
"last_page": 4,
"last_page_url": "https://api.novafisko.com/v1/companies/XBVD5O1L29HC",
"links": [
{
"url": "https://api.novafisko.com/v1/companies/XBVD5O1L29HC",
"label": "1",
"page": 1,
"active": true
}
],
"next_page_url": "https://api.novafisko.com/v1/companies/XBVD5O1L29HC",
"path": "https://api.novafisko.com/v1/companies/XBVD5O1L29HC",
"per_page": 50,
"prev_page_url": "https://api.novafisko.com/v1/companies/XBVD5O1L29HC",
"to": 50,
"total": 187
}token_ability_missing, session_token_required), demo restriction (demo_mode) or invalid URL signature. ErrorVoorbeeldaanroep
curl -X GET "https://api.novafisko.com/v1/companies/XBVD5O1L29HC/entries/42/history" \
-H "Accept: application/json" \
-H "Authorization: Bearer $NOVAFISKO_TOKEN"<?php
$client = new \GuzzleHttp\Client();
$response = $client->request('GET', 'https://api.novafisko.com/v1/companies/XBVD5O1L29HC/entries/42/history', [
'headers' => [
'Accept' => 'application/json',
'Authorization' => 'Bearer '.getenv('NOVAFISKO_TOKEN'),
],
]);
$data = json_decode((string) $response->getBody(), true);const response = await fetch("https://api.novafisko.com/v1/companies/XBVD5O1L29HC/entries/42/history", {
method: "GET",
headers: {
"Accept": "application/json",
"Authorization": `Bearer ${process.env.NOVAFISKO_TOKEN}`,
},
});
if (!response.ok) {
const error = await response.json();
throw new Error(error.code ?? error.message);
}
const data = response.status === 204 ? null : await response.json();import os
import requests
response = requests.get(
"https://api.novafisko.com/v1/companies/XBVD5O1L29HC/entries/42/history",
headers={
"Accept": "application/json",
"Authorization": f"Bearer {os.environ['NOVAFISKO_TOKEN']}",
},
timeout=30,
)
response.raise_for_status()
data = response.json() if response.content else NoneGET/v1/companies/{company}/documents/{id}/historyHistory of one record (documents) read
Same items as the version history, limited to one record.
Integration tokens need the read ability.
Operatie-id companies.history.subject.documents
Padparameters
| Naam | Type | Beschrijving |
|---|---|---|
company verplicht | string | Public token of the company file (public_token, 12 characters).bv. XBVD5O1L29HC |
id verplicht | integer | Id of the record. bv. 42 |
Queryparameters
| Naam | Type | Beschrijving |
|---|---|---|
page | integer | Page number, starting at 1. bv. 1 |
per_page | integer | Items per page (default 50, maximum 200). bv. 50 |
Gemeenschappelijke headers: Accept-Language
Antwoorden
200Paginated list
application/json
Voorbeeld
{
"current_page": 1,
"data": [
{
"id": 2301,
"action": "created",
"effect": "updated",
"action_label": "Modification · Tiers",
"subject_type": "third_parties",
"subject_type_label": "Tiers",
"subject_id": 18,
"subject_label": "DUBUISSON · Brasserie Dubuisson SA",
"user": null,
"actor_name": "Claire Dumont",
"changes": [
{
"field": "payment_terms_days",
"label": "Délai de paiement",
"old": null,
"new": null
}
],
"version": 4,
"operation_id": "bf413a19-2136-4504-bc42-b314637eb5c7",
"client_mutation_id": "b0a6f6f0-7d1c-4c5e-8a55-3f2b1c9d0e11",
"origin": "online",
"device_id": "mac-7F3A21",
"device_name": "MacBook de Claire",
"reason": "string",
"reverts_revision_id": 42,
"reverted_at": "2026-03-15T09:41:00+00:00",
"reverted_by_revision_id": 42,
"occurred_at": "2026-03-15T09:41:00+00:00",
"created_at": "2026-03-15T09:41:00+00:00",
"can_revert": true,
"revert_blocked_reason": "string",
"revert_blocked_message": "string",
"revert_effect": "string",
"snapshot_before": {},
"snapshot_after": {},
"ip": "string"
}
],
"first_page_url": "https://api.novafisko.com/v1/companies/XBVD5O1L29HC",
"from": 1,
"last_page": 4,
"last_page_url": "https://api.novafisko.com/v1/companies/XBVD5O1L29HC",
"links": [
{
"url": "https://api.novafisko.com/v1/companies/XBVD5O1L29HC",
"label": "1",
"page": 1,
"active": true
}
],
"next_page_url": "https://api.novafisko.com/v1/companies/XBVD5O1L29HC",
"path": "https://api.novafisko.com/v1/companies/XBVD5O1L29HC",
"per_page": 50,
"prev_page_url": "https://api.novafisko.com/v1/companies/XBVD5O1L29HC",
"to": 50,
"total": 187
}token_ability_missing, session_token_required), demo restriction (demo_mode) or invalid URL signature. ErrorVoorbeeldaanroep
curl -X GET "https://api.novafisko.com/v1/companies/XBVD5O1L29HC/documents/42/history" \
-H "Accept: application/json" \
-H "Authorization: Bearer $NOVAFISKO_TOKEN"<?php
$client = new \GuzzleHttp\Client();
$response = $client->request('GET', 'https://api.novafisko.com/v1/companies/XBVD5O1L29HC/documents/42/history', [
'headers' => [
'Accept' => 'application/json',
'Authorization' => 'Bearer '.getenv('NOVAFISKO_TOKEN'),
],
]);
$data = json_decode((string) $response->getBody(), true);const response = await fetch("https://api.novafisko.com/v1/companies/XBVD5O1L29HC/documents/42/history", {
method: "GET",
headers: {
"Accept": "application/json",
"Authorization": `Bearer ${process.env.NOVAFISKO_TOKEN}`,
},
});
if (!response.ok) {
const error = await response.json();
throw new Error(error.code ?? error.message);
}
const data = response.status === 204 ? null : await response.json();import os
import requests
response = requests.get(
"https://api.novafisko.com/v1/companies/XBVD5O1L29HC/documents/42/history",
headers={
"Accept": "application/json",
"Authorization": f"Bearer {os.environ['NOVAFISKO_TOKEN']}",
},
timeout=30,
)
response.raise_for_status()
data = response.json() if response.content else NoneGET/v1/companies/{company}/accounts/{id}/historyHistory of one record (accounts) read
Same items as the version history, limited to one record.
Integration tokens need the read ability.
Operatie-id companies.history.subject.accounts
Padparameters
| Naam | Type | Beschrijving |
|---|---|---|
company verplicht | string | Public token of the company file (public_token, 12 characters).bv. XBVD5O1L29HC |
id verplicht | integer | Id of the record. bv. 42 |
Queryparameters
| Naam | Type | Beschrijving |
|---|---|---|
page | integer | Page number, starting at 1. bv. 1 |
per_page | integer | Items per page (default 50, maximum 200). bv. 50 |
Gemeenschappelijke headers: Accept-Language
Antwoorden
200Paginated list
application/json
Voorbeeld
{
"current_page": 1,
"data": [
{
"id": 2301,
"action": "created",
"effect": "updated",
"action_label": "Modification · Tiers",
"subject_type": "third_parties",
"subject_type_label": "Tiers",
"subject_id": 18,
"subject_label": "DUBUISSON · Brasserie Dubuisson SA",
"user": null,
"actor_name": "Claire Dumont",
"changes": [
{
"field": "payment_terms_days",
"label": "Délai de paiement",
"old": null,
"new": null
}
],
"version": 4,
"operation_id": "bf413a19-2136-4504-bc42-b314637eb5c7",
"client_mutation_id": "b0a6f6f0-7d1c-4c5e-8a55-3f2b1c9d0e11",
"origin": "online",
"device_id": "mac-7F3A21",
"device_name": "MacBook de Claire",
"reason": "string",
"reverts_revision_id": 42,
"reverted_at": "2026-03-15T09:41:00+00:00",
"reverted_by_revision_id": 42,
"occurred_at": "2026-03-15T09:41:00+00:00",
"created_at": "2026-03-15T09:41:00+00:00",
"can_revert": true,
"revert_blocked_reason": "string",
"revert_blocked_message": "string",
"revert_effect": "string",
"snapshot_before": {},
"snapshot_after": {},
"ip": "string"
}
],
"first_page_url": "https://api.novafisko.com/v1/companies/XBVD5O1L29HC",
"from": 1,
"last_page": 4,
"last_page_url": "https://api.novafisko.com/v1/companies/XBVD5O1L29HC",
"links": [
{
"url": "https://api.novafisko.com/v1/companies/XBVD5O1L29HC",
"label": "1",
"page": 1,
"active": true
}
],
"next_page_url": "https://api.novafisko.com/v1/companies/XBVD5O1L29HC",
"path": "https://api.novafisko.com/v1/companies/XBVD5O1L29HC",
"per_page": 50,
"prev_page_url": "https://api.novafisko.com/v1/companies/XBVD5O1L29HC",
"to": 50,
"total": 187
}token_ability_missing, session_token_required), demo restriction (demo_mode) or invalid URL signature. ErrorVoorbeeldaanroep
curl -X GET "https://api.novafisko.com/v1/companies/XBVD5O1L29HC/accounts/42/history" \
-H "Accept: application/json" \
-H "Authorization: Bearer $NOVAFISKO_TOKEN"<?php
$client = new \GuzzleHttp\Client();
$response = $client->request('GET', 'https://api.novafisko.com/v1/companies/XBVD5O1L29HC/accounts/42/history', [
'headers' => [
'Accept' => 'application/json',
'Authorization' => 'Bearer '.getenv('NOVAFISKO_TOKEN'),
],
]);
$data = json_decode((string) $response->getBody(), true);const response = await fetch("https://api.novafisko.com/v1/companies/XBVD5O1L29HC/accounts/42/history", {
method: "GET",
headers: {
"Accept": "application/json",
"Authorization": `Bearer ${process.env.NOVAFISKO_TOKEN}`,
},
});
if (!response.ok) {
const error = await response.json();
throw new Error(error.code ?? error.message);
}
const data = response.status === 204 ? null : await response.json();import os
import requests
response = requests.get(
"https://api.novafisko.com/v1/companies/XBVD5O1L29HC/accounts/42/history",
headers={
"Accept": "application/json",
"Authorization": f"Bearer {os.environ['NOVAFISKO_TOKEN']}",
},
timeout=30,
)
response.raise_for_status()
data = response.json() if response.content else NoneGET/v1/companies/{company}/bank-transactions/{id}/historyHistory of one record (bank transactions) read
Same items as the version history, limited to one record.
Integration tokens need the read ability.
Operatie-id companies.history.subject.bank-transactions
Padparameters
| Naam | Type | Beschrijving |
|---|---|---|
company verplicht | string | Public token of the company file (public_token, 12 characters).bv. XBVD5O1L29HC |
id verplicht | integer | Id of the record. bv. 42 |
Queryparameters
| Naam | Type | Beschrijving |
|---|---|---|
page | integer | Page number, starting at 1. bv. 1 |
per_page | integer | Items per page (default 50, maximum 200). bv. 50 |
Gemeenschappelijke headers: Accept-Language
Antwoorden
200Paginated list
application/json
Voorbeeld
{
"current_page": 1,
"data": [
{
"id": 2301,
"action": "created",
"effect": "updated",
"action_label": "Modification · Tiers",
"subject_type": "third_parties",
"subject_type_label": "Tiers",
"subject_id": 18,
"subject_label": "DUBUISSON · Brasserie Dubuisson SA",
"user": null,
"actor_name": "Claire Dumont",
"changes": [
{
"field": "payment_terms_days",
"label": "Délai de paiement",
"old": null,
"new": null
}
],
"version": 4,
"operation_id": "bf413a19-2136-4504-bc42-b314637eb5c7",
"client_mutation_id": "b0a6f6f0-7d1c-4c5e-8a55-3f2b1c9d0e11",
"origin": "online",
"device_id": "mac-7F3A21",
"device_name": "MacBook de Claire",
"reason": "string",
"reverts_revision_id": 42,
"reverted_at": "2026-03-15T09:41:00+00:00",
"reverted_by_revision_id": 42,
"occurred_at": "2026-03-15T09:41:00+00:00",
"created_at": "2026-03-15T09:41:00+00:00",
"can_revert": true,
"revert_blocked_reason": "string",
"revert_blocked_message": "string",
"revert_effect": "string",
"snapshot_before": {},
"snapshot_after": {},
"ip": "string"
}
],
"first_page_url": "https://api.novafisko.com/v1/companies/XBVD5O1L29HC",
"from": 1,
"last_page": 4,
"last_page_url": "https://api.novafisko.com/v1/companies/XBVD5O1L29HC",
"links": [
{
"url": "https://api.novafisko.com/v1/companies/XBVD5O1L29HC",
"label": "1",
"page": 1,
"active": true
}
],
"next_page_url": "https://api.novafisko.com/v1/companies/XBVD5O1L29HC",
"path": "https://api.novafisko.com/v1/companies/XBVD5O1L29HC",
"per_page": 50,
"prev_page_url": "https://api.novafisko.com/v1/companies/XBVD5O1L29HC",
"to": 50,
"total": 187
}token_ability_missing, session_token_required), demo restriction (demo_mode) or invalid URL signature. ErrorVoorbeeldaanroep
curl -X GET "https://api.novafisko.com/v1/companies/XBVD5O1L29HC/bank-transactions/42/history" \
-H "Accept: application/json" \
-H "Authorization: Bearer $NOVAFISKO_TOKEN"<?php
$client = new \GuzzleHttp\Client();
$response = $client->request('GET', 'https://api.novafisko.com/v1/companies/XBVD5O1L29HC/bank-transactions/42/history', [
'headers' => [
'Accept' => 'application/json',
'Authorization' => 'Bearer '.getenv('NOVAFISKO_TOKEN'),
],
]);
$data = json_decode((string) $response->getBody(), true);const response = await fetch("https://api.novafisko.com/v1/companies/XBVD5O1L29HC/bank-transactions/42/history", {
method: "GET",
headers: {
"Accept": "application/json",
"Authorization": `Bearer ${process.env.NOVAFISKO_TOKEN}`,
},
});
if (!response.ok) {
const error = await response.json();
throw new Error(error.code ?? error.message);
}
const data = response.status === 204 ? null : await response.json();import os
import requests
response = requests.get(
"https://api.novafisko.com/v1/companies/XBVD5O1L29HC/bank-transactions/42/history",
headers={
"Accept": "application/json",
"Authorization": f"Bearer {os.environ['NOVAFISKO_TOKEN']}",
},
timeout=30,
)
response.raise_for_status()
data = response.json() if response.content else NoneGET/v1/companies/{company}/fixed-assets/{id}/historyHistory of one record (fixed assets) read
Same items as the version history, limited to one record.
Integration tokens need the read ability.
Operatie-id companies.history.subject.fixed-assets
Padparameters
| Naam | Type | Beschrijving |
|---|---|---|
company verplicht | string | Public token of the company file (public_token, 12 characters).bv. XBVD5O1L29HC |
id verplicht | integer | Id of the record. bv. 42 |
Queryparameters
| Naam | Type | Beschrijving |
|---|---|---|
page | integer | Page number, starting at 1. bv. 1 |
per_page | integer | Items per page (default 50, maximum 200). bv. 50 |
Gemeenschappelijke headers: Accept-Language
Antwoorden
200Paginated list
application/json
Voorbeeld
{
"current_page": 1,
"data": [
{
"id": 2301,
"action": "created",
"effect": "updated",
"action_label": "Modification · Tiers",
"subject_type": "third_parties",
"subject_type_label": "Tiers",
"subject_id": 18,
"subject_label": "DUBUISSON · Brasserie Dubuisson SA",
"user": null,
"actor_name": "Claire Dumont",
"changes": [
{
"field": "payment_terms_days",
"label": "Délai de paiement",
"old": null,
"new": null
}
],
"version": 4,
"operation_id": "bf413a19-2136-4504-bc42-b314637eb5c7",
"client_mutation_id": "b0a6f6f0-7d1c-4c5e-8a55-3f2b1c9d0e11",
"origin": "online",
"device_id": "mac-7F3A21",
"device_name": "MacBook de Claire",
"reason": "string",
"reverts_revision_id": 42,
"reverted_at": "2026-03-15T09:41:00+00:00",
"reverted_by_revision_id": 42,
"occurred_at": "2026-03-15T09:41:00+00:00",
"created_at": "2026-03-15T09:41:00+00:00",
"can_revert": true,
"revert_blocked_reason": "string",
"revert_blocked_message": "string",
"revert_effect": "string",
"snapshot_before": {},
"snapshot_after": {},
"ip": "string"
}
],
"first_page_url": "https://api.novafisko.com/v1/companies/XBVD5O1L29HC",
"from": 1,
"last_page": 4,
"last_page_url": "https://api.novafisko.com/v1/companies/XBVD5O1L29HC",
"links": [
{
"url": "https://api.novafisko.com/v1/companies/XBVD5O1L29HC",
"label": "1",
"page": 1,
"active": true
}
],
"next_page_url": "https://api.novafisko.com/v1/companies/XBVD5O1L29HC",
"path": "https://api.novafisko.com/v1/companies/XBVD5O1L29HC",
"per_page": 50,
"prev_page_url": "https://api.novafisko.com/v1/companies/XBVD5O1L29HC",
"to": 50,
"total": 187
}token_ability_missing, session_token_required), demo restriction (demo_mode) or invalid URL signature. ErrorVoorbeeldaanroep
curl -X GET "https://api.novafisko.com/v1/companies/XBVD5O1L29HC/fixed-assets/42/history" \
-H "Accept: application/json" \
-H "Authorization: Bearer $NOVAFISKO_TOKEN"<?php
$client = new \GuzzleHttp\Client();
$response = $client->request('GET', 'https://api.novafisko.com/v1/companies/XBVD5O1L29HC/fixed-assets/42/history', [
'headers' => [
'Accept' => 'application/json',
'Authorization' => 'Bearer '.getenv('NOVAFISKO_TOKEN'),
],
]);
$data = json_decode((string) $response->getBody(), true);const response = await fetch("https://api.novafisko.com/v1/companies/XBVD5O1L29HC/fixed-assets/42/history", {
method: "GET",
headers: {
"Accept": "application/json",
"Authorization": `Bearer ${process.env.NOVAFISKO_TOKEN}`,
},
});
if (!response.ok) {
const error = await response.json();
throw new Error(error.code ?? error.message);
}
const data = response.status === 204 ? null : await response.json();import os
import requests
response = requests.get(
"https://api.novafisko.com/v1/companies/XBVD5O1L29HC/fixed-assets/42/history",
headers={
"Accept": "application/json",
"Authorization": f"Bearer {os.environ['NOVAFISKO_TOKEN']}",
},
timeout=30,
)
response.raise_for_status()
data = response.json() if response.content else NoneGET/v1/companies/{company}/journals/{id}/historyHistory of one record (journals) read
Same items as the version history, limited to one record.
Integration tokens need the read ability.
Operatie-id companies.history.subject.journals
Padparameters
| Naam | Type | Beschrijving |
|---|---|---|
company verplicht | string | Public token of the company file (public_token, 12 characters).bv. XBVD5O1L29HC |
id verplicht | integer | Id of the record. bv. 42 |
Queryparameters
| Naam | Type | Beschrijving |
|---|---|---|
page | integer | Page number, starting at 1. bv. 1 |
per_page | integer | Items per page (default 50, maximum 200). bv. 50 |
Gemeenschappelijke headers: Accept-Language
Antwoorden
200Paginated list
application/json
Voorbeeld
{
"current_page": 1,
"data": [
{
"id": 2301,
"action": "created",
"effect": "updated",
"action_label": "Modification · Tiers",
"subject_type": "third_parties",
"subject_type_label": "Tiers",
"subject_id": 18,
"subject_label": "DUBUISSON · Brasserie Dubuisson SA",
"user": null,
"actor_name": "Claire Dumont",
"changes": [
{
"field": "payment_terms_days",
"label": "Délai de paiement",
"old": null,
"new": null
}
],
"version": 4,
"operation_id": "bf413a19-2136-4504-bc42-b314637eb5c7",
"client_mutation_id": "b0a6f6f0-7d1c-4c5e-8a55-3f2b1c9d0e11",
"origin": "online",
"device_id": "mac-7F3A21",
"device_name": "MacBook de Claire",
"reason": "string",
"reverts_revision_id": 42,
"reverted_at": "2026-03-15T09:41:00+00:00",
"reverted_by_revision_id": 42,
"occurred_at": "2026-03-15T09:41:00+00:00",
"created_at": "2026-03-15T09:41:00+00:00",
"can_revert": true,
"revert_blocked_reason": "string",
"revert_blocked_message": "string",
"revert_effect": "string",
"snapshot_before": {},
"snapshot_after": {},
"ip": "string"
}
],
"first_page_url": "https://api.novafisko.com/v1/companies/XBVD5O1L29HC",
"from": 1,
"last_page": 4,
"last_page_url": "https://api.novafisko.com/v1/companies/XBVD5O1L29HC",
"links": [
{
"url": "https://api.novafisko.com/v1/companies/XBVD5O1L29HC",
"label": "1",
"page": 1,
"active": true
}
],
"next_page_url": "https://api.novafisko.com/v1/companies/XBVD5O1L29HC",
"path": "https://api.novafisko.com/v1/companies/XBVD5O1L29HC",
"per_page": 50,
"prev_page_url": "https://api.novafisko.com/v1/companies/XBVD5O1L29HC",
"to": 50,
"total": 187
}token_ability_missing, session_token_required), demo restriction (demo_mode) or invalid URL signature. ErrorVoorbeeldaanroep
curl -X GET "https://api.novafisko.com/v1/companies/XBVD5O1L29HC/journals/42/history" \
-H "Accept: application/json" \
-H "Authorization: Bearer $NOVAFISKO_TOKEN"<?php
$client = new \GuzzleHttp\Client();
$response = $client->request('GET', 'https://api.novafisko.com/v1/companies/XBVD5O1L29HC/journals/42/history', [
'headers' => [
'Accept' => 'application/json',
'Authorization' => 'Bearer '.getenv('NOVAFISKO_TOKEN'),
],
]);
$data = json_decode((string) $response->getBody(), true);const response = await fetch("https://api.novafisko.com/v1/companies/XBVD5O1L29HC/journals/42/history", {
method: "GET",
headers: {
"Accept": "application/json",
"Authorization": `Bearer ${process.env.NOVAFISKO_TOKEN}`,
},
});
if (!response.ok) {
const error = await response.json();
throw new Error(error.code ?? error.message);
}
const data = response.status === 204 ? null : await response.json();import os
import requests
response = requests.get(
"https://api.novafisko.com/v1/companies/XBVD5O1L29HC/journals/42/history",
headers={
"Accept": "application/json",
"Authorization": f"Bearer {os.environ['NOVAFISKO_TOKEN']}",
},
timeout=30,
)
response.raise_for_status()
data = response.json() if response.content else NoneGET/v1/companies/{company}/recurring-entries/{id}/historyHistory of one record (recurring entries) read
Same items as the version history, limited to one record.
Integration tokens need the read ability.
Operatie-id companies.history.subject.recurring-entries
Padparameters
| Naam | Type | Beschrijving |
|---|---|---|
company verplicht | string | Public token of the company file (public_token, 12 characters).bv. XBVD5O1L29HC |
id verplicht | integer | Id of the record. bv. 42 |
Queryparameters
| Naam | Type | Beschrijving |
|---|---|---|
page | integer | Page number, starting at 1. bv. 1 |
per_page | integer | Items per page (default 50, maximum 200). bv. 50 |
Gemeenschappelijke headers: Accept-Language
Antwoorden
200Paginated list
application/json
Voorbeeld
{
"current_page": 1,
"data": [
{
"id": 2301,
"action": "created",
"effect": "updated",
"action_label": "Modification · Tiers",
"subject_type": "third_parties",
"subject_type_label": "Tiers",
"subject_id": 18,
"subject_label": "DUBUISSON · Brasserie Dubuisson SA",
"user": null,
"actor_name": "Claire Dumont",
"changes": [
{
"field": "payment_terms_days",
"label": "Délai de paiement",
"old": null,
"new": null
}
],
"version": 4,
"operation_id": "bf413a19-2136-4504-bc42-b314637eb5c7",
"client_mutation_id": "b0a6f6f0-7d1c-4c5e-8a55-3f2b1c9d0e11",
"origin": "online",
"device_id": "mac-7F3A21",
"device_name": "MacBook de Claire",
"reason": "string",
"reverts_revision_id": 42,
"reverted_at": "2026-03-15T09:41:00+00:00",
"reverted_by_revision_id": 42,
"occurred_at": "2026-03-15T09:41:00+00:00",
"created_at": "2026-03-15T09:41:00+00:00",
"can_revert": true,
"revert_blocked_reason": "string",
"revert_blocked_message": "string",
"revert_effect": "string",
"snapshot_before": {},
"snapshot_after": {},
"ip": "string"
}
],
"first_page_url": "https://api.novafisko.com/v1/companies/XBVD5O1L29HC",
"from": 1,
"last_page": 4,
"last_page_url": "https://api.novafisko.com/v1/companies/XBVD5O1L29HC",
"links": [
{
"url": "https://api.novafisko.com/v1/companies/XBVD5O1L29HC",
"label": "1",
"page": 1,
"active": true
}
],
"next_page_url": "https://api.novafisko.com/v1/companies/XBVD5O1L29HC",
"path": "https://api.novafisko.com/v1/companies/XBVD5O1L29HC",
"per_page": 50,
"prev_page_url": "https://api.novafisko.com/v1/companies/XBVD5O1L29HC",
"to": 50,
"total": 187
}token_ability_missing, session_token_required), demo restriction (demo_mode) or invalid URL signature. ErrorVoorbeeldaanroep
curl -X GET "https://api.novafisko.com/v1/companies/XBVD5O1L29HC/recurring-entries/42/history" \
-H "Accept: application/json" \
-H "Authorization: Bearer $NOVAFISKO_TOKEN"<?php
$client = new \GuzzleHttp\Client();
$response = $client->request('GET', 'https://api.novafisko.com/v1/companies/XBVD5O1L29HC/recurring-entries/42/history', [
'headers' => [
'Accept' => 'application/json',
'Authorization' => 'Bearer '.getenv('NOVAFISKO_TOKEN'),
],
]);
$data = json_decode((string) $response->getBody(), true);const response = await fetch("https://api.novafisko.com/v1/companies/XBVD5O1L29HC/recurring-entries/42/history", {
method: "GET",
headers: {
"Accept": "application/json",
"Authorization": `Bearer ${process.env.NOVAFISKO_TOKEN}`,
},
});
if (!response.ok) {
const error = await response.json();
throw new Error(error.code ?? error.message);
}
const data = response.status === 204 ? null : await response.json();import os
import requests
response = requests.get(
"https://api.novafisko.com/v1/companies/XBVD5O1L29HC/recurring-entries/42/history",
headers={
"Accept": "application/json",
"Authorization": f"Bearer {os.environ['NOVAFISKO_TOKEN']}",
},
timeout=30,
)
response.raise_for_status()
data = response.json() if response.content else NoneGET/v1/companies/{company}/vat-declarations/{id}/historyHistory of one record (vat declarations) read
Same items as the version history, limited to one record.
Integration tokens need the read ability.
Operatie-id companies.history.subject.vat-declarations
Padparameters
| Naam | Type | Beschrijving |
|---|---|---|
company verplicht | string | Public token of the company file (public_token, 12 characters).bv. XBVD5O1L29HC |
id verplicht | integer | Id of the record. bv. 42 |
Queryparameters
| Naam | Type | Beschrijving |
|---|---|---|
page | integer | Page number, starting at 1. bv. 1 |
per_page | integer | Items per page (default 50, maximum 200). bv. 50 |
Gemeenschappelijke headers: Accept-Language
Antwoorden
200Paginated list
application/json
Voorbeeld
{
"current_page": 1,
"data": [
{
"id": 2301,
"action": "created",
"effect": "updated",
"action_label": "Modification · Tiers",
"subject_type": "third_parties",
"subject_type_label": "Tiers",
"subject_id": 18,
"subject_label": "DUBUISSON · Brasserie Dubuisson SA",
"user": null,
"actor_name": "Claire Dumont",
"changes": [
{
"field": "payment_terms_days",
"label": "Délai de paiement",
"old": null,
"new": null
}
],
"version": 4,
"operation_id": "bf413a19-2136-4504-bc42-b314637eb5c7",
"client_mutation_id": "b0a6f6f0-7d1c-4c5e-8a55-3f2b1c9d0e11",
"origin": "online",
"device_id": "mac-7F3A21",
"device_name": "MacBook de Claire",
"reason": "string",
"reverts_revision_id": 42,
"reverted_at": "2026-03-15T09:41:00+00:00",
"reverted_by_revision_id": 42,
"occurred_at": "2026-03-15T09:41:00+00:00",
"created_at": "2026-03-15T09:41:00+00:00",
"can_revert": true,
"revert_blocked_reason": "string",
"revert_blocked_message": "string",
"revert_effect": "string",
"snapshot_before": {},
"snapshot_after": {},
"ip": "string"
}
],
"first_page_url": "https://api.novafisko.com/v1/companies/XBVD5O1L29HC",
"from": 1,
"last_page": 4,
"last_page_url": "https://api.novafisko.com/v1/companies/XBVD5O1L29HC",
"links": [
{
"url": "https://api.novafisko.com/v1/companies/XBVD5O1L29HC",
"label": "1",
"page": 1,
"active": true
}
],
"next_page_url": "https://api.novafisko.com/v1/companies/XBVD5O1L29HC",
"path": "https://api.novafisko.com/v1/companies/XBVD5O1L29HC",
"per_page": 50,
"prev_page_url": "https://api.novafisko.com/v1/companies/XBVD5O1L29HC",
"to": 50,
"total": 187
}token_ability_missing, session_token_required), demo restriction (demo_mode) or invalid URL signature. ErrorVoorbeeldaanroep
curl -X GET "https://api.novafisko.com/v1/companies/XBVD5O1L29HC/vat-declarations/42/history" \
-H "Accept: application/json" \
-H "Authorization: Bearer $NOVAFISKO_TOKEN"<?php
$client = new \GuzzleHttp\Client();
$response = $client->request('GET', 'https://api.novafisko.com/v1/companies/XBVD5O1L29HC/vat-declarations/42/history', [
'headers' => [
'Accept' => 'application/json',
'Authorization' => 'Bearer '.getenv('NOVAFISKO_TOKEN'),
],
]);
$data = json_decode((string) $response->getBody(), true);const response = await fetch("https://api.novafisko.com/v1/companies/XBVD5O1L29HC/vat-declarations/42/history", {
method: "GET",
headers: {
"Accept": "application/json",
"Authorization": `Bearer ${process.env.NOVAFISKO_TOKEN}`,
},
});
if (!response.ok) {
const error = await response.json();
throw new Error(error.code ?? error.message);
}
const data = response.status === 204 ? null : await response.json();import os
import requests
response = requests.get(
"https://api.novafisko.com/v1/companies/XBVD5O1L29HC/vat-declarations/42/history",
headers={
"Accept": "application/json",
"Authorization": f"Bearer {os.environ['NOVAFISKO_TOKEN']}",
},
timeout=30,
)
response.raise_for_status()
data = response.json() if response.content else NoneDELETE/v1/companies/{company}/accounts/{id}Move to the recycle bin (accounts) write
Refused with 422 when the record is used or booked.
Integration tokens need the write ability.
Error codes (code):
in_use: the record is used by entries or documentsbooked: the record is booked: reverse the entry first
Operatie-id companies.trash.destroy.accounts
Padparameters
| Naam | Type | Beschrijving |
|---|---|---|
company verplicht | string | Public token of the company file (public_token, 12 characters).bv. XBVD5O1L29HC |
id verplicht | integer | Id of the record. bv. 42 |
Gemeenschappelijke headers: Accept-Language X-Client-Mutation-Id X-Operation-Id X-Device-Id X-Device-Name X-Occurred-At X-Origin X-Base-Version
Antwoorden
204Done, no body.
Antwoordheaders X-Operation-Id X-Idempotent-Replay X-Trashed
token_ability_missing, session_token_required), demo restriction (demo_mode) or invalid URL signature. ErrorX-Base-Version. Nothing was modified. VersionConflicterrors maps each field to its messages; code is present when the refusal has a machine reason. ErrorVoorbeeldaanroep
curl -X DELETE "https://api.novafisko.com/v1/companies/XBVD5O1L29HC/accounts/42" \
-H "Accept: application/json" \
-H "Authorization: Bearer $NOVAFISKO_TOKEN" \
-H "X-Client-Mutation-Id: b0a6f6f0-7d1c-4c5e-8a55-3f2b1c9d0e11"<?php
$client = new \GuzzleHttp\Client();
$response = $client->request('DELETE', 'https://api.novafisko.com/v1/companies/XBVD5O1L29HC/accounts/42', [
'headers' => [
'Accept' => 'application/json',
'Authorization' => 'Bearer '.getenv('NOVAFISKO_TOKEN'),
'X-Client-Mutation-Id' => 'b0a6f6f0-7d1c-4c5e-8a55-3f2b1c9d0e11',
],
]);
$data = json_decode((string) $response->getBody(), true);const response = await fetch("https://api.novafisko.com/v1/companies/XBVD5O1L29HC/accounts/42", {
method: "DELETE",
headers: {
"Accept": "application/json",
"Authorization": `Bearer ${process.env.NOVAFISKO_TOKEN}`,
"X-Client-Mutation-Id": "b0a6f6f0-7d1c-4c5e-8a55-3f2b1c9d0e11",
},
});
if (!response.ok) {
const error = await response.json();
throw new Error(error.code ?? error.message);
}
const data = response.status === 204 ? null : await response.json();import os
import requests
response = requests.delete(
"https://api.novafisko.com/v1/companies/XBVD5O1L29HC/accounts/42",
headers={
"Accept": "application/json",
"Authorization": f"Bearer {os.environ['NOVAFISKO_TOKEN']}",
"X-Client-Mutation-Id": "b0a6f6f0-7d1c-4c5e-8a55-3f2b1c9d0e11",
},
timeout=30,
)
response.raise_for_status()
data = response.json() if response.content else NoneDELETE/v1/companies/{company}/analytic-codes/{id}Move to the recycle bin (analytic codes) write
Refused with 422 when the record is used or booked.
Integration tokens need the write ability.
Error codes (code):
in_use: the record is used by entries or documentsbooked: the record is booked: reverse the entry first
Operatie-id companies.trash.destroy.analytic-codes
Padparameters
| Naam | Type | Beschrijving |
|---|---|---|
company verplicht | string | Public token of the company file (public_token, 12 characters).bv. XBVD5O1L29HC |
id verplicht | integer | Id of the record. bv. 42 |
Gemeenschappelijke headers: Accept-Language X-Client-Mutation-Id X-Operation-Id X-Device-Id X-Device-Name X-Occurred-At X-Origin X-Base-Version
Antwoorden
204Done, no body.
Antwoordheaders X-Operation-Id X-Idempotent-Replay X-Trashed
token_ability_missing, session_token_required), demo restriction (demo_mode) or invalid URL signature. ErrorX-Base-Version. Nothing was modified. VersionConflicterrors maps each field to its messages; code is present when the refusal has a machine reason. ErrorVoorbeeldaanroep
curl -X DELETE "https://api.novafisko.com/v1/companies/XBVD5O1L29HC/analytic-codes/42" \
-H "Accept: application/json" \
-H "Authorization: Bearer $NOVAFISKO_TOKEN" \
-H "X-Client-Mutation-Id: b0a6f6f0-7d1c-4c5e-8a55-3f2b1c9d0e11"<?php
$client = new \GuzzleHttp\Client();
$response = $client->request('DELETE', 'https://api.novafisko.com/v1/companies/XBVD5O1L29HC/analytic-codes/42', [
'headers' => [
'Accept' => 'application/json',
'Authorization' => 'Bearer '.getenv('NOVAFISKO_TOKEN'),
'X-Client-Mutation-Id' => 'b0a6f6f0-7d1c-4c5e-8a55-3f2b1c9d0e11',
],
]);
$data = json_decode((string) $response->getBody(), true);const response = await fetch("https://api.novafisko.com/v1/companies/XBVD5O1L29HC/analytic-codes/42", {
method: "DELETE",
headers: {
"Accept": "application/json",
"Authorization": `Bearer ${process.env.NOVAFISKO_TOKEN}`,
"X-Client-Mutation-Id": "b0a6f6f0-7d1c-4c5e-8a55-3f2b1c9d0e11",
},
});
if (!response.ok) {
const error = await response.json();
throw new Error(error.code ?? error.message);
}
const data = response.status === 204 ? null : await response.json();import os
import requests
response = requests.delete(
"https://api.novafisko.com/v1/companies/XBVD5O1L29HC/analytic-codes/42",
headers={
"Accept": "application/json",
"Authorization": f"Bearer {os.environ['NOVAFISKO_TOKEN']}",
"X-Client-Mutation-Id": "b0a6f6f0-7d1c-4c5e-8a55-3f2b1c9d0e11",
},
timeout=30,
)
response.raise_for_status()
data = response.json() if response.content else NoneDELETE/v1/companies/{company}/fixed-assets/{id}Move to the recycle bin (fixed assets) write
Refused with 422 when the record is used or booked.
Integration tokens need the write ability.
Error codes (code):
in_use: the record is used by entries or documentsbooked: the record is booked: reverse the entry first
Operatie-id companies.trash.destroy.fixed-assets
Padparameters
| Naam | Type | Beschrijving |
|---|---|---|
company verplicht | string | Public token of the company file (public_token, 12 characters).bv. XBVD5O1L29HC |
id verplicht | integer | Id of the record. bv. 42 |
Gemeenschappelijke headers: Accept-Language X-Client-Mutation-Id X-Operation-Id X-Device-Id X-Device-Name X-Occurred-At X-Origin X-Base-Version
Antwoorden
204Done, no body.
Antwoordheaders X-Operation-Id X-Idempotent-Replay X-Trashed
token_ability_missing, session_token_required), demo restriction (demo_mode) or invalid URL signature. ErrorX-Base-Version. Nothing was modified. VersionConflicterrors maps each field to its messages; code is present when the refusal has a machine reason. ErrorVoorbeeldaanroep
curl -X DELETE "https://api.novafisko.com/v1/companies/XBVD5O1L29HC/fixed-assets/42" \
-H "Accept: application/json" \
-H "Authorization: Bearer $NOVAFISKO_TOKEN" \
-H "X-Client-Mutation-Id: b0a6f6f0-7d1c-4c5e-8a55-3f2b1c9d0e11"<?php
$client = new \GuzzleHttp\Client();
$response = $client->request('DELETE', 'https://api.novafisko.com/v1/companies/XBVD5O1L29HC/fixed-assets/42', [
'headers' => [
'Accept' => 'application/json',
'Authorization' => 'Bearer '.getenv('NOVAFISKO_TOKEN'),
'X-Client-Mutation-Id' => 'b0a6f6f0-7d1c-4c5e-8a55-3f2b1c9d0e11',
],
]);
$data = json_decode((string) $response->getBody(), true);const response = await fetch("https://api.novafisko.com/v1/companies/XBVD5O1L29HC/fixed-assets/42", {
method: "DELETE",
headers: {
"Accept": "application/json",
"Authorization": `Bearer ${process.env.NOVAFISKO_TOKEN}`,
"X-Client-Mutation-Id": "b0a6f6f0-7d1c-4c5e-8a55-3f2b1c9d0e11",
},
});
if (!response.ok) {
const error = await response.json();
throw new Error(error.code ?? error.message);
}
const data = response.status === 204 ? null : await response.json();import os
import requests
response = requests.delete(
"https://api.novafisko.com/v1/companies/XBVD5O1L29HC/fixed-assets/42",
headers={
"Accept": "application/json",
"Authorization": f"Bearer {os.environ['NOVAFISKO_TOKEN']}",
"X-Client-Mutation-Id": "b0a6f6f0-7d1c-4c5e-8a55-3f2b1c9d0e11",
},
timeout=30,
)
response.raise_for_status()
data = response.json() if response.content else NoneDELETE/v1/companies/{company}/documents/{id}Move to the recycle bin (documents) write
Refused with 422 when the record is used or booked.
Integration tokens need the write ability.
Error codes (code):
in_use: the record is used by entries or documentsbooked: the record is booked: reverse the entry first
Operatie-id companies.trash.destroy.documents
Padparameters
| Naam | Type | Beschrijving |
|---|---|---|
company verplicht | string | Public token of the company file (public_token, 12 characters).bv. XBVD5O1L29HC |
id verplicht | integer | Id of the record. bv. 42 |
Gemeenschappelijke headers: Accept-Language X-Client-Mutation-Id X-Operation-Id X-Device-Id X-Device-Name X-Occurred-At X-Origin X-Base-Version
Antwoorden
204Done, no body.
Antwoordheaders X-Operation-Id X-Idempotent-Replay X-Trashed
token_ability_missing, session_token_required), demo restriction (demo_mode) or invalid URL signature. ErrorX-Base-Version. Nothing was modified. VersionConflicterrors maps each field to its messages; code is present when the refusal has a machine reason. ErrorVoorbeeldaanroep
curl -X DELETE "https://api.novafisko.com/v1/companies/XBVD5O1L29HC/documents/42" \
-H "Accept: application/json" \
-H "Authorization: Bearer $NOVAFISKO_TOKEN" \
-H "X-Client-Mutation-Id: b0a6f6f0-7d1c-4c5e-8a55-3f2b1c9d0e11"<?php
$client = new \GuzzleHttp\Client();
$response = $client->request('DELETE', 'https://api.novafisko.com/v1/companies/XBVD5O1L29HC/documents/42', [
'headers' => [
'Accept' => 'application/json',
'Authorization' => 'Bearer '.getenv('NOVAFISKO_TOKEN'),
'X-Client-Mutation-Id' => 'b0a6f6f0-7d1c-4c5e-8a55-3f2b1c9d0e11',
],
]);
$data = json_decode((string) $response->getBody(), true);const response = await fetch("https://api.novafisko.com/v1/companies/XBVD5O1L29HC/documents/42", {
method: "DELETE",
headers: {
"Accept": "application/json",
"Authorization": `Bearer ${process.env.NOVAFISKO_TOKEN}`,
"X-Client-Mutation-Id": "b0a6f6f0-7d1c-4c5e-8a55-3f2b1c9d0e11",
},
});
if (!response.ok) {
const error = await response.json();
throw new Error(error.code ?? error.message);
}
const data = response.status === 204 ? null : await response.json();import os
import requests
response = requests.delete(
"https://api.novafisko.com/v1/companies/XBVD5O1L29HC/documents/42",
headers={
"Accept": "application/json",
"Authorization": f"Bearer {os.environ['NOVAFISKO_TOKEN']}",
"X-Client-Mutation-Id": "b0a6f6f0-7d1c-4c5e-8a55-3f2b1c9d0e11",
},
timeout=30,
)
response.raise_for_status()
data = response.json() if response.content else NoneSynchronisation
Continuous and offline synchronisation: bootstrap, pull, push, conflicts. Requires the sync ability for integration tokens.
GET/v1/companies/{company}/sync/bootstrapFirst load sync
Starting point of a local copy: the cursor, the list of resources with their REST endpoint, the company, its settings and the rights of the user. Load each resource through its endpoint, then keep cursor for sync/pull.
Integration tokens need the sync ability.
Operatie-id companies.sync.bootstrap
Padparameters
| Naam | Type | Beschrijving |
|---|---|---|
company verplicht | string | Public token of the company file (public_token, 12 characters).bv. XBVD5O1L29HC |
Gemeenschappelijke headers: Accept-Language
Antwoorden
200OK
application/json
Schema object
cursorintegerbv.1042server_timestring <date-time>full_resyncbooleanbv.falseretention_daysintegerbv.90resourcesobject[]Eigenschappen
namestringbv.third_partiescountintegerbv.187endpointstringbv.companies/XBVD5O1L29HC/third-partiespaginatedbooleanbv.false
companyCompanycompany_settingsCompanySettingsuserobjectEigenschappen
idintegernamestringbv.Claire Dumontrolestringbv.firm_adminrole_rankintegercan_writebooleancan_forceboolean
pushobjectEigenschappen
resourcesstring[]max_mutationsintegerbv.200temp_id_prefixstringbv.tmp-
Voorbeeld
{
"cursor": 1042,
"server_time": "2026-03-15T09:41:00+00:00",
"full_resync": false,
"retention_days": 90,
"resources": [
{
"name": "third_parties",
"count": 187,
"endpoint": "companies/XBVD5O1L29HC/third-parties",
"paginated": false
}
],
"company": {
"id": 7,
"public_token": "XBVD5O1L29HC",
"firm_id": 3,
"code": "COMPTOIR",
"name": "Le Comptoir Montois SRL",
"legal_form": "SRL",
"legal_form_code": "610",
"enterprise_number": "0477472701",
"vat_number": "BE0477472701",
"country_pack": "BE",
"vat_regime": "monthly",
"currency": "EUR",
"locale": "fr",
"address": "Grand-Place 14, 7000 Mons",
"street": "Grand-Place",
"house_number": "14",
"box": "string",
"postal_code": "7000",
"city": "Mons",
"country": "BE",
"latitude": "50.4541000",
"longitude": "3.9523000",
"nace_codes": [
{
"code": "56111",
"classification": "MAIN"
}
],
"main_nace_code": "56111",
"company_sheet_at": "2026-03-15T09:41:00+00:00",
"logo_url": "https://api.novafisko.com/v1/companies/XBVD5O1L29HC",
"icon_url": "https://api.novafisko.com/v1/companies/XBVD5O1L29HC",
"fiscal_year_start": "2026-03-15",
"fiscal_year_end": "2026-03-15",
"settings": {
"vat": {
"administration_cell": "string",
"structured_communication": "000000000101",
"directorate_number": "string",
"office_number": "string",
"declarant": {
"applicable": false,
"company_name": "string",
"signatory_1": "string",
"signatory_1_title": "string",
"signatory_2": "string",
"signatory_2_title": "string",
"phone": "+32 65 31 42 18",
"fax": "string",
"email": "claire.dumont@fiduciaire-dumont.be",
"language": "fr"
},
"sender_281_50": {
"name": "Le Comptoir Montois SRL",
"enterprise_number": "0477472701",
"address": "Grand-Place 14",
"phone": "+32 65 31 42 18",
"email": "claire.dumont@fiduciaire-dumont.be"
},
"filer": {
"quality": "company",
"name": "Le Comptoir Montois SRL",
"enterprise_number": "0477472701",
"phone": "+32 65 31 42 18",
"email": "claire.dumont@fiduciaire-dumont.be"
}
},
"legal": {
"rpm_district": "Hainaut, division Mons"
},
"annual_accounts": {
"scheme": "abbreviated",
"general_meeting_date": "2026-03-15",
"directors": "string",
"valuation_rules": "string"
},
"auto_entries": {
"vat": {
"payable_account": "451000",
"receivable_account": "411000",
"correction_payable_account": "string",
"correction_receivable_account": "string",
"journal_id": 3
},
"invoices_to_receive": {
"supplier_account": "444000",
"customer_account": "404000",
"journal_id": 3
},
"reconciliation_difference": {
"expense_account": "657000",
"income_account": "757000",
"max_amount": 1
},
"transfers": {
"transit_account": "580000",
"journal_id": 3
}
},
"history": {
"trash_retention_days": 90
}
},
"is_active": true,
"is_demo": false,
"source": "manual",
"external_id": "string",
"synced_at": "2026-03-15T09:41:00+00:00",
"created_at": "2026-03-15T09:41:00+00:00",
"updated_at": "2026-03-15T09:41:00+00:00",
"deleted_at": "2026-03-15T09:41:00+00:00",
"lock_version": 3,
"version": 3,
"journal_entries_count": 1284,
"firm": {
"id": 3,
"public_token": "NDTQVQU4AUAV",
"name": "Fiduciaire Dumont & Associés"
},
"fiscal_years": [
{
"id": 2,
"company_id": 7,
"code": "2026",
"starts_on": "2026-01-01T00:00:00.000000Z",
"ends_on": "2026-12-31T00:00:00.000000Z",
"is_closed": false,
"closed_at": "2026-03-15T09:41:00+00:00",
"closed_by": 1,
"created_at": "2026-03-15T09:41:00+00:00",
"updated_at": "2026-03-15T09:41:00+00:00",
"lock_version": 3,
"version": 3,
"periods": [
{}
]
}
],
"journals": [
{
"id": 3,
"company_id": 7,
"code": "VEN",
"label": "Ventes",
"type": "purchase",
"control_account_id": 42,
"iban": "BE68539007547034",
"bic": "GEBABEBB",
"last_number": 412,
"is_active": true,
"is_default": true,
"description": "Description",
"created_at": "2026-03-15T09:41:00+00:00",
"updated_at": "2026-03-15T09:41:00+00:00",
"lock_version": 3,
"version": 3,
"deleted_at": "2026-03-15T09:41:00+00:00",
"deleted_by": 1,
"entries_count": 412,
"control_account": null,
"rules": [
{}
]
}
]
},
"company_settings": {
"vat": {
"administration_cell": "string",
"structured_communication": "000000000101",
"directorate_number": "string",
"office_number": "string",
"declarant": {
"applicable": false,
"company_name": "string",
"signatory_1": "string",
"signatory_1_title": "string",
"signatory_2": "string",
"signatory_2_title": "string",
"phone": "+32 65 31 42 18",
"fax": "string",
"email": "claire.dumont@fiduciaire-dumont.be",
"language": "fr"
},
"sender_281_50": {
"name": "Le Comptoir Montois SRL",
"enterprise_number": "0477472701",
"address": "Grand-Place 14",
"phone": "+32 65 31 42 18",
"email": "claire.dumont@fiduciaire-dumont.be"
},
"filer": {
"quality": "company",
"name": "Le Comptoir Montois SRL",
"enterprise_number": "0477472701",
"phone": "+32 65 31 42 18",
"email": "claire.dumont@fiduciaire-dumont.be"
}
},
"legal": {
"rpm_district": "Hainaut, division Mons"
},
"annual_accounts": {
"scheme": "abbreviated",
"general_meeting_date": "2026-03-15",
"directors": "string",
"valuation_rules": "string"
},
"auto_entries": {
"vat": {
"payable_account": "451000",
"receivable_account": "411000",
"correction_payable_account": "string",
"correction_receivable_account": "string",
"journal_id": 3
},
"invoices_to_receive": {
"supplier_account": "444000",
"customer_account": "404000",
"journal_id": 3
},
"reconciliation_difference": {
"expense_account": "657000",
"income_account": "757000",
"max_amount": 1
},
"transfers": {
"transit_account": "580000",
"journal_id": 3
}
},
"history": {
"trash_retention_days": 90
}
},
"user": {
"id": 42,
"name": "Claire Dumont",
"role": "firm_admin",
"role_rank": 1,
"can_write": true,
"can_force": true
},
"push": {
"resources": [
"string"
],
"max_mutations": 200,
"temp_id_prefix": "tmp-"
}
}token_ability_missing, session_token_required), demo restriction (demo_mode) or invalid URL signature. ErrorVoorbeeldaanroep
curl -X GET "https://api.novafisko.com/v1/companies/XBVD5O1L29HC/sync/bootstrap" \
-H "Accept: application/json" \
-H "Authorization: Bearer $NOVAFISKO_TOKEN"<?php
$client = new \GuzzleHttp\Client();
$response = $client->request('GET', 'https://api.novafisko.com/v1/companies/XBVD5O1L29HC/sync/bootstrap', [
'headers' => [
'Accept' => 'application/json',
'Authorization' => 'Bearer '.getenv('NOVAFISKO_TOKEN'),
],
]);
$data = json_decode((string) $response->getBody(), true);const response = await fetch("https://api.novafisko.com/v1/companies/XBVD5O1L29HC/sync/bootstrap", {
method: "GET",
headers: {
"Accept": "application/json",
"Authorization": `Bearer ${process.env.NOVAFISKO_TOKEN}`,
},
});
if (!response.ok) {
const error = await response.json();
throw new Error(error.code ?? error.message);
}
const data = response.status === 204 ? null : await response.json();import os
import requests
response = requests.get(
"https://api.novafisko.com/v1/companies/XBVD5O1L29HC/sync/bootstrap",
headers={
"Accept": "application/json",
"Authorization": f"Bearer {os.environ['NOVAFISKO_TOKEN']}",
},
timeout=30,
)
response.raise_for_status()
data = response.json() if response.content else NoneGET/v1/companies/{company}/sync/pullIncremental pull sync
Changes since a cursor, one line per record (last state). delete is a tombstone (deleted or in the recycle bin). When since is absent, unknown or older than the 90-day journal, full_resync is true and no change is returned: reload everything, then restart from the returned cursor. A change becomes visible two seconds after it was written.
Integration tokens need the sync ability.
Operatie-id companies.sync.pull
Padparameters
| Naam | Type | Beschrijving |
|---|---|---|
company verplicht | string | Public token of the company file (public_token, 12 characters).bv. XBVD5O1L29HC |
Queryparameters
| Naam | Type | Beschrijving |
|---|---|---|
since | integer | Cursor of the previous pull or bootstrap. bv. 1042 |
resources | string | Comma-separated resource names. bv. third_parties,entries |
limit | integer | 500 by default, 1000 max. |
Gemeenschappelijke headers: Accept-Language
Antwoorden
200OK
application/json
Schema object
cursorintegerbv.1057has_morebooleanbv.falsefull_resyncbooleanbv.falsechangesSyncChange[]server_timestring <date-time>
Voorbeeld
{
"cursor": 1057,
"has_more": false,
"full_resync": false,
"changes": [
{
"resource": "third_parties",
"op": "upsert",
"id": 18,
"version": 4,
"data": {},
"changed_at": "2026-03-15T09:41:00+00:00",
"seq": 1042
}
],
"server_time": "2026-03-15T09:41:00+00:00"
}token_ability_missing, session_token_required), demo restriction (demo_mode) or invalid URL signature. ErrorVoorbeeldaanroep
curl -X GET "https://api.novafisko.com/v1/companies/XBVD5O1L29HC/sync/pull" \
-H "Accept: application/json" \
-H "Authorization: Bearer $NOVAFISKO_TOKEN"<?php
$client = new \GuzzleHttp\Client();
$response = $client->request('GET', 'https://api.novafisko.com/v1/companies/XBVD5O1L29HC/sync/pull', [
'headers' => [
'Accept' => 'application/json',
'Authorization' => 'Bearer '.getenv('NOVAFISKO_TOKEN'),
],
]);
$data = json_decode((string) $response->getBody(), true);const response = await fetch("https://api.novafisko.com/v1/companies/XBVD5O1L29HC/sync/pull", {
method: "GET",
headers: {
"Accept": "application/json",
"Authorization": `Bearer ${process.env.NOVAFISKO_TOKEN}`,
},
});
if (!response.ok) {
const error = await response.json();
throw new Error(error.code ?? error.message);
}
const data = response.status === 204 ? null : await response.json();import os
import requests
response = requests.get(
"https://api.novafisko.com/v1/companies/XBVD5O1L29HC/sync/pull",
headers={
"Accept": "application/json",
"Authorization": f"Bearer {os.environ['NOVAFISKO_TOKEN']}",
},
timeout=30,
)
response.raise_for_status()
data = response.json() if response.content else NonePOST/v1/companies/{company}/sync/pushPush offline mutations sync
Up to 200 mutations, processed in order, each in its own transaction and replayed through the matching REST action. Idempotent on client_mutation_id. Conflicts are settled by the priority rules (posted or locked accounting data always wins; field-by-field merge; highest role, then most recent change).
Integration tokens need the sync ability.
Operatie-id companies.sync.push
Padparameters
| Naam | Type | Beschrijving |
|---|---|---|
company verplicht | string | Public token of the company file (public_token, 12 characters).bv. XBVD5O1L29HC |
Gemeenschappelijke headers: Accept-Language X-Client-Mutation-Id X-Operation-Id X-Device-Id X-Device-Name X-Occurred-At X-Origin
Body van de aanvraag
application/json
Schema object
deviceobjectEigenschappen
idstringnamestringplatformstringbv.macos
Voorbeeld
{
"device": {
"id": "erp-connector-01",
"name": "ERP connector",
"platform": "server"
},
"mutations": [
{
"client_mutation_id": "b0a6f6f0-7d1c-4c5e-8a55-3f2b1c9d0e11",
"occurred_at": "2026-10-05T08:00:00Z",
"resource": "third_parties",
"op": "create",
"client_temp_id": "tmp-3c1f",
"data": {
"type": "supplier",
"name": "Proximus SA",
"vat_number": "BE0202239951"
}
}
]
}Antwoorden
200OK
Antwoordheaders X-Operation-Id X-Idempotent-Replay
application/json
Schema object
resultsSyncMutationResult[]cursorintegerserver_timestring <date-time>
Voorbeeld
{
"results": [
{
"client_mutation_id": "bf413a19-2136-4504-bc42-b314637eb5c7",
"status": "applied",
"original_status": "string",
"code": "COMPTOIR",
"message": "OK",
"resource": "string",
"op": "string",
"action": "string",
"id": 42,
"client_temp_id": "string",
"version": 3,
"data": {},
"errors": {},
"conflict": {
"server_version": 1,
"server_data": {},
"fields": [
{
"field": "string",
"client": null,
"server": null,
"winner": "client",
"rule": "string"
}
],
"resolution": "string"
},
"duplicate_of": 1,
"retryable": true
}
],
"cursor": 1,
"server_time": "2026-03-15T09:41:00+00:00"
}token_ability_missing, session_token_required), demo restriction (demo_mode) or invalid URL signature. Errorerrors maps each field to its messages; code is present when the refusal has a machine reason. ErrorVoorbeeldaanroep
curl -X POST "https://api.novafisko.com/v1/companies/XBVD5O1L29HC/sync/push" \
-H "Accept: application/json" \
-H "Authorization: Bearer $NOVAFISKO_TOKEN" \
-H "Content-Type: application/json" \
-H "X-Client-Mutation-Id: b0a6f6f0-7d1c-4c5e-8a55-3f2b1c9d0e11" \
-d '{
"device": {
"id": "erp-connector-01",
"name": "ERP connector",
"platform": "server"
},
"mutations": [
{
"client_mutation_id": "b0a6f6f0-7d1c-4c5e-8a55-3f2b1c9d0e11",
"occurred_at": "2026-10-05T08:00:00Z",
"resource": "third_parties",
"op": "create",
"client_temp_id": "tmp-3c1f",
"data": {
"type": "supplier",
"name": "Proximus SA",
"vat_number": "BE0202239951"
}
}
]
}'<?php
$client = new \GuzzleHttp\Client();
$response = $client->request('POST', 'https://api.novafisko.com/v1/companies/XBVD5O1L29HC/sync/push', [
'headers' => [
'Accept' => 'application/json',
'Authorization' => 'Bearer '.getenv('NOVAFISKO_TOKEN'),
'X-Client-Mutation-Id' => 'b0a6f6f0-7d1c-4c5e-8a55-3f2b1c9d0e11',
],
'json' => [
'device' => [
'id' => 'erp-connector-01',
'name' => 'ERP connector',
'platform' => 'server',
],
'mutations' => [
[
'client_mutation_id' => 'b0a6f6f0-7d1c-4c5e-8a55-3f2b1c9d0e11',
'occurred_at' => '2026-10-05T08:00:00Z',
'resource' => 'third_parties',
'op' => 'create',
'client_temp_id' => 'tmp-3c1f',
'data' => [
'type' => 'supplier',
'name' => 'Proximus SA',
'vat_number' => 'BE0202239951',
],
],
],
],
]);
$data = json_decode((string) $response->getBody(), true);const response = await fetch("https://api.novafisko.com/v1/companies/XBVD5O1L29HC/sync/push", {
method: "POST",
headers: {
"Accept": "application/json",
"Authorization": `Bearer ${process.env.NOVAFISKO_TOKEN}`,
"Content-Type": "application/json",
"X-Client-Mutation-Id": "b0a6f6f0-7d1c-4c5e-8a55-3f2b1c9d0e11",
},
body: JSON.stringify({
"device": {
"id": "erp-connector-01",
"name": "ERP connector",
"platform": "server"
},
"mutations": [
{
"client_mutation_id": "b0a6f6f0-7d1c-4c5e-8a55-3f2b1c9d0e11",
"occurred_at": "2026-10-05T08:00:00Z",
"resource": "third_parties",
"op": "create",
"client_temp_id": "tmp-3c1f",
"data": {
"type": "supplier",
"name": "Proximus SA",
"vat_number": "BE0202239951"
}
}
]
}),
});
if (!response.ok) {
const error = await response.json();
throw new Error(error.code ?? error.message);
}
const data = response.status === 204 ? null : await response.json();import os
import requests
response = requests.post(
"https://api.novafisko.com/v1/companies/XBVD5O1L29HC/sync/push",
headers={
"Accept": "application/json",
"Authorization": f"Bearer {os.environ['NOVAFISKO_TOKEN']}",
"X-Client-Mutation-Id": "b0a6f6f0-7d1c-4c5e-8a55-3f2b1c9d0e11",
},
json={
"device": {
"id": "erp-connector-01",
"name": "ERP connector",
"platform": "server"
},
"mutations": [
{
"client_mutation_id": "b0a6f6f0-7d1c-4c5e-8a55-3f2b1c9d0e11",
"occurred_at": "2026-10-05T08:00:00Z",
"resource": "third_parties",
"op": "create",
"client_temp_id": "tmp-3c1f",
"data": {
"type": "supplier",
"name": "Proximus SA",
"vat_number": "BE0202239951"
}
}
]
},
timeout=30,
)
response.raise_for_status()
data = response.json() if response.content else NoneGET/v1/companies/{company}/sync/statusSynchronisation status sync
Integration tokens need the sync ability.
Operatie-id companies.sync.status
Padparameters
| Naam | Type | Beschrijving |
|---|---|---|
company verplicht | string | Public token of the company file (public_token, 12 characters).bv. XBVD5O1L29HC |
Gemeenschappelijke headers: Accept-Language
Antwoorden
200OK
application/json
Schema object
cursorintegerserver_timestring <date-time>pending_conflictsintegerbv.0last_push_atstring <date-time> | nulldevicesobject[]Eigenschappen
idstringnamestring | nullplatformstring | nulluserobject | nulllast_seen_atstring <date-time> | nulllast_push_atstring <date-time> | nulllast_cursorinteger | null
Voorbeeld
{
"cursor": 1,
"server_time": "2026-03-15T09:41:00+00:00",
"pending_conflicts": 0,
"last_push_at": "2026-03-15T09:41:00+00:00",
"devices": [
{
"id": "string",
"name": "Le Comptoir Montois SRL",
"platform": "string",
"user": {},
"last_seen_at": "2026-03-15T09:41:00+00:00",
"last_push_at": "2026-03-15T09:41:00+00:00",
"last_cursor": 1
}
]
}token_ability_missing, session_token_required), demo restriction (demo_mode) or invalid URL signature. ErrorVoorbeeldaanroep
curl -X GET "https://api.novafisko.com/v1/companies/XBVD5O1L29HC/sync/status" \
-H "Accept: application/json" \
-H "Authorization: Bearer $NOVAFISKO_TOKEN"<?php
$client = new \GuzzleHttp\Client();
$response = $client->request('GET', 'https://api.novafisko.com/v1/companies/XBVD5O1L29HC/sync/status', [
'headers' => [
'Accept' => 'application/json',
'Authorization' => 'Bearer '.getenv('NOVAFISKO_TOKEN'),
],
]);
$data = json_decode((string) $response->getBody(), true);const response = await fetch("https://api.novafisko.com/v1/companies/XBVD5O1L29HC/sync/status", {
method: "GET",
headers: {
"Accept": "application/json",
"Authorization": `Bearer ${process.env.NOVAFISKO_TOKEN}`,
},
});
if (!response.ok) {
const error = await response.json();
throw new Error(error.code ?? error.message);
}
const data = response.status === 204 ? null : await response.json();import os
import requests
response = requests.get(
"https://api.novafisko.com/v1/companies/XBVD5O1L29HC/sync/status",
headers={
"Accept": "application/json",
"Authorization": f"Bearer {os.environ['NOVAFISKO_TOKEN']}",
},
timeout=30,
)
response.raise_for_status()
data = response.json() if response.content else NoneGET/v1/companies/{company}/sync/conflictsSynchronisation conflicts sync
Integration tokens need the sync ability.
Operatie-id companies.sync.conflicts
Padparameters
| Naam | Type | Beschrijving |
|---|---|---|
company verplicht | string | Public token of the company file (public_token, 12 characters).bv. XBVD5O1L29HC |
Queryparameters
| Naam | Type | Beschrijving |
|---|---|---|
status | string | open resolved |
resource | string | |
page | integer | Page number, starting at 1. bv. 1 |
per_page | integer | Items per page (default 50, maximum 200). bv. 50 |
Gemeenschappelijke headers: Accept-Language
Antwoorden
200Paginated list
application/json
Schema Pagination & object
Bevat Pagination
dataSyncConflict[]openintegerNumber of open conflicts.bv.0
Voorbeeld
{
"current_page": 1,
"data": [
{
"id": 8,
"status": "open",
"type": "field",
"type_label": "string",
"resource": "third_parties",
"record_id": 42,
"subject_id": 42,
"subject_label": "string",
"client_mutation_id": "b0a6f6f0-7d1c-4c5e-8a55-3f2b1c9d0e11",
"fields": [
{
"field": "string",
"label": "Facture Brasserie Dubuisson",
"server": null,
"client": null,
"winner": "string",
"rule": "string"
}
],
"client_data": {},
"server_data": {},
"server_version": 1,
"winner": "string",
"loser": "string",
"resolution": "string",
"resolved_by": 1,
"client_user": {},
"server_user": {},
"resolved_by_user": {},
"device_id": "mac-7F3A21",
"created_at": "2026-03-15T09:41:00+00:00",
"resolved_at": "2026-03-15T09:41:00+00:00",
"choices": [
"server"
]
}
],
"first_page_url": "https://api.novafisko.com/v1/companies/XBVD5O1L29HC",
"from": 1,
"last_page": 4,
"last_page_url": "https://api.novafisko.com/v1/companies/XBVD5O1L29HC",
"links": [
{
"url": "https://api.novafisko.com/v1/companies/XBVD5O1L29HC",
"label": "1",
"page": 1,
"active": true
}
],
"next_page_url": "https://api.novafisko.com/v1/companies/XBVD5O1L29HC",
"path": "https://api.novafisko.com/v1/companies/XBVD5O1L29HC",
"per_page": 50,
"prev_page_url": "https://api.novafisko.com/v1/companies/XBVD5O1L29HC",
"to": 50,
"total": 187,
"open": 0
}token_ability_missing, session_token_required), demo restriction (demo_mode) or invalid URL signature. ErrorVoorbeeldaanroep
curl -X GET "https://api.novafisko.com/v1/companies/XBVD5O1L29HC/sync/conflicts" \
-H "Accept: application/json" \
-H "Authorization: Bearer $NOVAFISKO_TOKEN"<?php
$client = new \GuzzleHttp\Client();
$response = $client->request('GET', 'https://api.novafisko.com/v1/companies/XBVD5O1L29HC/sync/conflicts', [
'headers' => [
'Accept' => 'application/json',
'Authorization' => 'Bearer '.getenv('NOVAFISKO_TOKEN'),
],
]);
$data = json_decode((string) $response->getBody(), true);const response = await fetch("https://api.novafisko.com/v1/companies/XBVD5O1L29HC/sync/conflicts", {
method: "GET",
headers: {
"Accept": "application/json",
"Authorization": `Bearer ${process.env.NOVAFISKO_TOKEN}`,
},
});
if (!response.ok) {
const error = await response.json();
throw new Error(error.code ?? error.message);
}
const data = response.status === 204 ? null : await response.json();import os
import requests
response = requests.get(
"https://api.novafisko.com/v1/companies/XBVD5O1L29HC/sync/conflicts",
headers={
"Accept": "application/json",
"Authorization": f"Bearer {os.environ['NOVAFISKO_TOKEN']}",
},
timeout=30,
)
response.raise_for_status()
data = response.json() if response.content else NonePOST/v1/companies/{company}/sync/conflicts/{conflict}/resolveResolve a conflict sync
client applies the values that were refused, merge applies data, server acknowledges.
Integration tokens need the sync ability.
Error codes (code):
conflict_already_resolved: already resolvedconflict_choice_unavailable: choice not available for this conflict
Operatie-id companies.sync.conflicts.resolve
Padparameters
| Naam | Type | Beschrijving |
|---|---|---|
company verplicht | string | Public token of the company file (public_token, 12 characters).bv. XBVD5O1L29HC |
conflict verplicht | integer | Id of the synchronisation conflict. bv. 8 |
Gemeenschappelijke headers: Accept-Language X-Client-Mutation-Id X-Operation-Id X-Device-Id X-Device-Name X-Occurred-At X-Origin
Body van de aanvraag
application/json
Schema object
choicestringverplichtserverclientmergedataobject | nullRequired formerge.
Voorbeeld
{
"choice": "client"
}Antwoorden
200OK
Antwoordheaders X-Operation-Id X-Idempotent-Replay
application/json
Schema object
resolvedbooleanconflictSyncConflictdataobject | null
Voorbeeld
{
"resolved": true,
"conflict": {
"id": 8,
"status": "open",
"type": "field",
"type_label": "string",
"resource": "third_parties",
"record_id": 42,
"subject_id": 42,
"subject_label": "string",
"client_mutation_id": "b0a6f6f0-7d1c-4c5e-8a55-3f2b1c9d0e11",
"fields": [
{
"field": "string",
"label": "Facture Brasserie Dubuisson",
"server": null,
"client": null,
"winner": "string",
"rule": "string"
}
],
"client_data": {},
"server_data": {},
"server_version": 1,
"winner": "string",
"loser": "string",
"resolution": "string",
"resolved_by": 1,
"client_user": {},
"server_user": {},
"resolved_by_user": {},
"device_id": "mac-7F3A21",
"created_at": "2026-03-15T09:41:00+00:00",
"resolved_at": "2026-03-15T09:41:00+00:00",
"choices": [
"server"
]
},
"data": {}
}token_ability_missing, session_token_required), demo restriction (demo_mode) or invalid URL signature. Errorerrors maps each field to its messages; code is present when the refusal has a machine reason. ErrorVoorbeeldaanroep
curl -X POST "https://api.novafisko.com/v1/companies/XBVD5O1L29HC/sync/conflicts/8/resolve" \
-H "Accept: application/json" \
-H "Authorization: Bearer $NOVAFISKO_TOKEN" \
-H "Content-Type: application/json" \
-H "X-Client-Mutation-Id: b0a6f6f0-7d1c-4c5e-8a55-3f2b1c9d0e11" \
-d '{
"choice": "client"
}'<?php
$client = new \GuzzleHttp\Client();
$response = $client->request('POST', 'https://api.novafisko.com/v1/companies/XBVD5O1L29HC/sync/conflicts/8/resolve', [
'headers' => [
'Accept' => 'application/json',
'Authorization' => 'Bearer '.getenv('NOVAFISKO_TOKEN'),
'X-Client-Mutation-Id' => 'b0a6f6f0-7d1c-4c5e-8a55-3f2b1c9d0e11',
],
'json' => [
'choice' => 'client',
],
]);
$data = json_decode((string) $response->getBody(), true);const response = await fetch("https://api.novafisko.com/v1/companies/XBVD5O1L29HC/sync/conflicts/8/resolve", {
method: "POST",
headers: {
"Accept": "application/json",
"Authorization": `Bearer ${process.env.NOVAFISKO_TOKEN}`,
"Content-Type": "application/json",
"X-Client-Mutation-Id": "b0a6f6f0-7d1c-4c5e-8a55-3f2b1c9d0e11",
},
body: JSON.stringify({
"choice": "client"
}),
});
if (!response.ok) {
const error = await response.json();
throw new Error(error.code ?? error.message);
}
const data = response.status === 204 ? null : await response.json();import os
import requests
response = requests.post(
"https://api.novafisko.com/v1/companies/XBVD5O1L29HC/sync/conflicts/8/resolve",
headers={
"Accept": "application/json",
"Authorization": f"Bearer {os.environ['NOVAFISKO_TOKEN']}",
"X-Client-Mutation-Id": "b0a6f6f0-7d1c-4c5e-8a55-3f2b1c9d0e11",
},
json={
"choice": "client"
},
timeout=30,
)
response.raise_for_status()
data = response.json() if response.content else NoneMails sent to clients in the name of the firm, shared files.
POST/v1/companies/{company}/mail/documentsSend documents or an export by e-mail write Niet in demo 20 / 1 min
Sends documents of the file and / or an export to a client, in the name of the firm. Above 10 MB (or with as_link) the files are sent as a signed download link valid 7 days. Manager role at least.
Integration tokens need the write ability.
Not available in demo mode: answers 403 demo_mode.
Rate limit: 20 requests per minute (429 beyond, see Retry-After).
Operatie-id companies.mail.documents
Padparameters
| Naam | Type | Beschrijving |
|---|---|---|
company verplicht | string | Public token of the company file (public_token, 12 characters).bv. XBVD5O1L29HC |
Gemeenschappelijke headers: Accept-Language X-Client-Mutation-Id X-Operation-Id X-Device-Id X-Device-Name X-Occurred-At X-Origin
Body van de aanvraag
application/json
Schema object
tostring <email>[]verplichtccstring <email>[]subjectstring | nullmessagestringverplicht5000 characters max.document_idsinteger[]exportobjectEigenschappen
typestringverplichtExport code orfull-dossier.formatstringpdfxlsxcsvzipfiscal_year_idinteger | nullfromstring <date> | nulltostring <date> | nulllangstringfrnlendeparamsobject | null
as_linkboolean
Voorbeeld
{
"to": [
"gerant@comptoir-montois.example"
],
"subject": "Balance au 30 septembre",
"message": "Bonjour, vous trouverez ci-joint la balance arrêtée au 30 septembre.",
"export": {
"type": "trial-balance",
"format": "pdf",
"to": "2026-09-30"
}
}Antwoorden
201Created
Antwoordheaders X-Operation-Id X-Idempotent-Replay X-RateLimit-Limit X-RateLimit-Remaining
application/json
Schema object
messagestringsentintegerbv.1modestringattachmentlinkrecipientsstring <email>[]attachmentsobject[]Eigenschappen
namestringbv.balance-2026-09-30.pdfsizeintegerbv.48211
link_expires_atstring <date-time> | null
Voorbeeld
{
"message": "OK",
"sent": 1,
"mode": "attachment",
"recipients": [
"claire.dumont@fiduciaire-dumont.be"
],
"attachments": [
{
"name": "balance-2026-09-30.pdf",
"size": 48211
}
],
"link_expires_at": "2026-03-15T09:41:00+00:00"
}token_ability_missing, session_token_required), demo restriction (demo_mode) or invalid URL signature. Errorerrors maps each field to its messages; code is present when the refusal has a machine reason. ErrorVoorbeeldaanroep
curl -X POST "https://api.novafisko.com/v1/companies/XBVD5O1L29HC/mail/documents" \
-H "Accept: application/json" \
-H "Authorization: Bearer $NOVAFISKO_TOKEN" \
-H "Content-Type: application/json" \
-H "X-Client-Mutation-Id: b0a6f6f0-7d1c-4c5e-8a55-3f2b1c9d0e11" \
-d '{
"to": [
"gerant@comptoir-montois.example"
],
"subject": "Balance au 30 septembre",
"message": "Bonjour, vous trouverez ci-joint la balance arrêtée au 30 septembre.",
"export": {
"type": "trial-balance",
"format": "pdf",
"to": "2026-09-30"
}
}'<?php
$client = new \GuzzleHttp\Client();
$response = $client->request('POST', 'https://api.novafisko.com/v1/companies/XBVD5O1L29HC/mail/documents', [
'headers' => [
'Accept' => 'application/json',
'Authorization' => 'Bearer '.getenv('NOVAFISKO_TOKEN'),
'X-Client-Mutation-Id' => 'b0a6f6f0-7d1c-4c5e-8a55-3f2b1c9d0e11',
],
'json' => [
'to' => [
'gerant@comptoir-montois.example',
],
'subject' => 'Balance au 30 septembre',
'message' => 'Bonjour, vous trouverez ci-joint la balance arrêtée au 30 septembre.',
'export' => [
'type' => 'trial-balance',
'format' => 'pdf',
'to' => '2026-09-30',
],
],
]);
$data = json_decode((string) $response->getBody(), true);const response = await fetch("https://api.novafisko.com/v1/companies/XBVD5O1L29HC/mail/documents", {
method: "POST",
headers: {
"Accept": "application/json",
"Authorization": `Bearer ${process.env.NOVAFISKO_TOKEN}`,
"Content-Type": "application/json",
"X-Client-Mutation-Id": "b0a6f6f0-7d1c-4c5e-8a55-3f2b1c9d0e11",
},
body: JSON.stringify({
"to": [
"gerant@comptoir-montois.example"
],
"subject": "Balance au 30 septembre",
"message": "Bonjour, vous trouverez ci-joint la balance arrêtée au 30 septembre.",
"export": {
"type": "trial-balance",
"format": "pdf",
"to": "2026-09-30"
}
}),
});
if (!response.ok) {
const error = await response.json();
throw new Error(error.code ?? error.message);
}
const data = response.status === 204 ? null : await response.json();import os
import requests
response = requests.post(
"https://api.novafisko.com/v1/companies/XBVD5O1L29HC/mail/documents",
headers={
"Accept": "application/json",
"Authorization": f"Bearer {os.environ['NOVAFISKO_TOKEN']}",
"X-Client-Mutation-Id": "b0a6f6f0-7d1c-4c5e-8a55-3f2b1c9d0e11",
},
json={
"to": [
"gerant@comptoir-montois.example"
],
"subject": "Balance au 30 septembre",
"message": "Bonjour, vous trouverez ci-joint la balance arrêtée au 30 septembre.",
"export": {
"type": "trial-balance",
"format": "pdf",
"to": "2026-09-30"
}
},
timeout=30,
)
response.raise_for_status()
data = response.json() if response.content else NonePOST/v1/companies/{company}/mail/document-requestAsk a client for missing documents write Niet in demo 20 / 1 min
Integration tokens need the write ability.
Not available in demo mode: answers 403 demo_mode.
Rate limit: 20 requests per minute (429 beyond, see Retry-After).
Operatie-id companies.mail.document-request
Padparameters
| Naam | Type | Beschrijving |
|---|---|---|
company verplicht | string | Public token of the company file (public_token, 12 characters).bv. XBVD5O1L29HC |
Gemeenschappelijke headers: Accept-Language X-Client-Mutation-Id X-Operation-Id X-Device-Id X-Device-Name X-Occurred-At X-Origin
Body van de aanvraag
application/json
Schema object
tostring <email>[]verplichtitemsstring[]verplichtmessagestring | nulldue_datestring <date> | null
Voorbeeld
{
"to": [
"gerant@comptoir-montois.example"
],
"items": [
"Extrait bancaire de septembre",
"Facture Engie d'août"
],
"due_date": "2026-10-15"
}Antwoorden
201Created
Antwoordheaders X-Operation-Id X-Idempotent-Replay X-RateLimit-Limit X-RateLimit-Remaining
application/json
Schema object
sentintegerbv.1messagestring
Voorbeeld
{
"sent": 1,
"message": "OK"
}token_ability_missing, session_token_required), demo restriction (demo_mode) or invalid URL signature. Errorerrors maps each field to its messages; code is present when the refusal has a machine reason. ErrorVoorbeeldaanroep
curl -X POST "https://api.novafisko.com/v1/companies/XBVD5O1L29HC/mail/document-request" \
-H "Accept: application/json" \
-H "Authorization: Bearer $NOVAFISKO_TOKEN" \
-H "Content-Type: application/json" \
-H "X-Client-Mutation-Id: b0a6f6f0-7d1c-4c5e-8a55-3f2b1c9d0e11" \
-d '{
"to": [
"gerant@comptoir-montois.example"
],
"items": [
"Extrait bancaire de septembre",
"Facture Engie d'\''août"
],
"due_date": "2026-10-15"
}'<?php
$client = new \GuzzleHttp\Client();
$response = $client->request('POST', 'https://api.novafisko.com/v1/companies/XBVD5O1L29HC/mail/document-request', [
'headers' => [
'Accept' => 'application/json',
'Authorization' => 'Bearer '.getenv('NOVAFISKO_TOKEN'),
'X-Client-Mutation-Id' => 'b0a6f6f0-7d1c-4c5e-8a55-3f2b1c9d0e11',
],
'json' => [
'to' => [
'gerant@comptoir-montois.example',
],
'items' => [
'Extrait bancaire de septembre',
'Facture Engie d\'août',
],
'due_date' => '2026-10-15',
],
]);
$data = json_decode((string) $response->getBody(), true);const response = await fetch("https://api.novafisko.com/v1/companies/XBVD5O1L29HC/mail/document-request", {
method: "POST",
headers: {
"Accept": "application/json",
"Authorization": `Bearer ${process.env.NOVAFISKO_TOKEN}`,
"Content-Type": "application/json",
"X-Client-Mutation-Id": "b0a6f6f0-7d1c-4c5e-8a55-3f2b1c9d0e11",
},
body: JSON.stringify({
"to": [
"gerant@comptoir-montois.example"
],
"items": [
"Extrait bancaire de septembre",
"Facture Engie d'août"
],
"due_date": "2026-10-15"
}),
});
if (!response.ok) {
const error = await response.json();
throw new Error(error.code ?? error.message);
}
const data = response.status === 204 ? null : await response.json();import os
import requests
response = requests.post(
"https://api.novafisko.com/v1/companies/XBVD5O1L29HC/mail/document-request",
headers={
"Accept": "application/json",
"Authorization": f"Bearer {os.environ['NOVAFISKO_TOKEN']}",
"X-Client-Mutation-Id": "b0a6f6f0-7d1c-4c5e-8a55-3f2b1c9d0e11",
},
json={
"to": [
"gerant@comptoir-montois.example"
],
"items": [
"Extrait bancaire de septembre",
"Facture Engie d'août"
],
"due_date": "2026-10-15"
},
timeout=30,
)
response.raise_for_status()
data = response.json() if response.content else NoneGET/v1/companies/{company}/mail/logsMails sent for the file read
Integration tokens need the read ability.
Operatie-id companies.mail.logs
Padparameters
| Naam | Type | Beschrijving |
|---|---|---|
company verplicht | string | Public token of the company file (public_token, 12 characters).bv. XBVD5O1L29HC |
Queryparameters
| Naam | Type | Beschrijving |
|---|---|---|
template | string | Template key. |
per_page | integer | 25 by default, 100 max. |
page | integer |
Gemeenschappelijke headers: Accept-Language
Antwoorden
200OK
application/json
Schema object
dataMailLog[]metaobjectEigenschappen
current_pageintegerbv.1last_pageintegerbv.1totalintegerbv.12
Voorbeeld
{
"data": [
{
"id": 9012,
"template_key": "documents.send",
"to": "gerant@comptoir-montois.example",
"subject": "Vos documents comptables",
"status": "queued",
"locale": "fr",
"created_at": "2026-03-15T09:41:00+00:00",
"sent_at": "2026-03-15T09:41:00+00:00",
"opened_at": "2026-03-15T09:41:00+00:00",
"attachments": [
{
"name": "balance-2026.pdf",
"size": 48211
}
]
}
],
"meta": {
"current_page": 1,
"last_page": 1,
"total": 12
}
}token_ability_missing, session_token_required), demo restriction (demo_mode) or invalid URL signature. ErrorVoorbeeldaanroep
curl -X GET "https://api.novafisko.com/v1/companies/XBVD5O1L29HC/mail/logs" \
-H "Accept: application/json" \
-H "Authorization: Bearer $NOVAFISKO_TOKEN"<?php
$client = new \GuzzleHttp\Client();
$response = $client->request('GET', 'https://api.novafisko.com/v1/companies/XBVD5O1L29HC/mail/logs', [
'headers' => [
'Accept' => 'application/json',
'Authorization' => 'Bearer '.getenv('NOVAFISKO_TOKEN'),
],
]);
$data = json_decode((string) $response->getBody(), true);const response = await fetch("https://api.novafisko.com/v1/companies/XBVD5O1L29HC/mail/logs", {
method: "GET",
headers: {
"Accept": "application/json",
"Authorization": `Bearer ${process.env.NOVAFISKO_TOKEN}`,
},
});
if (!response.ok) {
const error = await response.json();
throw new Error(error.code ?? error.message);
}
const data = response.status === 204 ? null : await response.json();import os
import requests
response = requests.get(
"https://api.novafisko.com/v1/companies/XBVD5O1L29HC/mail/logs",
headers={
"Accept": "application/json",
"Authorization": f"Bearer {os.environ['NOVAFISKO_TOKEN']}",
},
timeout=30,
)
response.raise_for_status()
data = response.json() if response.content else NoneGET/v1/mail/o/{token}.gifOpen pixel Openbaar 240 / 1 min
Present in the mails only when tracking is switched on by the firm. Not meant to be called by integrations.
Public endpoint: no bearer token.
Rate limit: 240 requests per minute (429 beyond, see Retry-After).
Padparameters
| Naam | Type | Beschrijving |
|---|---|---|
token verplicht | string | Opaque token. bv. a1B2c3D4e5 |
Antwoorden
200Transparent 1 × 1 GIF.
Antwoordheaders X-RateLimit-Limit X-RateLimit-Remaining
image/gif
Voorbeeldaanroep
curl -X GET "https://api.novafisko.com/v1/mail/o/a1B2c3D4e5.gif" \
-H "Accept: application/json"<?php
$client = new \GuzzleHttp\Client();
$response = $client->request('GET', 'https://api.novafisko.com/v1/mail/o/a1B2c3D4e5.gif', [
'headers' => [
'Accept' => 'application/json',
],
]);
$data = json_decode((string) $response->getBody(), true);const response = await fetch("https://api.novafisko.com/v1/mail/o/a1B2c3D4e5.gif", {
method: "GET",
headers: {
"Accept": "application/json",
},
});
if (!response.ok) {
const error = await response.json();
throw new Error(error.code ?? error.message);
}
const data = response.status === 204 ? null : await response.json();import os
import requests
response = requests.get(
"https://api.novafisko.com/v1/mail/o/a1B2c3D4e5.gif",
headers={
"Accept": "application/json",
},
timeout=30,
)
response.raise_for_status()
data = response.json() if response.content else NoneGET/v1/mail/c/{token}Click redirection Openbaar 240 / 1 min
Followed only when the signature of the target matches (no open redirect). Not meant to be called by integrations.
Public endpoint: no bearer token.
Rate limit: 240 requests per minute (429 beyond, see Retry-After).
Padparameters
| Naam | Type | Beschrijving |
|---|---|---|
token verplicht | string | Opaque token. bv. a1B2c3D4e5 |
Queryparameters
| Naam | Type | Beschrijving |
|---|---|---|
u verplicht | string | Encoded target. |
s verplicht | string | Signature. |
Antwoorden
302Redirection to the target.
| Antwoordheader | Beschrijving |
|---|---|
Location | Target of the redirection. |
Voorbeeldaanroep
curl -X GET "https://api.novafisko.com/v1/mail/c/a1B2c3D4e5?u=string&s=string" \
-H "Accept: application/json"<?php
$client = new \GuzzleHttp\Client();
$response = $client->request('GET', 'https://api.novafisko.com/v1/mail/c/a1B2c3D4e5', [
'headers' => [
'Accept' => 'application/json',
],
'query' => [
'u' => 'string',
's' => 'string',
],
]);
$data = json_decode((string) $response->getBody(), true);const response = await fetch("https://api.novafisko.com/v1/mail/c/a1B2c3D4e5?u=string&s=string", {
method: "GET",
headers: {
"Accept": "application/json",
},
});
if (!response.ok) {
const error = await response.json();
throw new Error(error.code ?? error.message);
}
const data = response.status === 204 ? null : await response.json();import os
import requests
response = requests.get(
"https://api.novafisko.com/v1/mail/c/a1B2c3D4e5",
headers={
"Accept": "application/json",
},
params={
"u": "string",
"s": "string"
},
timeout=30,
)
response.raise_for_status()
data = response.json() if response.content else NoneWebhooks
Outgoing webhooks of a firm: endpoints, test event, delivery log.
GET/v1/webhooks/eventsCatalogue of webhook events read
Integration tokens need the read ability.
Gemeenschappelijke headers: Accept-Language
Antwoorden
200OK
application/json
Schema object
dataobject[]Eigenschappen
eventstringbv.entry.posteddescriptionstringbv.An entry was posted.
Voorbeeld
{
"data": [
{
"event": "entry.posted",
"description": "An entry was posted."
}
]
}token_ability_missing, session_token_required), demo restriction (demo_mode) or invalid URL signature. ErrorVoorbeeldaanroep
curl -X GET "https://api.novafisko.com/v1/webhooks/events" \
-H "Accept: application/json" \
-H "Authorization: Bearer $NOVAFISKO_TOKEN"<?php
$client = new \GuzzleHttp\Client();
$response = $client->request('GET', 'https://api.novafisko.com/v1/webhooks/events', [
'headers' => [
'Accept' => 'application/json',
'Authorization' => 'Bearer '.getenv('NOVAFISKO_TOKEN'),
],
]);
$data = json_decode((string) $response->getBody(), true);const response = await fetch("https://api.novafisko.com/v1/webhooks/events", {
method: "GET",
headers: {
"Accept": "application/json",
"Authorization": `Bearer ${process.env.NOVAFISKO_TOKEN}`,
},
});
if (!response.ok) {
const error = await response.json();
throw new Error(error.code ?? error.message);
}
const data = response.status === 204 ? null : await response.json();import os
import requests
response = requests.get(
"https://api.novafisko.com/v1/webhooks/events",
headers={
"Accept": "application/json",
"Authorization": f"Bearer {os.environ['NOVAFISKO_TOKEN']}",
},
timeout=30,
)
response.raise_for_status()
data = response.json() if response.content else NoneGET/v1/firms/{firm}/webhooksList the webhook endpoints read
Admins and managers of the firm (403 for other members, 404 for non-members).
Integration tokens need the read ability.
Operatie-id firms.webhooks.index
Padparameters
| Naam | Type | Beschrijving |
|---|---|---|
firm verplicht | string | Public token of the firm (public_token, 12 characters).bv. NDTQVQU4AUAV |
Gemeenschappelijke headers: Accept-Language
Antwoorden
200OK
application/json
Schema object
dataWebhookEndpoint[]available_eventsstring[]
Voorbeeld
{
"data": [
{
"id": 3,
"url": "https://erp.example.com/hooks/novafisko",
"description": "ERP connector",
"events": [
"entry.posted"
],
"is_active": true,
"secret_hint": "whsec_…ab12",
"last_delivery_at": "2026-03-15T09:41:00+00:00",
"last_status": "delivered",
"created_at": "2026-03-15T09:41:00+00:00",
"updated_at": "2026-03-15T09:41:00+00:00"
}
],
"available_events": [
"entry.posted"
]
}token_ability_missing, session_token_required), demo restriction (demo_mode) or invalid URL signature. ErrorVoorbeeldaanroep
curl -X GET "https://api.novafisko.com/v1/firms/NDTQVQU4AUAV/webhooks" \
-H "Accept: application/json" \
-H "Authorization: Bearer $NOVAFISKO_TOKEN"<?php
$client = new \GuzzleHttp\Client();
$response = $client->request('GET', 'https://api.novafisko.com/v1/firms/NDTQVQU4AUAV/webhooks', [
'headers' => [
'Accept' => 'application/json',
'Authorization' => 'Bearer '.getenv('NOVAFISKO_TOKEN'),
],
]);
$data = json_decode((string) $response->getBody(), true);const response = await fetch("https://api.novafisko.com/v1/firms/NDTQVQU4AUAV/webhooks", {
method: "GET",
headers: {
"Accept": "application/json",
"Authorization": `Bearer ${process.env.NOVAFISKO_TOKEN}`,
},
});
if (!response.ok) {
const error = await response.json();
throw new Error(error.code ?? error.message);
}
const data = response.status === 204 ? null : await response.json();import os
import requests
response = requests.get(
"https://api.novafisko.com/v1/firms/NDTQVQU4AUAV/webhooks",
headers={
"Accept": "application/json",
"Authorization": f"Bearer {os.environ['NOVAFISKO_TOKEN']}",
},
timeout=30,
)
response.raise_for_status()
data = response.json() if response.content else NonePOST/v1/firms/{firm}/webhooksCreate a webhook endpoint write Niet in demo
The signing secret (whsec_…) is returned once. Events are queued and sent by a dispatcher that runs every minute.
Integration tokens need the write ability.
Not available in demo mode: answers 403 demo_mode.
Error codes (code):
webhook_limit_reached: 20 endpoints per firm at mostwebhook_url_refused: the URL is not HTTPS or targets a private / loopback address (production)
Operatie-id firms.webhooks.store
Padparameters
| Naam | Type | Beschrijving |
|---|---|---|
firm verplicht | string | Public token of the firm (public_token, 12 characters).bv. NDTQVQU4AUAV |
Gemeenschappelijke headers: Accept-Language
Body van de aanvraag
application/json
Schema object
urlstring <uri>verplichtHTTPS endpoint that receives the events (500 characters max).descriptionstring | nulleventsstring[]verplichtis_activeboolean
Voorbeeld
{
"url": "https://erp.example.com/hooks/novafisko",
"description": "ERP connector",
"events": [
"entry.posted",
"document.booked",
"vat.declaration_validated"
]
}Antwoorden
201Created
application/json
Schema object
webhookWebhookEndpointdataWebhookEndpointsecretstringSigning secret (whsec_ followed by 40 characters), shown once.bv.whsec_4Qm9x2kL8vT4nR7sW1pZ5cY3hJ6dF0gA9bE2uI4o
Voorbeeld
{
"webhook": {
"id": 3,
"url": "https://erp.example.com/hooks/novafisko",
"description": "ERP connector",
"events": [
"entry.posted"
],
"is_active": true,
"secret_hint": "whsec_…ab12",
"last_delivery_at": "2026-03-15T09:41:00+00:00",
"last_status": "delivered",
"created_at": "2026-03-15T09:41:00+00:00",
"updated_at": "2026-03-15T09:41:00+00:00"
},
"data": {
"id": 3,
"url": "https://erp.example.com/hooks/novafisko",
"description": "ERP connector",
"events": [
"entry.posted"
],
"is_active": true,
"secret_hint": "whsec_…ab12",
"last_delivery_at": "2026-03-15T09:41:00+00:00",
"last_status": "delivered",
"created_at": "2026-03-15T09:41:00+00:00",
"updated_at": "2026-03-15T09:41:00+00:00"
},
"secret": "whsec_4Qm9x2kL8vT4nR7sW1pZ5cY3hJ6dF0gA9bE2uI4o"
}token_ability_missing, session_token_required), demo restriction (demo_mode) or invalid URL signature. Errorerrors maps each field to its messages; code is present when the refusal has a machine reason. ErrorVoorbeeldaanroep
curl -X POST "https://api.novafisko.com/v1/firms/NDTQVQU4AUAV/webhooks" \
-H "Accept: application/json" \
-H "Authorization: Bearer $NOVAFISKO_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"url": "https://erp.example.com/hooks/novafisko",
"description": "ERP connector",
"events": [
"entry.posted",
"document.booked",
"vat.declaration_validated"
]
}'<?php
$client = new \GuzzleHttp\Client();
$response = $client->request('POST', 'https://api.novafisko.com/v1/firms/NDTQVQU4AUAV/webhooks', [
'headers' => [
'Accept' => 'application/json',
'Authorization' => 'Bearer '.getenv('NOVAFISKO_TOKEN'),
],
'json' => [
'url' => 'https://erp.example.com/hooks/novafisko',
'description' => 'ERP connector',
'events' => [
'entry.posted',
'document.booked',
'vat.declaration_validated',
],
],
]);
$data = json_decode((string) $response->getBody(), true);const response = await fetch("https://api.novafisko.com/v1/firms/NDTQVQU4AUAV/webhooks", {
method: "POST",
headers: {
"Accept": "application/json",
"Authorization": `Bearer ${process.env.NOVAFISKO_TOKEN}`,
"Content-Type": "application/json",
},
body: JSON.stringify({
"url": "https://erp.example.com/hooks/novafisko",
"description": "ERP connector",
"events": [
"entry.posted",
"document.booked",
"vat.declaration_validated"
]
}),
});
if (!response.ok) {
const error = await response.json();
throw new Error(error.code ?? error.message);
}
const data = response.status === 204 ? null : await response.json();import os
import requests
response = requests.post(
"https://api.novafisko.com/v1/firms/NDTQVQU4AUAV/webhooks",
headers={
"Accept": "application/json",
"Authorization": f"Bearer {os.environ['NOVAFISKO_TOKEN']}",
},
json={
"url": "https://erp.example.com/hooks/novafisko",
"description": "ERP connector",
"events": [
"entry.posted",
"document.booked",
"vat.declaration_validated"
]
},
timeout=30,
)
response.raise_for_status()
data = response.json() if response.content else NonePATCH/v1/firms/{firm}/webhooks/{webhook}Update a webhook endpoint write Niet in demo
A paused endpoint keeps its pending deliveries; they are sent once it is active again.
Integration tokens need the write ability.
Not available in demo mode: answers 403 demo_mode.
Error codes (code):
webhook_url_refused: the URL is not HTTPS or targets a private / loopback address (production)
Operatie-id firms.webhooks.update
Padparameters
| Naam | Type | Beschrijving |
|---|---|---|
firm verplicht | string | Public token of the firm (public_token, 12 characters).bv. NDTQVQU4AUAV |
webhook verplicht | integer | Id of the webhook endpoint. bv. 3 |
Gemeenschappelijke headers: Accept-Language
Body van de aanvraag
application/json
Schema object
urlstring <uri>descriptionstring | nulleventsstring[]is_activeboolean
Voorbeeld
{
"is_active": false
}Antwoorden
200OK
application/json
Schema object
webhookWebhookEndpoint
Voorbeeld
{
"webhook": {
"id": 3,
"url": "https://erp.example.com/hooks/novafisko",
"description": "ERP connector",
"events": [
"entry.posted"
],
"is_active": true,
"secret_hint": "whsec_…ab12",
"last_delivery_at": "2026-03-15T09:41:00+00:00",
"last_status": "delivered",
"created_at": "2026-03-15T09:41:00+00:00",
"updated_at": "2026-03-15T09:41:00+00:00"
}
}token_ability_missing, session_token_required), demo restriction (demo_mode) or invalid URL signature. Errorerrors maps each field to its messages; code is present when the refusal has a machine reason. ErrorVoorbeeldaanroep
curl -X PATCH "https://api.novafisko.com/v1/firms/NDTQVQU4AUAV/webhooks/3" \
-H "Accept: application/json" \
-H "Authorization: Bearer $NOVAFISKO_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"is_active": false
}'<?php
$client = new \GuzzleHttp\Client();
$response = $client->request('PATCH', 'https://api.novafisko.com/v1/firms/NDTQVQU4AUAV/webhooks/3', [
'headers' => [
'Accept' => 'application/json',
'Authorization' => 'Bearer '.getenv('NOVAFISKO_TOKEN'),
],
'json' => [
'is_active' => false,
],
]);
$data = json_decode((string) $response->getBody(), true);const response = await fetch("https://api.novafisko.com/v1/firms/NDTQVQU4AUAV/webhooks/3", {
method: "PATCH",
headers: {
"Accept": "application/json",
"Authorization": `Bearer ${process.env.NOVAFISKO_TOKEN}`,
"Content-Type": "application/json",
},
body: JSON.stringify({
"is_active": false
}),
});
if (!response.ok) {
const error = await response.json();
throw new Error(error.code ?? error.message);
}
const data = response.status === 204 ? null : await response.json();import os
import requests
response = requests.patch(
"https://api.novafisko.com/v1/firms/NDTQVQU4AUAV/webhooks/3",
headers={
"Accept": "application/json",
"Authorization": f"Bearer {os.environ['NOVAFISKO_TOKEN']}",
},
json={
"is_active": False
},
timeout=30,
)
response.raise_for_status()
data = response.json() if response.content else NoneDELETE/v1/firms/{firm}/webhooks/{webhook}Delete a webhook endpoint write Niet in demo
Pending deliveries of the endpoint are dropped.
Integration tokens need the write ability.
Not available in demo mode: answers 403 demo_mode.
Operatie-id firms.webhooks.destroy
Padparameters
| Naam | Type | Beschrijving |
|---|---|---|
firm verplicht | string | Public token of the firm (public_token, 12 characters).bv. NDTQVQU4AUAV |
webhook verplicht | integer | Id of the webhook endpoint. bv. 3 |
Gemeenschappelijke headers: Accept-Language
Antwoorden
204Done, no body.
Geen body.
token_ability_missing, session_token_required), demo restriction (demo_mode) or invalid URL signature. ErrorVoorbeeldaanroep
curl -X DELETE "https://api.novafisko.com/v1/firms/NDTQVQU4AUAV/webhooks/3" \
-H "Accept: application/json" \
-H "Authorization: Bearer $NOVAFISKO_TOKEN"<?php
$client = new \GuzzleHttp\Client();
$response = $client->request('DELETE', 'https://api.novafisko.com/v1/firms/NDTQVQU4AUAV/webhooks/3', [
'headers' => [
'Accept' => 'application/json',
'Authorization' => 'Bearer '.getenv('NOVAFISKO_TOKEN'),
],
]);
$data = json_decode((string) $response->getBody(), true);const response = await fetch("https://api.novafisko.com/v1/firms/NDTQVQU4AUAV/webhooks/3", {
method: "DELETE",
headers: {
"Accept": "application/json",
"Authorization": `Bearer ${process.env.NOVAFISKO_TOKEN}`,
},
});
if (!response.ok) {
const error = await response.json();
throw new Error(error.code ?? error.message);
}
const data = response.status === 204 ? null : await response.json();import os
import requests
response = requests.delete(
"https://api.novafisko.com/v1/firms/NDTQVQU4AUAV/webhooks/3",
headers={
"Accept": "application/json",
"Authorization": f"Bearer {os.environ['NOVAFISKO_TOKEN']}",
},
timeout=30,
)
response.raise_for_status()
data = response.json() if response.content else NonePOST/v1/firms/{firm}/webhooks/{webhook}/testSend a test event write Niet in demo 12 / 1 min
Sends a webhook.test event immediately, signed like a real one. It is never retried: the returned delivery is delivered or failed.
Integration tokens need the write ability.
Not available in demo mode: answers 403 demo_mode.
Rate limit: 12 requests per minute (429 beyond, see Retry-After).
Operatie-id firms.webhooks.test
Padparameters
| Naam | Type | Beschrijving |
|---|---|---|
firm verplicht | string | Public token of the firm (public_token, 12 characters).bv. NDTQVQU4AUAV |
webhook verplicht | integer | Id of the webhook endpoint. bv. 3 |
Gemeenschappelijke headers: Accept-Language
Antwoorden
202Test event sent.
Antwoordheaders X-RateLimit-Limit X-RateLimit-Remaining
application/json
Schema object
deliveryWebhookDelivery
Voorbeeld
{
"delivery": {
"id": 1871,
"event_id": "evt_01JD8X5Q2M7Z4W9K3T6B0N1VCE",
"event": "entry.posted",
"status": "pending",
"attempts": 1,
"next_attempt_at": "2026-03-15T09:41:00+00:00",
"response_status": 200,
"response_excerpt": "string",
"duration_ms": 184,
"delivered_at": "2026-03-15T09:41:00+00:00",
"created_at": "2026-03-15T09:41:00+00:00",
"payload": {
"id": "evt_01JD8X5Q2M7Z4W9K3T6B0N1VCE",
"event": "entry.posted",
"api_version": "v1",
"created_at": "2026-03-15T09:41:00+00:00",
"firm": {
"public_token": "NDTQVQU4AUAV",
"name": "Fiduciaire Dumont & Associés"
},
"company": {
"public_token": "XBVD5O1L29HC",
"name": "Le Comptoir Montois SRL"
},
"data": {}
},
"attempt": 1,
"http_status": 200
}
}token_ability_missing, session_token_required), demo restriction (demo_mode) or invalid URL signature. ErrorVoorbeeldaanroep
curl -X POST "https://api.novafisko.com/v1/firms/NDTQVQU4AUAV/webhooks/3/test" \
-H "Accept: application/json" \
-H "Authorization: Bearer $NOVAFISKO_TOKEN"<?php
$client = new \GuzzleHttp\Client();
$response = $client->request('POST', 'https://api.novafisko.com/v1/firms/NDTQVQU4AUAV/webhooks/3/test', [
'headers' => [
'Accept' => 'application/json',
'Authorization' => 'Bearer '.getenv('NOVAFISKO_TOKEN'),
],
]);
$data = json_decode((string) $response->getBody(), true);const response = await fetch("https://api.novafisko.com/v1/firms/NDTQVQU4AUAV/webhooks/3/test", {
method: "POST",
headers: {
"Accept": "application/json",
"Authorization": `Bearer ${process.env.NOVAFISKO_TOKEN}`,
},
});
if (!response.ok) {
const error = await response.json();
throw new Error(error.code ?? error.message);
}
const data = response.status === 204 ? null : await response.json();import os
import requests
response = requests.post(
"https://api.novafisko.com/v1/firms/NDTQVQU4AUAV/webhooks/3/test",
headers={
"Accept": "application/json",
"Authorization": f"Bearer {os.environ['NOVAFISKO_TOKEN']}",
},
timeout=30,
)
response.raise_for_status()
data = response.json() if response.content else NoneGET/v1/firms/{firm}/webhooks/{webhook}/deliveriesDeliveries of a webhook endpoint read
Newest first, with the status, the number of attempts and an excerpt of the answer (2000 characters max). Deliveries that are no longer pending are pruned after 30 days.
Integration tokens need the read ability.
Operatie-id firms.webhooks.deliveries
Padparameters
| Naam | Type | Beschrijving |
|---|---|---|
firm verplicht | string | Public token of the firm (public_token, 12 characters).bv. NDTQVQU4AUAV |
webhook verplicht | integer | Id of the webhook endpoint. bv. 3 |
Queryparameters
| Naam | Type | Beschrijving |
|---|---|---|
status | string | pending delivered failed |
event | string | bv. entry.posted |
page | integer | Page number, starting at 1. bv. 1 |
per_page | integer | Items per page (default 25, maximum 100). bv. 25 |
Gemeenschappelijke headers: Accept-Language
Antwoorden
200OK
application/json
Schema object
dataWebhookDelivery[]metaobjectEigenschappen
current_pageintegerbv.1last_pageintegerbv.3per_pageintegerbv.25totalintegerbv.61
Voorbeeld
{
"data": [
{
"id": 1871,
"event_id": "evt_01JD8X5Q2M7Z4W9K3T6B0N1VCE",
"event": "entry.posted",
"status": "pending",
"attempts": 1,
"next_attempt_at": "2026-03-15T09:41:00+00:00",
"response_status": 200,
"response_excerpt": "string",
"duration_ms": 184,
"delivered_at": "2026-03-15T09:41:00+00:00",
"created_at": "2026-03-15T09:41:00+00:00",
"payload": {
"id": "evt_01JD8X5Q2M7Z4W9K3T6B0N1VCE",
"event": "entry.posted",
"api_version": "v1",
"created_at": "2026-03-15T09:41:00+00:00",
"firm": {
"public_token": "NDTQVQU4AUAV",
"name": "Fiduciaire Dumont & Associés"
},
"company": {
"public_token": "XBVD5O1L29HC",
"name": "Le Comptoir Montois SRL"
},
"data": {}
},
"attempt": 1,
"http_status": 200
}
],
"meta": {
"current_page": 1,
"last_page": 3,
"per_page": 25,
"total": 61
}
}token_ability_missing, session_token_required), demo restriction (demo_mode) or invalid URL signature. ErrorVoorbeeldaanroep
curl -X GET "https://api.novafisko.com/v1/firms/NDTQVQU4AUAV/webhooks/3/deliveries" \
-H "Accept: application/json" \
-H "Authorization: Bearer $NOVAFISKO_TOKEN"<?php
$client = new \GuzzleHttp\Client();
$response = $client->request('GET', 'https://api.novafisko.com/v1/firms/NDTQVQU4AUAV/webhooks/3/deliveries', [
'headers' => [
'Accept' => 'application/json',
'Authorization' => 'Bearer '.getenv('NOVAFISKO_TOKEN'),
],
]);
$data = json_decode((string) $response->getBody(), true);const response = await fetch("https://api.novafisko.com/v1/firms/NDTQVQU4AUAV/webhooks/3/deliveries", {
method: "GET",
headers: {
"Accept": "application/json",
"Authorization": `Bearer ${process.env.NOVAFISKO_TOKEN}`,
},
});
if (!response.ok) {
const error = await response.json();
throw new Error(error.code ?? error.message);
}
const data = response.status === 204 ? null : await response.json();import os
import requests
response = requests.get(
"https://api.novafisko.com/v1/firms/NDTQVQU4AUAV/webhooks/3/deliveries",
headers={
"Accept": "application/json",
"Authorization": f"Bearer {os.environ['NOVAFISKO_TOKEN']}",
},
timeout=30,
)
response.raise_for_status()
data = response.json() if response.content else NoneNovadesko bridge
Endpoints reserved to the Novadesko platform (shared secret).
GET/v1/bridge/pingPing of the Novadesko bridge Openbaar 30 / 1 min
Used by Novadesko to check the shared secret. Reserved to the Novadesko platform.
Public endpoint: no bearer token.
Rate limit: 30 requests per minute (429 beyond, see Retry-After).
Headers
| Naam | Type | Beschrijving |
|---|---|---|
X-Novafisko-Secret verplicht | string | Shared secret of the bridge. |
Antwoorden
200OK
Antwoordheaders X-RateLimit-Limit X-RateLimit-Remaining
application/json
Schema object
okbooleanappstringbv.NovaFiskotimestring <date-time>linked_firmsintegerlinked_companiesinteger
Voorbeeld
{
"ok": true,
"app": "NovaFisko",
"time": "2026-03-15T09:41:00+00:00",
"linked_firms": 1,
"linked_companies": 1
}code. ErrorVoorbeeldaanroep
curl -X GET "https://api.novafisko.com/v1/bridge/ping" \
-H "Accept: application/json"<?php
$client = new \GuzzleHttp\Client();
$response = $client->request('GET', 'https://api.novafisko.com/v1/bridge/ping', [
'headers' => [
'Accept' => 'application/json',
],
]);
$data = json_decode((string) $response->getBody(), true);const response = await fetch("https://api.novafisko.com/v1/bridge/ping", {
method: "GET",
headers: {
"Accept": "application/json",
},
});
if (!response.ok) {
const error = await response.json();
throw new Error(error.code ?? error.message);
}
const data = response.status === 204 ? null : await response.json();import os
import requests
response = requests.get(
"https://api.novafisko.com/v1/bridge/ping",
headers={
"Accept": "application/json",
},
timeout=30,
)
response.raise_for_status()
data = response.json() if response.content else NoneGET/v1/bridge/shops/{token}/statusSynchronisation status of a Novadesko shop Openbaar 60 / 1 min
Shown on the integration page of Novadesko. Reserved to the Novadesko platform (shared secret).
Public endpoint: no bearer token.
Rate limit: 60 requests per minute (429 beyond, see Retry-After).
Operatie-id bridge.shop-status
Padparameters
| Naam | Type | Beschrijving |
|---|---|---|
token verplicht | string | Token of the Novadesko shop. bv. shp_8fK2mQ |
Headers
| Naam | Type | Beschrijving |
|---|---|---|
X-Novafisko-Secret verplicht | string | Shared secret of the bridge. |
Antwoorden
200OK
Antwoordheaders X-RateLimit-Limit X-RateLimit-Remaining
application/json
Schema object
okbooleanlinkedbooleancompanyobjectfirmobjectsynced_atstring <date-time> | nulldocumentsobjectEigenschappen
totalintegerpendingintegerbookedintegerignoredintegerby_typeobject
bank_transactionsintegerfixed_assetsintegerjournal_entriesintegercorrectionsobjectEigenschappen
totalintegerrecentobject[]
app_urlstring <uri>
Voorbeeld
{
"ok": true,
"linked": true,
"company": {},
"firm": {},
"synced_at": "2026-03-15T09:41:00+00:00",
"documents": {
"total": 1,
"pending": 1,
"booked": 1,
"ignored": 1,
"by_type": {}
},
"bank_transactions": 1,
"fixed_assets": 1,
"journal_entries": 1,
"corrections": {
"total": 1,
"recent": [
{}
]
},
"app_url": "https://api.novafisko.com/v1/companies/XBVD5O1L29HC"
}Voorbeeldaanroep
curl -X GET "https://api.novafisko.com/v1/bridge/shops/shp_8fK2mQ/status" \
-H "Accept: application/json"<?php
$client = new \GuzzleHttp\Client();
$response = $client->request('GET', 'https://api.novafisko.com/v1/bridge/shops/shp_8fK2mQ/status', [
'headers' => [
'Accept' => 'application/json',
],
]);
$data = json_decode((string) $response->getBody(), true);const response = await fetch("https://api.novafisko.com/v1/bridge/shops/shp_8fK2mQ/status", {
method: "GET",
headers: {
"Accept": "application/json",
},
});
if (!response.ok) {
const error = await response.json();
throw new Error(error.code ?? error.message);
}
const data = response.status === 204 ? null : await response.json();import os
import requests
response = requests.get(
"https://api.novafisko.com/v1/bridge/shops/shp_8fK2mQ/status",
headers={
"Accept": "application/json",
},
timeout=30,
)
response.raise_for_status()
data = response.json() if response.content else NoneWebhook-events
Events die via POST naar de webhook-endpoints van het kantoor worden gestuurd. Elke verzending is ondertekend (header X-Novafisko-Signature).
eventdocument.importedA document entered the company file (Novadesko synchronisation or document importer).
A document entered the company file (Novadesko synchronisation or document importer).
Headers
| Naam | Type | Beschrijving |
|---|---|---|
X-Novafisko-Signature verplicht | string | t=<unix timestamp>,v1=<hex HMAC-SHA256(secret, "<t>.<raw body>")>. Compare in constant time and refuse timestamps older than five minutes.bv. t=1791189214,v1=5d2f0c9a7b6e4d1f8a3c2b1e0f9d8c7b6a5e4d3c2b1a0f9e8d7c6b5a4f3e2d1c |
X-Novafisko-Event verplicht | string | Event name. bv. document.imported |
X-Novafisko-Delivery verplicht | string | Id of the delivery (stable across retries). bv. 1871 |
Payload
Schema WebhookEvent
{
"id": "evt_01JD8X5Q2M7Z4W9K3T6B0N1VCE",
"event": "document.imported",
"api_version": "v1",
"created_at": "2026-10-05T08:21:48Z",
"firm": {
"public_token": "NDTQVQU4AUAV",
"name": "Fiduciaire Dumont & Associés"
},
"company": {
"public_token": "XBVD5O1L29HC",
"name": "Le Comptoir Montois SRL"
},
"data": {
"id": 87,
"source": "novafisko",
"origin": "novafisko",
"type": "purchases",
"direction": "purchase",
"is_credit_note": false,
"number": "F-2026-0412",
"document_date": "2026-03-15",
"due_date": "2026-04-14",
"third_party_id": 18,
"third_party_name": "Brasserie Dubuisson SA",
"third_party_vat": "BE0402531376",
"currency": "EUR",
"amount_net": "542.00",
"amount_vat": "113.82",
"amount_gross": "655.82",
"status": "pending",
"journal_entry_id": null
}
}Any 2xx answer within 10 seconds acknowledges the delivery. Anything else is retried with an exponential backoff (1, 2, 4, 8, 16, 32 and 64 minutes): 8 attempts, then the delivery is failed.
eventdocument.bookedA document was booked to an entry.
A document was booked to an entry.
Headers
| Naam | Type | Beschrijving |
|---|---|---|
X-Novafisko-Signature verplicht | string | t=<unix timestamp>,v1=<hex HMAC-SHA256(secret, "<t>.<raw body>")>. Compare in constant time and refuse timestamps older than five minutes.bv. t=1791189214,v1=5d2f0c9a7b6e4d1f8a3c2b1e0f9d8c7b6a5e4d3c2b1a0f9e8d7c6b5a4f3e2d1c |
X-Novafisko-Event verplicht | string | Event name. bv. document.booked |
X-Novafisko-Delivery verplicht | string | Id of the delivery (stable across retries). bv. 1871 |
Payload
Schema WebhookEvent
{
"id": "evt_01JD8X5Q2M7Z4W9K3T6B0N1VCE",
"event": "document.booked",
"api_version": "v1",
"created_at": "2026-10-05T08:21:48Z",
"firm": {
"public_token": "NDTQVQU4AUAV",
"name": "Fiduciaire Dumont & Associés"
},
"company": {
"public_token": "XBVD5O1L29HC",
"name": "Le Comptoir Montois SRL"
},
"data": {
"id": 87,
"source": "novafisko",
"origin": "novafisko",
"type": "purchases",
"direction": "purchase",
"is_credit_note": false,
"number": "F-2026-0412",
"document_date": "2026-03-15",
"due_date": "2026-04-14",
"third_party_id": 18,
"third_party_name": "Brasserie Dubuisson SA",
"third_party_vat": "BE0402531376",
"currency": "EUR",
"amount_net": "542.00",
"amount_vat": "113.82",
"amount_gross": "655.82",
"status": "booked",
"journal_entry_id": 1284
}
}Any 2xx answer within 10 seconds acknowledges the delivery. Anything else is retried with an exponential backoff (1, 2, 4, 8, 16, 32 and 64 minutes): 8 attempts, then the delivery is failed.
evententry.postedAn entry was posted.
An entry was posted.
Headers
| Naam | Type | Beschrijving |
|---|---|---|
X-Novafisko-Signature verplicht | string | t=<unix timestamp>,v1=<hex HMAC-SHA256(secret, "<t>.<raw body>")>. Compare in constant time and refuse timestamps older than five minutes.bv. t=1791189214,v1=5d2f0c9a7b6e4d1f8a3c2b1e0f9d8c7b6a5e4d3c2b1a0f9e8d7c6b5a4f3e2d1c |
X-Novafisko-Event verplicht | string | Event name. bv. entry.posted |
X-Novafisko-Delivery verplicht | string | Id of the delivery (stable across retries). bv. 1871 |
Payload
Schema WebhookEvent
{
"id": "evt_01JD8X5Q2M7Z4W9K3T6B0N1VCE",
"event": "entry.posted",
"api_version": "v1",
"created_at": "2026-10-05T08:21:48Z",
"firm": {
"public_token": "NDTQVQU4AUAV",
"name": "Fiduciaire Dumont & Associés"
},
"company": {
"public_token": "XBVD5O1L29HC",
"name": "Le Comptoir Montois SRL"
},
"data": {
"id": 1284,
"reference": "ACH 2026/000412",
"journal_code": "ACH",
"fiscal_year_code": "2026",
"number": 412,
"entry_date": "2026-03-15",
"due_date": "2026-04-14",
"label": "Facture Brasserie Dubuisson SA",
"document_reference": "F-2026-0412",
"status": "posted",
"origin": "manual",
"third_party_id": 18,
"total_debit": "655.82",
"total_credit": "655.82",
"lines_count": 4,
"reversed_entry_id": null,
"reversed_by_entry_id": null
}
}Any 2xx answer within 10 seconds acknowledges the delivery. Anything else is retried with an exponential backoff (1, 2, 4, 8, 16, 32 and 64 minutes): 8 attempts, then the delivery is failed.
evententry.reversedAn entry was reversed; `reversed_by_entry_id` is the reversal entry.
An entry was reversed; reversed_by_entry_id is the reversal entry.
Headers
| Naam | Type | Beschrijving |
|---|---|---|
X-Novafisko-Signature verplicht | string | t=<unix timestamp>,v1=<hex HMAC-SHA256(secret, "<t>.<raw body>")>. Compare in constant time and refuse timestamps older than five minutes.bv. t=1791189214,v1=5d2f0c9a7b6e4d1f8a3c2b1e0f9d8c7b6a5e4d3c2b1a0f9e8d7c6b5a4f3e2d1c |
X-Novafisko-Event verplicht | string | Event name. bv. entry.reversed |
X-Novafisko-Delivery verplicht | string | Id of the delivery (stable across retries). bv. 1871 |
Payload
Schema WebhookEvent
{
"id": "evt_01JD8X5Q2M7Z4W9K3T6B0N1VCE",
"event": "entry.reversed",
"api_version": "v1",
"created_at": "2026-10-05T08:21:48Z",
"firm": {
"public_token": "NDTQVQU4AUAV",
"name": "Fiduciaire Dumont & Associés"
},
"company": {
"public_token": "XBVD5O1L29HC",
"name": "Le Comptoir Montois SRL"
},
"data": {
"id": 1284,
"reference": "ACH 2026/000412",
"journal_code": "ACH",
"fiscal_year_code": "2026",
"number": 412,
"entry_date": "2026-03-15",
"due_date": "2026-04-14",
"label": "Facture Brasserie Dubuisson SA",
"document_reference": "F-2026-0412",
"status": "reversed",
"origin": "manual",
"third_party_id": 18,
"total_debit": "655.82",
"total_credit": "655.82",
"lines_count": 4,
"reversed_entry_id": null,
"reversed_by_entry_id": 1301
}
}Any 2xx answer within 10 seconds acknowledges the delivery. Anything else is retried with an exponential backoff (1, 2, 4, 8, 16, 32 and 64 minutes): 8 attempts, then the delivery is failed.
eventbank.transaction_importedA bank transaction was imported (one event per transaction).
A bank transaction was imported (one event per transaction).
Headers
| Naam | Type | Beschrijving |
|---|---|---|
X-Novafisko-Signature verplicht | string | t=<unix timestamp>,v1=<hex HMAC-SHA256(secret, "<t>.<raw body>")>. Compare in constant time and refuse timestamps older than five minutes.bv. t=1791189214,v1=5d2f0c9a7b6e4d1f8a3c2b1e0f9d8c7b6a5e4d3c2b1a0f9e8d7c6b5a4f3e2d1c |
X-Novafisko-Event verplicht | string | Event name. bv. bank.transaction_imported |
X-Novafisko-Delivery verplicht | string | Id of the delivery (stable across retries). bv. 1871 |
Payload
Schema WebhookEvent
{
"id": "evt_01JD8X5Q2M7Z4W9K3T6B0N1VCE",
"event": "bank.transaction_imported",
"api_version": "v1",
"created_at": "2026-10-05T08:21:48Z",
"firm": {
"public_token": "NDTQVQU4AUAV",
"name": "Fiduciaire Dumont & Associés"
},
"company": {
"public_token": "XBVD5O1L29HC",
"name": "Le Comptoir Montois SRL"
},
"data": {
"id": 951,
"source": "novadesko",
"account_iban": "BE68539007547034",
"value_date": "2026-03-18",
"amount": "-655.82",
"currency": "EUR",
"counterpart_name": "Brasserie Dubuisson SA",
"counterpart_iban": "BE71096123456769",
"communication": "F-2026-0412",
"status": "pending"
}
}Any 2xx answer within 10 seconds acknowledges the delivery. Anything else is retried with an exponential backoff (1, 2, 4, 8, 16, 32 and 64 minutes): 8 attempts, then the delivery is failed.
eventvat.declaration_validatedA VAT declaration was validated and its settlement entry posted.
A VAT declaration was validated and its settlement entry posted.
Headers
| Naam | Type | Beschrijving |
|---|---|---|
X-Novafisko-Signature verplicht | string | t=<unix timestamp>,v1=<hex HMAC-SHA256(secret, "<t>.<raw body>")>. Compare in constant time and refuse timestamps older than five minutes.bv. t=1791189214,v1=5d2f0c9a7b6e4d1f8a3c2b1e0f9d8c7b6a5e4d3c2b1a0f9e8d7c6b5a4f3e2d1c |
X-Novafisko-Event verplicht | string | Event name. bv. vat.declaration_validated |
X-Novafisko-Delivery verplicht | string | Id of the delivery (stable across retries). bv. 1871 |
Payload
Schema WebhookEvent
{
"id": "evt_01JD8X5Q2M7Z4W9K3T6B0N1VCE",
"event": "vat.declaration_validated",
"api_version": "v1",
"created_at": "2026-10-05T08:21:48Z",
"firm": {
"public_token": "NDTQVQU4AUAV",
"name": "Fiduciaire Dumont & Associés"
},
"company": {
"public_token": "XBVD5O1L29HC",
"name": "Le Comptoir Montois SRL"
},
"data": {
"id": 14,
"period_type": "quarterly",
"year": 2026,
"period": 1,
"label": "1T 2026",
"starts_on": "2026-01-01",
"ends_on": "2026-03-31",
"amount_due": "157.50",
"amount_refund": "0.00",
"status": "validated",
"validated_at": "2026-04-14T09:02:11Z",
"journal_entry_id": 1420
}
}Any 2xx answer within 10 seconds acknowledges the delivery. Anything else is retried with an exponential backoff (1, 2, 4, 8, 16, 32 and 64 minutes): 8 attempts, then the delivery is failed.
eventfiscal_year.closedA fiscal year was closed.
A fiscal year was closed.
Headers
| Naam | Type | Beschrijving |
|---|---|---|
X-Novafisko-Signature verplicht | string | t=<unix timestamp>,v1=<hex HMAC-SHA256(secret, "<t>.<raw body>")>. Compare in constant time and refuse timestamps older than five minutes.bv. t=1791189214,v1=5d2f0c9a7b6e4d1f8a3c2b1e0f9d8c7b6a5e4d3c2b1a0f9e8d7c6b5a4f3e2d1c |
X-Novafisko-Event verplicht | string | Event name. bv. fiscal_year.closed |
X-Novafisko-Delivery verplicht | string | Id of the delivery (stable across retries). bv. 1871 |
Payload
Schema WebhookEvent
{
"id": "evt_01JD8X5Q2M7Z4W9K3T6B0N1VCE",
"event": "fiscal_year.closed",
"api_version": "v1",
"created_at": "2026-10-05T08:21:48Z",
"firm": {
"public_token": "NDTQVQU4AUAV",
"name": "Fiduciaire Dumont & Associés"
},
"company": {
"public_token": "XBVD5O1L29HC",
"name": "Le Comptoir Montois SRL"
},
"data": {
"id": 2,
"code": "2025",
"starts_on": "2025-01-01",
"ends_on": "2025-12-31",
"closed_at": "2026-05-28T14:30:00Z"
}
}Any 2xx answer within 10 seconds acknowledges the delivery. Anything else is retried with an exponential backoff (1, 2, 4, 8, 16, 32 and 64 minutes): 8 attempts, then the delivery is failed.
eventpeppol.status_changedThe Peppol registration of a company file changed status.
The Peppol registration of a company file changed status.
Headers
| Naam | Type | Beschrijving |
|---|---|---|
X-Novafisko-Signature verplicht | string | t=<unix timestamp>,v1=<hex HMAC-SHA256(secret, "<t>.<raw body>")>. Compare in constant time and refuse timestamps older than five minutes.bv. t=1791189214,v1=5d2f0c9a7b6e4d1f8a3c2b1e0f9d8c7b6a5e4d3c2b1a0f9e8d7c6b5a4f3e2d1c |
X-Novafisko-Event verplicht | string | Event name. bv. peppol.status_changed |
X-Novafisko-Delivery verplicht | string | Id of the delivery (stable across retries). bv. 1871 |
Payload
Schema WebhookEvent
{
"id": "evt_01JD8X5Q2M7Z4W9K3T6B0N1VCE",
"event": "peppol.status_changed",
"api_version": "v1",
"created_at": "2026-10-05T08:21:48Z",
"firm": {
"public_token": "NDTQVQU4AUAV",
"name": "Fiduciaire Dumont & Associés"
},
"company": {
"public_token": "XBVD5O1L29HC",
"name": "Le Comptoir Montois SRL"
},
"data": {
"id": 5,
"participant_id": "0208:0477472701",
"full_id": "iso6523-actorid-upis::0208:0477472701",
"status": "active",
"previous_status": "pending",
"incoming_enabled": true,
"activated_at": "2026-03-02T10:15:00Z"
}
}Any 2xx answer within 10 seconds acknowledges the delivery. Anything else is retried with an exponential backoff (1, 2, 4, 8, 16, 32 and 64 minutes): 8 attempts, then the delivery is failed.
eventthird_party.createdA customer or supplier was created.
A customer or supplier was created.
Headers
| Naam | Type | Beschrijving |
|---|---|---|
X-Novafisko-Signature verplicht | string | t=<unix timestamp>,v1=<hex HMAC-SHA256(secret, "<t>.<raw body>")>. Compare in constant time and refuse timestamps older than five minutes.bv. t=1791189214,v1=5d2f0c9a7b6e4d1f8a3c2b1e0f9d8c7b6a5e4d3c2b1a0f9e8d7c6b5a4f3e2d1c |
X-Novafisko-Event verplicht | string | Event name. bv. third_party.created |
X-Novafisko-Delivery verplicht | string | Id of the delivery (stable across retries). bv. 1871 |
Payload
Schema WebhookEvent
{
"id": "evt_01JD8X5Q2M7Z4W9K3T6B0N1VCE",
"event": "third_party.created",
"api_version": "v1",
"created_at": "2026-10-05T08:21:48Z",
"firm": {
"public_token": "NDTQVQU4AUAV",
"name": "Fiduciaire Dumont & Associés"
},
"company": {
"public_token": "XBVD5O1L29HC",
"name": "Le Comptoir Montois SRL"
},
"data": {
"id": 18,
"type": "supplier",
"code": "DUBUISSON",
"name": "Brasserie Dubuisson SA",
"vat_number": "BE0402531376",
"enterprise_number": "0402531376",
"country": "BE",
"email": "compta@dubuisson.example",
"peppol_identifier": "0208:0402531376",
"peppol_registered": true
}
}Any 2xx answer within 10 seconds acknowledges the delivery. Anything else is retried with an exponential backoff (1, 2, 4, 8, 16, 32 and 64 minutes): 8 attempts, then the delivery is failed.
eventthird_party.updatedA customer or supplier was updated; `changed` lists the columns.
A customer or supplier was updated; changed lists the columns.
Headers
| Naam | Type | Beschrijving |
|---|---|---|
X-Novafisko-Signature verplicht | string | t=<unix timestamp>,v1=<hex HMAC-SHA256(secret, "<t>.<raw body>")>. Compare in constant time and refuse timestamps older than five minutes.bv. t=1791189214,v1=5d2f0c9a7b6e4d1f8a3c2b1e0f9d8c7b6a5e4d3c2b1a0f9e8d7c6b5a4f3e2d1c |
X-Novafisko-Event verplicht | string | Event name. bv. third_party.updated |
X-Novafisko-Delivery verplicht | string | Id of the delivery (stable across retries). bv. 1871 |
Payload
Schema WebhookEvent
{
"id": "evt_01JD8X5Q2M7Z4W9K3T6B0N1VCE",
"event": "third_party.updated",
"api_version": "v1",
"created_at": "2026-10-05T08:21:48Z",
"firm": {
"public_token": "NDTQVQU4AUAV",
"name": "Fiduciaire Dumont & Associés"
},
"company": {
"public_token": "XBVD5O1L29HC",
"name": "Le Comptoir Montois SRL"
},
"data": {
"id": 18,
"type": "supplier",
"code": "DUBUISSON",
"name": "Brasserie Dubuisson SA",
"vat_number": "BE0402531376",
"enterprise_number": "0402531376",
"country": "BE",
"email": "facturation@dubuisson.example",
"peppol_identifier": "0208:0402531376",
"peppol_registered": true,
"changed": [
"email"
]
}
}Any 2xx answer within 10 seconds acknowledges the delivery. Anything else is retried with an exponential backoff (1, 2, 4, 8, 16, 32 and 64 minutes): 8 attempts, then the delivery is failed.
eventwebhook.testTest event sent by `POST /v1/firms/{firm}/webhooks/{webhook}/test`; `company` is null.
Test event sent by POST /v1/firms/{firm}/webhooks/{webhook}/test; company is null.
Headers
| Naam | Type | Beschrijving |
|---|---|---|
X-Novafisko-Signature verplicht | string | t=<unix timestamp>,v1=<hex HMAC-SHA256(secret, "<t>.<raw body>")>. Compare in constant time and refuse timestamps older than five minutes.bv. t=1791189214,v1=5d2f0c9a7b6e4d1f8a3c2b1e0f9d8c7b6a5e4d3c2b1a0f9e8d7c6b5a4f3e2d1c |
X-Novafisko-Event verplicht | string | Event name. bv. webhook.test |
X-Novafisko-Delivery verplicht | string | Id of the delivery (stable across retries). bv. 1871 |
Payload
Schema WebhookEvent
{
"id": "evt_01JD8X5Q2M7Z4W9K3T6B0N1VCE",
"event": "webhook.test",
"api_version": "v1",
"created_at": "2026-10-05T08:21:48Z",
"firm": {
"public_token": "NDTQVQU4AUAV",
"name": "Fiduciaire Dumont & Associés"
},
"company": null,
"data": {
"message": "Test event from NovaFisko.",
"webhook_id": 3
}
}Any 2xx answer within 10 seconds acknowledges the delivery. Anything else is retried with an exponential backoff (1, 2, 4, 8, 16, 32 and 64 minutes): 8 attempts, then the delivery is failed.
Schema's
Gegevensstructuren die door de endpoints worden hergebruikt. Bedragen zijn decimale strings, datums volgen ISO 8601.
schemaAccount
idintegerbv.580company_idintegerbv.7numberstringPCMN account number (2 to 12 digits).bv.702000labelstringbv.Prestations de servicestypestringassetliabilityexpenseincomeoff_balanceis_postablebooleanFalse for heading accounts.is_reconcilablebooleanLettering allowed (customers, suppliers…).purchase_gridinteger | nullVAT grid of purchases: 81, 82 or 83.bv.82default_vat_code_idinteger | nullcreated_atstring <date-time>updated_atstring <date-time>lock_versionintegerInternal lock counter.bv.3versionintegerVersion of the record, to send back asX-Base-Version/base_version.bv.3deleted_atstring <date-time> | nullSet while the record is in the recycle bin.deleted_byinteger | nulldefault_vat_codeobject | null
Voorbeeld
{
"id": 580,
"company_id": 7,
"number": "702000",
"label": "Prestations de services",
"type": "asset",
"is_postable": true,
"is_reconcilable": true,
"purchase_grid": 82,
"default_vat_code_id": 42,
"created_at": "2026-03-15T09:41:00+00:00",
"updated_at": "2026-03-15T09:41:00+00:00",
"lock_version": 3,
"version": 3,
"deleted_at": "2026-03-15T09:41:00+00:00",
"deleted_by": 1,
"default_vat_code": {}
}schemaActivityFeed
dataActivityRow[]current_pageintegerbv.1per_pageintegerbv.50has_moreboolean
Voorbeeld
{
"data": [
{
"source": "audit",
"at": "2026-03-15T09:41:00+00:00",
"recorded_at": "2026-03-15T09:41:00+00:00",
"user": null,
"action": "entry.posted",
"action_label": "Écriture validée",
"subject_type": "string",
"subject_id": 42,
"subject_label": "string",
"origin": "string",
"device_name": "MacBook de Claire",
"revision_id": 42,
"operation_id": "bf413a19-2136-4504-bc42-b314637eb5c7",
"company_id": 7,
"changed_fields": [
"string"
],
"company": {
"token": "XBVD5O1L29HC",
"name": "Le Comptoir Montois SRL"
}
}
],
"current_page": 1,
"per_page": 50,
"has_more": true
}schemaActivityRow
sourcestringauditrevisionatstring <date-time>recorded_atstring <date-time>userobject | nullactionstringbv.entry.postedaction_labelstringbv.Écriture validéesubject_typestring | nullsubject_idinteger | nullsubject_labelstring | nulloriginstring | nulldevice_namestring | nullrevision_idinteger | nulloperation_idstring | nullcompany_idinteger | nullchanged_fieldsstring[]companyobject | nullFirm feed only.Eigenschappen
tokenstringnamestring
Voorbeeld
{
"source": "audit",
"at": "2026-03-15T09:41:00+00:00",
"recorded_at": "2026-03-15T09:41:00+00:00",
"user": {
"id": 12,
"name": "Claire Dumont"
},
"action": "entry.posted",
"action_label": "Écriture validée",
"subject_type": "string",
"subject_id": 42,
"subject_label": "string",
"origin": "string",
"device_name": "MacBook de Claire",
"revision_id": 42,
"operation_id": "bf413a19-2136-4504-bc42-b314637eb5c7",
"company_id": 7,
"changed_fields": [
"string"
],
"company": {
"token": "XBVD5O1L29HC",
"name": "Le Comptoir Montois SRL"
}
}schemaAnalyticCode
idintegerbv.2company_idintegeraxisstringcost_centerprojectcodestringbv.SALLElabelstringbv.Salleis_activebooleancreated_atstring <date-time>updated_atstring <date-time>lock_versionintegerInternal lock counter.bv.3versionintegerVersion of the record, to send back asX-Base-Version/base_version.bv.3deleted_atstring <date-time> | nullSet while the record is in the recycle bin.deleted_byinteger | null
Voorbeeld
{
"id": 2,
"company_id": 7,
"axis": "cost_center",
"code": "SALLE",
"label": "Salle",
"is_active": true,
"created_at": "2026-03-15T09:41:00+00:00",
"updated_at": "2026-03-15T09:41:00+00:00",
"lock_version": 3,
"version": 3,
"deleted_at": "2026-03-15T09:41:00+00:00",
"deleted_by": 1
}schemaBankRule
idintegerbv.6company_idintegernamestringbv.Frais bancairesfieldstringcounterpart_namecounterpart_ibancommunicationdescriptionanyoperatorstringcontainsequalsstartspatternstringbv.frais de tenuedirectionstringinoutanyaccount_idintegerbv.517third_party_idinteger | nulllabelstring | nullpriorityintegerbv.100is_activebooleanapplied_countintegerbv.14created_atstring <date-time>updated_atstring <date-time>lock_versionintegerInternal lock counter.bv.3versionintegerVersion of the record, to send back asX-Base-Version/base_version.bv.3deleted_atstring <date-time> | nullSet while the record is in the recycle bin.deleted_byinteger | nullaccountobjectEigenschappen
idintegerIdbv.580numberstringAccount numberbv.702000labelstringLabelbv.Prestations de services
third_partyobject | null
Voorbeeld
{
"id": 6,
"company_id": 7,
"name": "Frais bancaires",
"field": "counterpart_name",
"operator": "contains",
"pattern": "frais de tenue",
"direction": "in",
"account_id": 517,
"third_party_id": 18,
"label": "Facture Brasserie Dubuisson",
"priority": 100,
"is_active": true,
"applied_count": 14,
"created_at": "2026-03-15T09:41:00+00:00",
"updated_at": "2026-03-15T09:41:00+00:00",
"lock_version": 3,
"version": 3,
"deleted_at": "2026-03-15T09:41:00+00:00",
"deleted_by": 1,
"account": {
"id": 580,
"number": "702000",
"label": "Prestations de services"
},
"third_party": {}
}schemaBankTransaction
idintegerbv.951company_idintegerbv.7sourcestringbv.novadeskoexternal_idstring | nullaccount_ibanstringbv.BE68539007547034account_bankstring | nulljournal_idinteger | nullbv.7amountstring <decimal>Positive = money in, negative = money out.bv.1210.00currencystringbv.EURvalue_datestring <date-time>bv.2026-03-18T00:00:00.000000Zexecution_datestring <date-time> | nullcounterpart_namestring | nullbv.ACME SAcounterpart_ibanstring | nullcommunicationstring | nullbv.+++000/0000/00101+++descriptionstring | nullstatusstringpendingbookedignoredjournal_entry_idinteger | nullmatched_journal_entry_idinteger | nullInvoice proposed by the matching.match_confidencestring | nullhigh, medium or low.bv.highmatch_reasonstring | nullstructured_communication, novadesko_link, amount_and_third_party, rule…bv.structured_communicationmatched_atstring <date-time> | nullbooked_account_idinteger | nullmatched_rule_idinteger | nullsynced_atstring <date-time> | nullcreated_atstring <date-time>updated_atstring <date-time>lock_versionintegerInternal lock counter.bv.3versionintegerVersion of the record, to send back asX-Base-Version/base_version.bv.3journalobject | nulllinksobject[]matched_entryobject | nullbooked_accountobject | nullmatched_ruleobject | nulljournal_entryobject | null
Voorbeeld
{
"id": 951,
"company_id": 7,
"source": "novadesko",
"external_id": "string",
"account_iban": "BE68539007547034",
"account_bank": "string",
"journal_id": 7,
"amount": "1210.00",
"currency": "EUR",
"value_date": "2026-03-18T00:00:00.000000Z",
"execution_date": "2026-03-15T09:41:00+00:00",
"counterpart_name": "ACME SA",
"counterpart_iban": "string",
"communication": "+++000/0000/00101+++",
"description": "Description",
"status": "pending",
"journal_entry_id": 1284,
"matched_journal_entry_id": 42,
"match_confidence": "high",
"match_reason": "structured_communication",
"matched_at": "2026-03-15T09:41:00+00:00",
"booked_account_id": 42,
"matched_rule_id": 42,
"synced_at": "2026-03-15T09:41:00+00:00",
"created_at": "2026-03-15T09:41:00+00:00",
"updated_at": "2026-03-15T09:41:00+00:00",
"lock_version": 3,
"version": 3,
"journal": {},
"links": [
{}
],
"matched_entry": {},
"booked_account": {},
"matched_rule": {},
"journal_entry": {}
}schemaBudget
idintegercompany_idintegerfiscal_year_idintegerscenariostringbv.defaultaccount_idintegercost_center_idinteger | nullperiod_numberintegerbv.3amountstring <decimal>bv.1500.00accountobjectEigenschappen
idintegerIdbv.580numberstringAccount numberbv.702000labelstringLabelbv.Prestations de services
Voorbeeld
{
"id": 42,
"company_id": 7,
"fiscal_year_id": 2,
"scenario": "default",
"account_id": 580,
"cost_center_id": 42,
"period_number": 3,
"amount": "1500.00",
"account": {
"id": 580,
"number": "702000",
"label": "Prestations de services"
}
}schemaCodaFile
idintegerbv.31company_idintegersourcestringbv.novadeskoexternal_idstring | nullfilenamestringbv.CODA_2026_031.codsource_urlstring <uri> | nullaccount_ibanstringbv.BE68539007547034account_bankstring | nulljournal_idinteger | nullstatement_numberstring | nullbv.031sequencestring | nullopening_balancestring <decimal> | nullbv.18420.11closing_balancestring <decimal> | nullbv.19630.11period_fromstring <date-time> | nullperiod_tostring <date-time> | nulltransactions_countintegerbv.12statusstringbv.importedsynced_atstring <date-time> | nullcreated_atstring <date-time>updated_atstring <date-time>journalobject | null
Voorbeeld
{
"id": 31,
"company_id": 7,
"source": "novadesko",
"external_id": "string",
"filename": "CODA_2026_031.cod",
"source_url": "https://api.novafisko.com/v1/companies/XBVD5O1L29HC",
"account_iban": "BE68539007547034",
"account_bank": "string",
"journal_id": 3,
"statement_number": "031",
"sequence": "string",
"opening_balance": "18420.11",
"closing_balance": "19630.11",
"period_from": "2026-03-15T09:41:00+00:00",
"period_to": "2026-03-15T09:41:00+00:00",
"transactions_count": 12,
"status": "imported",
"synced_at": "2026-03-15T09:41:00+00:00",
"created_at": "2026-03-15T09:41:00+00:00",
"updated_at": "2026-03-15T09:41:00+00:00",
"journal": {}
}schemaCompanyCompany file (dossier). Addressed everywhere by its `public_token`.
Company file (dossier). Addressed everywhere by its public_token.
idintegerbv.7public_tokenstringbv.XBVD5O1L29HCfirm_idinteger | nullbv.3codestring | nullbv.COMPTOIRnamestringbv.Le Comptoir Montois SRLlegal_formstring | nullbv.SRLlegal_form_codestring | nullKBO / BCE legal form code.bv.610enterprise_numberstring | nullbv.0477472701vat_numberstring | nullbv.BE0477472701country_packstringBEFRLUvat_regimestringmonthlyquarterlyfranchiseexemptunitcurrencystringbv.EURlocalestringfrnlendeaddressstring | nullbv.Grand-Place 14, 7000 Monsstreetstring | nullStreetbv.Grand-Placehouse_numberstring | nullNumberbv.14boxstring | nullBoxpostal_codestring | nullPostal codebv.7000citystring | nullCitybv.Monscountrystring | nullISO 3166-1 alpha-2bv.BElatitudestring | nullbv.50.4541000longitudestring | nullbv.3.9523000nace_codesobject[] | nullEigenschappen
codestringbv.56111classificationstringMAINSECOANCI
main_nace_codestring | nullbv.56111company_sheet_atstring <date-time> | nulllogo_urlstring <uri> | nullicon_urlstring <uri> | nullfiscal_year_startstring <date> | nullfiscal_year_endstring <date> | nullsettingsCompanySettingsis_activebooleanis_demobooleanTrue for the company files of the demo firm.bv.falsesourcestringmanualnovadeskoexternal_idstring | nullsynced_atstring <date-time> | nullcreated_atstring <date-time>updated_atstring <date-time>deleted_atstring <date-time> | nulllock_versionintegerInternal lock counter.bv.3versionintegerVersion of the record, to send back asX-Base-Version/base_version.bv.3journal_entries_countintegerPresent on list / show.bv.1284firmobjectEigenschappen
idintegerbv.3public_tokenstringbv.NDTQVQU4AUAVnamestringbv.Fiduciaire Dumont & Associés
fiscal_yearsFiscalYear[]journalsJournal[]
Voorbeeld
{
"id": 7,
"public_token": "XBVD5O1L29HC",
"firm_id": 3,
"code": "COMPTOIR",
"name": "Le Comptoir Montois SRL",
"legal_form": "SRL",
"legal_form_code": "610",
"enterprise_number": "0477472701",
"vat_number": "BE0477472701",
"country_pack": "BE",
"vat_regime": "monthly",
"currency": "EUR",
"locale": "fr",
"address": "Grand-Place 14, 7000 Mons",
"street": "Grand-Place",
"house_number": "14",
"box": "string",
"postal_code": "7000",
"city": "Mons",
"country": "BE",
"latitude": "50.4541000",
"longitude": "3.9523000",
"nace_codes": [
{
"code": "56111",
"classification": "MAIN"
}
],
"main_nace_code": "56111",
"company_sheet_at": "2026-03-15T09:41:00+00:00",
"logo_url": "https://api.novafisko.com/v1/companies/XBVD5O1L29HC",
"icon_url": "https://api.novafisko.com/v1/companies/XBVD5O1L29HC",
"fiscal_year_start": "2026-03-15",
"fiscal_year_end": "2026-03-15",
"settings": {
"vat": {
"administration_cell": "string",
"structured_communication": "000000000101",
"directorate_number": "string",
"office_number": "string",
"declarant": {
"applicable": false,
"company_name": "string",
"signatory_1": "string",
"signatory_1_title": "string",
"signatory_2": "string",
"signatory_2_title": "string",
"phone": "+32 65 31 42 18",
"fax": "string",
"email": "claire.dumont@fiduciaire-dumont.be",
"language": "fr"
},
"sender_281_50": {
"name": "Le Comptoir Montois SRL",
"enterprise_number": "0477472701",
"address": "Grand-Place 14",
"phone": "+32 65 31 42 18",
"email": "claire.dumont@fiduciaire-dumont.be"
},
"filer": {
"quality": "company",
"name": "Le Comptoir Montois SRL",
"enterprise_number": "0477472701",
"phone": "+32 65 31 42 18",
"email": "claire.dumont@fiduciaire-dumont.be"
}
},
"legal": {
"rpm_district": "Hainaut, division Mons"
},
"annual_accounts": {
"scheme": "abbreviated",
"general_meeting_date": "2026-03-15",
"directors": "string",
"valuation_rules": "string"
},
"auto_entries": {
"vat": {
"payable_account": "451000",
"receivable_account": "411000",
"correction_payable_account": "string",
"correction_receivable_account": "string",
"journal_id": 3
},
"invoices_to_receive": {
"supplier_account": "444000",
"customer_account": "404000",
"journal_id": 3
},
"reconciliation_difference": {
"expense_account": "657000",
"income_account": "757000",
"max_amount": 1
},
"transfers": {
"transit_account": "580000",
"journal_id": 3
}
},
"history": {
"trash_retention_days": 90
}
},
"is_active": true,
"is_demo": false,
"source": "manual",
"external_id": "string",
"synced_at": "2026-03-15T09:41:00+00:00",
"created_at": "2026-03-15T09:41:00+00:00",
"updated_at": "2026-03-15T09:41:00+00:00",
"deleted_at": "2026-03-15T09:41:00+00:00",
"lock_version": 3,
"version": 3,
"journal_entries_count": 1284,
"firm": {
"id": 3,
"public_token": "NDTQVQU4AUAV",
"name": "Fiduciaire Dumont & Associés"
},
"fiscal_years": [
{
"id": 2,
"company_id": 7,
"code": "2026",
"starts_on": "2026-01-01T00:00:00.000000Z",
"ends_on": "2026-12-31T00:00:00.000000Z",
"is_closed": false,
"closed_at": "2026-03-15T09:41:00+00:00",
"closed_by": 1,
"created_at": "2026-03-15T09:41:00+00:00",
"updated_at": "2026-03-15T09:41:00+00:00",
"lock_version": 3,
"version": 3,
"periods": [
{
"id": 16,
"fiscal_year_id": 2,
"number": 3,
"label": "Mars 2026",
"starts_on": "2026-03-15T09:41:00+00:00",
"ends_on": "2026-03-15T09:41:00+00:00",
"is_locked": false,
"locked_at": "2026-03-15T09:41:00+00:00",
"lock_version": 3,
"version": 3
}
]
}
],
"journals": [
{
"id": 3,
"company_id": 7,
"code": "VEN",
"label": "Ventes",
"type": "purchase",
"control_account_id": 42,
"iban": "BE68539007547034",
"bic": "GEBABEBB",
"last_number": 412,
"is_active": true,
"is_default": true,
"description": "Description",
"created_at": "2026-03-15T09:41:00+00:00",
"updated_at": "2026-03-15T09:41:00+00:00",
"lock_version": 3,
"version": 3,
"deleted_at": "2026-03-15T09:41:00+00:00",
"deleted_by": 1,
"entries_count": 412,
"control_account": null,
"rules": [
{
"id": 4,
"company_id": 7,
"journal_id": 3,
"direction": "sale",
"match_field": "payment_provider",
"match_value": "TK",
"priority": 100,
"is_active": true,
"created_at": "2026-03-15T09:41:00+00:00",
"updated_at": "2026-03-15T09:41:00+00:00",
"lock_version": 3,
"version": 3,
"deleted_at": "2026-03-15T09:41:00+00:00",
"deleted_by": 1,
"journal": {
"id": 3,
"code": "VEN",
"label": "Ventes",
"type": "sale"
}
}
]
}
]
}schemaCompanySettingsResolved settings of the company file (country pack defaults merged with the saved values).
Resolved settings of the company file (country pack defaults merged with the saved values).
vatobjectEigenschappen
administration_cellstring | nullstructured_communicationstring | nulldirectorate_numberstring | nulloffice_numberstring | nulldeclarantobjectEigenschappen
applicablebooleanbv.falsecompany_namestring | nullsignatory_1string | nullsignatory_1_titlestring | nullsignatory_2string | nullsignatory_2_titlestring | nullphonestring | nullfaxstring | nullemailstring <email> | nulllanguagestringfrnlende
sender_281_50objectEigenschappen
namestring | nullenterprise_numberstring | nulladdressstring | nullphonestring | nullemailstring <email> | null
filerobjectEigenschappen
qualitystringcompanyaccountantnamestring | nullenterprise_numberstring | nullphonestring | nullemailstring <email> | null
legalobjectEigenschappen
rpm_districtstring | nullRPM / RPR district printed on legal documents.bv.Hainaut, division Mons
annual_accountsobjectEigenschappen
schemestringabbreviatedmicrogeneral_meeting_datestring <date> | nulldirectorsstring | nullvaluation_rulesstring | null
auto_entriesobjectEigenschappen
vatobjectEigenschappen
payable_accountstringbv.451000receivable_accountstringbv.411000correction_payable_accountstring | nullcorrection_receivable_accountstring | nulljournal_idinteger | null
invoices_to_receiveobjectEigenschappen
supplier_accountstringbv.444000customer_accountstringbv.404000journal_idinteger | null
reconciliation_differenceobjectEigenschappen
expense_accountstringbv.657000income_accountstringbv.757000max_amountnumberbv.1
transfersobjectEigenschappen
transit_accountstringbv.580000journal_idinteger | null
historyobjectEigenschappen
trash_retention_daysintegerbv.90
Voorbeeld
{
"vat": {
"administration_cell": "string",
"structured_communication": "000000000101",
"directorate_number": "string",
"office_number": "string",
"declarant": {
"applicable": false,
"company_name": "string",
"signatory_1": "string",
"signatory_1_title": "string",
"signatory_2": "string",
"signatory_2_title": "string",
"phone": "+32 65 31 42 18",
"fax": "string",
"email": "claire.dumont@fiduciaire-dumont.be",
"language": "fr"
},
"sender_281_50": {
"name": "Le Comptoir Montois SRL",
"enterprise_number": "0477472701",
"address": "Grand-Place 14",
"phone": "+32 65 31 42 18",
"email": "claire.dumont@fiduciaire-dumont.be"
},
"filer": {
"quality": "company",
"name": "Le Comptoir Montois SRL",
"enterprise_number": "0477472701",
"phone": "+32 65 31 42 18",
"email": "claire.dumont@fiduciaire-dumont.be"
}
},
"legal": {
"rpm_district": "Hainaut, division Mons"
},
"annual_accounts": {
"scheme": "abbreviated",
"general_meeting_date": "2026-03-15",
"directors": "string",
"valuation_rules": "string"
},
"auto_entries": {
"vat": {
"payable_account": "451000",
"receivable_account": "411000",
"correction_payable_account": "string",
"correction_receivable_account": "string",
"journal_id": 3
},
"invoices_to_receive": {
"supplier_account": "444000",
"customer_account": "404000",
"journal_id": 3
},
"reconciliation_difference": {
"expense_account": "657000",
"income_account": "757000",
"max_amount": 1
},
"transfers": {
"transit_account": "580000",
"journal_id": 3
}
},
"history": {
"trash_retention_days": 90
}
}schemaCompanySheetNormalised company sheet (CompanySearch for BE / FR, VIES elsewhere).
Normalised company sheet (CompanySearch for BE / FR, VIES elsewhere).
identifierstringbv.0477472701enterprise_numberstring | nullvat_numberstring | nullbv.BE0477472701namestringbv.Le Comptoir Montoislegal_formstring | nullbv.SRLlegal_form_codestring | nullbv.610statusstring | nullbv.activestart_datestring <date> | nulladdressobjectEigenschappen
streetstring | nullStreetbv.Grand-Placehouse_numberstring | nullNumberbv.14boxstring | nullBoxpostal_codestring | nullPostal codebv.7000citystring | nullCitybv.Monscountrystring | nullISO 3166-1 alpha-2bv.BE
address_linestring | nulllatitudenumber | nulllongitudenumber | nullnace_codesobject[]Eigenschappen
codestringbv.56111classificationstringMAINSECOANCIlabelstring | null
main_nace_codestring | nullemailstring | nullphonestring | nullwebsitestring | nullsourcestringbv.companysearchfetched_atstring <date-time> | nullmapobjectEigenschappen
querystringAddress used for the mapbv.Grand-Place 14, 7000 Mons, Belgiqueapple_urlstring <uri>google_urlstring <uri>static_urlstring <uri> | nulllatitudenumber | nulllongitudenumber | null
Voorbeeld
{
"identifier": "0477472701",
"enterprise_number": "0477472701",
"vat_number": "BE0477472701",
"name": "Le Comptoir Montois",
"legal_form": "SRL",
"legal_form_code": "610",
"status": "active",
"start_date": "2026-03-15",
"address": {
"street": "Grand-Place",
"house_number": "14",
"box": "string",
"postal_code": "7000",
"city": "Mons",
"country": "BE"
},
"address_line": "string",
"latitude": 12.5,
"longitude": 12.5,
"nace_codes": [
{
"code": "56111",
"classification": "MAIN",
"label": "Facture Brasserie Dubuisson"
}
],
"main_nace_code": "string",
"email": "claire.dumont@fiduciaire-dumont.be",
"phone": "+32 65 31 42 18",
"website": "https://www.comptoir-montois.be",
"source": "companysearch",
"fetched_at": "2026-03-15T09:41:00+00:00",
"map": {
"query": "Grand-Place 14, 7000 Mons, Belgique",
"apple_url": "https://api.novafisko.com/v1/companies/XBVD5O1L29HC",
"google_url": "https://api.novafisko.com/v1/companies/XBVD5O1L29HC",
"static_url": "https://api.novafisko.com/v1/companies/XBVD5O1L29HC",
"latitude": 12.5,
"longitude": 12.5
}
}schemaDepreciationLine
idintegerfixed_asset_idintegerbv.9yearintegerbv.2026period_startstring <date-time>period_endstring <date-time>amountstring <decimal>bv.2269.37cumulative_amountstring <decimal>bv.2269.37remaining_valuestring <decimal>bv.10130.63statusstringplannedbookedjournal_entry_idinteger | nullbooked_amountstring <decimal>bv.0.00
Voorbeeld
{
"id": 42,
"fixed_asset_id": 9,
"year": 2026,
"period_start": "2026-03-15T09:41:00+00:00",
"period_end": "2026-03-15T09:41:00+00:00",
"amount": "2269.37",
"cumulative_amount": "2269.37",
"remaining_value": "10130.63",
"status": "planned",
"journal_entry_id": 1284,
"booked_amount": "0.00"
}schemaDocumentImportFile uploaded to the document importer and its analysis.
File uploaded to the document importer and its analysis.
idintegerbv.311company_idintegerbv.7uploaded_byinteger | nullbatch_idstring <uuid>Groups the files of one upload.parent_import_idinteger | nullZIP the file was extracted from.original_namestringbv.facture-dubuisson-0412.pdfmimestringbv.application/pdfsizeintegerBytes.bv.184320file_hashstringSHA-256, used to detect duplicates.kindstringpdfimagexmlzipotherstatusstringqueuedanalyzingreadyneeds_reviewvalidatederrorduplicateexpandedprogressinteger0 to 100.bv.100stepstringuploadtextailinesmatchdoneenginestring | nullEngine that read the file.bv.apiextractedExtractedDocument | nullraw_textstring | nullText layer (absent from lists).warningsstring[] | nullerrorstring | nullsuggested_third_party_idinteger | nullsuggested_directionstring | nullduplicate_of_import_idinteger | nullduplicate_of_document_idinteger | nullimported_document_idinteger | nullDocument created by the validation.novadesko_document_idstring | nullnovadesko_locked_atstring <date-time> | nullstarted_atstring <date-time> | nullfinished_atstring <date-time> | nullcreated_atstring <date-time>updated_atstring <date-time>lock_versionintegerInternal lock counter.bv.3versionintegerVersion of the record, to send back asX-Base-Version/base_version.bv.3deleted_atstring <date-time> | nullSet while the record is in the recycle bin.deleted_byinteger | nullsuggested_third_partyobject | null
Voorbeeld
{
"id": 311,
"company_id": 7,
"uploaded_by": 1,
"batch_id": "bf413a19-2136-4504-bc42-b314637eb5c7",
"parent_import_id": 42,
"original_name": "facture-dubuisson-0412.pdf",
"mime": "application/pdf",
"size": 184320,
"file_hash": "string",
"kind": "pdf",
"status": "queued",
"progress": 100,
"step": "upload",
"engine": "api",
"extracted": {
"direction": "purchase",
"is_credit_note": false,
"number": "F-2026-0412",
"document_date": "2026-03-15",
"due_date": "2026-03-15",
"currency": "EUR",
"supplier": {
"name": "Brasserie Dubuisson SA",
"vat_number": "BE0402531376",
"enterprise_number": "0477472701",
"address": "Grand-Place 14",
"postal_code": "7000",
"city": "Mons",
"country": "BE",
"iban": "BE68539007547034",
"email": "claire.dumont@fiduciaire-dumont.be"
},
"customer": {},
"amount_net": "507.00",
"amount_vat": "106.47",
"amount_gross": "613.47",
"structured_communication": "000000000101",
"confidence": 0.93,
"lines": [
{
"description": "Fûts Bush Caractère 20 L",
"quantity": 6,
"unit_price": 84.5,
"tax_rate": 21,
"amount_net": "507.00",
"amount_vat": "106.47",
"account_id": 580,
"account_number": "604000",
"vat_code_id": 4,
"vat_code": "A21"
}
]
},
"raw_text": "string",
"warnings": [
"string"
],
"error": "string",
"suggested_third_party_id": 42,
"suggested_direction": "string",
"duplicate_of_import_id": 42,
"duplicate_of_document_id": 42,
"imported_document_id": 42,
"novadesko_document_id": "string",
"novadesko_locked_at": "2026-03-15T09:41:00+00:00",
"started_at": "2026-03-15T09:41:00+00:00",
"finished_at": "2026-03-15T09:41:00+00:00",
"created_at": "2026-03-15T09:41:00+00:00",
"updated_at": "2026-03-15T09:41:00+00:00",
"lock_version": 3,
"version": 3,
"deleted_at": "2026-03-15T09:41:00+00:00",
"deleted_by": 1,
"suggested_third_party": {}
}schemaErrorError envelope. `message` is translated; `code` is a stable machine reason when the refusal has one; `errors`...
Error envelope. message is translated; code is a stable machine reason when the refusal has one; errors maps fields to messages (422).
messagestringverplichtHuman-readable message (translated).bv.Le champ date de l'écriture est obligatoire.codestringMachine reason (token_ability_missing,session_token_required,demo_mode,conflict,period_locked,company_limit_reached,service_unavailable…).bv.period_lockederrorsobjectField => list of messages.
Voorbeeld
{
"message": "Le champ date de l'écriture est obligatoire.",
"code": "period_locked",
"errors": {
"entry_date": [
"La période Mars 2026 est verrouillée."
]
}
}schemaExtractedDocumentData read from an uploaded file (AI extraction or UBL / CII parsing), editable before validation.
Data read from an uploaded file (AI extraction or UBL / CII parsing), editable before validation.
directionstringpurchasesaleis_credit_notebooleanbv.falsenumberstring | nullbv.F-2026-0412document_datestring <date> | nulldue_datestring <date> | nullcurrencystringbv.EURsupplierobjectEigenschappen
namestring | nullbv.Brasserie Dubuisson SAvat_numberstring | nullbv.BE0402531376enterprise_numberstring | nulladdressstring | nullpostal_codestring | nullcitystring | nullcountrystring | nullibanstring | nullemailstring | null
customerobject | nullamount_netstring | nullbv.507.00amount_vatstring | nullbv.106.47amount_grossstring | nullbv.613.47structured_communicationstring | nullconfidencenumber0 to 1; below 0.6 the import needs a review.bv.0.93linesobject[]Eigenschappen
descriptionstringbv.Fûts Bush Caractère 20 Lquantitynumber | nullbv.6unit_pricenumber | nullbv.84.5tax_ratenumber | nullbv.21amount_netstringbv.507.00amount_vatstring | nullbv.106.47account_idinteger | nullSuggested account.account_numberstring | nullbv.604000vat_code_idinteger | nullvat_codestring | nullbv.A21
Voorbeeld
{
"direction": "purchase",
"is_credit_note": false,
"number": "F-2026-0412",
"document_date": "2026-03-15",
"due_date": "2026-03-15",
"currency": "EUR",
"supplier": {
"name": "Brasserie Dubuisson SA",
"vat_number": "BE0402531376",
"enterprise_number": "0477472701",
"address": "Grand-Place 14",
"postal_code": "7000",
"city": "Mons",
"country": "BE",
"iban": "BE68539007547034",
"email": "claire.dumont@fiduciaire-dumont.be"
},
"customer": {},
"amount_net": "507.00",
"amount_vat": "106.47",
"amount_gross": "613.47",
"structured_communication": "000000000101",
"confidence": 0.93,
"lines": [
{
"description": "Fûts Bush Caractère 20 L",
"quantity": 6,
"unit_price": 84.5,
"tax_rate": 21,
"amount_net": "507.00",
"amount_vat": "106.47",
"account_id": 580,
"account_number": "604000",
"vat_code_id": 4,
"vat_code": "A21"
}
]
}schemaFirmAccounting firm (fiduciary) with its team and company files.
Accounting firm (fiduciary) with its team and company files.
public_tokenstringbv.NDTQVQU4AUAVnamestringbv.Fiduciaire Dumont & Associésenterprise_numberstring | nullbv.0458662817vat_numberstring | nullbv.BE0458662817itaa_numberstring | nullITAA membership number.bv.50.123.456itaa_statusstring | nullitaa_qualitystring | nulladdressstring | nullbv.Rue de Nimy 52postal_codestring | nullbv.7000citystring | nullbv.Monswebsitestring | nulllogo_urlstring <uri> | nullis_partnerbooleancountry_codestringbv.BElocalestringfrnlendeemailstring <email> | nullphonestring | nullsourcestringlocalnovadeskosynced_atstring <date-time> | nullcan_managebooleanTrue for admins and managers of the firm.membersFirmMember[]companiesobject[]Eigenschappen
public_tokenstringnamestringcodestring | nullicon_urlstring <uri> | nulllogo_urlstring <uri> | nullmembersobject[]Eigenschappen
idintegernamestringbv.Thomas Peetersemailstring <email>rolestringmanagerencoderrevieweris_activeboolean
Voorbeeld
{
"public_token": "NDTQVQU4AUAV",
"name": "Fiduciaire Dumont & Associés",
"enterprise_number": "0458662817",
"vat_number": "BE0458662817",
"itaa_number": "50.123.456",
"itaa_status": "string",
"itaa_quality": "string",
"address": "Rue de Nimy 52",
"postal_code": "7000",
"city": "Mons",
"website": "https://www.comptoir-montois.be",
"logo_url": "https://api.novafisko.com/v1/companies/XBVD5O1L29HC",
"is_partner": true,
"country_code": "BE",
"locale": "fr",
"email": "claire.dumont@fiduciaire-dumont.be",
"phone": "+32 65 31 42 18",
"source": "local",
"synced_at": "2026-03-15T09:41:00+00:00",
"can_manage": true,
"members": [
{
"id": 12,
"name": "Thomas Peeters",
"email": "thomas.peeters@fiduciaire-dumont.be",
"auth_source": "local",
"locale": "fr",
"role": "admin",
"is_active": true,
"all_companies": true,
"companies": [
{
"public_token": "XBVD5O1L29HC",
"name": "Le Comptoir Montois SRL",
"code": "COMPTOIR",
"role": "manager",
"is_active": true
}
]
}
],
"companies": [
{
"public_token": "XBVD5O1L29HC",
"name": "Le Comptoir Montois SRL",
"code": "COMPTOIR",
"icon_url": "https://api.novafisko.com/v1/companies/XBVD5O1L29HC",
"logo_url": "https://api.novafisko.com/v1/companies/XBVD5O1L29HC",
"members": [
{
"id": 42,
"name": "Thomas Peeters",
"email": "claire.dumont@fiduciaire-dumont.be",
"role": "manager",
"is_active": true
}
]
}
]
}schemaFirmMember
idintegerbv.12namestringbv.Thomas Peetersemailstring <email>bv.thomas.peeters@fiduciaire-dumont.beauth_sourcestringlocalnovadeskolocalestringfrnlenderolestringadminmanagerencoderrevieweris_activebooleanall_companiesbooleanAdmins and managers see every company file of the firm.companiesobject[]Eigenschappen
public_tokenstringnamestringcodestring | nullrolestringmanagerencoderrevieweris_activeboolean
Voorbeeld
{
"id": 12,
"name": "Thomas Peeters",
"email": "thomas.peeters@fiduciaire-dumont.be",
"auth_source": "local",
"locale": "fr",
"role": "admin",
"is_active": true,
"all_companies": true,
"companies": [
{
"public_token": "XBVD5O1L29HC",
"name": "Le Comptoir Montois SRL",
"code": "COMPTOIR",
"role": "manager",
"is_active": true
}
]
}schemaFiscalYear
idintegerbv.2company_idintegerbv.7codestringbv.2026starts_onstring <date-time>bv.2026-01-01T00:00:00.000000Zends_onstring <date-time>bv.2026-12-31T00:00:00.000000Zis_closedbooleanbv.falseclosed_atstring <date-time> | nullclosed_byinteger | nullcreated_atstring <date-time>updated_atstring <date-time>lock_versionintegerInternal lock counter.bv.3versionintegerVersion of the record, to send back asX-Base-Version/base_version.bv.3periodsPeriod[]
Voorbeeld
{
"id": 2,
"company_id": 7,
"code": "2026",
"starts_on": "2026-01-01T00:00:00.000000Z",
"ends_on": "2026-12-31T00:00:00.000000Z",
"is_closed": false,
"closed_at": "2026-03-15T09:41:00+00:00",
"closed_by": 1,
"created_at": "2026-03-15T09:41:00+00:00",
"updated_at": "2026-03-15T09:41:00+00:00",
"lock_version": 3,
"version": 3,
"periods": [
{
"id": 16,
"fiscal_year_id": 2,
"number": 3,
"label": "Mars 2026",
"starts_on": "2026-03-15T09:41:00+00:00",
"ends_on": "2026-03-15T09:41:00+00:00",
"is_locked": false,
"locked_at": "2026-03-15T09:41:00+00:00",
"lock_version": 3,
"version": 3
}
]
}schemaFixedAsset
idintegerbv.9company_idintegersourcestringmanualnovadeskoexternal_idstring | nullreferencestring | nullbv.IMM-2026-003namestringbv.Four mixte Rationalcategorystringit_equipmentvehiclefurnituremachinerybuildingsoftwareotherasset_groupstring | nullasset_account_idinteger | nulldepreciation_account_idinteger | nullexpense_account_idinteger | nullimported_document_idinteger | nullacquisition_datestring <date-time>bv.2026-02-01T00:00:00.000000Zacquisition_coststring <decimal>bv.12400.00residual_valuestring <decimal>bv.0.00useful_life_yearsintegerbv.5methodstringlineardecliningprorata_temporisbooleanstart_datestring <date-time>statusstringactivefully_depreciateddisposednotesstring | nulldisposed_onstring <date-time> | nulldisposal_pricestring <decimal> | nulldisposal_entry_idinteger | nullinvestment_deduction_pctstring <decimal> | nullinvestment_deduction_spreadbooleancreated_atstring <date-time>updated_atstring <date-time>lock_versionintegerInternal lock counter.bv.3versionintegerVersion of the record, to send back asX-Base-Version/base_version.bv.3deleted_atstring <date-time> | nullSet while the record is in the recycle bin.deleted_byinteger | nulllinesDepreciationLine[]asset_accountobjectEigenschappen
idintegerIdbv.580numberstringAccount numberbv.702000labelstringLabelbv.Prestations de services
depreciation_accountobjectEigenschappen
idintegerIdbv.580numberstringAccount numberbv.702000labelstringLabelbv.Prestations de services
expense_accountobjectEigenschappen
idintegerIdbv.580numberstringAccount numberbv.702000labelstringLabelbv.Prestations de services
Voorbeeld
{
"id": 9,
"company_id": 7,
"source": "manual",
"external_id": "string",
"reference": "IMM-2026-003",
"name": "Four mixte Rational",
"category": "it_equipment",
"asset_group": "string",
"asset_account_id": 42,
"depreciation_account_id": 42,
"expense_account_id": 42,
"imported_document_id": 42,
"acquisition_date": "2026-02-01T00:00:00.000000Z",
"acquisition_cost": "12400.00",
"residual_value": "0.00",
"useful_life_years": 5,
"method": "linear",
"prorata_temporis": true,
"start_date": "2026-03-15T09:41:00+00:00",
"status": "active",
"notes": "string",
"disposed_on": "2026-03-15T09:41:00+00:00",
"disposal_price": "1210.00",
"disposal_entry_id": 42,
"investment_deduction_pct": "1210.00",
"investment_deduction_spread": true,
"created_at": "2026-03-15T09:41:00+00:00",
"updated_at": "2026-03-15T09:41:00+00:00",
"lock_version": 3,
"version": 3,
"deleted_at": "2026-03-15T09:41:00+00:00",
"deleted_by": 1,
"lines": [
{
"id": 42,
"fixed_asset_id": 9,
"year": 2026,
"period_start": "2026-03-15T09:41:00+00:00",
"period_end": "2026-03-15T09:41:00+00:00",
"amount": "2269.37",
"cumulative_amount": "2269.37",
"remaining_value": "10130.63",
"status": "planned",
"journal_entry_id": 1284,
"booked_amount": "0.00"
}
],
"asset_account": {
"id": 580,
"number": "702000",
"label": "Prestations de services"
},
"depreciation_account": {
"id": 580,
"number": "702000",
"label": "Prestations de services"
},
"expense_account": {
"id": 580,
"number": "702000",
"label": "Prestations de services"
}
}schemaImportedDocumentInvoice, credit note or receipt of the company file: synchronised from Novadesko or created by the document im...
Invoice, credit note or receipt of the company file: synchronised from Novadesko or created by the document importer.
idintegerbv.87company_idintegerbv.7sourcestringbv.novadeskooriginstring | nullnovafiskowhen created by the importer.external_idstring | nulltypestringpurchases, invoices, credit_notes, receipts…bv.purchasesdirectionstringsalepurchaseis_credit_notebooleanbv.falsenaturestring | nullnumberstring | nullbv.F-2026-0412payment_providerstring | nullnumber_seriesstring | nulldocument_datestring <date-time>bv.2026-03-15T00:00:00.000000Zdue_datestring <date-time> | nullsubjectstring | nullcommunicationstring | nullcurrencystringbv.EURamount_netstring <decimal>bv.507.00amount_vatstring <decimal>bv.106.47amount_grossstring <decimal>bv.613.47is_paidbooleanthird_party_idinteger | nullthird_party_namestring | nullbv.Brasserie Dubuisson SAthird_party_vatstring | nullpdf_urlstring <uri> | nullxml_urlstring <uri> | nullstatusstringpendingbookedignoredjournal_entry_idinteger | nullaccountant_lockedbooleanLocked for the shop: only the accountant can change it.novadesko_push_statusstring | nullnovadesko_pushed_atstring <date-time> | nullnovadesko_push_errorstring | nulldocument_import_idinteger | nullsynced_atstring <date-time> | nullcreated_atstring <date-time>updated_atstring <date-time>lock_versionintegerInternal lock counter.bv.3versionintegerVersion of the record, to send back asX-Base-Version/base_version.bv.3deleted_atstring <date-time> | nullSet while the record is in the recycle bin.deleted_byinteger | nullthird_partyobject | nulllinesImportedDocumentLine[]journal_entryJournalEntry | null
Voorbeeld
{
"id": 87,
"company_id": 7,
"source": "novadesko",
"origin": "string",
"external_id": "string",
"type": "purchases",
"direction": "sale",
"is_credit_note": false,
"nature": "string",
"number": "F-2026-0412",
"payment_provider": "string",
"number_series": "TK",
"document_date": "2026-03-15T00:00:00.000000Z",
"due_date": "2026-03-15T09:41:00+00:00",
"subject": "Vos documents comptables",
"communication": "string",
"currency": "EUR",
"amount_net": "507.00",
"amount_vat": "106.47",
"amount_gross": "613.47",
"is_paid": true,
"third_party_id": 18,
"third_party_name": "Brasserie Dubuisson SA",
"third_party_vat": "string",
"pdf_url": "https://api.novafisko.com/v1/companies/XBVD5O1L29HC",
"xml_url": "https://api.novafisko.com/v1/companies/XBVD5O1L29HC",
"status": "pending",
"journal_entry_id": 1284,
"accountant_locked": true,
"novadesko_push_status": "string",
"novadesko_pushed_at": "2026-03-15T09:41:00+00:00",
"novadesko_push_error": "string",
"document_import_id": 42,
"synced_at": "2026-03-15T09:41:00+00:00",
"created_at": "2026-03-15T09:41:00+00:00",
"updated_at": "2026-03-15T09:41:00+00:00",
"lock_version": 3,
"version": 3,
"deleted_at": "2026-03-15T09:41:00+00:00",
"deleted_by": 1,
"third_party": {},
"lines": [
{
"id": 640,
"imported_document_id": 87,
"external_id": "string",
"position": 1,
"description": "Fûts Bush Caractère 20 L",
"quantity": "6.000",
"unit_price": "84.5000",
"discount_pct": "1210.00",
"tax_rate": "21.00",
"amount_net": "507.00",
"amount_vat": "106.47",
"recorded_account_number": "604000",
"recorded_account_id": 42,
"actual_account_id": 42,
"vat_code_id": 4,
"purchase_category": "string",
"corrected_at": "2026-03-15T09:41:00+00:00",
"corrected_by": 1,
"correction_pushed": true,
"recorded_account": {},
"actual_account": {},
"vat_code": {}
}
],
"journal_entry": {
"id": 1284,
"company_id": 7,
"fiscal_year_id": 2,
"period_id": 16,
"journal_id": 3,
"number": 412,
"entry_date": "2026-03-15T00:00:00.000000Z",
"due_date": "2026-03-15T09:41:00+00:00",
"label": "Facture Brasserie Dubuisson SA",
"reference": "F-2026-0412",
"structured_communication": "000000000101",
"third_party_id": 18,
"status": "posted",
"origin": "manual",
"created_by": 1,
"posted_at": "2026-03-15T09:41:00+00:00",
"reversed_entry_id": 42,
"reversed_by_entry_id": 42,
"recurring_entry_id": 42,
"created_at": "2026-03-15T09:41:00+00:00",
"updated_at": "2026-03-15T09:41:00+00:00",
"lock_version": 3,
"version": 3,
"journal": {
"id": 3,
"code": "VEN",
"type": "sale"
},
"third_party": {
"id": 18,
"name": "Brasserie Dubuisson SA"
},
"lines": [
{
"id": 3391,
"journal_entry_id": 1284,
"position": 1,
"account_id": 580,
"third_party_id": 18,
"label": "Brasserie Dubuisson SA",
"debit": "0.00",
"credit": "1000.00",
"vat_code_id": 4,
"vat_base": "1000.00",
"reconciliation_code": "AB",
"cost_center_id": 42,
"project_id": 42,
"reminder_level": 0,
"reminder_sent_at": "2026-03-15T09:41:00+00:00",
"account": {
"id": 580,
"number": "702000",
"label": "Prestations de services"
},
"vat_code": {}
}
]
}
}schemaImportedDocumentLine
idintegerbv.640imported_document_idintegerbv.87external_idstring | nullpositionintegerbv.1descriptionstring | nullbv.Fûts Bush Caractère 20 Lquantitystring | nullbv.6.000unit_pricestring | nullbv.84.5000discount_pctstring <decimal> | nulltax_ratestring <decimal> | nullbv.21.00amount_netstring <decimal>bv.507.00amount_vatstring <decimal>bv.106.47recorded_account_numberstring | nullAccount as encoded at the source (« recorded » layer).bv.604000recorded_account_idinteger | nullactual_account_idinteger | nullAccount chosen by the accountant (« actual » layer).vat_code_idinteger | nullpurchase_categorystring | nullcorrected_atstring <date-time> | nullcorrected_byinteger | nullcorrection_pushedbooleanrecorded_accountobject | nullactual_accountobject | nullvat_codeobject | null
Voorbeeld
{
"id": 640,
"imported_document_id": 87,
"external_id": "string",
"position": 1,
"description": "Fûts Bush Caractère 20 L",
"quantity": "6.000",
"unit_price": "84.5000",
"discount_pct": "1210.00",
"tax_rate": "21.00",
"amount_net": "507.00",
"amount_vat": "106.47",
"recorded_account_number": "604000",
"recorded_account_id": 42,
"actual_account_id": 42,
"vat_code_id": 4,
"purchase_category": "string",
"corrected_at": "2026-03-15T09:41:00+00:00",
"corrected_by": 1,
"correction_pushed": true,
"recorded_account": {},
"actual_account": {},
"vat_code": {}
}schemaIntegration
slugstringbv.novadeskonamestringbv.Novadeskocategorystringaccountingbankinge_invoicingdocumentspaymentsapidescriptionstringlogo_urlstring <uri> | nullstatusstringavailablebetacoming_sooncapabilitiesstring[]import_documentsimport_bankimport_assetsexport_entriese_invoicingconfig_schemaobject[]Eigenschappen
keystringlabelstringtypestringtextsecretselectboolrequiredboolean
open_tabstring | nullhas_driverbooleanis_enabledbooleanconnectionobject | nullEigenschappen
is_activebooleanstatusstringconnecteddisconnectederrorconfig_maskedobjectlast_sync_atstring <date-time> | nulllast_errorstring | null
interestedbooleanactionsstring[]
Voorbeeld
{
"slug": "novadesko",
"name": "Novadesko",
"category": "accounting",
"description": "Description",
"logo_url": "https://api.novafisko.com/v1/companies/XBVD5O1L29HC",
"status": "available",
"capabilities": [
"import_documents"
],
"config_schema": [
{
"key": "string",
"label": "Facture Brasserie Dubuisson",
"type": "text",
"required": true
}
],
"open_tab": "string",
"has_driver": true,
"is_enabled": true,
"connection": {
"is_active": true,
"status": "connected",
"config_masked": {},
"last_sync_at": "2026-03-15T09:41:00+00:00",
"last_error": "string"
},
"interested": true,
"actions": [
"string"
]
}schemaIntegrationRun
idintegerbv.77statusstringrunningsuccesserrorstarted_atstring <date-time> | nullfinished_atstring <date-time> | nullduration_msinteger | nullbv.1840summaryobject | nullmessagestring | null
Voorbeeld
{
"id": 77,
"status": "running",
"started_at": "2026-03-15T09:41:00+00:00",
"finished_at": "2026-03-15T09:41:00+00:00",
"duration_ms": 1840,
"summary": {},
"message": "OK"
}schemaIntegrationTokenIntegration token (the secret is only returned once, by the creation).
Integration token (the secret is only returned once, by the creation).
idintegerbv.57namestringbv.ERP connectorabilitiesstring[]readwritesynccreated_atstring <date-time>expires_atstring <date-time> | nulllast_used_atstring <date-time> | null
Voorbeeld
{
"id": 57,
"name": "ERP connector",
"abilities": [
"read"
],
"created_at": "2026-03-15T09:41:00+00:00",
"expires_at": "2026-03-15T09:41:00+00:00",
"last_used_at": "2026-03-15T09:41:00+00:00"
}schemaJournal
idintegerbv.3company_idintegerbv.7codestringbv.VENlabelstringbv.Ventestypestringpurchasesalepurchase_credit_notesale_credit_notefinancialmiscellaneouscontrol_account_idinteger | nullibanstring | nullbicstring | nulllast_numberintegerbv.412is_activebooleanis_defaultbooleandescriptionstring | nullcreated_atstring <date-time>updated_atstring <date-time>lock_versionintegerInternal lock counter.bv.3versionintegerVersion of the record, to send back asX-Base-Version/base_version.bv.3deleted_atstring <date-time> | nullSet while the record is in the recycle bin.deleted_byinteger | nullentries_countintegerbv.412control_accountobject | nullrulesJournalRule[]
Voorbeeld
{
"id": 3,
"company_id": 7,
"code": "VEN",
"label": "Ventes",
"type": "purchase",
"control_account_id": 42,
"iban": "BE68539007547034",
"bic": "GEBABEBB",
"last_number": 412,
"is_active": true,
"is_default": true,
"description": "Description",
"created_at": "2026-03-15T09:41:00+00:00",
"updated_at": "2026-03-15T09:41:00+00:00",
"lock_version": 3,
"version": 3,
"deleted_at": "2026-03-15T09:41:00+00:00",
"deleted_by": 1,
"entries_count": 412,
"control_account": {
"id": 580,
"number": "702000",
"label": "Prestations de services"
},
"rules": [
{
"id": 4,
"company_id": 7,
"journal_id": 3,
"direction": "sale",
"match_field": "payment_provider",
"match_value": "TK",
"priority": 100,
"is_active": true,
"created_at": "2026-03-15T09:41:00+00:00",
"updated_at": "2026-03-15T09:41:00+00:00",
"lock_version": 3,
"version": 3,
"deleted_at": "2026-03-15T09:41:00+00:00",
"deleted_by": 1,
"journal": {
"id": 3,
"code": "VEN",
"label": "Ventes",
"type": "sale"
}
}
]
}schemaJournalEntryPosted accounting entry. A posted entry is never modified nor deleted: it is reversed.
Posted accounting entry. A posted entry is never modified nor deleted: it is reversed.
idintegerbv.1284company_idintegerbv.7fiscal_year_idintegerbv.2period_idintegerbv.16journal_idintegerbv.3numberintegerContinuous number in the journal and fiscal year.bv.412entry_datestring <date-time>bv.2026-03-15T00:00:00.000000Zdue_datestring <date-time> | nulllabelstringbv.Facture Brasserie Dubuisson SAreferencestring | nullDocument number.bv.F-2026-0412structured_communicationstring | null12 digits, without +++ and /.bv.000000000101third_party_idinteger | nullbv.18statusstringpostedreversedoriginstringmanual, import, bank, recurring, depreciation, vat, year_end…bv.manualcreated_byinteger | nullposted_atstring <date-time>reversed_entry_idinteger | nullEntry this one reverses.reversed_by_entry_idinteger | nullEntry that reversed this one.recurring_entry_idinteger | nullcreated_atstring <date-time>updated_atstring <date-time>lock_versionintegerInternal lock counter.bv.3versionintegerVersion of the record, to send back asX-Base-Version/base_version.bv.3journalobjectEigenschappen
idintegerbv.3codestringbv.VENtypestringbv.sale
third_partyobjectEigenschappen
idintegerbv.18namestringbv.Brasserie Dubuisson SA
linesJournalEntryLine[]
Voorbeeld
{
"id": 1284,
"company_id": 7,
"fiscal_year_id": 2,
"period_id": 16,
"journal_id": 3,
"number": 412,
"entry_date": "2026-03-15T00:00:00.000000Z",
"due_date": "2026-03-15T09:41:00+00:00",
"label": "Facture Brasserie Dubuisson SA",
"reference": "F-2026-0412",
"structured_communication": "000000000101",
"third_party_id": 18,
"status": "posted",
"origin": "manual",
"created_by": 1,
"posted_at": "2026-03-15T09:41:00+00:00",
"reversed_entry_id": 42,
"reversed_by_entry_id": 42,
"recurring_entry_id": 42,
"created_at": "2026-03-15T09:41:00+00:00",
"updated_at": "2026-03-15T09:41:00+00:00",
"lock_version": 3,
"version": 3,
"journal": {
"id": 3,
"code": "VEN",
"type": "sale"
},
"third_party": {
"id": 18,
"name": "Brasserie Dubuisson SA"
},
"lines": [
{
"id": 3391,
"journal_entry_id": 1284,
"position": 1,
"account_id": 580,
"third_party_id": 18,
"label": "Brasserie Dubuisson SA",
"debit": "0.00",
"credit": "1000.00",
"vat_code_id": 4,
"vat_base": "1000.00",
"reconciliation_code": "AB",
"cost_center_id": 42,
"project_id": 42,
"reminder_level": 0,
"reminder_sent_at": "2026-03-15T09:41:00+00:00",
"account": {
"id": 580,
"number": "702000",
"label": "Prestations de services"
},
"vat_code": {}
}
]
}schemaJournalEntryLine
idintegerbv.3391journal_entry_idintegerbv.1284positionintegerbv.1account_idintegerbv.580third_party_idinteger | nulllabelstring | nullbv.Brasserie Dubuisson SAdebitstring <decimal>bv.0.00creditstring <decimal>bv.1000.00vat_code_idinteger | nullbv.4vat_basestring <decimal> | nullbv.1000.00reconciliation_codestring | nullLettering code.bv.ABcost_center_idinteger | nullproject_idinteger | nullreminder_levelintegerbv.0reminder_sent_atstring <date-time> | nullaccountobjectEigenschappen
idintegerIdbv.580numberstringAccount numberbv.702000labelstringLabelbv.Prestations de services
vat_codeobject | null
Voorbeeld
{
"id": 3391,
"journal_entry_id": 1284,
"position": 1,
"account_id": 580,
"third_party_id": 18,
"label": "Brasserie Dubuisson SA",
"debit": "0.00",
"credit": "1000.00",
"vat_code_id": 4,
"vat_base": "1000.00",
"reconciliation_code": "AB",
"cost_center_id": 42,
"project_id": 42,
"reminder_level": 0,
"reminder_sent_at": "2026-03-15T09:41:00+00:00",
"account": {
"id": 580,
"number": "702000",
"label": "Prestations de services"
},
"vat_code": {}
}schemaJournalRuleRoutes imported documents to a journal according to their numbering series, payment provider or third party.
Routes imported documents to a journal according to their numbering series, payment provider or third party.
idintegerbv.4company_idintegerjournal_idintegerbv.3directionstringsalepurchasematch_fieldstringpayment_providernumber_seriesnumber_prefixthird_partymatch_valuestringbv.TKpriorityintegerbv.100is_activebooleancreated_atstring <date-time>updated_atstring <date-time>lock_versionintegerInternal lock counter.bv.3versionintegerVersion of the record, to send back asX-Base-Version/base_version.bv.3deleted_atstring <date-time> | nullSet while the record is in the recycle bin.deleted_byinteger | nulljournalobjectEigenschappen
idintegerbv.3codestringbv.VENlabelstringbv.Ventestypestringbv.sale
Voorbeeld
{
"id": 4,
"company_id": 7,
"journal_id": 3,
"direction": "sale",
"match_field": "payment_provider",
"match_value": "TK",
"priority": 100,
"is_active": true,
"created_at": "2026-03-15T09:41:00+00:00",
"updated_at": "2026-03-15T09:41:00+00:00",
"lock_version": 3,
"version": 3,
"deleted_at": "2026-03-15T09:41:00+00:00",
"deleted_by": 1,
"journal": {
"id": 3,
"code": "VEN",
"label": "Ventes",
"type": "sale"
}
}schemaLicenceLicence and subscription of the firm: plan, status, usage of the month, estimate, last statements.
Licence and subscription of the firm: plan, status, usage of the month, estimate, last statements.
statusstringnonetrialactivepast_duesuspendedcancelledsubscriptionobject | nullplanobject | nullusageobjectEigenschappen
monthstringbv.2026-10companiesintegerbv.25usersintegerbv.4bank_accountsintegerbv.31rowsobject[]Eigenschappen
company_idintegertokenstringnamestringcodestring | nullbank_accountsintegerbv.1statusstringbv.activeactivated_atstring <date-time>deactivated_atstring <date-time> | null
max_companiesinteger | nullover_limitbooleanbv.falsesuggestionstring | null
estimateobject | nullEstimated invoice of the month (excl. VAT).companies_detailobject[]Eigenschappen
company_idintegernamestringpublic_tokenstringstatusstringbv.activeactivated_atstring <date-time>deactivated_atstring <date-time> | nullbillableboolean
next_month_previewobjectEigenschappen
companiesintegerbv.25totalnumberbv.121.5
over_limitbooleanbv.falseover_limit_firm_totalnumber | nullentitlementsobjectEigenschappen
accountingbooleanpeppolbooleancodabooleanclient_portalbooleanclient_invoicingbooleandocument_importboolean
limitsobjectEigenschappen
max_usersinteger | nullmax_companiesinteger | nullusers_countintegerbv.4companies_countintegerbv.25
expires_atstring <date-time> | nullwarningstring | nullactivationobject | nullActive licence key (masked) when the subscription comes from a key.statementsobject[]options_availableobject[]Eigenschappen
codestringclient_portalclient_invoicingnamestringbv.Portail clientprice_monthlynumberbv.6.9unitstringbv.client
can_manageboolean
Voorbeeld
{
"status": "none",
"subscription": {},
"plan": {},
"usage": {
"month": "2026-10",
"companies": 25,
"users": 4,
"bank_accounts": 31,
"rows": [
{
"company_id": 7,
"token": "XBVD5O1L29HC",
"name": "Le Comptoir Montois SRL",
"code": "COMPTOIR",
"bank_accounts": 1,
"status": "active",
"activated_at": "2026-03-15T09:41:00+00:00",
"deactivated_at": "2026-03-15T09:41:00+00:00"
}
],
"max_companies": 1,
"over_limit": false,
"suggestion": "string"
},
"estimate": {},
"companies_detail": [
{
"company_id": 7,
"name": "Le Comptoir Montois SRL",
"public_token": "XBVD5O1L29HC",
"status": "active",
"activated_at": "2026-03-15T09:41:00+00:00",
"deactivated_at": "2026-03-15T09:41:00+00:00",
"billable": true
}
],
"next_month_preview": {
"companies": 25,
"total": 121.5
},
"over_limit": false,
"over_limit_firm_total": 12.5,
"entitlements": {
"accounting": true,
"peppol": true,
"coda": true,
"client_portal": true,
"client_invoicing": true,
"document_import": true
},
"limits": {
"max_users": 1,
"max_companies": 1,
"users_count": 4,
"companies_count": 25
},
"expires_at": "2026-03-15T09:41:00+00:00",
"warning": "string",
"activation": {},
"statements": [
{}
],
"options_available": [
{
"code": "client_portal",
"name": "Portail client",
"price_monthly": 6.9,
"unit": "client"
}
],
"can_manage": true
}schemaMailLog
idintegerbv.9012template_keystringbv.documents.sendtostring <email>bv.gerant@comptoir-montois.examplesubjectstringbv.Vos documents comptablesstatusstringqueuedsentfailedbouncedlocalestringbv.frcreated_atstring <date-time>sent_atstring <date-time> | nullopened_atstring <date-time> | nullattachmentsobject[]Eigenschappen
namestringbv.balance-2026.pdfsizeintegerbv.48211
Voorbeeld
{
"id": 9012,
"template_key": "documents.send",
"to": "gerant@comptoir-montois.example",
"subject": "Vos documents comptables",
"status": "queued",
"locale": "fr",
"created_at": "2026-03-15T09:41:00+00:00",
"sent_at": "2026-03-15T09:41:00+00:00",
"opened_at": "2026-03-15T09:41:00+00:00",
"attachments": [
{
"name": "balance-2026.pdf",
"size": 48211
}
]
}schemaMessage
messagestringTranslated confirmation.bv.Mot de passe modifié.
Voorbeeld
{
"message": "Mot de passe modifié."
}schemaPaginationLaravel length-aware pagination envelope; `data` holds the items.
Laravel length-aware pagination envelope; data holds the items.
current_pageintegerbv.1dataany[]first_page_urlstring <uri> | nullfrominteger | nullbv.1last_pageintegerbv.4last_page_urlstring <uri> | nulllinksobject[]Eigenschappen
urlstring <uri> | nulllabelstringbv.1pageinteger | nullactiveboolean
next_page_urlstring <uri> | nullpathstring <uri>per_pageintegerbv.50prev_page_urlstring <uri> | nulltointeger | nullbv.50totalintegerbv.187
Voorbeeld
{
"current_page": 1,
"data": [
null
],
"first_page_url": "https://api.novafisko.com/v1/companies/XBVD5O1L29HC",
"from": 1,
"last_page": 4,
"last_page_url": "https://api.novafisko.com/v1/companies/XBVD5O1L29HC",
"links": [
{
"url": "https://api.novafisko.com/v1/companies/XBVD5O1L29HC",
"label": "1",
"page": 1,
"active": true
}
],
"next_page_url": "https://api.novafisko.com/v1/companies/XBVD5O1L29HC",
"path": "https://api.novafisko.com/v1/companies/XBVD5O1L29HC",
"per_page": 50,
"prev_page_url": "https://api.novafisko.com/v1/companies/XBVD5O1L29HC",
"to": 50,
"total": 187
}schemaPeppolAccessPoint
smp_hoststring | nullbv.smp.b2brouter.netprovider_namestring | nullbv.B2Brouterendpoint_urlstring <uri> | nulltechnical_contactstring | null
Voorbeeld
{
"smp_host": "smp.b2brouter.net",
"provider_name": "B2Brouter",
"endpoint_url": "https://api.novafisko.com/v1/companies/XBVD5O1L29HC",
"technical_contact": "string"
}schemaPeppolDocumentType
idstringbv.bis_billing_invoicenamestringbv.Invoice BIS Billing 3.0familystringbv.billingdescriptionstringbv.Facture électronique européenne (EN 16931), format Peppol BIS Billing 3.0.document_idstringFull Peppol document type identifier.
Voorbeeld
{
"id": "bis_billing_invoice",
"name": "Invoice BIS Billing 3.0",
"family": "billing",
"description": "Facture électronique européenne (EN 16931), format Peppol BIS Billing 3.0.",
"document_id": "string"
}schemaPeppolStatePeppol registration state of a company file.
Peppol registration state of a company file.
identityobject | nullRaw registration record.participant_idstring | nullbv.0208:0477472701statusstringnonependingactiveinactivedeletederrorexternalaccountobject | nullEigenschappen
idstringnamestring | nullarchivedboolean
transportobject | nullTransport options: enabled, reception, standard_documents, invoice, credit_note, self_billing, order, application_response.smpobjectEigenschappen
publishedbooleanchecked_atstring <date-time> | null
access_pointPeppolAccessPointsupported_documentsPeppolDocumentType[]can_registerbooleanblockersstring[]blocker_codesstring[]managed_by_novadeskobooleanregistered_elsewherebooleanThe participant is already published by another access point.external_providerstring | nullprovider_configuredbooleanenvironmentstringproductionstagingcontactobjectlast_errorstring | null
Voorbeeld
{
"identity": {},
"participant_id": "0208:0477472701",
"status": "none",
"account": {
"id": "string",
"name": "Le Comptoir Montois SRL",
"archived": true
},
"transport": {},
"smp": {
"published": true,
"checked_at": "2026-03-15T09:41:00+00:00"
},
"access_point": {
"smp_host": "smp.b2brouter.net",
"provider_name": "B2Brouter",
"endpoint_url": "https://api.novafisko.com/v1/companies/XBVD5O1L29HC",
"technical_contact": "string"
},
"supported_documents": [
{
"id": "bis_billing_invoice",
"name": "Invoice BIS Billing 3.0",
"family": "billing",
"description": "Facture électronique européenne (EN 16931), format Peppol BIS Billing 3.0.",
"document_id": "string"
}
],
"can_register": true,
"blockers": [
"string"
],
"blocker_codes": [
"string"
],
"managed_by_novadesko": true,
"registered_elsewhere": true,
"external_provider": "string",
"provider_configured": true,
"environment": "production",
"contact": {},
"last_error": "string"
}schemaPeppolThirdPartyStatus
identifierstring | nullbv.0208:0402531376registeredboolean | nullaccess_pointPeppolAccessPoint | nulldocument_typesPeppolDocumentType[]checked_atstring <date-time> | nullstalebooleanerrorstring | nullsourcestring | nullbv.sml+smp
Voorbeeld
{
"identifier": "0208:0402531376",
"registered": true,
"access_point": {
"smp_host": "smp.b2brouter.net",
"provider_name": "B2Brouter",
"endpoint_url": "https://api.novafisko.com/v1/companies/XBVD5O1L29HC",
"technical_contact": "string"
},
"document_types": [
{
"id": "bis_billing_invoice",
"name": "Invoice BIS Billing 3.0",
"family": "billing",
"description": "Facture électronique européenne (EN 16931), format Peppol BIS Billing 3.0.",
"document_id": "string"
}
],
"checked_at": "2026-03-15T09:41:00+00:00",
"stale": true,
"error": "string",
"source": "sml+smp"
}schemaPeriod
idintegerbv.16fiscal_year_idintegerbv.2numberinteger0 = opening, 1-12 = months, 99 = closing.bv.3labelstringbv.Mars 2026starts_onstring <date-time>ends_onstring <date-time>is_lockedbooleanbv.falselocked_atstring <date-time> | nulllock_versionintegerInternal lock counter.bv.3versionintegerVersion of the record, to send back asX-Base-Version/base_version.bv.3
Voorbeeld
{
"id": 16,
"fiscal_year_id": 2,
"number": 3,
"label": "Mars 2026",
"starts_on": "2026-03-15T09:41:00+00:00",
"ends_on": "2026-03-15T09:41:00+00:00",
"is_locked": false,
"locked_at": "2026-03-15T09:41:00+00:00",
"lock_version": 3,
"version": 3
}schemaPeriodLockedError422 of a write whose period is locked or whose fiscal year is closed.
422 of a write whose period is locked or whose fiscal year is closed.
messagestringverplichtbv.La période Mars 2026 est verrouillée.codestringverplichtperiod_lockedreasonstringverplichtperiod_lockedfiscal_year_closederrorsobjectverplicht
Voorbeeld
{
"message": "La période Mars 2026 est verrouillée.",
"code": "period_locked",
"reason": "period_locked",
"errors": {
"entry_date": [
"La période Mars 2026 est verrouillée."
]
}
}schemaPricingGrid
currencystringbv.EURvat_includedbooleanbv.falseplansobject[]Eigenschappen
codestringstarterfirmnamestringbv.Firmkindstringstarterfirmbase_price_monthlynumberbv.49per_companynumberbv.2.9tiersobject[]Eigenschappen
up_tointeger | nullbv.100pricenumberbv.2.9
max_companiesinteger | nullpeppol_fair_use_per_companyintegerbv.100annual_discount_pctnumberbv.10includedstring[]
optionsobject[]Eigenschappen
codestringbv.client_portalnamestringbv.Client portalprice_monthlynumberbv.6.9unitstringbv.client
annual_discount_pctnumberbv.10winauditorobjectReference prices used for the comparison.pilotobjectEigenschappen
free_monthsintegerbv.3max_firmsintegerbv.20
Voorbeeld
{
"currency": "EUR",
"vat_included": false,
"plans": [
{
"code": "starter",
"name": "Firm",
"kind": "starter",
"base_price_monthly": 49,
"per_company": 2.9,
"tiers": [
{
"up_to": 100,
"price": 2.9
}
],
"max_companies": 1,
"peppol_fair_use_per_company": 100,
"annual_discount_pct": 10,
"included": [
"Unlimited users"
]
}
],
"options": [
{
"code": "client_portal",
"name": "Client portal",
"price_monthly": 6.9,
"unit": "client"
}
],
"annual_discount_pct": 10,
"winauditor": {},
"pilot": {
"free_months": 3,
"max_firms": 20
}
}schemaPricingSimulation
companiesintegerbv.25yearlybooleanbv.falsestarterobject | nullNull when the plan cannot hold that many companies.firmobjectEigenschappen
planstringbv.firmbilling_intervalstringmonthlyyearlycompaniesintegerbv.25basenumberbv.49companies_breakdownobject[]Eigenschappen
fromintegerbv.1tointegerbv.100quantityintegerbv.25unit_pricenumberbv.2.9totalnumberbv.72.5
companies_totalnumberbv.72.5optionsobject[]options_totalnumberbv.0pilot_discountnumberbv.0annual_discount_pctnumberbv.0annual_discountnumberbv.0discountnumberbv.0totalnumberbv.121.5yearly_totalnumberbv.1458namestringbv.Firmsaving_vs_winauditornumberbv.36saving_pctnumberbv.22.9
winauditornumberbv.157.5cheapeststringstarterfirm
Voorbeeld
{
"companies": 25,
"yearly": false,
"starter": {},
"firm": {
"plan": "firm",
"billing_interval": "monthly",
"companies": 25,
"base": 49,
"companies_breakdown": [
{
"from": 1,
"to": 100,
"quantity": 25,
"unit_price": 2.9,
"total": 72.5
}
],
"companies_total": 72.5,
"options": [
{}
],
"options_total": 0,
"pilot_discount": 0,
"annual_discount_pct": 0,
"annual_discount": 0,
"discount": 0,
"total": 121.5,
"yearly_total": 1458,
"name": "Firm",
"saving_vs_winauditor": 36,
"saving_pct": 22.9
},
"winauditor": 157.5,
"cheapest": "starter"
}schemaRecurringEntry
idintegerbv.5company_idintegerjournal_idintegerbv.5labelstringbv.Loyer mensuelreferencestring | nullthird_party_idinteger | nullfrequencystringmonthlyquarterlyyearlynext_datestring <date-time>bv.2026-04-01T00:00:00.000000Zend_datestring <date-time> | nulllinesobject[]Eigenschappen
account_idintegerbv.368debitstring | nullbv.1500.00creditstring | nulllabelstring | nullthird_party_idinteger | null
is_activebooleanlast_generated_onstring <date> | nullgenerated_countintegerbv.3created_atstring <date-time>updated_atstring <date-time>lock_versionintegerInternal lock counter.bv.3versionintegerVersion of the record, to send back asX-Base-Version/base_version.bv.3deleted_atstring <date-time> | nullSet while the record is in the recycle bin.deleted_byinteger | nulljournalobjectEigenschappen
idintegercodestringbv.ODlabelstringbv.Opérations diverses
third_partyobject | null
Voorbeeld
{
"id": 5,
"company_id": 7,
"journal_id": 5,
"label": "Loyer mensuel",
"reference": "F-2026-0412",
"third_party_id": 18,
"frequency": "monthly",
"next_date": "2026-04-01T00:00:00.000000Z",
"end_date": "2026-03-15T09:41:00+00:00",
"lines": [
{
"account_id": 368,
"debit": "1500.00",
"credit": "0.00",
"label": "Facture Brasserie Dubuisson",
"third_party_id": 18
}
],
"is_active": true,
"last_generated_on": "2026-03-15",
"generated_count": 3,
"created_at": "2026-03-15T09:41:00+00:00",
"updated_at": "2026-03-15T09:41:00+00:00",
"lock_version": 3,
"version": 3,
"deleted_at": "2026-03-15T09:41:00+00:00",
"deleted_by": 1,
"journal": {
"id": 42,
"code": "OD",
"label": "Opérations diverses"
},
"third_party": {}
}schemaRevisionOne line of the version history.
One line of the version history.
idintegerbv.2301actionstringcreatedupdateddeletedrestoredrevertedsyncedeffectstringbv.updatedaction_labelstringbv.Modification · Tierssubject_typestringbv.third_partiessubject_type_labelstringbv.Tierssubject_idintegerbv.18subject_labelstringbv.DUBUISSON · Brasserie Dubuisson SAuserobject | nullactor_namestring | nullbv.Claire Dumontchangesobject[]Eigenschappen
fieldstringbv.payment_terms_dayslabelstringbv.Délai de paiementoldanynewany
versionintegerbv.4operation_idstring <uuid>client_mutation_idstring | nulloriginstringonlineoffline_syncsystembridgedevice_idstring | nulldevice_namestring | nullreasonstring | nullreverts_revision_idinteger | nullreverted_atstring <date-time> | nullreverted_by_revision_idinteger | nulloccurred_atstring <date-time>created_atstring <date-time>can_revertbooleanrevert_blocked_reasonstring | nullrevert_blocked_messagestring | nullrevert_effectstring | nullupdate, trash, restore, recreate or reverse.snapshot_beforeobject | nullSingle revision only.snapshot_afterobject | nullSingle revision only.ipstring | nullSingle revision only.
Voorbeeld
{
"id": 2301,
"action": "created",
"effect": "updated",
"action_label": "Modification · Tiers",
"subject_type": "third_parties",
"subject_type_label": "Tiers",
"subject_id": 18,
"subject_label": "DUBUISSON · Brasserie Dubuisson SA",
"user": {
"id": 12,
"name": "Claire Dumont"
},
"actor_name": "Claire Dumont",
"changes": [
{
"field": "payment_terms_days",
"label": "Délai de paiement",
"old": null,
"new": null
}
],
"version": 4,
"operation_id": "bf413a19-2136-4504-bc42-b314637eb5c7",
"client_mutation_id": "b0a6f6f0-7d1c-4c5e-8a55-3f2b1c9d0e11",
"origin": "online",
"device_id": "mac-7F3A21",
"device_name": "MacBook de Claire",
"reason": "string",
"reverts_revision_id": 42,
"reverted_at": "2026-03-15T09:41:00+00:00",
"reverted_by_revision_id": 42,
"occurred_at": "2026-03-15T09:41:00+00:00",
"created_at": "2026-03-15T09:41:00+00:00",
"can_revert": true,
"revert_blocked_reason": "string",
"revert_blocked_message": "string",
"revert_effect": "string",
"snapshot_before": {},
"snapshot_after": {},
"ip": "string"
}schemaSheetView
sheetCompanySheet | nullsheet_atstring <date-time> | nulladdressobjectEigenschappen
streetstring | nullStreetbv.Grand-Placehouse_numberstring | nullNumberbv.14boxstring | nullBoxpostal_codestring | nullPostal codebv.7000citystring | nullCitybv.Monscountrystring | nullISO 3166-1 alpha-2bv.BE
address_linestring | nulllegal_formobject | nullnace_codesobject[]Eigenschappen
codestringclassificationstringlabelstring | nullis_mainboolean
main_nace_codestring | nullvat_number_formattedstring | nullbv.BE 0477.472.701mapobjectEigenschappen
querystringAddress used for the mapbv.Grand-Place 14, 7000 Mons, Belgiqueapple_urlstring <uri>google_urlstring <uri>static_urlstring <uri> | nulllatitudenumber | nulllongitudenumber | null
Voorbeeld
{
"sheet": {
"identifier": "0477472701",
"enterprise_number": "0477472701",
"vat_number": "BE0477472701",
"name": "Le Comptoir Montois",
"legal_form": "SRL",
"legal_form_code": "610",
"status": "active",
"start_date": "2026-03-15",
"address": {
"street": "Grand-Place",
"house_number": "14",
"box": "string",
"postal_code": "7000",
"city": "Mons",
"country": "BE"
},
"address_line": "string",
"latitude": 12.5,
"longitude": 12.5,
"nace_codes": [
{
"code": "56111",
"classification": "MAIN",
"label": "Facture Brasserie Dubuisson"
}
],
"main_nace_code": "string",
"email": "claire.dumont@fiduciaire-dumont.be",
"phone": "+32 65 31 42 18",
"website": "https://www.comptoir-montois.be",
"source": "companysearch",
"fetched_at": "2026-03-15T09:41:00+00:00",
"map": {
"query": "Grand-Place 14, 7000 Mons, Belgique",
"apple_url": "https://api.novafisko.com/v1/companies/XBVD5O1L29HC",
"google_url": "https://api.novafisko.com/v1/companies/XBVD5O1L29HC",
"static_url": "https://api.novafisko.com/v1/companies/XBVD5O1L29HC",
"latitude": 12.5,
"longitude": 12.5
}
},
"sheet_at": "2026-03-15T09:41:00+00:00",
"address": {
"street": "Grand-Place",
"house_number": "14",
"box": "string",
"postal_code": "7000",
"city": "Mons",
"country": "BE"
},
"address_line": "string",
"legal_form": {},
"nace_codes": [
{
"code": "COMPTOIR",
"classification": "string",
"label": "Facture Brasserie Dubuisson",
"is_main": true
}
],
"main_nace_code": "string",
"vat_number_formatted": "BE 0477.472.701",
"map": {
"query": "Grand-Place 14, 7000 Mons, Belgique",
"apple_url": "https://api.novafisko.com/v1/companies/XBVD5O1L29HC",
"google_url": "https://api.novafisko.com/v1/companies/XBVD5O1L29HC",
"static_url": "https://api.novafisko.com/v1/companies/XBVD5O1L29HC",
"latitude": 12.5,
"longitude": 12.5
}
}schemaSyncChange
resourcestringbv.third_partiesopstringupsertdeleteidintegerbv.18versioninteger | nullbv.4dataobject | nullResource serialised as by its list endpoint; null for a tombstone.changed_atstring <date-time>seqintegerPosition in the change feed.bv.1042
Voorbeeld
{
"resource": "third_parties",
"op": "upsert",
"id": 18,
"version": 4,
"data": {},
"changed_at": "2026-03-15T09:41:00+00:00",
"seq": 1042
}schemaSyncConflict
idintegerbv.8statusstringopenresolvedtypestringfielddelete_vs_updateupdate_vs_deleteduplicatelockedtype_labelstringresourcestringbv.third_partiesrecord_idinteger | nullsubject_idinteger | nullsubject_labelstring | nullclient_mutation_idstring | nullfieldsobject[]Eigenschappen
fieldstringlabelstringserveranyclientanywinnerstringrulestring
client_dataobject | nullserver_dataobject | nullserver_versioninteger | nullwinnerstring | nullloserstring | nullresolutionstring | nullresolved_byinteger | nullclient_userobject | nullserver_userobject | nullresolved_by_userobject | nulldevice_idstring | nullcreated_atstring <date-time>resolved_atstring <date-time> | nullchoicesstring[]serverclientmerge
Voorbeeld
{
"id": 8,
"status": "open",
"type": "field",
"type_label": "string",
"resource": "third_parties",
"record_id": 42,
"subject_id": 42,
"subject_label": "string",
"client_mutation_id": "b0a6f6f0-7d1c-4c5e-8a55-3f2b1c9d0e11",
"fields": [
{
"field": "string",
"label": "Facture Brasserie Dubuisson",
"server": null,
"client": null,
"winner": "string",
"rule": "string"
}
],
"client_data": {},
"server_data": {},
"server_version": 1,
"winner": "string",
"loser": "string",
"resolution": "string",
"resolved_by": 1,
"client_user": {},
"server_user": {},
"resolved_by_user": {},
"device_id": "mac-7F3A21",
"created_at": "2026-03-15T09:41:00+00:00",
"resolved_at": "2026-03-15T09:41:00+00:00",
"choices": [
"server"
]
}schemaSyncMutationOne action made offline, replayed through the matching REST action (same validation, same body).
One action made offline, replayed through the matching REST action (same validation, same body).
client_mutation_idstring <uuid>verplichtIdempotence key.occurred_atstring <date-time>Date of the action on the device.operation_idstring <uuid>resourcestringverplichtthird_parties, accounts, journals, journal_rules, bank_rules, recurring_entries, analytic_codes, fixed_assets, entries, documents, document_lines, bank_transactions, company_settings.bv.third_partiesopstringverplichtcreateupdatedeleteactionactionstringignorerestoreentryinvoicereversebookupdate_lineidinteger | string | nullServer id, or thetmp-…id of a record created earlier in the queue.client_temp_idstringTemporary id of a creation (tmp-<uuid>), mapped to the server id.bv.tmp-3c1fparent_idinteger | string | nullbase_versionintegerVersion the client edited.dataobjectBody of the equivalent REST request.
Voorbeeld
{
"client_mutation_id": "bf413a19-2136-4504-bc42-b314637eb5c7",
"occurred_at": "2026-03-15T09:41:00+00:00",
"operation_id": "bf413a19-2136-4504-bc42-b314637eb5c7",
"resource": "third_parties",
"op": "create",
"action": "ignore",
"id": 42,
"client_temp_id": "tmp-3c1f",
"parent_id": 42,
"base_version": 1,
"data": {}
}schemaSyncMutationResult
client_mutation_idstring <uuid>statusstringappliedduplicateconflictrejectedoriginal_statusstring | nullcodestring | nulllocked, not_supported_offline, validation, not_found, forbidden, invalid_mutation, unknown_temp_id, unprocessable, server_error.messagestring | nullresourcestringopstringactionstring | nullidinteger | nullclient_temp_idstring | nullversioninteger | nulldataobject | nullerrorsobject | nullconflictobject | nullEigenschappen
server_versionintegerserver_dataobjectfieldsobject[]Eigenschappen
fieldstringclientanyserveranywinnerstringclientserverrulestring
resolutionstring
duplicate_ofinteger | nullretryableboolean
Voorbeeld
{
"client_mutation_id": "bf413a19-2136-4504-bc42-b314637eb5c7",
"status": "applied",
"original_status": "string",
"code": "COMPTOIR",
"message": "OK",
"resource": "string",
"op": "string",
"action": "string",
"id": 42,
"client_temp_id": "string",
"version": 3,
"data": {},
"errors": {},
"conflict": {
"server_version": 1,
"server_data": {},
"fields": [
{
"field": "string",
"client": null,
"server": null,
"winner": "client",
"rule": "string"
}
],
"resolution": "string"
},
"duplicate_of": 1,
"retryable": true
}schemaThirdPartyCustomer or supplier of a company file.
Customer or supplier of a company file.
idintegerbv.18company_idintegerbv.7typestringcustomersuppliercodestringbv.DUBUISSONnamestringbv.Brasserie Dubuisson SAcontact_namestring | nullvat_numberstring | nullbv.BE0402531376enterprise_numberstring | nullbv.0402531376legal_form_codestring | nullvat_statusstringsubjectnot_subjectexemptintra_eunon_eucountrystringbv.BElanguagestring | nullbv.frcategorystring | nullcurrencystringbv.EURaddressstring | nullbv.Chaussée de Mons 28house_numberstring | nullboxstring | nulladdress_line_2string | nullpostal_codestring | nullbv.7904citystring | nullbv.Pipaixnace_codestring | nullibanstring | nullbv.BE71096123456769bicstring | nullbv.GKCCBEBBbank_accountstring | nullemailstring <email> | nullbv.compta@dubuisson.examplephonestring | nullfaxstring | nullwebsitestring | nullpayment_terms_daysintegerbv.30form_281_50_typestring | nullprofession_281_50string | nullis_natural_personbooleanbv.falsenotesstring | nulldefault_vat_code_idinteger | nulldefault_account_idinteger | nullvies_validboolean | nullvies_checked_atstring <date-time> | nullvies_namestring | nullpeppol_identifierstring | nullbv.0208:0402531376peppol_registeredboolean | nullpeppol_access_pointobject | nullpeppol_document_typesPeppolDocumentType[] | nullpeppol_checked_atstring <date-time> | nullcreated_atstring <date-time>updated_atstring <date-time>lock_versionintegerInternal lock counter.bv.3versionintegerVersion of the record, to send back asX-Base-Version/base_version.bv.3deleted_atstring <date-time> | nullSet while the record is in the recycle bin.deleted_byinteger | nulldefault_accountobject | nullLoaded on the single sheet.default_vat_codeobject | nullLoaded on the single sheet.
Voorbeeld
{
"id": 18,
"company_id": 7,
"type": "customer",
"code": "DUBUISSON",
"name": "Brasserie Dubuisson SA",
"contact_name": "string",
"vat_number": "BE0402531376",
"enterprise_number": "0402531376",
"legal_form_code": "string",
"vat_status": "subject",
"country": "BE",
"language": "fr",
"category": "string",
"currency": "EUR",
"address": "Chaussée de Mons 28",
"house_number": "14",
"box": "string",
"address_line_2": "string",
"postal_code": "7904",
"city": "Pipaix",
"nace_code": "string",
"iban": "BE71096123456769",
"bic": "GKCCBEBB",
"bank_account": "string",
"email": "compta@dubuisson.example",
"phone": "+32 65 31 42 18",
"fax": "string",
"website": "https://www.comptoir-montois.be",
"payment_terms_days": 30,
"form_281_50_type": "string",
"profession_281_50": "string",
"is_natural_person": false,
"notes": "string",
"default_vat_code_id": 42,
"default_account_id": 42,
"vies_valid": true,
"vies_checked_at": "2026-03-15T09:41:00+00:00",
"vies_name": "string",
"peppol_identifier": "0208:0402531376",
"peppol_registered": true,
"peppol_access_point": {},
"peppol_document_types": [
{
"id": "bis_billing_invoice",
"name": "Invoice BIS Billing 3.0",
"family": "billing",
"description": "Facture électronique européenne (EN 16931), format Peppol BIS Billing 3.0.",
"document_id": "string"
}
],
"peppol_checked_at": "2026-03-15T09:41:00+00:00",
"created_at": "2026-03-15T09:41:00+00:00",
"updated_at": "2026-03-15T09:41:00+00:00",
"lock_version": 3,
"version": 3,
"deleted_at": "2026-03-15T09:41:00+00:00",
"deleted_by": 1,
"default_account": {},
"default_vat_code": {}
}schemaTrashItem
typestringbv.third_partiesidintegerbv.18labelstringbv.DUBUISSON · Brasserie Dubuisson SAdeleted_atstring <date-time>deleted_byobject | nullpurge_atstring <date-time>Date of the definitive purge.restorablebooleanblocked_reasonstring | nullblocked_messagestring | nullversioninteger
Voorbeeld
{
"type": "third_parties",
"id": 18,
"label": "DUBUISSON · Brasserie Dubuisson SA",
"deleted_at": "2026-03-15T09:41:00+00:00",
"deleted_by": {
"id": 12,
"name": "Claire Dumont"
},
"purge_at": "2026-03-15T09:41:00+00:00",
"restorable": true,
"blocked_reason": "string",
"blocked_message": "string",
"version": 3
}schemaTreasury
accountsobject[]Eigenschappen
journal_idintegerbv.7codestringbv.BNPlabelstringbv.BNP Paribas Fortisibanstring | nullaccountstringbv.550000accounting_balancestring <decimal>bv.19630.11last_statement_balancestring <decimal> | nullbv.19630.11last_statement_datestring <date> | nullpending_countintegerbv.3pending_amountstring <decimal>bv.1842.50differencestring <decimal> | nullbv.0.00
total_accounting_balancestring <decimal>bv.21480.61
Voorbeeld
{
"accounts": [
{
"journal_id": 7,
"code": "BNP",
"label": "BNP Paribas Fortis",
"iban": "BE68539007547034",
"account": "550000",
"accounting_balance": "19630.11",
"last_statement_balance": "19630.11",
"last_statement_date": "2026-03-15",
"pending_count": 3,
"pending_amount": "1842.50",
"difference": "0.00"
}
],
"total_accounting_balance": "21480.61"
}schemaUserAuthenticated user with the firms it belongs to.
Authenticated user with the firms it belongs to.
idintegerbv.12namestringbv.Claire Dumontemailstring <email>localestringfrnlendeemail_verifiedbooleanpending_emailstring <email> | nullNew address waiting for confirmation.is_platform_adminbooleanbv.falseis_demobooleanTrue for the ephemeral user of the demo firm.bv.falsefirmsobject[]Eigenschappen
public_tokenstringbv.NDTQVQU4AUAVnamestringbv.Fiduciaire Dumont & Associésrolestringadminmanagerencoderreviewer
managed_firmsobject[]Eigenschappen
public_tokenstringbv.NDTQVQU4AUAVnamestringbv.Fiduciaire Dumont & Associés
Voorbeeld
{
"id": 12,
"name": "Claire Dumont",
"email": "claire.dumont@fiduciaire-dumont.be",
"locale": "fr",
"email_verified": true,
"pending_email": "claire.dumont@fiduciaire-dumont.be",
"is_platform_admin": false,
"is_demo": false,
"firms": [
{
"public_token": "NDTQVQU4AUAV",
"name": "Fiduciaire Dumont & Associés",
"role": "admin"
}
],
"managed_firms": [
{
"public_token": "NDTQVQU4AUAV",
"name": "Fiduciaire Dumont & Associés"
}
]
}schemaVatCode
idintegerbv.4company_idintegercodestringbv.V21labelstringbv.Ventes 21 %directionstringsalepurchaseratestring <decimal>bv.21.00naturestringstandardintra_eucocontractorexportexemptimportout_of_scopedeductible_pctstring <decimal>bv.100.00base_gridstring | nullGrid of the taxable base.bv.03vat_gridstring | nullGrid of the VAT.bv.54due_vat_gridstring | nullGrid of the VAT due (reverse charge).credit_base_gridstring | nullGrid of the base on a credit note.bv.49credit_vat_gridstring | nullbv.64vat_accountstring | nullbv.451100due_vat_accountstring | nulldescriptionstring | nullis_activebooleansort_orderintegerbv.13created_atstring <date-time>updated_atstring <date-time>lock_versionintegerInternal lock counter.bv.3versionintegerVersion of the record, to send back asX-Base-Version/base_version.bv.3
Voorbeeld
{
"id": 4,
"company_id": 7,
"code": "V21",
"label": "Ventes 21 %",
"direction": "sale",
"rate": "21.00",
"nature": "standard",
"deductible_pct": "100.00",
"base_grid": "03",
"vat_grid": "54",
"due_vat_grid": "string",
"credit_base_grid": "49",
"credit_vat_grid": "64",
"vat_account": "451100",
"due_vat_account": "string",
"description": "Description",
"is_active": true,
"sort_order": 13,
"created_at": "2026-03-15T09:41:00+00:00",
"updated_at": "2026-03-15T09:41:00+00:00",
"lock_version": 3,
"version": 3
}schemaVatComputation
gridsobjectBelgian VAT grids: grid number => amount (decimal string).amount_duestring <decimal>Grid 71.bv.157.50amount_refundstring <decimal>Grid 72.bv.0.00warningsstring[]entriesintegerEntries carrying VAT in the period.bv.38
Voorbeeld
{
"grids": {
"00": "0.00",
"01": "0.00",
"02": "0.00",
"03": "1000.00",
"54": "210.00",
"59": "52.50",
"71": "157.50",
"72": "0.00",
"81": "0.00",
"82": "250.00",
"83": "0.00"
},
"amount_due": "157.50",
"amount_refund": "0.00",
"warnings": [
"string"
],
"entries": 38
}schemaVatDeclaration
idintegerbv.14company_idintegerperiod_typestringmonthlyquarterlyyearintegerbv.2026periodintegerMonth (1-12) or quarter (1-4).bv.1starts_onstring <date-time>ends_onstring <date-time>gridsobjectBelgian VAT grids: grid number => amount (decimal string).amount_duestring <decimal>bv.157.50amount_refundstring <decimal>bv.0.00statusstringdraftvalidatedsubmittedvalidated_atstring <date-time> | nullvalidated_byinteger | nullsubmitted_atstring <date-time> | nullsubmission_referencestring | nullIntervat receipt reference.journal_entry_idinteger | nullVAT settlement entry.warningsstring[]created_atstring <date-time>updated_atstring <date-time>lock_versionintegerInternal lock counter.bv.3versionintegerVersion of the record, to send back asX-Base-Version/base_version.bv.3journal_entryobject | null
Voorbeeld
{
"id": 14,
"company_id": 7,
"period_type": "monthly",
"year": 2026,
"period": 1,
"starts_on": "2026-03-15T09:41:00+00:00",
"ends_on": "2026-03-15T09:41:00+00:00",
"grids": {
"00": "0.00",
"01": "0.00",
"02": "0.00",
"03": "1000.00",
"54": "210.00",
"59": "52.50",
"71": "157.50",
"72": "0.00",
"81": "0.00",
"82": "250.00",
"83": "0.00"
},
"amount_due": "157.50",
"amount_refund": "0.00",
"status": "draft",
"validated_at": "2026-03-15T09:41:00+00:00",
"validated_by": 1,
"submitted_at": "2026-03-15T09:41:00+00:00",
"submission_reference": "string",
"journal_entry_id": 1284,
"warnings": [
"string"
],
"created_at": "2026-03-15T09:41:00+00:00",
"updated_at": "2026-03-15T09:41:00+00:00",
"lock_version": 3,
"version": 3,
"journal_entry": {}
}schemaVersionConflict409 of the optimistic lock (`X-Base-Version`).
409 of the optimistic lock (X-Base-Version).
messagestringverplichtcodestringverplichtconflictserver_versionintegerverplichtCurrent version on the server.bv.4server_dataobjectverplichtCurrent state of the record.
Voorbeeld
{
"message": "OK",
"code": "conflict",
"server_version": 4,
"server_data": {}
}schemaWebhookDelivery
idintegerbv.1871event_idstringbv.evt_01JD8X5Q2M7Z4W9K3T6B0N1VCEeventstringbv.entry.postedstatusstringpendingdeliveredfailedattemptsinteger8 attempts at most.bv.1next_attempt_atstring <date-time> | nullresponse_statusinteger | nullbv.200response_excerptstring | nullduration_msinteger | nullbv.184delivered_atstring <date-time> | nullcreated_atstring <date-time>payloadWebhookEventattemptintegerAlias ofattempts.bv.1http_statusinteger | nullAlias ofresponse_status.bv.200
Voorbeeld
{
"id": 1871,
"event_id": "evt_01JD8X5Q2M7Z4W9K3T6B0N1VCE",
"event": "entry.posted",
"status": "pending",
"attempts": 1,
"next_attempt_at": "2026-03-15T09:41:00+00:00",
"response_status": 200,
"response_excerpt": "string",
"duration_ms": 184,
"delivered_at": "2026-03-15T09:41:00+00:00",
"created_at": "2026-03-15T09:41:00+00:00",
"payload": {
"id": "evt_01JD8X5Q2M7Z4W9K3T6B0N1VCE",
"event": "entry.posted",
"api_version": "v1",
"created_at": "2026-03-15T09:41:00+00:00",
"firm": {
"public_token": "NDTQVQU4AUAV",
"name": "Fiduciaire Dumont & Associés"
},
"company": {
"public_token": "XBVD5O1L29HC",
"name": "Le Comptoir Montois SRL"
},
"data": {}
},
"attempt": 1,
"http_status": 200
}schemaWebhookEndpoint
idintegerbv.3urlstring <uri>bv.https://erp.example.com/hooks/novafiskodescriptionstring | nullbv.ERP connectoreventsstring[]is_activebooleansecret_hintstringMasked signing secret.bv.whsec_…ab12last_delivery_atstring <date-time> | nulllast_statusstring | nullStatus of the last delivery.bv.deliveredcreated_atstring <date-time>updated_atstring <date-time>
Voorbeeld
{
"id": 3,
"url": "https://erp.example.com/hooks/novafisko",
"description": "ERP connector",
"events": [
"entry.posted"
],
"is_active": true,
"secret_hint": "whsec_…ab12",
"last_delivery_at": "2026-03-15T09:41:00+00:00",
"last_status": "delivered",
"created_at": "2026-03-15T09:41:00+00:00",
"updated_at": "2026-03-15T09:41:00+00:00"
}schemaWebhookEventBody POSTed to a webhook endpoint. Verify `X-Novafisko-Signature` before trusting it.
Body POSTed to a webhook endpoint. Verify X-Novafisko-Signature before trusting it.
idstringverplichtUnique event id; use it to deduplicate.bv.evt_01JD8X5Q2M7Z4W9K3T6B0N1VCEeventstringverplichtbv.entry.postedapi_versionstringverplichtbv.v1created_atstring <date-time>verplichtUTC.firmobjectverplichtEigenschappen
public_tokenstringbv.NDTQVQU4AUAVnamestringbv.Fiduciaire Dumont & Associés
companyobject | nullEigenschappen
public_tokenstringbv.XBVD5O1L29HCnamestringbv.Le Comptoir Montois SRL
dataobjectverplichtEvent-specific payload (ids, references, amounts).
Voorbeeld
{
"id": "evt_01JD8X5Q2M7Z4W9K3T6B0N1VCE",
"event": "entry.posted",
"api_version": "v1",
"created_at": "2026-03-15T09:41:00+00:00",
"firm": {
"public_token": "NDTQVQU4AUAV",
"name": "Fiduciaire Dumont & Associés"
},
"company": {
"public_token": "XBVD5O1L29HC",
"name": "Le Comptoir Montois SRL"
},
"data": {}
}