Integration API

The REST API for transferring data between your ERP and the B2B portal. Authenticate with Authorization: Bearer <api_key>; all responses are JSON. Create your API key in the admin panel.

๐Ÿ“–

Interactive Documentation

The Swagger UI where you can browse every endpoint, try it out, and send example requests from the browser.

/integration/v1/docs
๐Ÿ“„

OpenAPI Spec (JSON)

The raw OpenAPI 3.0 schema for code generation, CI/CD integration or AI tools. Download and use directly.

/api-docs/openapi.json

Getting started

Obtain an API key

Integration requires an API key with the import and export scopes. Ask your customer representative for the API key.

Send your first request

Start by importing brands to verify the API works. Check the "upserted" field in the successful response.

# Importing brands (first step)
curl -X POST https://<server>/integration/v1/brands \
  -H "Authorization: Bearer <api_key>" \
  -H "Content-Type: application/json" \
  -d '{"items": [{"erp_ref": "BRD001", "name": "Bosch"}, {"erp_ref": "", "name": "Valeo"}]}'

Response โ€” Bosch succeeded, Valeo failed (partial success):

{
  "received": 2,
  "upserted": 1,
  "failed": 1,
  "errors": [
    { "index": 1, "erp_ref": "", "message": "erp_ref cannot be empty" }
  ]
}

Exchange rates

Rates are not fetched automatically; they are entered manually in the admin panel (Currencies โ†’ View Rates) or sent via the API. Sending a rate again for the same day updates the existing one. A rate is the value of 1 unit of the currency in the base currency; the base currency is selected in the admin Settings page.

# Entering USD and EUR rates for 2026-07-15 (re-sending the same day updates them)
curl -X POST https://<server>/integration/v1/exchange-rates \
  -H "Authorization: Bearer <api_key>" \
  -H "Content-Type: application/json" \
  -d '{"items": [{"currency_code": "USD", "rate_date": "2026-07-15", "rate": 41.86}, {"currency_code": "EUR", "rate_date": "2026-07-15", "rate": 45.12}]}'

Import order

Data has dependencies, so follow the order below. A record in one step expects the previous ones to already exist in the system.

Brands โ†’ Currencies โ†’ Rates (daily) โ†’ Customers โ†’ Groups โ†’ Group Members โ†’ Products โ†’ Prices โ†’ Stocks โ†’ Discounts โ†’ Invoices โ†’ Account Transactions

You can send the same record more than once with the same erp_ref โ€” it is updated with the latest value (upsert); no duplicates are created.

Things to keep in mind

๐Ÿ’ฑ All amounts are base currency

Send invoice and account-transaction amounts as base-currency equivalents, not in the ERP's original currency (admin Settings โ†’ Base Currency). The system does not convert currencies.

๐Ÿ” Partial success

You can send 1000 records per request. Even if some fail, the valid ones are processed. Always check the errors array in the response.

๐Ÿ“ฆ Full-list replacement

When the product references, images and invoice lines fields are sent, existing data is completely deleted and replaced. To keep them, omit the field entirely.

โฑ Rate limit

There is a limit of 60 requests per minute. Exceeding it returns 429 Too Many Requests. Plan your batch jobs with this limit in mind.