Minta Az alábbi példa a sandboxban futott. A Kód fül a kassza hívást, az Elküldött XML fül a Számla Agentnek küldött xmlnyugtacreate dokumentumot, a Válasz fül a szimulált Számlázz.hu választ mutatja. A kód fölé húzva az egeret a típusokat is látod.
Pénztári nyugta#
Két tétel bruttó egységárral, két különböző áfakulccsal. Az előtag és a fizetési mód a kliens alapbeállításaiból jön, a hívásazonosító és a rendelésszám ugyanaz.
Nyugta kiállítása
Pénztári nyugta hívásazonosítóval, két áfakulccsal, alapbeállításokkal.
Futtatás a sandboxbanKód Elküldött XML Válasz Konzol
nyugta.ts import { createKassza } from 'kassza'
const kassza = createKassza ({
defaults : { receipt : { prefix : 'NYGT' , paymentMethod : 'készpénz' } } ,
})
const nyugta = await kassza . receipts . create ({
callId : 'PENZTAR-2026-0001' ,
orderNumber : 'PENZTAR-2026-0001' ,
items : [
{ name : 'Kávé' , quantity : 2 , grossUnitPrice : 890 , vat : 27 } ,
{ name : 'Kifli' , grossUnitPrice : 250 , vat : 5 } ,
] ,
})
console . log ( nyugta . number , nyugta . type , nyugta . issueDate )
console . log ( nyugta . totals )
console . log (
nyugta . items . map (
( tetel ) => ` ${ tetel . name } : ${ tetel . netAmount } + ${ tetel . vatAmount } = ${ tetel . grossAmount } ` ,
) ,
) Nyugta létrehozás · action-szamla_agent_nyugta_create <? xml version = "1.0" encoding = "UTF-8" ?>
< xmlnyugtacreate xmlns = "http://www.szamlazz.hu/xmlnyugtacreate" xmlns : xsi = "http://www.w3.org/2001/XMLSchema-instance" xsi : schemaLocation = "http://www.szamlazz.hu/xmlnyugtacreate https://www.szamlazz.hu/szamla/docs/xsds/nyugtacreate/xmlnyugtacreate.xsd" >
< beallitasok >
< szamlaagentkulcs >••••••••</ szamlaagentkulcs >
< pdfLetoltes >true</ pdfLetoltes >
</ beallitasok >
< fejlec >
< hivasAzonosito >PENZTAR-2026-0001</ hivasAzonosito >
< elotag >NYGT</ elotag >
< fizmod >készpénz</ fizmod >
< penznem >HUF</ penznem >
< rendelesSzam >PENZTAR-2026-0001</ rendelesSzam >
</ fejlec >
< tetelek >
< tetel >
< megnevezes >Kávé</ megnevezes >
< mennyiseg >2</ mennyiseg >
< mennyisegiEgyseg >db</ mennyisegiEgyseg >
< nettoEgysegar >700.785</ nettoEgysegar >
< afakulcs >27</ afakulcs >
< netto >1401.57</ netto >
< afa >378.43</ afa >
< brutto >1780</ brutto >
</ tetel >
< tetel >
< megnevezes >Kifli</ megnevezes >
< mennyiseg >1</ mennyiseg >
< mennyisegiEgyseg >db</ mennyisegiEgyseg >
< nettoEgysegar >238.1</ nettoEgysegar >
< afakulcs >5</ afakulcs >
< netto >238.10</ netto >
< afa >11.90</ afa >
< brutto >250</ brutto >
</ tetel >
</ tetelek >
</ xmlnyugtacreate >
Nyugta létrehozás · válasz, HTTP 200 content-type: application/xml; charset=UTF-8
set-cookie: JSESSIONID=51AD9DB082F41D932FFFB360; Path=/szamla; Secure; HttpOnly
<? xml version = "1.0" encoding = "UTF-8" ?>
< xmlnyugtavalasz xmlns = "http://www.szamlazz.hu/xmlnyugtavalasz" >
< sikeres >true</ sikeres >
< hibakod ></ hibakod >
< hibauzenet ></ hibauzenet >
< nyugtaPdf >JVBERi0xLjQKJeLjz9MKMSAwIG9iago8PCAvVHlwZSAvQ2F0YWxvZyAvUGFnZXMgMiAwIFIgPj4KZW5k… (base64 PDF, rövidítve)</ nyugtaPdf >
< nyugta >
< alap >
< id >1001</ id >
< hivasAzonosito >PENZTAR-2026-0001</ hivasAzonosito >
< nyugtaszam >NYGT-2026-1</ nyugtaszam >
< tipus >NY</ tipus >
< stornozott >false</ stornozott >
< kelt >2026-09-19</ kelt >
< fizmod >készpénz</ fizmod >
< penznem >HUF</ penznem >
< teszt >true</ teszt >
< rendelesSzam >PENZTAR-2026-0001</ rendelesSzam >
</ alap >
< tetelek >
< tetel >
< megnevezes >Kávé</ megnevezes >
< mennyiseg >2</ mennyiseg >
< mennyisegiEgyseg >db</ mennyisegiEgyseg >
< nettoEgysegar >700.785</ nettoEgysegar >
< netto >1401.57</ netto >
< afakulcs >27</ afakulcs >
< afa >378.43</ afa >
< brutto >1780</ brutto >
</ tetel >
< tetel >
< megnevezes >Kifli</ megnevezes >
< mennyiseg >1</ mennyiseg >
< mennyisegiEgyseg >db</ mennyisegiEgyseg >
< nettoEgysegar >238.1</ nettoEgysegar >
< netto >238.1</ netto >
< afakulcs >5</ afakulcs >
< afa >11.9</ afa >
< brutto >250</ brutto >
</ tetel >
</ tetelek >
< osszegek >
< afakulcsossz >
< afakulcs >27</ afakulcs >
< netto >1401.57</ netto >
< afa >378.43</ afa >
< brutto >1780</ brutto >
</ afakulcsossz >
< afakulcsossz >
< afakulcs >5</ afakulcs >
< netto >238.1</ netto >
< afa >11.9</ afa >
< brutto >250</ brutto >
</ afakulcsossz >
< totalossz >
< netto >1639.67</ netto >
< afa >390.33</ afa >
< brutto >2030</ brutto >
</ totalossz >
</ osszegek >
</ nyugta >
</ xmlnyugtavalasz >
Konzol NYGT-2026-1 receipt 2026-09-19
{
netAmount: 1639.67,
vatAmount: 390.33,
grossAmount: 2030,
byVat: [
{
vat: 27,
vatPercentage: 27,
netAmount: 1401.57,
vatAmount: 378.43,
grossAmount: 1780
},
{
vat: 5,
vatPercentage: 5,
netAmount: 238.1,
vatAmount: 11.9,
grossAmount: 250
}
]
}
[
'Kávé: 1401.57 + 378.43 = 1780',
'Kifli: 238.1 + 11.9 = 250'
]
Az elküldött XML-ben látszik a forintos nyugta kerekítése. A 27%-os Kávé tétel bruttója egész 1780, a nettója 1401.57, az áfája 378.43, a kettő összege pontosan a bruttó. A nettó egységár 700.785, mert 2 × 700.785 adja ki pontosan a nettót. Az 5%-os Kifli tételnél a kassza a nettót és az áfát két tizedesjeggyel küldi (238.10, 11.90). A pdfLetoltes értéke true, mert a downloadPdf alapból be van kapcsolva.
Az XML felépítése#
A kassza az elemeket az XSD sorrendjében írja ki, az üres opcionális elemeket kihagyja:
Blokk Tartalom beallitasokAz Agent kulcs és a pdfLetoltes. fejlechivasAzonosito, elotag, fizmod, penznem, devizaarf, devizabank, megjegyzes, pdfSablon, fokonyvVevo, rendelesSzam.tetelekTételenként megnevezes, azonosito, mennyiseg, mennyisegiEgyseg, nettoEgysegar, afakulcs, netto, afa, brutto, fokonyv, megjegyzes, torloKod. kifizetesekCsak akkor, ha megadtad a payments mezőt.
A mezők jelentését a Kérés oldal írja le.
Vegyes fizetés#
Ha a fenti nyugtát részben SZÉP kártyával, részben bankkártyával fizetik, a payments mezővel adod meg a megosztást:
await kassza . receipts .create ({
callId : 'PENZTAR-2026-0002' ,
orderNumber : 'PENZTAR-2026-0002' ,
items : [
{ name : 'Kávé' , quantity : 2 , grossUnitPrice : 890 , vat : 27 } ,
{ name : 'Kifli' , grossUnitPrice : 250 , vat : 5 } ,
] ,
payments : [
{ method : 'utalvány' , amount : 1_000 , description : 'OTP SZÉP kártya' } ,
{ method : 'bankkártya' , amount : 1_030 } ,
] ,
})
Az XML végére a tételek után ez a blokk kerül:
< kifizetesek >
< kifizetes >
< fizetoeszkoz >utalvány</ fizetoeszkoz >
< osszeg >1000</ osszeg >
< leiras >OTP SZÉP kártya</ leiras >
</ kifizetes >
< kifizetes >
< fizetoeszkoz >bankkártya</ fizetoeszkoz >
< osszeg >1030</ osszeg >
</ kifizetes >
</ kifizetesek >
A két összeg együtt pontosan a nyugta 2030 Ft-os bruttó végösszege. Ha eltérne, a kassza el sem küldené a kérést.
XSD séma#
A kassza az XML-t a Számlázz.hu xmlnyugtacreate.xsd sémája szerint építi fel. A séma itt érhető el:
https://www.szamlazz.hu/szamla/docs/xsds/nyugtacreate/xmlnyugtacreate.xsd
A kassza tesztjei a generált XML-t a letölthető XSD-vel is összevetik, ezért a sémával neked nem kell foglalkoznod. Egy eltérésről tudunk: a hivatalos dokumentáció a tételeknél leírja a torloKod elemet, a letölthető XSD-ben viszont még nincs benne. Ha adattörlő kóddal 57-es hibát kapsz, hagyd el. Ha a hivatalos dokumentációban olyan mezőt találsz, amely a kasszában még nincs meg, nyiss egy issue-t .
További példák#