StareD112 (filing status + recipisa download)¶
https://www.anaf.ro/StareD112/ is ANAF's public "Vizualizare documente" page:
given a filed document's upload index (the number the portal returns on
submission — also the recipisa number) and the taxpayer's CUI, it reports
the processing state of the CUI's recent filings and serves the signed
recipisa (filing receipt) PDF. There is no official API documentation; this
reference is compiled from the page itself and live probes (2026-07-16, raw
captures under _sources/stared112/).
Despite the D112 in the path, the service covers all declaration forms
(live-observed with F4109 documents; the page's own copy speaks of
"documente depuse" generally) — including D406T test filings: a D406T
filed on the upload portal appeared here within a minute, form D406T, state
In prelucrare (live-observed 2026-07-17; the upload portal's success page
itself points recipisa tracking at this service).
1. Access model — public, unauthenticated¶
- No certificate, no OAuth, no session priming: a cold
POSTfrom a fresh client works (live-confirmed 2026-07-16). Cookies (JSESSIONID, an F5TS*cookie) are set on the response but are not required for subsequent calls. - The (index, CUI) pair is the access key: a matching pair returns the status of every document that CUI filed in the query window, not just the queried one.
- Stated limits (from the page copy):
- queries cover documents filed in the last three months;
- only the last 200 submissions are visible — after each batch of ~200, ANAF asks filers to wait for processing and download the recipisas;
- the recipisa PDF is downloadable for 60 days from filing (older rows keep their status but lose the download link).
2. Status query¶
POST https://www.anaf.ro/StareD112/vizualizareStare.do
Content-Type: application/x-www-form-urlencoded
ghiseu=N&id=<index>&cui=<cui>
| field | meaning |
|---|---|
ghiseu |
N = filed over the internet (id is the upload index); Y = filed at an ANAF counter (id is the registration number) |
id |
internet leg: upload index, digits only; counter leg: registration number as issued (the service's text field permits dash/slash-shaped values; no counter capture yet proves a narrower grammar) |
cui |
the taxpayer's fiscal code, digits only |
The response is always HTTP 200 text/html;charset=ISO-8859-1 (diacritics
as numeric entities). Three page shapes exist:
2.1 Results page (pair matched)¶
Header line: Documente depuse pentru cui: <cui> in perioada <dd.mm.yyyy> /
<dd.mm.yyyy> — the window is the trailing three months ending today. Then a
six-column table (the header cells sit directly under <thead> with no
<tr>):
| column | content | example |
|---|---|---|
| Index | upload index (= recipisa number) | 1100000001 |
| Tip document | form/document type | F4109 |
| Stare document | processing state, one of the four §2.3 texts | Documentul este valid |
| Data inregistrare | registration line | INTERNT-1100000001-2026 din 16.07.2026 |
| Consultați | recipisa link (/StareD112/ObtineRecipisa?numefisier=<index>.pdf) — absent once the 60-day window lapses |
|
| Data incarcare | upload date, ISO | 2026-07-16 |
2.2 Not-found page (pair matched nothing)¶
Nu a fost identificata nicio declaratie cu datele introduse, ... — a
business outcome, listing the possible reasons: wrong pair, the
declaration is not among the last 200 submissions, or more than 3 months have
passed. Same page shape for a valid index paired with the wrong CUI
(live-probed).
2.3 Invalid-input page¶
Non-numeric id/cui answers Nu ati introdus un index valid (HTTP 200).
The four documented states (the results page lists them with explanations):
| state text | meaning |
|---|---|
In prelucrare. |
still processing on the central servers — check again later |
Fişierul depus nu este un document valid. |
pre-validation failed (unknown type / unsigned / signature has no filing right for the CIF / no reporting period / no XML attached) — not registered; fix and refile |
Documentul are erori de validare. |
validation errors, detailed in the recipisa — fix and refile |
Documentul este valid. |
accepted; data forwarded to the beneficiary institutions |
3. Recipisa download¶
GET https://www.anaf.ro/StareD112/ObtineRecipisa?numefisier=<index>.pdf
- Known index within the 60-day window:
200,Content-Type: application/pdf,Content-Disposition: inline;filename=<index>.pdf, the signed one-page recipisa (live: 9 078 bytes for a valid F4109). - Unknown or expired index:
200with an empty body (Content-Length: 0, stillapplication/pdf) — emptiness is the only "not found" signal. - No session or prior status query is required (live-confirmed cold).
4. anafpy mapping¶
anafpy.declaratii.status.DeclarationStatusClient:
check_status(index, cui, filed_at_counter=False)→DeclarationStatusList(found=Falsefor §2.2; §2.3 raisesAnafResponseErrorsince inputs are validated client-side first).download_receipt(index)→bytes | None(Nonefor the empty-body case).
MCP: declaratie_status, declaratie_recipisa. CLI: anafpy declaratii
status, anafpy declaratii recipisa.