Ugrás a tartalomra
kassza

Rendelésszám és hívásazonosító

Az orderNumber (XML-ben a fejléc rendelesSzam eleme) a saját rendszered rendelésazonosítója. Opcionális, ha kihagyod, a nyugtán nem jelenik meg rendelésszám. Érdemes mégis megadni, mert ezzel kérdezheted le később a nyugtát.

const nyugta = await kassza.receipts.create({
  callId: 'PENZTAR-2026-0212',
  orderNumber: 'PENZTAR-2026-0212',
  items: [{ name: 'Napijegy', grossUnitPrice: 4_500, vat: 27 }],
})

const ugyanaz = await kassza.receipts.get({ orderNumber: 'PENZTAR-2026-0212' })

A válaszban a rendelésszám változatlanul visszajön, a kasszában a nyugta orderNumber mezőjében.

Nyugta lekérdezése

Lekérdezés nyugtaszám és rendelésszám alapján, find nem létező nyugtára.

Futtatás a sandboxban
nyugta-lekerdezes.ts
import {  } from 'kassza'

const  = ({
  : { : { : 'NYGT', : 'készpénz' } },
})

const  = await ..({
  : 'PENZTAR-2026-0212',
  : 'PENZTAR-2026-0212',
  : [{ : 'Napijegy', : 4_500, : 27 }],
})

const  = await ..(.)
const  = await ..({
  : 'PENZTAR-2026-0212',
  : false,
})

.(. === .)
.(., .)

const  = await ..({ : 'NYGT-2026-999' })
.('Nem létező nyugta:', )

Rendelésszám ismétlődés tiltása#

A Számlázz.hu fiókban beállíthatod, hogy egy rendelésszám csak egy nyugtán szerepelhessen. A kapcsoló helye: Beállítások → Fiók beállításai → Számlázás beállítások, a Nyugtaszerkesztő beállítások szekcióban, „Rendelésszám ismétlődés tiltása” néven.

  • Bekapcsolva: korábban már használt rendelésszámmal nem készíthető új nyugta, a kérés hibával elbukik.
  • Kikapcsolva: ugyanazzal a rendelésszámmal több nyugta is kiállítható, például ha egy rendelést több részletben nyugtázol.

A nyugtákra ez a kapcsoló vonatkozik, a számlák azonos nevű beállításától függetlenül, amely a Számlaszerkesztő beállítások szekcióban van. Az ellenőrzés bizonylattípusonként történik, így egy nyugtán és egy számlán szerepelhet ugyanaz a rendelésszám. A számlák szabályait a Rendelésszám és duplikáció oldal írja le.

Hívásazonosító és idempotencia#

A dupla nyugta ellen a fiókbeállítástól függetlenül a callId (XML-ben hivasAzonosito) véd. Ha megadod, egyedinek kell lennie: ugyanazzal a callId-val ismételt kérés nem hoz létre második nyugtát, hanem 338-as, duplicate kategóriájú hibát ad.

A kassza erre építve csak callId mellett próbálja újra a nyugtakészítést, és csak network, timeout vagy maintenance hibánál. Hívásazonosító nélkül a kérés egyszer megy ki, és egy időtúllépés után nem tudhatod, elkészült-e a nyugta.

A Számla Agent hívásazonosító alapján nem kérdez le, rendelésszám alapján igen. Ezért a bevált minta: a callId és az orderNumber legyen ugyanaz a saját rendelésazonosítódból képzett érték, és duplicate hibánál rendelésszám alapján kérd le a már elkészült nyugtát.

import { type CreateReceiptInput, isSzamlazzError, type Receipt } from 'kassza'

async function nyugtaz(rendelesId: string, items: CreateReceiptInput['items']): Promise<Receipt> {
  const azonosito = `PENZTAR-${rendelesId}`
  try {
    return await kassza.receipts.create({ callId: azonosito, orderNumber: azonosito, items })
  } catch (error) {
    if (isSzamlazzError(error) && error.isDuplicate) {
      const meglevo = await kassza.receipts.find({ orderNumber: azonosito })
      if (meglevo) return meglevo
    }
    throw error
  }
}

A teljes leírást az újrapróbálás részleteivel a Kérés oldal hívásazonosítóról szóló része tartalmazza.

Oldal szerkesztéseUtoljára frissítve: