Aller au contenu principal
REST API

The Novadesko API

Connect your tools to Novadesko: key figures, invoices, customers, products and unpaid invoices across all your companies, for reading and writing.

JSON / REST Revocable API keys Claude connector (MCP)
20+
Endpoints
REST
JSON format
nvk_ / nvt_
Revocable keys
MCP
Claude connector

Authentication

Generate your credentials from your Novadesko workspace at web.novadesko.com/integrations/api. Two credential types, revocable at any time:

  • nvk_… — User key: covers every company of your account.
  • nvt_… — Company token: limited to a single company.
Base URL
https://web.novadesko.com/api/v1

Three authentication formats are accepted:

// 1. Bearer
Authorization: Bearer CLE.SECRET

// 2. Basic
Authorization: Basic base64(CLE:SECRET)

// 3. Dedicated headers
X-Api-Key: CLE
X-Api-Secret: SECRET

The secret is shown only once, at creation. Revocation is immediate from the same page. Legacy Sanctum tokens and nsk_ keys are still accepted.

Example

curl https://web.novadesko.com/api/v1/me \
  -H "Authorization: Bearer nvk_xxx.SECRET"

Profile & companies

Identify the caller and list the companies accessible with your credential.

GET/api/v1/meProfile + accessible companies
GET/api/v1/companiesCompany list (id, name, VAT, contact details)
curl https://web.novadesko.com/api/v1/me \
  -H "Authorization: Bearer nvk_xxx.SECRET"
Response
{
  "user": { "id": 1, "name": "John Doe", "email": "john@doe.com" },
  "credential": { "kind": "user_key", "name": "Zapier", "shop_id": null },
  "companies": [
    {
      "id": 1,
      "name": "Demo SPRL",
      "vat_number": "BE0123456789",
      "email": "info@demo.com",
      "phone": "+32 2 123 45 67",
      "city": "Bruxelles",
      "country": "Belgique"
    }
  ]
}

Statistics

Key figures of a company over a period: revenue incl. VAT, credit notes, purchases, gross result, unpaid customer and supplier invoices, counters.

GET/api/v1/companies/{id}/stats?from=&to=

Dates in YYYY-MM-DD format. Default: current year.

curl "https://web.novadesko.com/api/v1/companies/1/stats?from=2026-01-01" \
  -H "Authorization: Bearer nvk_xxx.SECRET"
Response
{
  "company": { "id": 1, "name": "Demo SPRL" },
  "period": { "from": "2026-01-01", "to": "2026-08-17" },
  "revenue_ttc": 17077.46,
  "credit_notes_ttc": 250.00,
  "net_revenue_ttc": 16827.46,
  "purchases_ttc": 6420.35,
  "gross_result_ttc": 10407.11,
  "invoices_count": 34,
  "purchases_count": 21,
  "estimates_count": 8,
  "unpaid_invoices": { "count": 6, "total_ttc": 11769.28, "overdue_count": 6 },
  "unpaid_purchases": { "count": 2, "total_ttc": 840.50 },
  "customers_count": 57,
  "products_count": 112
}

Documents (read)

Search and browse the documents of each company, across all types.

GET/api/v1/companies/{id}/documentsList / filter
GET/api/v1/companies/{id}/documents/{docId}Detail + lines + customer

Available filters:

?type=&paid=&from=&to=&q=&page=&per_page=

Document types:

invoice · purchase · estimate · order · credit_note · proforma · receipt
Response (excerpt)
{
  "data": [
    {
      "id": 123,
      "number": "FAC-2026-0042",
      "type": "invoice",
      "date": "2026-06-12",
      "due_date": "2026-07-12",
      "customer": "ACME SRL",
      "amount_ttc": 1200.00,
      "is_paid": false
    }
  ],
  "meta": { "page": 1, "per_page": 25, "total": 34 }
}
Detail (excerpt)
{
  "id": 123,
  "number": "FAC-2026-0042",
  "type": "invoice",
  "amount_ttc": 1200.00,
  "is_paid": false,
  "customer": {
    "id": 7,
    "name": "ACME SRL",
    "vat_number": "BE0987654321"
  },
  "lines": [
    {
      "product_name": "Abonnement Pro",
      "quantity": 2,
      "unit_amount": 495.87,
      "tax_rate": 21
    }
  ]
}

Customers & Products

Browse the customer records and product catalog of each company, with search and pagination.

GET/api/v1/companies/{id}/customers?q=&page=
GET/api/v1/companies/{id}/products?q=&page=
Customers (excerpt)
{
  "data": [
    {
      "id": 7,
      "name": "ACME SRL",
      "email": "contact@acme.be",
      "phone": "+32 2 555 12 34",
      "city": "Bruxelles"
    }
  ],
  "meta": { "page": 1, "per_page": 25, "total": 57 }
}
Products (excerpt)
{
  "data": [
    {
      "id": 42,
      "name": "Abonnement Pro",
      "reference": "ABO-PRO",
      "sale_price": 49.99,
      "tax_included": true,
      "stock_quantity": 0
    }
  ],
  "meta": { "page": 1, "per_page": 25, "total": 112 }
}

Unpaid invoices

Unpaid invoices of a company, grouped by customer, with overdue flags and total.

GET/api/v1/companies/{id}/unpaid-invoices
Response
{
  "count": 6,
  "total_ttc": 11769.28,
  "invoices": [
    {
      "id": 118,
      "number": "FAC-2026-0031",
      "customer": "ACME SRL",
      "date": "2026-03-02",
      "due_date": "2026-04-01",
      "amount_ttc": 3025.00,
      "overdue": true
    }
  ]
}

Transactions

Payments and cash movements of a company over a period (500 max).

GET/api/v1/companies/{id}/transactions?from=&to=&limit=
Response
{
  "period": { "from": "2026-01-01", "to": "2026-08-17" },
  "count": 1,
  "data": [
    {
      "id": 88,
      "date": "2026-06-12",
      "amount": 1200.00,
      "type": "payment",
      "direction": "in",
      "source": "bank"
    }
  ]
}

Documents (write)

Historical company-scoped endpoints: create and update all document types (slugs: invoices, quotes, orders…). Numbering is automatic at creation.

GET/api/v1/documents/{slug}List documents
POST/api/v1/documents/{slug}Create (auto numbering)
GET/api/v1/documents/{slug}/{id}Document detail
PUT/api/v1/documents/{slug}/{id}Update

Example: Invoices

curl -H "Authorization: Bearer nvk_xxx.SECRET" \
  https://web.novadesko.com/api/v1/documents/invoices
Response (excerpt)
[
  {
    "id": 123,
    "number": "FAC-2026-0042",
    "date": "2026-06-12",
    "client": { "id": 1, "name": "ACME Sarl" },
    "total": 1200.00,
    "status": "paid"
  }
]
Creation (POST)
{
  "client_id": 1,
  "date": "2026-06-12",
  "lines": [
    { "product_id": 15, "qty": 2, "price": 100 }
  ]
}

Customers

Manage your customer base: create, read and update.

GET/api/v1/customers
POST/api/v1/customers
GET/api/v1/customers/{id}
PUT/api/v1/customers/{id}
curl -H "Authorization: Bearer nvk_xxx.SECRET" \
  https://web.novadesko.com/api/v1/customers
Creation (POST)
{
  "name": "Société Demo",
  "email": "contact@demo.com",
  "phone": "+32 2 123 45 67"
}
Response
{
  "id": 2,
  "name": "Société Demo",
  "email": "contact@demo.com",
  "created_at": "2026-06-12T16:10:00Z"
}

Suppliers

Manage your suppliers and their information.

GET/api/v1/suppliers
POST/api/v1/suppliers
GET/api/v1/suppliers/{id}
PUT/api/v1/suppliers/{id}
curl -H "Authorization: Bearer nvk_xxx.SECRET" \
  https://web.novadesko.com/api/v1/suppliers
Creation (POST)
{
  "company": "Fournisseur SARL",
  "vat_number": "FR123456789",
  "email": "info@fournisseur.com"
}
Response
{
  "id": 5,
  "company": "Fournisseur SARL",
  "created_at": "2026-06-12T16:22:00Z"
}

Products

Manage your product catalog.

GET/api/v1/products
POST/api/v1/products
GET/api/v1/products/{id}
PUT/api/v1/products/{id}
curl -H "Authorization: Bearer nvk_xxx.SECRET" \
  https://web.novadesko.com/api/v1/products
Creation (POST)
{
  "name": "Abonnement Pro",
  "price": 49.99,
  "category_id": 1
}
Response
{
  "id": 42,
  "name": "Abonnement Pro",
  "price": 49.99
}

Document types

List of active document types and their slugs to use in the /documents/{slug} endpoints.

GET/api/v1/document-types
curl -H "Authorization: Bearer nvk_xxx.SECRET" \
  https://web.novadesko.com/api/v1/document-types
Response (excerpt)
[
  { "id": 2, "name": "Factures", "slug": "invoices", "prefix": "FAC" },
  { "id": 6, "name": "Devis", "slug": "quotes", "prefix": "DEV" }
]

Claude connector (MCP)

Read-only

Connect Claude to your Novadesko data: ask questions in natural language, Claude reads your companies (figures, documents, customers, unpaid invoices).

  1. 1 Generate a secret URL from your Novadesko workspace at web.novadesko.com/integrations/claude.
  2. 2 In claude.ai: Settings › Connectors › Add custom connector, then paste the URL.
  3. 3 Claude can then query your companies in read-only mode, right inside your conversations.
Under the hood
POSThttps://web.novadesko.com/api/mcp/claude/{token}

MCP protocol (JSON-RPC: initialize, tools/list, tools/call) · 9 tools available, including get_company_overview.

// JSON-RPC (MCP)
{ "jsonrpc": "2.0", "method": "tools/call",
  "params": { "name": "get_company_overview", "arguments": { "company_id": 1 } },
  "id": 1 }
API REST

Ready to integrate Novadesko?

Generate your API key in seconds from your Novadesko workspace and automate your flows: invoicing, customers, statistics and unpaid invoices.

JSON / REST Revocable API keys Claude connector (MCP)

Novadesko Support

…

Hello!

How can we help you?

Received a letter?

Novadesko Support