Formularul 230 în aplicația ta: cum am pus donațiile cu deducere fiscală românească într-un flux mobil nativ
Cum am construit un flux complet conform pentru Formularul 230 (redirecționarea a 3,5% din impozit) într-o aplicație nativă iOS și Android — de la generarea PDF până la borderouri pregătite pentru ANAF.
Dacă conduci o organizație non-profit din România și nu colectezi Formularul 230 în fiecare an, lași bani reali pe masă. Persoanele fizice din România pot redirecționa 3,5% din impozitul anual pe venit către un ONG înregistrat, pur și simplu prin depunerea Formularului 230 la ANAF — fără niciun cost pentru ele, cu suma integrală mergând către cauza pe care o susțin.
Problema: majoritatea ONG-urilor colectează acel formular pe hârtie la standuri de stradă, sau printr-un PDF pe care donatorul trebuie să-l descarce, completeze, semneze, scaneze, trimită înapoi pe email și să se roage să nu se piardă pe drum. Acel funnel de conversie e exact la fel de prost cum sună.
Am reconstruit acel flux într-o aplicație mobilă reală — aplicațiile native iOS și Android pentru o redacție independentă de știri. Iată ce am învățat, cap-coadă.
Formularul 230 („Cerere privind destinația sumei reprezentând până la 3,5% din impozitul anual”) este declarația standardizată ANAF prin care un contribuabil persoană fizică alocă o parte din impozitul pe venit către o organizație non-profit aleasă. Datele necesare sunt puține, dar fiecare câmp trebuie să fie exact corect:
- Nume complet, CNP (Cod Numeric Personal), adresa de domiciliu
- Denumirea oficială a organizației non-profit, codul fiscal (CIF), contul bancar (IBAN)
- Anul declarației
- Opțional: o desemnare pe mai mulți ani (până la 2 ani)
Organizația non-profit grupează apoi formularele primite în borderouri (declarații de acoperire în lot) și le depune la ANAF, care transferă sumele redirecționate în contul ONG-ului.
Donatorul deschide aplicația, apasă „Redirecționează 3,5%”, iar fluxul are trei ecrane:
- Identitate — precompletat cu ce ne-a dat deja utilizatorul (stocăm minimul: nume + email + CNP criptat în repaus); editabil; text clar care explică de ce e nevoie de fiecare câmp
- Confirmare — o previzualizare pixel-perfect a PDF-ului generat, cu o secțiune „ce urmează” care spune, în română simplă, exact ce vom face cu acest formular
- Semnătură — semnătură cu degetul sau stylus pe dispozitiv, capturată în PDF, finalizată, criptată și încărcată
Asta e tot. Patruzeci și cinci de secunde, fără să părăsești aplicația, fără ping-pong pe email, fără „scanează și trimite înapoi”.
Nu generăm PDF-ul pe dispozitiv. Previzualizarea pentru utilizator e o redare fidelă, dar artefactul legal e generat server-side din același șablon pe care ANAF l-ar accepta pe hârtie. Astfel:
- PDF-ul semnat e byte-identic indiferent de OS-ul utilizatorului
- Datele fiscale ale ONG-ului sunt preluate dintr-un singur loc canonic, nu duplicate în două bundle-uri de aplicație
- Actualizările de șablon (și ANAF va actualiza șablonul, posibil chiar în mijlocul sezonului fiscal) se livrează fără release în App Store / Play Store
Codul Numeric Personal românesc e un identificator de 13 cifre care codifică sexul, data nașterii, județul nașterii și un checksum. E date personale conform Articolului 4(1) GDPR și Legii 190/2018, și trebuie tratat ca atare.
Ce facem:
- Validare înainte de trimitere — checksum și coerența datei nașterii pe dispozitiv, ca utilizatorul să corecteze greșelile de tastare înainte să atingă rețeaua
- Criptare în repaus la nivel de aplicație (nu doar criptare de disc) folosind o cheie gestionată de Keychain / Keystore al platformei
- Minimizarea retenției — odată ce borderoul e depus la ANAF, păstrăm doar minimul cerut de legea fiscală română în scop de audit
- Audit trail la fiecare acces — fiecare citire a unui câmp CNP e înregistrată cu actor, timestamp și motiv
Semnătura e capturată ca traseu vectorial în interiorul PDF-ului, nu ca raster plat. Asta păstrează intenția (poți demonstra în instanță că traseele au fost desenate, nu lipite), iar PDF-ul semnat include o amprentă SHA-256 a bytes-ilor semnați, înregistrată server-side.
Odată ce se acumulează un val de depuneri Formular 230, ONG-ul trebuie să depună borderouri — declarații în lot care acoperă formularele individuale. Am construit un generator server-side care:
- Grupează formularele acceptate după perioada de raportare
- Produce PDF-uri semnate în formatul oficial
- Face cross-reference fiecărui rând cu declarația semnată originală, astfel încât orice audit poate fi răspuns în minute, nu zile
- Persistă totul într-un arbore de fișiere imutabil pe care echipa de contabilitate îl poate oglindi în backup-ul lor
Chiar avem foldere numite Trimise, Recipise, Borderouri semnate, Erori — plictisitoare, durabile, apărabile.
Un flux ca acesta trăiește sau moare pe postura GDPR și de lege fiscală. Versiunea scurtă a noastră:
- Temei legal: consimțământ explicit (Articolul 6(1)(a)) pentru prelucrarea datelor de identitate în scopul depunerii Formularului 230 în numele donatorului
- Date din categorii speciale: România nu clasifică CNP-ul ca „categorie specială” conform Articolului 9, dar legea națională îl tratează ca număr național de identificare conform Articolului 87 GDPR + Legea 190/2018. Respectăm aceste constrângeri
- Acord de prelucrare a datelor cu ONG-ul (noi suntem operatorul; ONG-ul e operatorul responsabil)
- Dreptul la ștergere onorat la cerere, cu excepția cazurilor în care legea fiscală română cere retenție pentru perioada de audit
- Fără transferuri în țări terțe — datele rămân în UE
Dacă construiești asta și nu ești fluent în GDPR, angajează pe cineva care e înainte să scrii o linie de cod. A pune conformitatea după e mai scump decât să o construiești corect de la început.
Fiecare depunere Formular 230 care ajunge la ANAF e finanțare reală care nu a trebuit să iasă din buzunarul donatorului. Pentru o redacție independentă care funcționează pe sprijinul cititorilor, fiecare 1% suplimentar de conversie la acest pas se compune anual timp de ani.
Dacă conduci un ONG care încă nu colectează Formularul 230 în propriile suprafețe de produs, stack-ul tău de fundraising pierde bani. Te putem ajuta să repari asta.
Continuă lectura
