Fejlesztőknek

aiszamla API

Webshop, CRM vagy saját rendszer bekötése: számla és díjbekérő kiállítása, NAV-beküldés, e-mail, fizetés követése, emlékeztető, sztornó, bejövő számlák és törzsadatok – egyszerű REST/JSON API-val.

✓ Minden végpont élesben tesztelve API-kulccsal (2026-10-29, 82/82 sikeres)

Fejlesztéshez: hozz létre ingyenes teszt fiókot – minden végpont működik benne, de semmi nem megy ki: a számlák „TESZT” sorozatban készülnek, a NAV-beküldés szimulált, az e-mailek nem mennek ki (a fiókban megnézheted őket), és nincs API-díj.

Hitelesítés

  1. Belépés → Beállítások → API → „Új API-kulcs” (a cég tulajdonosa hozhatja létre).
  2. A kulcsot (aisz_…) csak egyszer mutatjuk – tárold biztonságosan, a szerveren.
  3. Minden kérésben: Authorization: Bearer aisz_…

Az API külön díjas kiegészítő. A kulcs bármikor visszavonható; a visszavont kulcsra 401 jön.

Alapok

  • Alap URL: https://www.aiszamla.hu/api/v1
  • Formátum: JSON (UTF-8); dátum: ÉÉÉÉ-HH-NN; összeg: szám (nettó egységár).
  • Teszt: éles NAV-kapcsolat nélkül a számlák TESZT-sorozatban készülnek – élesítés előtt bátran tesztelj.
  • Dupla kiállítás ellen: externalId (409 ugyanarra).
  • Hiba esetén: { "error": { "code", "message" } }

Fiók

GET/api/v1/me

Cég, csomag, felhasználás

A kulcshoz tartozó cég adatai, a NAV-kapcsolat állapota, a csomag kerete és a havi felhasználás. A kulcs ellenőrzésére is ezt érdemes hívni.

Kérés

curl -X GET https://www.aiszamla.hu/api/v1/me \
  -H "Authorization: Bearer aisz_…"

Válasz · 200

{
  "company": { "name": "Minta Kft.", "taxNumber": "12345678-2-41", "email": "minta@aiszamla.hu" },
  "nav": { "environment": "production", "verified": true },
  "plan": { "name": "Üzleti", "invoicesPerMonth": null, "aiPerMonth": 200 },
  "usage": { "invoicesThisMonth": 17, "aiThisMonth": 3 }
}

Kimenő számlák, díjbekérők, szállítólevelek

Éles NAV-kapcsolat nélkül a számlák TESZT-sorozatban készülnek (isTest: true) – így élesítés előtt bátran lehet tesztelni.

POST/api/v1/invoices

Számla vagy díjbekérő létrehozása

Alapból azonnal kiállítja (sorszám + NAV-beküldés), és ha a vevőnek van e-mail-címe, elküldi neki (a levél gombja a számlára visz; megnyitás ingyenes fiókkal). Piszkozathoz: "issue": false. Az externalId véd a dupla számla ellen (ugyanarra az azonosítóra 409-et ad).

MezőHolTípusLeírás
typebodystring"invoice" (alapértelmezett), "advance" (előlegszámla – a NAV-ba előleg jelöléssel megy; a deliveryDate az előleg megfizetésének napja), "proforma" (díjbekérő, „-DB” sorszám) vagy "delivery" (szállítólevél, „-SZL” sorszám). A díjbekérő és a szállítólevél nem számla, nem megy a NAV-ba.
prefixbodystringSzámlaelőtag (sorszámtartomány), pl. "WEB" – a fiókban felvett, bekapcsolt előtagok egyike; üresen az alapértelmezett. Ismeretlen vagy kikapcsolt előtagnál 422 invalid_prefix.
electronicbodybooleanE-számla: true esetén a sorszám „E-” előtagot kap (pl. E-SZLA-2026-00001), és a PDF elektronikus aláírással hitelesített. Alapból (false) papír alapú számla.
advanceInvoiceIdsbodystring[]Végszámla: a levonandó előlegszámlák azonosítói (azonos vevő és pénznem). A tételekhez a teljes árat add meg; a rendszer előlegszámlánként és ÁFA-kulcsonként negatív „Előleg (sorszám)” tételt tesz a számlára (NAV: advancePaymentData). Negatív végösszeg nem lehet – ilyenkor 409 advance_failed.
showPricesbodybooleanSzállítólevélen az árak feltüntetése (alapból true; false esetén csak megnevezés és mennyiség).
customer.typebodystringDOMESTIC (adószámos belföldi, alapértelmezett ha van taxNumber), PRIVATE_PERSON (magánszemély), OTHER (külföldi / adószám nélküli szervezet).
customer.name *bodystringA vevő neve.
customer.taxNumberbodystringBelföldi adószám (12345678-1-12) – DOMESTIC vevőnél kötelező.
customer.communityVatNumberbodystringUniós közösségi adószám (OTHER vevőnél).
customer.countrybodystringKétbetűs országkód (alapból HU).
customer.postalCode, city, address *bodystringA vevő címe.
customer.emailbodystringIde küldjük a számlát.
lines[].description *bodystringTétel megnevezése.
lines[].quantitybodynumberMennyiség (alapból 1).
lines[].unitbodystringEgység (db, óra, hó, nap, …; alapból db).
lines[].unitPrice *bodynumberNETTÓ egységár a számla pénznemében (bruttós tételnél elhagyható).
lines[].grossbodynumberA tétel kötött BRUTTÓ összege egész forintban (csak HUF). Bruttó áras rendszereknek (pl. kassza): a nettó és az ÁFA ebből számolódik, a számla végösszege fillérre egyezik a kifizetettel.
lines[].vatbodystringÁFA: 27, 18, 5, AAM, TAM, KBAET, EAM, … (alapból 27).
currencybodystringHUF (alapértelmezett) vagy bármely háromjegyű ISO 4217 kód (EUR, USD, GBP, CHF, PLN, CZK, RON…). Az MNB által jegyzett devizánál az árfolyam alapból az MNB-é, a többinél az exchangeRate kötelező.
exchangeRatebodynumberSaját árfolyam (devizás számlánál).
paymentMethodbodystringTRANSFER (alapértelmezett), CARD, CASH, VOUCHER, OTHER.
deliveryDatebodydateTeljesítés dátuma (alapból ma).
paymentDate / dueDaysbodydate / numberFizetési határidő, vagy napok száma a teljesítéstől (alapból 8).
notebodystringMegjegyzés a számlára.
issuebodybooleanfalse = csak piszkozat (alapból true).
sendEmailbodybooleanfalse = ne küldje el e-mailben (alapból true).
externalIdbodystringSaját azonosító (pl. rendelésszám) – dupla kiállítás ellen.

Kérés

curl -X POST https://www.aiszamla.hu/api/v1/invoices \
  -H "Authorization: Bearer aisz_…" \
  -H "Content-Type: application/json" \
  -d '{
    "customer": {
      "taxNumber": "13421739-2-41",
      "name": "Napfény Pékség Bt.",
      "postalCode": "6720",
      "city": "Szeged",
      "address": "Példa tér 5.",
      "email": "szamla@example.com"
    },
    "lines": [
      {
        "description": "Webshop rendelés #1042",
        "quantity": 2,
        "unit": "db",
        "unitPrice": 9990,
        "vat": "27"
      }
    ],
    "paymentMethod": "CARD",
    "externalId": "rendeles-1042"
  }'

Válasz · 201

{ "id": "6f1c…", "number": "SZLA-2026-00042", "status": "issued", "navStatus": "SAVED", "grossTotal": 25375, "currency": "HUF",
  "message": "Beküldve a NAV-nak (éles), tranzakció: 5KD…", "email": "Elküldve: szamla@example.com", "pdf": "/api/v1/invoices/6f1c…/pdf" }

Hibák: 400 invalid_json · 409 duplicate (externalId) · 422 validation_failed · 422 invalid_currency

GET/api/v1/invoices

Számlák listája

Legújabb elöl. Szűrhető és lapozható.

MezőHolTípusLeírás
from, toquerydateKelte szerint (ÉÉÉÉ-HH-NN).
typequerystringinvoice | advance | proforma | delivery
statusquerystringdraft | issued | cancelled
paidquerybooleantrue = kifizetett, false = nyitott.
overduequerybooleantrue = lejárt, kifizetetlen.
qquerystringKeresés sorszámra, vevőnévre, adószámra.
limit, offsetquerynumberLapozás (limit max. 500, alapból 100).

Kérés

curl -X GET https://www.aiszamla.hu/api/v1/invoices?overdue=true&limit=50 \
  -H "Authorization: Bearer aisz_…"

Válasz · 200

{ "data": [ {
    "id": "6f1c…",
    "number": "SZLA-2026-00042",
    "type": "invoice",            // invoice | advance | proforma | delivery
    "prefix": "SZLA",             // számlaelőtag (sorszámtartomány)
    "kind": "normal",             // normal | storno | modify | proforma
    "status": "issued",           // draft | issued | cancelled
    "issueDate": "2026-10-28",
    "deliveryDate": "2026-10-28",
    "paymentDate": "2026-11-05",
    "paidAt": null,
    "customer": { "name": "Napfény Pékség Bt.", … },
    "grossTotal": 63500,
    "netTotal": 50000,
    "currency": "HUF",
    "navStatus": "DONE",          // NAV-feldolgozás állapota
    "isTest": false,
    "reminderCount": 0,
    "pdf": "/api/v1/invoices/6f1c…/pdf"
  } ], "limit": 50, "offset": 0 }

Hibák: 422 invalid_date

GET/api/v1/invoices/{id}

Egy számla adatai

Tételek, fizetés, NAV-állapot és a kiküldött levelek (kinek, mikor, megnyitotta-e).

Kérés

curl -X GET https://www.aiszamla.hu/api/v1/invoices/6f1c… \
  -H "Authorization: Bearer aisz_…"

Válasz · 200

{ …számla…, "paymentMethod": "TRANSFER", "vatTotal": 13500, "note": null,
  "lines": [ { "description": "Weboldal karbantartás", "quantity": 1, "unit": "hó", "unitPrice": 50000, "vat": "27", "net": 50000, "vatAmount": 13500, "gross": 63500 } ],
  "emails": [ { "type": "invoice", "to": "szamla@example.com", "status": "opened", "sentAt": "…", "openedAt": "…", "openCount": 2 } ] }

Hibák: 404 not_found

GET/api/v1/invoices/{id}/pdf

Számla PDF-ben

Az eredeti számlakép PDF-ben (application/pdf).

Kérés

curl -X GET https://www.aiszamla.hu/api/v1/invoices/6f1c…/pdf \
  -H "Authorization: Bearer aisz_…" -o szamla.pdf

Válasz · 200

(PDF fájl)

Hibák: 404 not_found

POST/api/v1/invoices/{id}/issue

Piszkozat kiállítása

Sorszámot kap, és beküldjük a NAV-nak (díjbekérőnél NAV nélkül). Ha a vevőnek van e-mail-címe, elküldjük – ezt { "sendEmail": false } kapcsolja ki.

MezőHolTípusLeírás
sendEmailbodybooleanAlapból true.

Kérés

curl -X POST https://www.aiszamla.hu/api/v1/invoices/6f1c…/issue \
  -H "Authorization: Bearer aisz_…" \
  -H "Content-Type: application/json" \
  -d '{
    "sendEmail": false
  }'

Válasz · 200

{ "id": "6f1c…", "number": "SZLA-2026-00043", "status": "issued", "navStatus": "SAVED", "message": "…", "email": null }

Hibák: 404 not_found · 409 not_draft · 422 issue_failed (pl. csomagkeret, hiányzó adat)

POST/api/v1/invoices/{id}/send

Küldés e-mailben

A számla (újra)küldése márkázott levélben: melléklet nincs, a gomb a számlára visz (a vevő ingyenes fiókkal nyitja meg és tölti le). Alapból a vevő e-mail-címére.

MezőHolTípusLeírás
tobodystringMásik címzett (nem kötelező).

Kérés

curl -X POST https://www.aiszamla.hu/api/v1/invoices/6f1c…/send \
  -H "Authorization: Bearer aisz_…" \
  -H "Content-Type: application/json" \
  -d '{
    "to": "konyveles@example.com"
  }'

Válasz · 200

{ "sent": true, "message": "Elküldve: konyveles@example.com" }

Hibák: 409 draft · 422 send_failed

POST/api/v1/invoices/{id}/reminder

Fizetési emlékeztető / felszólítás

Kifizetetlen számláról: az első levél barátságos emlékeztető, a másodiktól hivatalos fizetési felszólítás (a számla PDF-jével).

Kérés

curl -X POST https://www.aiszamla.hu/api/v1/invoices/6f1c…/reminder \
  -H "Authorization: Bearer aisz_…"

Válasz · 200

{ "sent": true, "message": "Emlékeztető elküldve: szamla@example.com" }

Hibák: 422 reminder_failed (pl. már kifizetett)

POST/api/v1/invoices/{id}/payment

Fizetettnek jelölés

Pl. a banki befizetés beérkezésekor. DELETE ugyanezen az útvonalon visszaállítja nyitottra.

MezőHolTípusLeírás
paidAtbodydateA fizetés napja (alapból ma).
notebodystringMegjegyzés.

Kérés

curl -X POST https://www.aiszamla.hu/api/v1/invoices/6f1c…/payment \
  -H "Authorization: Bearer aisz_…" \
  -H "Content-Type: application/json" \
  -d '{
    "paidAt": "2026-10-28"
  }'

Válasz · 200

{ "paid": true, "message": "SZLA-2026-00042: fizetettnek jelölve (2026.10.28.)." }

Hibák: 409 not_payable · 422 invalid_date

DELETE/api/v1/invoices/{id}/payment

Fizetés visszavonása

A számla újra nyitott lesz.

Kérés

curl -X DELETE https://www.aiszamla.hu/api/v1/invoices/6f1c…/payment \
  -H "Authorization: Bearer aisz_…"

Válasz · 200

{ "paid": false, "message": "…" }
POST/api/v1/invoices/{id}/storno

Sztornózás

Kiállított számlát nem lehet törölni: sztornó számla készül (ellentétes előjelű tételekkel), és megy a NAV-ba.

Kérés

curl -X POST https://www.aiszamla.hu/api/v1/invoices/6f1c…/storno \
  -H "Authorization: Bearer aisz_…"

Válasz · 201

{ "storno": true, "message": "…", "stornoId": "a91b…" }

Hibák: 409 not_stornoable · 422 storno_failed

POST/api/v1/invoices/{id}/convert

Számla díjbekérőből vagy szállítólevélből

Számla-piszkozat egy kiállított díjbekérő (az fizetett lesz) vagy szállítólevél tételeiből. Díjbekérőből előlegszámla is készülhet: {"type": "advance"}. A piszkozatot az /issue végponttal állítod ki.

MezőHolTípusLeírás
typebodystringCsak díjbekérőnél: "advance" = előlegszámla (alapból normál számla).

Kérés

curl -X POST https://www.aiszamla.hu/api/v1/invoices/9a2e…/convert \
  -H "Authorization: Bearer aisz_…" \
  -H "Content-Type: application/json" \
  -d '{
    "type": "advance"
  }'

Válasz · 201

{ "id": "c41d…", "status": "draft", "message": "…", "issue": "/api/v1/invoices/c41d…/issue" }

Hibák: 404 not_found · 409 not_convertible · 409 convert_failed (pl. már számlázott – details.invoiceId)

POST/api/v1/delivery-notes/invoice

Egy számla több szállítólevélből

Azonos vevő, még nem számlázott szállítóleveleinek tételeiből egy számla-piszkozat (a tételeknél a szállítólevél sorszámával). A szállítólevelek „Számlázva” állapotba kerülnek; ha a piszkozatot törlöd vagy a számlát sztornózod, újra számlázhatók.

MezőHolTípusLeírás
ids *bodystring[]A szállítólevelek azonosítói (1–50).

Kérés

curl -X POST https://www.aiszamla.hu/api/v1/delivery-notes/invoice \
  -H "Authorization: Bearer aisz_…" \
  -H "Content-Type: application/json" \
  -d '{
    "ids": [
      "9a2e…",
      "b77f…"
    ]
  }'

Válasz · 201

{ "id": "c41d…", "status": "draft", "message": "Számla-piszkozat elkészült 2 szállítólevélből – …", "issue": "/api/v1/invoices/c41d…/issue" }

Hibák: 400 invalid_json · 422 validation_failed · 409 convert_failed (eltérő vevő / pénznem, már számlázott)

DELETE/api/v1/invoices/{id}

Piszkozat törlése

Csak piszkozat törölhető.

Kérés

curl -X DELETE https://www.aiszamla.hu/api/v1/invoices/6f1c… \
  -H "Authorization: Bearer aisz_…"

Válasz · 200

{ "deleted": true, "id": "6f1c…" }

Hibák: 409 not_draft

Ismétlődő számlák

Havonta / negyedévente / félévente / évente magától kiállított számlák mintái – ugyanaz az ellenőrzés és működés, mint a webes Ismétlődő számlák oldalon (a kiállítás napján sorszám, NAV-beküldés, és ha kérted, e-mail a vevőnek). Tétel-megjegyzés (note): a megnevezés alatti külön sor a számlaképen; a NAV-nak a megnevezéssel szóközzel összefűzve megy. A megnevezésben és a megjegyzésben a {HÓNAP} (a kiállítás hónapja, pl. „2026. december”), {ELŐZŐ_HÓNAP}, {KÖVETKEZŐ_HÓNAP} és {ÉV} a kiállításkor helyettesítődik.

POST/api/v1/recurring-invoices

Ismétlődő számla létrehozása

Az első számla a nextRun napján készül (ma vagy később), utána a gyakoriság szerint a hónap dayOfMonth. napján (1–28; ha hiányzik, a nextRun napja, legfeljebb 28.). Az externalId véd a dupla felvitel ellen (409). Devizás mintánál az árfolyam a kiállítás napi MNB-árfolyam.

MezőHolTípusLeírás
customer *bodyobjectMint a számlánál: type (DOMESTIC | PRIVATE_PERSON | OTHER), name, taxNumber / communityVatNumber, country, postalCode, city, address, email – több cím vesszővel elválasztva (mind megkapja).
lines[] *bodyarraydescription, note (a megnevezés alatti megjegyzés-sor, nem kötelező), quantity, unit, unitPrice (nettó), vat (27 | 18 | 5 | 0 | AAM | EUFAD37 | …).
nextRun *bodydateAz első kiállítás napja (ÉÉÉÉ-HH-NN).
intervalMonthsbodynumber1 | 3 | 6 | 12 (alapból 1).
dayOfMonthbodynumber1–28: a további kiállítások napja.
currencybodystringHUF (alapból), EUR, USD…
paymentMethodbodystringTRANSFER (alapból) | CARD | CASH | VOUCHER | OTHER.
dueMode, dueDays, dueDaybodystring, numberA fizetési határidő: napok (alapból; dueDays = a kiállítástól számított 0–120 nap), honap / kovhonap (a kiállítás / a következő hónap dueDay. napja, 31 = a hónap utolsó napja).
deliveryDelayDaysbodynumberA teljesítés napja = a kiállítás + ennyi nap (0–60, alapból 0 = a kiállítás napja).
sendEmailbodybooleanKiállítás után e-mail a vevőnek (ha van címe).
electronicbodybooleanE-számla (hitelesített PDF, „E-” előtagú sorszám).
prefixbodystringSzámlaelőtag; üres = a cég alapértelmezettje.
periodbodyobjectA számla időszaka: mode (none | current | next | prev | custom), custom módnál start.
continuousbodybooleanFolyamatos teljesítés (Áfa tv. 58. §; csak HUF, időszakkal).
draftOnlybodybooleantrue: a kiállítás napján csak piszkozat készül (értesítéssel), kézzel kell kiállítani.
name, endDate, bankAccount, contractNumber, contractLabel, externalIdbodyMegnevezés a listában, utolsó kiállítás napja, a cég egyik bankszámlája, szerződésszám és felirata, külső azonosító.

Kérés

curl -X POST https://www.aiszamla.hu/api/v1/recurring-invoices \
  -H "Authorization: Bearer aisz_…" \
  -H "Content-Type: application/json" \
  -d '{
    "externalId": "szlz-297686",
    "name": "Varga Klaudia – weboldal",
    "nextRun": "2026-12-08",
    "intervalMonths": 1,
    "dueDays": 8,
    "deliveryDelayDays": 8,
    "sendEmail": true,
    "electronic": true,
    "customer": {
      "type": "PRIVATE_PERSON",
      "name": "Varga Klaudia",
      "postalCode": "1111",
      "city": "Budapest",
      "address": "Minta utca 1.",
      "email": "a@pelda.hu, b@pelda.hu"
    },
    "lines": [
      {
        "description": "Weboldal üzemeltetés",
        "note": "Számlázási időszak: {HÓNAP}",
        "quantity": 1,
        "unit": "db",
        "unitPrice": 25000,
        "vat": "27"
      }
    ]
  }'

Válasz · 201

{
  "id": "0c2e…", "number": "ISM-0001", "externalId": "szlz-297686", "status": "active",   // active | stopped | archived
  "nextRun": "2026-12-08", "dayOfMonth": 8, "intervalMonths": 1, "deliveryDelayDays": 8, "dueMode": "napok", "dueDays": 8,
  "lines": [{ "description": "Weboldal üzemeltetés", "note": "Számlázási időszak: {HÓNAP}", … }],
  "lastRun": null, "lastInvoiceId": null, "lastError": null, "preview": "/api/v1/recurring-invoices/0c2e…/preview", …
}

Hibák: 409 duplicate (externalId) · 422 validation_failed · 422 invalid_prefix

GET/api/v1/recurring-invoices

Ismétlődő számlák listája

?archived=true: az archiváltak is.

Kérés

curl -X GET https://www.aiszamla.hu/api/v1/recurring-invoices \
  -H "Authorization: Bearer aisz_…"

Válasz · 200

{ "data": [ … ] }
GET/api/v1/recurring-invoices/{id}

Egy ismétlődő számla

Az utolsó kiállítás (lastRun, lastInvoiceId) és az esetleges hiba (lastError) is.

Kérés

curl -X GET https://www.aiszamla.hu/api/v1/recurring-invoices/0c2e… \
  -H "Authorization: Bearer aisz_…"

Válasz · 200

{ "id": "0c2e…", "number": "ISM-0001", … }
PATCH/api/v1/recurring-invoices/{id}

Módosítás

Csak a megadott mezők változnak (a lines – ha megadod – a teljes tétellistát cseréli). Módosítható a vevő, a fizetési mód, az előtag, az e-számla is; active: false leállítja, true újraindítja. A pénznem nem módosítható. Archivált minta nem módosítható.

Kérés

curl -X PATCH https://www.aiszamla.hu/api/v1/recurring-invoices/0c2e… \
  -H "Authorization: Bearer aisz_…" \
  -H "Content-Type: application/json" \
  -d '{
    "deliveryDelayDays": 0,
    "active": false
  }'

Válasz · 200

{ "id": "0c2e…", … }

Hibák: 404 not_found · 409 archived · 422 validation_failed

POST/api/v1/recurring-invoices/{id}/archive

Archiválás / visszaállítás

Archiválva egyben le is áll (nem állít ki több számlát). Törzs {"archived": false}: visszaállítás (leállítva marad – PATCH active: true indítja újra).

Kérés

curl -X POST https://www.aiszamla.hu/api/v1/recurring-invoices/0c2e…/archive \
  -H "Authorization: Bearer aisz_…"

Válasz · 200

{ "id": "0c2e…", "status": "archived", … }
GET/api/v1/recurring-invoices/{id}/preview

A következő számla előnézete

Mentés és sorszám nélkül – ugyanazok az adatok és ugyanaz a számlakép, mint a kiállításkor (árfolyam, teljesítés, határidő, időszak, {HÓNAP}). ?date=ÉÉÉÉ-HH-NN: egy adott kiállítási napra; ?format=pdf: a számlakép PDF-ben.

Kérés

curl -X GET https://www.aiszamla.hu/api/v1/recurring-invoices/0c2e…/preview?date=2026-12-08 \
  -H "Authorization: Bearer aisz_…"

Válasz · 200

{
  "issueDate": "2026-12-08", "deliveryDate": "2026-12-16", "paymentDate": "2026-12-16", "currency": "HUF", "exchangeRate": 1,
  "lines": [{ "description": "Weboldal üzemeltetés", "note": "Számlázási időszak: 2026. december", "net": 25000, "vatAmount": 6750, "gross": 31750, … }],
  "netTotal": 25000, "vatTotal": 6750, "grossTotal": 31750, "pdf": "/api/v1/recurring-invoices/0c2e…/preview?format=pdf&date=2026-12-08"
}

Nyugták

Számítógéppel kiállított nyugta (Áfa tv. 173. §). Azonnal sorszámot kap (<előtag>-NY-<év>-<sorszám>); az adatait a rendszer naponta, ÁFA-kategóriánként összesítve jelenti a NAV-nak (nyugtaadat-szolgáltatás). Az egységár bruttó, ÁFÁ-t tartalmazó ár.

POST/api/v1/receipts

Nyugta kiállítása

Ha a vevőnek van e-mail-címe, a nyugtát PDF-ben el is küldjük ("sendEmail": false esetén nem). Az externalId véd a dupla nyugta ellen (409).

MezőHolTípusLeírás
lines[].description *bodystringMegnevezés.
lines[].quantitybodynumberMennyiség (alapból 1, pozitív).
lines[].unitbodystringMértékegység (alapból db).
lines[].unitPrice *bodynumberBruttó (ÁFÁ-t tartalmazó) egységár.
lines[].vatbodystring27 | 18 | 5 | TAM | ATK; alanyi adómentes kiállítónál AAM.
paymentMethodbodystringCASH (alapértelmezett) | CARD | TRANSFER | VOUCHER | OTHER.
currency, exchangeRatebodystring, numberPénznem (alapból HUF); devizánál az árfolyam kötelező.
prefixbodystringSzámlaelőtag (sorozat); üresen az alapértelmezett.
customer.name, customer.emailbodystringNem kötelező; e-mail-címre a nyugta PDF-je megy.
externalIdbodystringSaját azonosító (pl. webshop-rendelésszám) – kétszeri beküldés ellen.

Kérés

curl -X POST https://www.aiszamla.hu/api/v1/receipts \
  -H "Authorization: Bearer aisz_…" \
  -H "Content-Type: application/json" \
  -d '{
    "paymentMethod": "CARD",
    "lines": [
      {
        "description": "Kávé",
        "quantity": 2,
        "unitPrice": 690,
        "vat": "27"
      }
    ],
    "customer": {
      "email": "vevo@example.com"
    }
  }'

Válasz · 201

{ "id": "b3f1…", "number": "SZLA-NY-2026-00042", "type": "receipt", "status": "issued", "grossTotal": 1380, "reported": false, "pdf": "/api/v1/receipts/b3f1…/pdf" }

Hibák: 400 invalid_json · 422 validation_failed · 409 duplicate

GET/api/v1/receipts

Nyugták listája

Szűrők: from, to (ÉÉÉÉ-HH-NN), limit (max. 500), offset.

Kérés

curl -X GET https://www.aiszamla.hu/api/v1/receipts?from=2026-10-01&limit=50 \
  -H "Authorization: Bearer aisz_…"

Válasz · 200

{ "data": [ … ], "limit": 50, "offset": 0 }
GET/api/v1/receipts/{id}

Egy nyugta adatai

Tételekkel, a NAV-jelentés állapotával (reported).

Kérés

curl -X GET https://www.aiszamla.hu/api/v1/receipts/b3f1… \
  -H "Authorization: Bearer aisz_…"

Válasz · 200

{ "id": "b3f1…", "number": "SZLA-NY-2026-00042", "lines": [ … ], "reported": true, … }
GET/api/v1/receipts/{id}/pdf

Nyugta PDF-ben

80 mm széles nyugtakép.

Kérés

curl -X GET https://www.aiszamla.hu/api/v1/receipts/b3f1…/pdf \
  -H "Authorization: Bearer aisz_…"

Válasz · 200

application/pdf
POST/api/v1/receipts/{id}/void

Nyugta érvénytelenítése

Érvénytelenítő bizonylat (Áfa tv. 173/B. §) az eredeti nyugtára hivatkozva, ugyanabban a sorozatban; a NAV-jelentésben módosító bizonylatként szerepel.

MezőHolTípusLeírás
reasonbodystringAz érvénytelenítés oka (nem kötelező, a bizonylaton szerepel).

Kérés

curl -X POST https://www.aiszamla.hu/api/v1/receipts/b3f1…/void \
  -H "Authorization: Bearer aisz_…" \
  -H "Content-Type: application/json" \
  -d '{
    "reason": "téves ütés"
  }'

Válasz · 201

{ "voidId": "c9a2…", "number": "SZLA-NY-2026-00043", "message": "…" }

Hibák: 404 not_found · 409 already_voided

Más programmal kiállított kimenő számlák (NAV-ból)

A cég más számlázóban (pl. Számlázz.hu) kiállított számlái, amelyeket az aiszamla a NAV-ból húz be (a Kimenő számlák lista „NAV-ból” sorai). Ezek nem módosíthatók, de a kiegyenlítésük rögzíthető – ugyanúgy, mint a számla oldalán a „Kiegyenlítési módok” sorai: a sorok összege adja a fizetettséget, és ettől frissül a kimenő lista állapota és összesítője. Csak nyilvántartás: pénzmozgást nem indít.

GET/api/v1/outbound-invoices

Lista

Szűrők: from, to (kelte, ÉÉÉÉ-HH-NN), paid (true | false), overdue (true = lejárt és nyitott), q (sorszám, vevő neve vagy adószáma). Lapozás: limit (max. 500), offset; a total a szűrés szerinti összes darab.

Kérés

curl -X GET https://www.aiszamla.hu/api/v1/outbound-invoices?overdue=true&limit=200 \
  -H "Authorization: Bearer aisz_…"

Válasz · 200

{
  "data": [{
    "id": "9a1e…", "number": "DYNEX-2026-58", "operation": "CREATE", "customer": { "name": "Minta Kft.", "taxNumber": "12345678" },
    "issueDate": "2026-09-08", "paymentDate": "2026-09-16", "gross": 107937, "currency": "HUF", "paymentMethod": "CARD",
    "paidAt": null, "paidAmount": 0, "paidMethod": null, "overdue": true, "hasImage": false, …
  }],
  "total": 581, "limit": 200, "offset": 0
}
GET/api/v1/outbound-invoices/{id}

Egy számla

A rögzített fizetési sorokkal (payments).

Kérés

curl -X GET https://www.aiszamla.hu/api/v1/outbound-invoices/9a1e… \
  -H "Authorization: Bearer aisz_…"

Válasz · 200

{ "id": "9a1e…", "number": "DYNEX-2026-58", …, "payments": [{ "id": 12, "paidOn": "2026-09-10", "method": "CARD", "amount": 107937 }] }
POST/api/v1/outbound-invoices/{id}/payment

Kiegyenlítés rögzítése

Új fizetési sor. Ha a sorok összege eléri a végösszeget, a számla kiegyenlített. Sztornó / módosító számlára és a nyitott összegnél nagyobb összegre nem rögzít.

MezőHolTípusLeírás
paidAtbodydateA fizetés napja (alapból ma; jövőbeli nem lehet).
amountbodynumberAz összeg a számla pénznemében (alapból a teljes nyitott összeg).
methodbodystringTRANSFER (alapból) | CARD | CASH | OTHER.
accountbodystringÁtutalásnál a bankszámlaszám (elhagyható).
notebodystringMegjegyzés; OTHER módnál kötelező (pl. PayPal).
clientRefbodystringEgyedi azonosító (pl. a Stripe-fizetés vagy a banki tétel azonosítója) – ugyanazzal újra küldve 409 duplicate, nem rögzít kétszer.

Kérés

curl -X POST https://www.aiszamla.hu/api/v1/outbound-invoices/9a1e…/payment \
  -H "Authorization: Bearer aisz_…" \
  -H "Content-Type: application/json" \
  -d '{
    "paidAt": "2026-09-10",
    "method": "CARD",
    "clientRef": "stripe:pi_3Q…"
  }'

Válasz · 201

{ "message": "107 937 Ft rögzítve (Bankkártya, 2026. 09. 10.). A számla kiegyenlítve.", "paidAt": "2026-09-10", "paidAmount": 107937, "payments": [ … ], … }

Hibák: 409 already_paid · 409 duplicate · 409 not_payable · 422 overpayment

POST/api/v1/outbound-invoices/{id}/document

Számlakép csatolása

PDF vagy kép (JPG, PNG, WEBP, HEIC; legfeljebb 10 MB) csatolása – ugyanoda, ahová a számla oldalán a feltöltés megy. Törzs: multipart (file mező) vagy JSON (filename, contentBase64, mediaType). A típust a fájl tartalma dönti el. Ugyanaz a fájl ugyanahhoz a számlához nem kerül fel kétszer (alreadyUploaded: true).

Kérés

curl -X POST https://www.aiszamla.hu/api/v1/outbound-invoices/9a1e…/document \
  -H "Authorization: Bearer aisz_…" \
  -H "Content-Type: application/json" \
  -d '{
    "filename": "DYNEX-2026-58.pdf",
    "contentBase64": "JVBERi0xLjQK…"
  }'

Válasz · 201

{ "id": 812, "invoiceId": "9a1e…", "number": "DYNEX-2026-58", "filename": "DYNEX-2026-58.pdf", "mediaType": "application/pdf", "size": 48211, "sha256": "…", "alreadyUploaded": false }

Hibák: 404 not_found · 413 too_large · 422 invalid_type

DELETE/api/v1/outbound-invoices/{id}/payment

Kiegyenlítés visszavonása

A számla összes fizetési sora törlődik, a számla újra nyitott.

Kérés

curl -X DELETE https://www.aiszamla.hu/api/v1/outbound-invoices/9a1e…/payment \
  -H "Authorization: Bearer aisz_…"

Válasz · 200

{ "id": "9a1e…", "paidAt": null, "paidAmount": 0, "payments": [], … }

Bejövő számlák

A cégnek kiállított számlák: a NAV-ból, a cég saját címére küldött levelekből és a lefotózott (AI-val rögzített) számlákból.

GET/api/v1/incoming-invoices

Bejövő számlák listája

Forintosított összegekkel; a source mutatja, honnan jött (nav | ai).

MezőHolTípusLeírás
from, toquerydateKelte szerint.
paidquerybooleantrue | false
limit, offsetquerynumberLapozás.

Kérés

curl -X GET https://www.aiszamla.hu/api/v1/incoming-invoices?paid=false \
  -H "Authorization: Bearer aisz_…"

Válasz · 200

{ "data": [ { "id": "…", "number": "E-2026-1042", "supplier": { "name": "Szállító Kft.", "taxNumber": "12345678" }, "issueDate": "2026-10-20",
  "paymentDate": "2026-11-03", "currency": "HUF", "net": 10000, "vat": 2700, "gross": 12700, "netHuf": 10000, "vatHuf": 2700, "source": "nav", "paidAt": null, "hasImage": true } ],
  "limit": 100, "offset": 0 }
POST/api/v1/incoming-invoices/{id}/payment

Bejövő számla kifizetése

DELETE ugyanezen az útvonalon visszaállítja nyitottra.

MezőHolTípusLeírás
paidAtbodydateAlapból ma.

Kérés

curl -X POST https://www.aiszamla.hu/api/v1/incoming-invoices/…/payment \
  -H "Authorization: Bearer aisz_…" \
  -H "Content-Type: application/json" \
  -d '{
    "paidAt": "2026-10-28"
  }'

Válasz · 200

{ "id": "…", "number": "E-2026-1042", "paidAt": "2026-10-28" }

Hibák: 404 not_found · 422 invalid_date

Törzsadatok

GET/api/v1/partners

Vevők

A kiállított számlák vevői (utolsó ismert adatokkal), forgalommal és lejárt tartozással.

MezőHolTípusLeírás
qquerystringNév vagy adószám.

Kérés

curl -X GET https://www.aiszamla.hu/api/v1/partners?q=Napf \
  -H "Authorization: Bearer aisz_…"

Válasz · 200

{ "data": [ { "name": "Napfény Pékség Bt.", "taxNumber": "13421739-2-41", "email": "…", "invoices": 6, "totalHuf": 381000, "overdueHuf": 228600 } ] }
GET/api/v1/products

Termékek

A terméktörzs.

Kérés

curl -X GET https://www.aiszamla.hu/api/v1/products \
  -H "Authorization: Bearer aisz_…"

Válasz · 200

{ "data": [ { "id": "…", "name": "Weboldal karbantartás", "sku": null, "unit": "hó", "unitPrice": 89000, "vat": "27", "currency": "HUF" } ] }
POST/api/v1/products

Termék létrehozása / frissítése

Név alapján: ha már van ilyen nevű termék, frissíti (200), különben létrehozza (201).

MezőHolTípusLeírás
name *bodystringMegnevezés.
unitPrice *bodynumberNettó egységár.
unitbodystringEgység (alapból db).
vatbodystringÁFA-kód (alapból 27).
currencybodystringAlapból HUF.
skubodystringCikkszám.

Kérés

curl -X POST https://www.aiszamla.hu/api/v1/products \
  -H "Authorization: Bearer aisz_…" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Weboldal karbantartás",
    "unitPrice": 89000,
    "unit": "hó",
    "vat": "27"
  }'

Válasz · 201 / 200

{ "id": "…", "name": "Weboldal karbantartás", "unit": "hó", "unitPrice": 89000, "vat": "27", "currency": "HUF", "sku": null }

Hibák: 400 invalid_json · 422 validation_failed

DELETE/api/v1/products/{id}

Termék törlése

Kérés

curl -X DELETE https://www.aiszamla.hu/api/v1/products/… \
  -H "Authorization: Bearer aisz_…"

Válasz · 200

{ "deleted": true, "id": "…" }

Hibák: 404 not_found

GET/api/v1/taxpayers/{adószám}

Adószám lekérdezése a NAV-ból

Hivatalos név, cím, és hogy élő adózó-e – vevő felvételéhez.

Kérés

curl -X GET https://www.aiszamla.hu/api/v1/taxpayers/13421739 \
  -H "Authorization: Bearer aisz_…"

Válasz · 200

{ "valid": true, "name": "KBOSS.HU KFT.", "taxNumber": "13421739-2-41", "address": { "postalCode": "1031", "city": "BUDAPEST", "addressLine": "ZÁHONY UTCA 7." } }

Hibák: 404 not_found (nincs ilyen / nem élő adózó) · 422 invalid_tax_number · 503 nav_unavailable

Hibakódok

  • 400 invalid_jsonA kérés törzse nem érvényes JSON.
  • 401 unauthorizedHiányzó, hibás vagy visszavont API-kulcs.
  • 403 api_not_enabledA cég csomagjában nincs API-hozzáférés (külön kiegészítő).
  • 404 not_foundNincs ilyen erőforrás a cégnél.
  • 409 duplicate / not_draft / …Ütközés: már létezik, már kiállított, már sztornózott.
  • 422 validation_failed / …Hibás adat – a message pontosan megmondja, mi a gond (pl. hiányzó cím, rossz adószám).
  • 503 nav_unavailableA NAV most nem érhető el – próbáld újra később.

Kérdésed van? Írj a fiókodban a Segítség chatbe, vagy nézd meg a Tudástárat.