Tudásbázis / Knowledge base

Stripe fizetések → számla automatikusan Stripe payments → automatic invoices

Vevőid a Stripe-on fizetnek, a BillingHUNter a magyar jogszabályoknak és NAV-követelményeknek megfelelő számlát készít belőlük. Ez a cikk a beállítást, az ÁFA-szabályokat és a hibakezelést járja végig. Your customers pay via Stripe, and BillingHUNter turns each payment into a compliant invoice that meets Hungarian law and NAV requirements. This guide covers setup, VAT rules and error handling.

Vissza a tudásbázisra Back to knowledge base

Ha törölsz egy konfigurációt, a Stripe-oldali webhook végpont megmarad — a titkos kulcsot a beállításkor egyszer használtuk, így azt a Stripe felületén tudod törölni. A Stripe a folyamatos hibák után automatikusan letiltja a végpontot.Deleting a configuration leaves the webhook endpoint in your Stripe account — the secret key was used once at setup, so remove the endpoint on the Stripe dashboard. Stripe auto-disables endpoints after sustained failures.

Hogyan működik? How does it work?

A Stripe a fizetési eseményeket egy úgynevezett webhookon küldi el a BillingHUNternek. Mi ellenőrizzük, hogy az üzenet valóban a Stripe-tól érkezett (aláírás-ellenőrzés), majd a megszokott számlázási folyamatunkkal számlát készítünk belőle. A számla ugyanúgy NAV-hoz kerül, ugyanúgy kap PDF-et és SHA3-512 lenyomatot, mintha te hoztad volna létre. Stripe sends payment events to BillingHUNter over a webhook. We verify that the message really came from Stripe (signature verification), then run it through our normal invoicing pipeline. The invoice is reported to NAV, gets a PDF and a SHA3-512 fingerprint exactly as if you had created it yourself.

  • Feldolgozott események: sikeres fizetés (payment_intent.succeeded), sikeres terhelés (charge.succeeded), befizetett Stripe-számla (invoice.paid) és teljesített Checkout-folyamat (checkout.session.completed). Events we process: successful payment (payment_intent.succeeded), successful charge (charge.succeeded), paid Stripe invoice (invoice.paid) and completed Checkout session (checkout.session.completed).
  • Duplikáció-ellenőrzés: a Stripe néha újraküldi ugyanazt az eseményt. Fizetésenként csak egy számla készül, az ismétléseket eldobjuk. Duplicate protection: Stripe sometimes re-delivers the same event. Only one invoice is created per payment, retries are ignored.
  • Storno / refund: a visszatérítést a BillingHUNterben kézzel kezeled, ahogy béküldéssel szoktad. Nincs automatikus sztornó. Refunds / storno: refunds are handled manually in BillingHUNter as usual. There is no automatic storno.

Beállítás lépésről lépésre Setup step by step

  1. Stripe API-kulcs beszerzése. A Stripe Dashboardon (Developers → API keys) másold ki a titkos kulcsot (sk_live_... vagy teszteléshez sk_test_...). Get your Stripe API key. In the Stripe Dashboard (Developers → API keys), copy your secret key (sk_live_..., or sk_test_... for testing).
  2. Konfiguráció létrehozása. a BillingHUNter Stripe oldalán válaszd a szervezetet, nevezd el az oldalt, és illeszd be a kulcsot. A kulccsal egyszer hozzuk létre a webhookot a Stripe-nál, a kulcsot utána nem tároljuk. Create a configuration. On the BillingHUNter Stripe page, pick your organisation, name the site, paste the key. We use the key once to create the webhook at Stripe. The key itself is never stored.
  3. Webhook automatikusan elkészül. Mi regisztráljuk a Stripe-nál a webhookot és elmentjük az aláírási titkot (titkosítva). Szerkesztéskor hagyd üresen a kulcsmezőt, ha nem akarod újra kiadni a webhookot. The webhook is created for you. We register the endpoint at Stripe and store the signing secret (encrypted). When editing, leave the key field empty unless you want to re-provision.
  4. Számla-beállítások. Válassz témát, számlaformát, előtagot és fizetési módot. Ezek lesznek a Stripe-fizetésekből készülő számlákon. Invoice settings. Pick a theme, invoice appearance, prefix and payment method. These apply to invoices generated from Stripe payments.

ÁFA-szabályok: ki a felelős? VAT rules: who is responsible?

A helyes beállítás a te felelősséged. A BillingHUNter nem találgat. Ha az ÁFA-kód vagy a vevő adatai hiányoznak, a fizetés a „Sikertelen események" közé kerül egyértelmű okkal, nem pedig rossz számlát állítunk ki. Getting these settings right is your responsibility. BillingHUNter never guesses. If a VAT code or mandatory buyer data is missing, the payment lands in “Failed events” with a clear reason instead of producing a wrong invoice.

  • Belföldi vevő (HU): a belföldi ÁFA-kódod (általában 27%). Domestic buyer (HU): your domestic VAT code (usually 27%).
  • EU-s cég: jellemzően közösségen belüli, fordított adózás (EUFAD37). A vevő EU-s adószámából döntjük el, hogy cég. EU company: typically intra-community reverse charge (EUFAD37). The buyer's EU VAT number marks them as a company.
  • EU-s magánszemély: itt dönt az OSS-regisztrációd. Ha NEM vagy OSS-ben regisztrálva, 10 000 EUR/év EU-s B2C forgalom alatt a belföldi (27%) kulcs a helyes, ezért a mező zárolt. Ha OSS-ben vagy, válaszd a „Stripe adóadataiból" opciót. Ehhez a Stripe oldaladon Stripe Tax szükséges, mert csak így érkezik adókulcs a fizetésben. EU private person: your OSS registration decides. If you are NOT OSS-registered, under €10,000/year of EU B2C turnover the domestic (27%) rate applies, so the cell is locked. If you are registered, choose “Taken from Stripe”. This requires Stripe Tax on your Stripe account, otherwise the event carries no tax rate.
  • Külföldi (EU-n kívüli) vevő: jellemzően határon kívüli teljesítés (HO). Non-EU buyer: typically outside-the-territory (HO).

Stripe Tax nélkül az „Stripe adóadataiból" opció nem működik, mert az esemény nem tartalmaz adókulcsot, így a fizetés a sikertelen események közé kerül. Vagy kapcsold be a Stripe Taxot, vagy válassz konkrét ÁFA-kódot. Without Stripe Tax the “Taken from Stripe” option cannot work because the event has no tax rate, so the payment goes to failed events. Either enable Stripe Tax, or pick a concrete VAT code.

Devizanemek és MNB-árfolyam Currencies and the MNB exchange rate

Támogatott devizák: HUF, EUR, USD, GBP, CHF, CZK, PLN, RON. Más devizában érkező fizetésből nem készül számla, a sikertelen események között látod. Nem váltunk át és nem becsülünk árfolyamot. Supported currencies: HUF, EUR, USD, GBP, CHF, CZK, PLN, RON. Payments in other currencies are not invoiced. They appear under failed events. We never convert or estimate rates.

Devizás számlánál a NAV-nak kötelezően szüksége van a forintosított összegekre, ezért a jegybanki (MNB) árfolyamot használjuk a teljesítés napjára. A beállításban ezt külön jelölőnégyzettel kell elfogadnod; elfogadás nélkül devizás fizetésből nem állíthatunk ki törvényes számlát. For foreign-currency invoices NAV requires the HUF-converted amounts. For this we use the central bank (MNB) exchange rate for the date of performance. You must accept this with a dedicated checkbox in the settings; without it we cannot legally invoice foreign-currency payments.

Milyen vevőadat kell a számlához? What buyer data is required?

A számlához kötelező a vevő neve és címe (ország, város, irányítószám, utca). Ezeket a Stripe fizetés billing details mezőiből vesszük. Ha a Stripe oldaladon nincs kötelező adatbekérés beállítva, a fizetés sikertelen esemény lesz. Checkout/Payment Links esetén kapcsold be a „Billing address collection" és a vevő neve bekérését. Invoices require the buyer's name and address (country, city, postcode, street). We take these from the payment's billing details. If your Stripe integration does not collect them, the payment becomes a failed event. In Checkout/Payment Links, enable billing address collection and customer name.

  • Céges vevő: EU-s adószám (pl. DE123456789) a Stripe customer tax_ids mezőjéből jön. Ez jelzi, hogy fordított adózás kell. Company buyer: EU VAT number (e.g. DE123456789) from the Stripe customer's tax_ids. This marks them for reverse charge.
  • E-mail küldés: a számlát csak akkor küldjük el, ha a fizetéshez tartozik e-mail cím (receipt_email vagy customer e-mail). E-mail delivery: the invoice is only e-mailed if the payment has an e-mail address (receipt_email or customer e-mail).
  • Tételnév: a fizetés leírásából, a metadata.product mezőből vagy az általad megadott alapértelmezett tételnévből. Ha egyik sem található, sikertelen esemény lesz. Item name: from the payment description, the metadata.product field, or the default item name you set. If none is found, it becomes a failed event.

Sikertelen események Failed events

Minden ellenőrzött, de számlává nem alakítható eseményt tárolunk: Stripe-esemény azonosító, típus, fizetés azonosító, hibaok, időbélyeg. A Stripe oldalon a konfiguráció melletti „Sikertelen események" nézetben listázzuk őket. Így látod, ha vevői adat hiányzik, ismeretlen a devizanem, vagy egy eseményt nem dolgozunk fel. Every verified-but-unprocessable event is stored: Stripe event id, type, payment id, reason, timestamp. Use “Failed events” next to each configuration on the Stripe page. This is where you see missing buyer data, unsupported currencies, or event types we don't process.

Biztonság Security

  • Minden webhook-üzenetet a Stripe aláírási titkával (whsec) hitelesítünk HMAC-SHA256-gyel és időkorláttal, így hamis üzenet nem állíthat ki számlát. Every webhook message is authenticated with the Stripe signing secret (whsec) via HMAC-SHA256 plus a timestamp tolerance, so forged messages cannot create invoices.
  • A titkos API-kulcsod sosem tároljuk; az aláírási titkot titkosítva tartjuk, és a felületen sosem jelenik meg teljesen. Your secret API key is never stored; the signing secret is kept encrypted and never shown in full on the UI.
  • A Stripe-konfigurációkat csak a szervezet tulajdonosa kezelheti. Stripe configurations can only be managed by the organisation owner.