Nordlet

Dokumentacija / Vadovai

Pradžia

API raktai, pirmosios užklausos, visas sąskaitų faktūrų ciklas, SDK ir „webhooks“.

Nordlet yra pirmiausia API (API-first) principu pagrįsta buhalterinės apskaitos platforma, skirta ES/EEE rinkai, pradedanti veiklą visiškai pritaikyta Lietuvos teisės aktams. Visos produkto funkcijos — sąskaitų faktūrų išrašymas, didžioji knyga, banko sąskaitų suderinimas (bank reconciliation), i.SAF — yra pasiekiamos per vieną JSON API.

1. Gaukite API raktą

Kiekviena užklausa yra autentifikuojama naudojant Bearer API raktą, priskirtą vienai įmonei (scoped to one company):

Authorization: Bearer nl_...

Vietiniam kūrimui (local development) inicijuokite įmonę ir raktą:

pnpm --filter @nordlet/db bootstrap:dev     # empty company
pnpm --filter @nordlet/api seed:demo        # company with demo data

Interaktyvi API dokumentacija (OpenAPI specifikacija pasiekiama /openapi.json; vietinė instancija (local instance) pateikia tą pačią dokumentaciją adresu http://localhost:3001/docs).

Postman

Labiau patinka Postman? Importuokite paruoštą kolekciją — visi galiniai punktai (endpoints), sugrupuoti pagal modulius, su iš anksto sukonfigūruotu „bearer“ autentifikavimu: Nordlet Postman collection. Importavę, bearerToken kintamajam priskirkite savo API raktą ir kiekviena užklausa bus automatiškai autentifikuojama.

Smėliadėžės (sandbox) įmonės

Integracijų testavimui sukurkite įmonę su parametru isSandbox: true (POST /v1/account/companies/create arba programėlėje pažymėkite smėliadėžės varnelę registracijos metu). Smėliadėžės įmonė veikia lygiai taip pat, kaip tikra — tie patys moduliai, tas pats API, todėl per ją galite apdoroti realistiškas operacijų (transactions) apimtis. Tačiau ji yra aiškiai pažymėta kaip testiniai duomenys, o ją ištrynus viskas pašalinama nedelsiant, vietoje įprasto 10 dienų duomenų saugojimo laikotarpio. Vienoje paskyroje šalia tikros įmonės galite turėti neribotą skaičių smėliadėžės įmonių; sukūrus įmonę šis požymis tampa nekeičiamas, todėl tikri apskaitos registrai (real books) niekada negali būti nepastebimai perklasifikuoti į testinius duomenis.

2. Pirmosios užklausos

Kiekviena operacija yra POST /v1/{module}/{resource}/{action} su JSON formato užklausos kūnu (body). Sukurkite pirkėją:

curl -X POST https://api.nordlet.com/v1/partners/create \
  -H "Authorization: Bearer $API_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: partner-create-001" \
  -d '{"name": "UAB Klientas", "code": "301111222", "vatCode": "LT100001112223"}'

Išrašykite sąskaitą faktūrą (sumos pateikiamos dešimtainiais skaičiais teksto eilutės (string) formatu, niekada kaip slankiojo kablelio (float) skaičiai):

curl -X POST https://api.nordlet.com/v1/sales/invoices/create \
  -H "Authorization: Bearer $API_KEY" -H "Content-Type: application/json" \
  -d '{
    "partnerId": "<partner id>",
    "lines": [{"description": "Konsultacijos", "quantity": 4, "unitPriceExclVat": "75.0000", "vatClassifierCode": "PVM1"}]
  }'

curl -X POST https://api.nordlet.com/v1/sales/invoices/issue \
  -H "Authorization: Bearer $API_KEY" -H "Content-Type: application/json" \
  -d '{"id": "<invoice id>", "issueDate": "2026-07-09"}'

Išrašant priskiriamas nenutrūkstamas eilės numeris (SF-1), patikrinama, ar apskaitos periodas atviras, ir toje pačioje transakcijoje užregistruojamas subalansuotas dvejybinis įrašas (balanced journal entry) (D 2410 pirkėjų įsiskolinimas / K 5001 pajamos / K 4492 PVM).

3. Visas ciklas

Žingsnis Užklausa
Perkelti apskaitą iš ankstesnės sistemos migration/books/validatemigration/books/import — žr. Perkėlimas iš kitos sistemos
Užregistruoti tiekėjo sąskaitą faktūrą purchases/invoices/createpurchases/invoices/register
Importuoti banko išrašą bank/statements/import (camt.053 XML) arba bank/transactions/import (JSON)
Gauti sudengimo pasiūlymus bank/transactions/suggest-matches
Sudengti mokėjimą bank/transactions/match — užregistruoja mokėjimą ir atnaujina paymentStatus
Apmokėti tiekėjams bank/payments/export — pain.001 SEPA failas jūsų bankui
Mėnesiniai PVM registrai declarations/lt/isaf/generate — i.SAF 1.2 XML failas VMI
PVM deklaracijos rodikliai declarations/lt/fr0600/compute — FR0600 laukeliai, suderinti su registrais
Išsiųsti prekes su važtaraščiu transport/waybills/createissue, tada declarations/lt/ivaz/generate — i.VAZ XML failas VMI

4. TypeScript SDK

import { createNordletClient, idempotent } from '@nordlet/sdk'

const client = createNordletClient({
  baseUrl: 'https://api.nordlet.com',
  apiKey: process.env.NORDLET_API_KEY!,
})

const { data, error } = await client.POST('/v1/sales/invoices/create', {
  body: {
    partnerId,
    lines: [{ description: 'Konsultacijos', quantity: 4, unitPriceExclVat: '75.0000' }],
  },
  ...idempotent(`order-${orderId}`),
})

SDK generuojamas iš tiesioginės (live) OpenAPI specifikacijos (pnpm --filter @nordlet/sdk generate), todėl kiekvienos užklausos ir atsakymo tipai yra griežtai apibrėžti (fully typed).

5. „Webhooks“

Prenumeruokite įvykius, užuot periodiškai siuntę užklausas (polling):

curl -X POST https://api.nordlet.com/v1/webhooks/subscriptions/create \
  -H "Authorization: Bearer $API_KEY" -H "Content-Type: application/json" \
  -d '{"url": "https://example.com/hooks/hyperion", "events": ["sale_invoice.issued", "sale_invoice.paid"]}'

Pristatomi pranešimai (deliveries) turi HMAC parašą (x-nordlet-signature: sha256=<hex> sugeneruotą iš neapdoroto užklausos kūno (raw body) ir jūsų prenumeratos paslapties (secret)), o nepavykus pristatyti, jie kartojami taikant eksponentinį uždelsimą (exponential backoff).

Dabartiniai įvykiai: sale_invoice.issued, sale_invoice.paid, purchase_invoice.registered, purchase_invoice.paid.

Žr. API konvencijos norėdami sužinoti apie sąrašų užklausas (list queries), klaidų formatus (error envelopes), idempotentiškumo semantiką ir užklausų limitus (rate limits).