Hogyan készüljön automatikusan számla minden Stripe-terhelés után?
A Stripe beszedi az előfizetést, a számlának mégis a magyar szabályok szerint kell elkészülnie. Ez az írás a kettő összekötéséről szól — webhookok, deviza, sztornó, és amibe könnyű belefutni.
- Írta
- Karner Kristóf — önálló fejlesztő, Budapest
- Frissítve
- 2026. július 22.
A Stripe magyar vállalkozásnál is jól használható fizetési szolgáltató, egy dolgot viszont nem ad: magyar számlát. Amit a vásárló a Stripe-tól kap, az bizonylat a fizetésről — nem a magyar szabályok szerinti számla. Előfizetésnél ez havonta ismétlődő kézi munkát jelentene: minden megújulásnál valakinek meg kellene írnia a számlát.
Az összekötés automatizálható. A Stripe minden sikeres terhelésről szól a rendszerednek, az pedig a Számlázz.hu-n kiállítja a számlát és elküldi a vevőnek — másodpercekkel a fizetés után, kézi munka nélkül. Ebben az írásban azt írom le, hogyan épül ez fel, és hol vannak a buktatók. Ilyen rendszert építettem és üzemeltetek — a történetét külön esettanulmány mondja el, ez az írás a hogyanról szól.
- 01 Vásárló bankkártyás fizetés
- 02 Stripe terhelés, megújítás
- 03 A rendszered ellenőriz, feljegyez
- 04 Számlázz.hu számla készül
- 05 Vevő
webhook-esemény
Ha Stripe-pal szedsz be pénzt — vagy most készülsz rá —, és a számlázás még kézzel megy, írj egy emailt, és írd le, hogyan működik ma. Leírom, mit lehetne belőle automatizálni, és nagyjából mekkora munka.
kristof@kristofkarner.comInnentől a megvalósítás jön: melyik Stripe-esemény mit jelent, hogyan lesz belőle Számlázz.hu-számla, mi a helyzet a devizával, és mi történik a kétszer érkező eseménnyel. Fejlesztőnek szól, de laikusként is követhető — a döntéshez fentebb minden megvan.
Honnan tudja a rendszer, hogy sikeres volt a fizetés?
A Stripe webhook-eseményekkel jelzi az állapotváltozásokat: a fizetésről, a megújulásról, a sikertelen terhelésről a te rendszered egy webcímére küld értesítést. Ez a helyes irány — a rendszered nem kérdezget, hanem a Stripe szól, amikor történt valami.
Előfizetésnél az eseményválasztás nem mindegy. Az első vásárlás végét a fizetős oldal lezárása jelzi, a megújulásokról viszont csak a számlázási események szólnak. A vásárló ilyenkor nem jár az oldalon, a terhelés a háttérben történik. A számlakiállítást ezért a sikeres terhelést jelző eseményhez érdemes kötni, nem a fizetős oldal lezárásához: az minden megújulásnál megérkezik, az első vásárlásnál is.
A beérkező eseményt ellenőrizni kell, mielőtt a rendszer bármit kezd vele: a Stripe minden webhookot aláír, és az aláírás igazolja, hogy az esemény tényleg tőle jön. Enélkül bárki, aki ismeri a webcímet, hamis „sikeres fizetés” eseményt küldhetne — ami itt hamis számlát jelentene.
Hogyan lesz az eseményből Számlázz.hu-számla?
A Számlázz.hu-nak van erre szolgáló felülete: a Számla Agent, ami XML-kérésből állít ki számlát, és vissza is adja a számlaszámot. A rendszered a Stripe-eseményből kigyűjti a vevő és a tétel adatait, és összeállítja belőlük a kérést. A Számlázz.hu elkészíti a számlát, és kérésre emailben el is küldi a vevőnek.
A tételszöveg nem fejlesztői döntés. A magyar szabályok pontosan előírják, mi állhat egy számlán. A tételek szövegét és adótartalmát ezért a könyvelővel érdemes rögzíteni, még az első éles számla előtt — a kód utána ahhoz tartja magát. Számlázási mezőhöz én sem nyúlok egyeztetés nélkül: egy elrontott számlatételt utólag nehéz helyrehozni.
Mi legyen a devizával?
A legegyszerűbb eset az, ha nincs deviza: a Stripe tud forintban terhelni, és forintos terhelésnél a számla is forintos — árfolyamkérdés fel sem merül. Magyar vevőkörnél érdemes ezt az utat választani, mert a rendszer minden további bonyolultsága elmarad.
Ha a terhelés devizában megy — mert a vevőkör nemzetközi —, a magyar számlának akkor is kezelnie kell a forintot: a devizás számlához árfolyam tartozik. A Számla Agent kérésében megadható a devizanem és az árfolyam is, és van beállítás arra, hogy az árfolyamot a Számlázz.hu maga vegye az MNB-től. Hogy a te esetedben melyik árfolyam és melyik nap a helyes, az már nem technikai kérdés — ezt a könyvelővel kell rögzíteni, a rendszer pedig azt követi.
Mi van, ha kétszer érkezik ugyanaz az esemény?
A Stripe újraküldi az eseményt, ha nem kap időben választ. Ez dokumentált, helyes viselkedés, és azt jelenti, hogy a rendszerednek minden eseményt kétszeri megérkezésre felkészülve kell feldolgoznia. A számlázásnál ez nem apróság: a számla hivatalos irat. Egy kétszer elküldött belépő kellemetlenség, egy kétszer kiállított számla viszont sztornót, magyarázatot és könyvelői munkát jelent.
A védekezés egyszerű, csak nem szabad kihagyni. Minden Stripe-eseménynek egyedi azonosítója van: a rendszer először feljegyzi, hogy az eseményt feldolgozta, és csak utána állít ki számlát. Ha ugyanaz az azonosító még egyszer megérkezik, már nem csinál semmit. Ugyanez a minta védi a hozzáférés-küldést is — arról az esettanulmányban írtam.
Mi történik visszatérítéskor?
A visszatérítés a Stripe-ban egy gomb — a kiállított magyar számlát viszont nem vonja vissza magától semmi. A pénz visszamegy, a számla marad, és a kettő közti eltérés a könyvelésben csendben ül, amíg elő nem kerül. A Számla Agentben van sztornó-művelet: a rendszer a visszatérítés eseményére ezt is meghívhatja, vagy legalább értesítést küldhet, hogy a sztornót kézzel el kell végezni. A lényeg itt is ugyanaz, mint a kiállításnál: ami a fizetési oldalon történik, annak a számlázási oldalon is meg kell történnie.
Hogyan teszteld élesítés előtt?
A Stripe-nak teljes értékű tesztkörnyezete van: tesztkulcsokkal, tesztkártyákkal végigjátszható a vásárlás, a megújulás, a sikertelen fizetés és a visszatérítés is, valódi pénz nélkül. A számlázási oldalt ugyanígy érdemes éles fiók nélkül próbálni, és az első éles vásárlást megcsinálni magadnak: valódi fizetés, valódi számla, végig ellenőrizve. A rossz eseteket is végigpróbálom, nem csak a jót — a sikertelen fizetést, a kétszer érkező eseményt, a visszatérítést.
Kérdések a témáról
Kötelező-e számlát adni minden Stripe-fizetésről?
Hogy mikor, kinek és milyen tartalommal kell számlát adni, az adójogi kérdés — abban a könyvelő az illetékes, nem ez a cikk. A technikai oldal viszont egyértelmű: amit a Stripe kiállít, az nem magyar számla, tehát ha számla kell, azt külön rendszernek kell elkészítenie. Ez a cikk azt írja le, hogyan megy ez automatikusan.
Mi van, ha a Számlázz.hu épp nem elérhető?
A fizetés attól még sikeres, csak a számla nem készül el abban a pillanatban. Ezért érdemes a számlakiállítást úgy megírni, hogy hiba esetén a rendszer feljegyezze az elmaradt számlát, értesítést küldjön, és később újrapróbálja — vagy kézzel lehessen pótolni. A lényeg, hogy az elmaradás látsszon, ne csendben tűnjön el.
Alanyi adómentes vállalkozásnál is működik?
Technikailag igen: a Számlázz.hu kezeli a különböző adózási formákat, a kiállított számla azt a beállítást követi, amit a fiókban és a kérésben megadsz. Hogy a te vállalkozásodnak melyik jelölés a helyes, azt a könyvelő mondja meg — a rendszer csak követi, amiben megállapodtatok.
Kell hozzá külön szerver?
Nem feltétlenül. A webhook-fogadó és a számlázó kód elfut egy átlagos tárhelyen is, a meglévő honlap mellett. Ami kell: egy publikus webcím, amit a Stripe elér, és egy hely, ahol a rendszer az állapotot — kiállított számlák, feldolgozott események — megbízhatóan tárolja.
A cikkben leírt döntések futtatható változata nyílt forráskódban is megvan: stripe-szamlazz-hu — aláírás-ellenőrzés, esemény-lefoglalás, és egy teszt, ami hálózat nélkül fut.
Ha a fizetés mellett a hozzáférést is rendszer kezeli — zárt csoport, tartalom, tagság —, annak a Telegram-oldaláról külön írás szól. Az automatizálás üzleti oldaláról pedig a rendszerek-oldalon írtam.