Încasare plăți prin formulare cu Stripe
Stripe + formular = încasare la momentul intenției maxime, nu peste 24h prin email. Iată cum configurezi corect, ce greșeli să eviți și cum scalezi la mii de tranzacții lunar.
De ce încasezi în formular și nu separat după
Modelul clasic: utilizator completează formular cerere → primește email cu link plată → poate plătește, poate nu. Rata conversie tipică: 40-60% între cerere și plată. Modelul integrat: utilizator completează formular incluzând câmp plată (Stripe Elements inline) → plătește instant → rezervare confirmată. Rata conversie: 75-90%. Diferența: momentul intenției maxime e completarea formularului, nu un email peste 24h când entuziasmul s-a evaporat. Pentru orice serviciu cu avans (consultații, rezervări, cursuri), încasarea inline crește venitul efectiv cu 25-50% fără efort suplimentar.
Două abordări — Checkout Sessions vs PaymentIntents inline
Stripe oferă două API-uri principale pentru încasare. Checkout Sessions: redirectează utilizatorul la o pagină Stripe (cea cu logo Stripe vizibil), procesează plata acolo, returnează la URL-ul tău. Avantaj: simplu de implementat, Stripe gestionează 3DSecure/SCA, PCI compliance automat. Dezavantaj: utilizatorul părăsește formularul tău. PaymentIntents inline (Elements): formular Stripe se randează în pagina ta cu CSS custom, plata procesată fără redirect. Avantaj: experiență fluentă, brand-ul tău vizibil. Dezavantaj: mai mult cod, gestionare manuală 3DSecure. Pentru formulare cu o singură plată, Checkout Sessions e mai rapid de implementat. Pentru integrare premium fluentă, PaymentIntents merită efortul.
Setup pas-cu-pas pentru un formular cu plată
(1) Cont Stripe: stripe.com/register, completare KYC (1-3 zile aprobare pentru afaceri europene). (2) Activare keys live: după aprobare, primești 4 chei (test publishable, test secret, live publishable, live secret). Niciodată hardcoda live secret în client. (3) Configurare în constructor: în secțiunea Settings → Stripe Integration, lipești live secret key + live publishable key. (4) Adăugare câmp plată în formular: în editor, alegi „Stripe Payment field”, setezi sumă (în cents — 50 EUR = 5000), monedă (EUR/USD/RON), descriere („Avans rezervare consult”). (5) Test în mode test (card 4242 4242 4242 4242), apoi switch live. (6) Webhook configurare pentru evenimente (payment_intent.succeeded, payment_intent.failed) pentru sincronizare cu CRM. Total setup: 1-3 ore pentru prima implementare.
Cardurile testate de utilizatori reali — ce să accepți
Stripe acceptă implicit Visa, Mastercard, American Express. Pentru România/Moldova adițional: pentru carduri internaționale, accepți tot ce vine. Pentru carduri locale Republica Moldova (Moldindconbank, Maib), Stripe nu acceptă procesare directă — utilizatorii MD plătesc cu carduri Visa/Mastercard internaționale (majoritatea moldovenilor au cel puțin unul). Pentru maximă acoperire, activezi și metodele alternative locale: Apple Pay, Google Pay (creșteri conversie mobile +10-15%), Klarna pentru BNPL (relevantă DE/AT/UK), iDEAL pentru Olanda, Bancontact pentru Belgia, SEPA Direct Debit pentru abonamente B2B. Fiecare metodă se activează în Stripe Dashboard cu un clic.
3D Secure și autentificare — cum afectează conversia
PSD2 europeană obligă autentificarea suplimentară (3DSecure) pentru tranzacții peste 30 EUR sau pentru anumite cardele. Utilizatorul primește notificare bancă mobil sau SMS cu cod confirmare. Bine implementat de Stripe Elements, dar adaugă fricțiune: 5-15% utilizatori abandonează la pasul 3DS. Mitigare: comunică explicit înainte „banca îți va cere confirmare în următorul pas, asta e procesul normal de securitate”. Pentru tranzacții recurente sub 30 EUR/lună, autentificare obligatorie doar la primul plat (după, automat). Pentru abonamente, configurezi setup intent o singură dată, plățile lunare merg automat.
Webhooks — sincronizare cu CRM și automation
După plată reușită, Stripe trimite webhook la endpointul tău cu detaliile tranzacției. Tu marchezi în CRM-ul tău că trimiterea formularului e „plătită” și declanșezi acțiuni (email confirmare client, alertă Telegram echipă, generare factură). Implementare: endpoint POST care primește JSON, verifică semnătura HMAC cu webhook secret, procesează evenimentul. Evenimentele cheie: payment_intent.succeeded (plată reușită), payment_intent.payment_failed (plată eșuată), charge.refunded (rambursare), customer.subscription.created (abonament nou). Niciodată să nu te bazezi doar pe răspuns client-side al Stripe — utilizatorul poate închide pagina înainte ca confirmarea să ajungă la tine. Webhook = sursa de adevăr.
Abonamente recurente — Stripe Billing
Pentru servicii recurente (abonamente lunare, anuale), folosești Stripe Billing care gestionează: încasare automată lunară, retry la eșec card (dunning automat 4 încercări pe 14 zile), trimitere factură PDF, gestionare upgrade/downgrade plan. Setup: creezi Products și Prices în Dashboard (Bază 29 EUR/lună, Pro 99 EUR/lună), generezi link de abonare per client sau integrezi Customer Portal. Customer Portal e o pagină Stripe-hosted unde clientul gestionează singur abonamentul (upgrade, anulare, schimb card) — economisești ore de suport. Configurabil în Dashboard, link inseras în panou client al constructorului tău.
Rambursări și dispute — gestionare profesională
Rambursare voluntară: din Stripe Dashboard, click Refund pe tranzacție. Banii ajung la client în 5-10 zile lucrătoare. Fără cost (Stripe nu reține comision la rambursare integrală inițial, dar nici nu returnează). Dispute (chargeback): client contestă tranzacția prin bancă lui. Stripe te notifică, ai 7 zile să răspunzi cu dovezi (email confirmare, livrare serviciu, IP utilizator). Dacă pierzi disputa: pierzi suma + 15 EUR fee Stripe + risc reputațional. Pentru reducere dispute: comunică clar termenii pe site, trimite confirmare imediată după plată, ai politică retur clară.
Fiscalitate — TVA pentru servicii digitale UE
Pentru servicii digitale (cum sunt majoritatea celor încasate prin formular online) către clienți B2C în UE, aplici TVA-ul țării clientului. Setup: în Stripe Tax (modul plătit, 0.5% per tranzacție), activezi calculul automat. Stripe detectează locația clientului prin IP + țara cardului, aplică TVA corect, generează rapoarte trimestriale pentru declarația OSS (One Stop Shop). Pentru clienți B2B cu cod TVA UE validabil, aplici reverse charge (TVA 0%). Pentru clienți din afara UE, fără TVA. Alternativ la Stripe Tax: instrumente specializate (Quaderno, Octobat) sau Paddle care preia totul ca Merchant of Record.
Securitate — protejarea împotriva fraudei
Tranzacțiile online au risc fraudă (carduri furate, identitate falsă). Stripe Radar (inclus implicit) folosește ML pentru a bloca automat tranzacții cu scor risc înalt. Recomandare adițională: configurează reguli custom în Radar (blocare carduri din țări high-risk dacă nu vinzi acolo, blocare BIN-uri identificate ca fraudă în trecut). Pentru tranzacții peste 500 EUR, recomandăm verificare manuală suplimentară (apel client pentru confirmare, verificare adresă livrare). Pentru servicii digitale fără livrare fizică, riscul e mai mic (nu poți „fura” un consult medical), dar disputele cu „nu am recunoscut tranzacția” rămân posibile.
Întrebări frecvente
Cât costă Stripe pentru tranzacții europene?
1.4% + 0.25 EUR pentru carduri UE standard. 2.5% + 0.25 EUR pentru carduri din afara UE. 0.8% (cap 5 EUR) pentru SEPA Direct Debit. Negocii rate reduse peste 100 000 EUR/lună volum.
Pot folosi Stripe în Republica Moldova?
Da, Stripe acceptă afaceri din MD din 2023 prin Stripe Atlas. Procesul de aprobare: 1-3 săptămâni. Recomandăm setup prin contabil specializat pentru a evita probleme fiscale ulterioare.
Cum gestionez plățile eșuate?
Stripe trimite webhook payment_intent.payment_failed. Marchezi în CRM ca eșec, trimiți email automat utilizatorului cu link retry, eventual contactare manuală pentru sume mari. Stripe Dunning gestionează automat pentru abonamente.
Trebuie să fiu PCI compliant?
Stripe Elements/Checkout te face automat PCI compliant SAQ-A (cel mai simplu nivel) pentru că tu nu atingi datele cardului direct. Pentru SAQ-D (procesare directă carduri), Stripe NU e instrumentul corect — folosește gateway clasic.
Pot accepta plăți în mai multe valute?
Da, Stripe Multi-currency: încasezi în EUR, USD, GBP, etc. Conversia se face automat la cursul Stripe (markup ~2% peste mid-market). Pentru afaceri internaționale, recomandat. Pentru afaceri locale RO/MD, EUR + RON suficient.
Câtă vreme țin banii la Stripe înainte de plata în cont?
În UE: 2-7 zile lucrătoare pentru carduri standard, până la 14 zile pentru afaceri noi (reducere risc). Configurabil în Dashboard (Payouts schedule). Pentru cashflow critic, mergi pe daily payouts.
Stripe Tax e necesar pentru orice afacere?
Nu obligatoriu, dar puternic recomandat pentru afaceri cu peste 5000 EUR/lună revenue UE. Sub acel prag, calcul manual + declarație OSS trimestrială acceptabilă. Peste, costul Stripe Tax (0.5%) merită pentru evitare erori fiscale.
Cum protejez datele cardului utilizatorului?
Nu le atingi niciodată. Stripe Elements injectează iframe Stripe peste pagina ta, datele cardului merg direct la Stripe, tu primești doar token. Niciodată să nu loghezi POST body de la formular cu plată — există risc accidental să capturezi date card.
Pot oferi plată în rate (BNPL) prin Stripe?
Da, prin Klarna sau Affirm integrate în Stripe Checkout. Costuri suplimentare 2-4% peste comisionul standard. Util pentru produse 100-2000 EUR (sub plătesc cash, peste folosesc credit clasic). Verifică disponibilitate per țară.
Ce fac dacă pierd accesul la contul Stripe?
Activează 2FA obligatoriu de la început. Pentru recover: contact suport Stripe cu dovezi identitate (CI, extras bancar, documente firmă). Proces 3-14 zile. Pentru critic, ai un al doilea utilizator admin în cont (alt fondator/CFO).