Sari la conținut
← Înapoi la blog
compliance · mobile · romania · ngo · fintech5 min de citit2 aprilie 2026

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ă.

Ce cere de fapt Formularul 230

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.

UX-ul mobil pe care l-am livrat

Donatorul deschide aplicația, apasă „Redirecționează 3,5%”, iar fluxul are trei ecrane:

  1. 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
  2. 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
  3. 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”.

Detalii de inginerie care au contat

Generarea PDF-urilor conforme ANAF pe server

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

CNP — cel mai sensibil câmp din formular

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.

Generarea borderourilor la scară

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.

Postura de conformitate

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.

De ce contează

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