D700 — fiscal registration / fiscal-vector changes¶
The electronic self-service declaration for subsequent mentions to a taxpayer's
fiscal registration — full title "Declarație pentru înregistrarea/modificarea
în mediu electronic a mențiunilor ulterioare înregistrării fiscale". This file
is a completion guide: what the declaration settles, who files it and when,
and how each form section maps onto the section flag and detail attributes the
wire carries — followed by the technical wire/DUK layer. ANAF's validator jar
(D700Validator.jar) and published instructions are the authority; this guide is
a distilled bridge, not a re-implementation of the rules. The instances below
were proven hands-on on 2026-07-17 against D700Validator.jar J5.0.3
(2026-04-23; feed directory D700_27) — read the warning-only validation
gotcha first: a valid D700 never writes a bare ok.
Purpose & legal basis¶
D700 registers, amends, or removes elements of a taxpayer's fiscal vector (vectorul fiscal) — the set of declared tax obligations ANAF records against a taxpayer: VAT (art. 316/317), employer withholding + social contributions, profit tax vs microenterprise income tax, excise, and other taxes and duties. It carries only the changes; it does not re-file the taxpayer's identity data. It is transmitted exclusively by electronic remote means (via the ANAF portal / SPV), signed with a qualified certificate.
- Current model: the D700 form and the fiscal-vector obligation types are
approved by OPANAF 1699/2021 (M.Of. 1056 și 1056 bis/04.11.2021), as
amended — most recently by OPANAF 15/2026 (M.Of. 17/14.01.2026),
applicable from the January-2026 emission (form version
0126, updated 11.03.2026). OPANAF 15/2026 added Section F row 12 "Taxa logistică pentru gestionarea fluxurilor de bunuri extracomunitare" (the wire's702obligation) across the 010/013/015/016/700 family and a new Section D on form - The D700 electronic path itself began with OPANAF 4136/2020 (in force 30 March 2021).
- Legal basis: art. 341 alin.(1) lit. g) Legea 227/2015 (Codul fiscal) and art. 342 alin.(1) Legea 207/2015 (Codul de procedură fiscală); the declaration-of-mentions obligation itself rests on art. 88 (mentions) and art. 90 (radiere) of the Codul de procedură fiscală.
- Two operation modes —
felD: 2 = declarație de mențiuni (amend the vector) and 3 = declarație de radiere (strike off the taxpayer or a vector element). There is nofelD=1plain first-registration mode in this electronic path — see Special attention & gotchas.
Who files & when¶
- Who: a taxpayer already holding a fiscal registration who needs to change
its fiscal vector — register or cancel VAT, switch the VAT period, elect micro
vs profit tax, register or deregister as an employer, add/remove an excise or
other obligation, open a secondary office, move the fiscal domicile, or be
struck off. Initial fiscal-vector setup for a newly incorporated company
runs through the ONRC one-stop (ghișeul unic) at incorporation, or the
010–070 registration-declaration family for entities outside ONRC's scope;
D700 is the electronic path for subsequent mentions. The
dec_inregcode states which base registration declaration the taxpayer type maps to —010legal persons / associations,013/015/016non-residents,020/030natural persons (with / without a CNP),040public institutions,070independent activities / liberal professions. - Deadline — event-driven, not periodic. The general rule is 15 days from the date the change occurs (art. 88/90 Codul de procedură fiscală). Specific cases carry their own terms, spelled out in the ANAF instructions (Anexa nr. 10):
- VAT period switch forced by an intra-EU acquisition (quarterly → monthly): within 5 working days of the end of the month in which the tax became exigible.
- Profit-tax annual-system option / renunțare (Section C, row 1.4): by 31 January inclusive of the fiscal year; for a modified (non-calendar) fiscal year, within 30 days of the start of that fiscal year.
- Modified fiscal year (Section C, row 1.5): within 15 days of the start of the modified fiscal year, or by the 25th of the third month from when the old fiscal year would have closed.
- Monthly-by-option for salary withholding (Section D, row 1.1.2): by 31 January inclusive.
- For 2026, practitioner guidance flags 31 March 2026 as the practical cutoff for many micro/profit vector mentions.
Filling guide¶
The document is a root <D700> element carrying header + identification +
one flag per top-level section (Bifa_A…Bifa_G) as attributes, each flagged
section then carrying its own detail attributes; the multi-row parts (the fiscal
domicile in Section A, and the Section II identification block) repeat as child
<domiciliu> elements. Unlike the flat single-element D300, D700 is
mode-driven and section-flagged — you set felD, name the taxpayer, raise
exactly the section flags for the vector elements you are touching, and fill only
those sections. The full attribute ↔ form-row map (every field's type, length,
formula, and error) lives in the structure/validation annex
(structura_XML_D700_0126_110326.pdf); this guide distils the identification
block, the section map, and the VAT sub-sections.
totalPlata_A is a section counter, not money. It must equal
Bifa_A+Bifa_B+Bifa_C+Bifa_D+Bifa_E+Bifa_F+Bifa_G (structure-annex row 8) — the
count of raised top-level section flags. With a single section flagged it is 1.
At least one section flag must be set or the run fails E_Bife ("Formular
D700 fara bife sectiuni").
Required header / identification block¶
| Attribute | Form field | Notes |
|---|---|---|
an |
An solicitare | year, N(4), ≥ 2022 (the soft page states ≥ 2023) |
luna |
Luna solicitare | month, N(2), 1–12 |
felD |
I. Felul declarației | N(1) — 2 = mențiuni, 3 = radiere (no 1) |
nume_decl / pren_decl / func_decl |
Nume / Prenume / Funcție declarant | required text |
totalPlata_A |
Suma de control | section counter = Bifa_A+…+Bifa_G |
cif |
1. Cod de identificare fiscală | N(13); CUI(10) check, or CIF(13) when dec_inreg=020/030 |
den |
2. Denumire | C(200), required |
dec_inreg |
3. Declarația de înregistrare depusă inițial | C(3), closed list 010/013/015/016/020/030/040/070 |
dec_inreg gates which sections may be filled (structure-annex cross-rules), e.g.
013/016 reject Section A.I; 015/030 reject Section A entirely; 030 requires
a non-NIF cif. Filing dec_inreg="1" is rejected — "valoarea '1' nu se afla
in lista".
The fiscal-vector sections¶
Each Bifa_X="1" raises a top-level section; the taxpayer fills only the ones it
is changing. The section identifies the vector element:
| Flag | Section | Vector element it toggles |
|---|---|---|
Bifa_A |
A — Domiciliul fiscal | register / modify the fiscal domicile (sub-flags Bifa_A1 A.I sediu/loc de desfășurare, Bifa_A2 A.II domiciliu actual, Bifa_A3 A.III noul domiciliu); detail in repeating <domiciliu tip_a="2/3/4"> |
Bifa_B |
B — Înregistrarea în scopuri de TVA și vectorul fiscal TVA | the whole VAT vector — see the B.I–B.VIII table below |
Bifa_C |
C — Vectorul fiscal pentru impozitele directe datorate | profit tax vs micro: Bifa_C1 imp. profit (100), Bifa_C2 imp. micro (120), Bifa_C3 imp. specific (130, abrogat); Bifa_trecePM (0 none / 1 profit→micro / 2 micro→profit); Bifa_nou_infiintata (new taxpayer); Per_1c13 payment period (02 trimestrial / 04 anual / 05 anual cu plăți anticipate / 09 dizolvare) |
Bifa_D |
D — Vectorul fiscal pentru angajatori | employer obligations: imp. venituri din salarii, CAS, CASS, CAM (Imp_d 602/412/432/480); detail in repeating <impozite_D> |
Bifa_E |
E — Vectorul fiscal pentru alți plătitori de venit | withholding at source: imp. pe venit + contribuții, redevențe (Imp_e 611/451/461/625/473/474); repeating <impozite_E> |
Bifa_F |
F — Vectorul fiscal pentru alte impozite și taxe | accize, contrib. sănătate, redevențe miniere/petroliere, imp. monopol energie/gaze, imp. venituri suplimentare gaze, imp. resurse naturale (+CAEN), taxe jocuri de noroc, imp. reprezentanță, imp. suplimentar instituții de credit, imp. construcții, taxa logistică bunuri extracomunitare (row 12, new); repeating <impozite_F> |
Bifa_G |
G — Sedii secundare fără obligație de înregistrare fiscală | declare a secondary office (denumire, adresă, CAEN, mod dobândire, stare) |
Section B — the VAT fiscal vector (detail)¶
Bifa_B="1" is required whenever any B sub-flag is set. The eight sub-sections
each register one VAT-vector action; several sub-flags exclude each other
(the annex's "se exclud reciproc" matrix):
| Sub | Flag | Subsection | Key detail attributes |
|---|---|---|---|
| B.I | Bifa_B1 |
Înregistrare în scopuri de TVA ulterior înregistrării (art. 316) | Bifa_1b/Bifa1_1b (registration ground: option art. 316(1)(a), or exceeding the exemption plafon plafon_BI = 395 000 lei), data_1b (data depășirii plafonului), CifAf1_1b (cifra de afaceri estimată), Per_1b VAT period 01 lunar / 02 trimestrial / 03 semestrial / 04 anual, d_modif_B1 (change the period) |
| B.II | Bifa_B2 |
Menținerea/schimbarea perioadei fiscale | Bifa_2b, Luna1_2b/An1_2b/Luna2_2b/An2_2b, Per1_2b (01 lună) / Per2_2b (02 trimestru), CifAf_2b |
| B.III | Bifa_B3 |
Opțiune aplicare/încetare art. 278 (locul prestării serviciilor) | Bifa_3b 1.20.1 opțiune / 1.20.2 încetare, Data_3b |
| B.IV | Bifa_B4 |
Notificare sistemul TVA la încasare | Bifa_4b 1.21.1 aplicare / 1.21.2 încetare, CifAf1_4b ≤ plafon_BIV = 5 000 000 lei |
| B.V | Bifa_B5 |
Regim special pentru agricultori | Bifa_5b 1.22.1 aplicare / 1.22.2 încetare, cif_5b |
| B.VI | Bifa_B6 |
Înregistrare/anulare art. 317 (achiziții IC / servicii; agricultori cu livrări IC) | Bifa_6b, Bifa_6b_inreg / Bifa_6b_anulare, cif_6b, values val1a_6b… |
| B.VII | Bifa_B7 |
Înregistrare art. 316 alin.(12) (re-înregistrare după anulare) | Bifa_7b 1.24–1.28, CifAf_7b, Per_7b (01 lunar / 02 trimestrial) |
| B.VIII | Bifa_B8 |
Anularea înregistrării TVA și scoaterea din evidență | Bifa_8b 1.31–1.36 (ground), CifAf1_8b/CifAf2_8b (art. 310(7) below-threshold), Data_8b |
Common scenarios¶
Each instance below validated warning-only (a PASS — see the DUK quirk) against
D700Validator.jar J5.0.3 on 2026-07-17: the err file held only the global
A: atentionare, no E:/F: line. All use the synthetic check-digit-valid
cif="1234565", felD="2" (mențiuni), dec_inreg="010", and a single raised
section flag so totalPlata_A="1".
1 — Minimal (fiscal-domicile modification, Section A). Only the header +
Bifa_A/Bifa_A1; a real filing adds the <domiciliu tip_a="2"> child with the
address.
<?xml version="1.0" encoding="UTF-8"?>
<D700 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="mfp:anaf:dgti:d700:declaratie:v4 d700.xsd"
xmlns="mfp:anaf:dgti:d700:declaratie:v4"
luna="6" an="2026" felD="2"
nume_decl="Popescu" pren_decl="Ion" func_decl="Administrator"
totalPlata_A="1"
cif="1234565" den="EXEMPLU TEST SRL" dec_inreg="010"
Bifa_A="1" Bifa_A1="1"/>
2 — VAT fiscal-period change (Section B.II), monthly → quarterly. Notifies the period change with the from/to months and periods:
<?xml version="1.0" encoding="UTF-8"?>
<D700 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="mfp:anaf:dgti:d700:declaratie:v4 d700.xsd"
xmlns="mfp:anaf:dgti:d700:declaratie:v4"
luna="6" an="2026" felD="2"
nume_decl="Popescu" pren_decl="Ion" func_decl="Administrator"
totalPlata_A="1"
cif="1234565" den="EXEMPLU TEST SRL" dec_inreg="010"
Bifa_B="1" Bifa_B2="1" Bifa_2b="1"
Luna1_2b="1" An1_2b="2026" Luna2_2b="1" An2_2b="2027"
Per1_2b="01" Per2_2b="02"/>
3 — VAT deregistration (Section B.VIII). Cancels the VAT registration and strikes the taxpayer from the VAT register from a stated date:
<?xml version="1.0" encoding="UTF-8"?>
<D700 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="mfp:anaf:dgti:d700:declaratie:v4 d700.xsd"
xmlns="mfp:anaf:dgti:d700:declaratie:v4"
luna="6" an="2026" felD="2"
nume_decl="Popescu" pren_decl="Ion" func_decl="Administrator"
totalPlata_A="1"
cif="1234565" den="EXEMPLU TEST SRL" dec_inreg="010"
Bifa_B="1" Bifa_B8="1" Bifa_8b="1" Data_8b="30.06.2026"/>
Special attention & gotchas¶
The pitfalls below trace either to direct validator/structure-annex
verification (the warning-only behaviour and the three instances above were run
against D700Validator.jar J5.0.3; the control-sum, section-flag, dec_inreg,
and plafon rules are read from structura_XML_D700_0126_110326.pdf) or to an
authoritative source (OPANAF 15/2026 and its Anexa nr. 10 instructions for the
legal basis, section semantics, and per-section deadlines; the general 15-day /
5-working-day deadlines are corroborated by both the ANAF instructions and a
practitioner source). No uncorroborated practitioner claim is carried.
- D700 validates WARNING-ONLY — the headline gotcha. A structurally valid
D700 makes
-vwrite only anA:atentionare ("Formularul urmeaza sa fie prelucrat la organul fiscal competent") and never a bareok. anafpy treats a run whose findings are all warnings asok=True(commit 51f3a11 / the DUK quirk section below). Do not try to force it took— relay the notice, do not read it as failure. A blockingE:/F:line still fails. - There is no standalone XSD. The soft page ships only the smart PDF, the
validator zip, and the structure/validation annex PDF ("Anexa validări",
structura_XML_D700_0126_110326.pdf) — the row-by-row authority for attribute names, types, and rules. The wire template lives in the smart PDF's XML-building JavaScript (namespacemfp:anaf:dgti:d700:declaratie:v4, root uppercase<D700>). totalPlata_Ais a section counter, not the amount to pay. It equals the count of raised top-level flagsBifa_A+Bifa_B+Bifa_C+Bifa_D+Bifa_E+Bifa_F+Bifa_G(structure-annex row 8 — note all seven flags,Bifa_Eincluded). With one section it is1; nothing monetary belongs here.- At least one section flag is mandatory. With every
Bifa_A…Bifa_Gat 0 the run failsE_Bife("Formular D700 fara bife sectiuni"). D700 exists to carry a change; an empty vector change is not a filing. felDhas no first-registration value. Only2(mențiuni) and3(radiere) are emitted here; initial fiscal-vector registration is done at the ONRC one-stop or via the 010–070 declarations. D700 amends or removes an existing registration.dec_inreggates the sections you may fill. The taxpayer-type code drives cross-field errors:013/016reject Section A.I,015/030reject Section A,030requires a genuine CIF (cifra1(cif)#9), andfelD=3(radiere) leaves Cap. IV.1/IV.2, VI.1/VI.4/VI.6 and several B sub-sections blank. Match the code to the taxpayer before raising a section.- The VAT thresholds are the raised 2025/2026 values — a version-alignment
trap. The VAT-exemption plafon
plafon_BIis 395 000 lei (raised from 300 000) and the cash-accounting (TVA la încasare) plafonplafon_BIVis 5 000 000 lei (raised from 4 500 000 on 11.03.2026). A cached older value silently poisons the B.I registration-ground and B.IV notification logic — read the plafons from the current structure annex, never from memory. - Section B sub-flags exclude each other. The annex carries an explicit "se exclud reciproc" matrix (e.g. B.I and B.VII, B.II and B.VI.1.23.1, B.VII and B.VIII, …). Combining an incompatible pair fails validation; a single VAT-vector action per filing is the safe shape.
felD=3(radiere) is finalised off-line. Per the instructions, striking the fiscal registration completes only after the taxpayer returns the original fiscal-registration certificate to the competent tax office (by post with confirmation, or at the registry) — the electronic filing starts, but does not complete, the removal.- Section F row 12 "Taxa logistică" is new in OPANAF 15/2026. The logistics
tax for managing extra-community goods flows (the wire's
702) was added by the January-2026 order; a form/validator from before that emission will not carry it.
v4 (live wire; NO standalone XSD)¶
- The soft page links no
.xsd/.xmlschema — it ships only as the soft PDF and the validator zip. The wire format comes from the smart PDF's XML-building JavaScript (D700_XML_0126_110326.pdf). Namespacemfp:anaf:dgti:d700:declaratie:v4(the PDF comments record the timeline: 2021 v2, 2024 v3, 2025 v4). - Root element is uppercase
<D700>(notdeclaratie700). - Required header:
luna,an,felD(2 = modification, 3 = deregistration; there is nofelDfor a plain first registration in this emission path), declarantnume_decl/pren_decl/func_decl,totalPlata_A,cif,den,dec_inreg. dec_inregis a 3-digit registration-declaration code, not a flag: the values the smart PDF branches on are010, 013, 015, 016, 020, 030, 040, 070(1is rejected — "valoarea '1' nu se afla in lista").010= the standard registration declaration.totalPlata_Ais the count of checked top-level sections — the sum of all seven flagsBifa_A+Bifa_B+Bifa_C+Bifa_D+Bifa_E+Bifa_F+Bifa_G(rule R14;Bifa_Eincluded — DUK-verified 2026-07-18:Bifa_A+Bifa_ErequirestotalPlata_A=2, and=1fails). An earlier transcription of the rule that droppedBifa_Ewas wrong. Yet another non-monetarytotalPlata_A; with onlyBifa_A="1"set it is1.- At least one section must be flagged (rule
E_Bife: "Formular D700 fara bife sectiuni"). Sections areBifa_A…Bifa_Gwith nested sub-flags (Bifa_A1,Bifa_B1…Bifa_B8,Bifa_C1/Bifa_C2, ...) and many per-section detail attributes — the form encodes the full fiscal vector, so a real filing is far larger than the envelope here.
DUK quirk: D700 never writes a plain "ok" on -v¶
This is the important operational finding. A structurally valid D700
makes -v write only an atentionare (warning):
A: validari globale
atentionare regula: ATENTIONARE: Formularul urmeaza sa fie prelucrat
la organul fiscal competent
Handled since 2026-07-17: anafpy.declaratii.duk._parse_err_file now
maps A: (atentionare) and W: lines to severity="warning" and treats a
run whose findings are all warnings as ok=True. So
DukIntegrator.validate() returns ok=True for a valid D700 with the
notice on DukResult.warnings; the declaratie_validate MCP tool returns
ok=true with the notice in its warnings list (relay it, do not treat it
as failure). -p (render) was always the reliable check — it validates
first and writes ok + the PDF — and still is. A blocking error
(E:/F:) continues to fail the run, and unrecognized non-ok output (an
empty err file from a broken dist) stays a failure — success is never
inferred from output DUK didn't clearly mark as clean.
- Minimal instance that renders (section-A modification, June 2026):
<?xml version="1.0" encoding="UTF-8"?>
<D700 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="mfp:anaf:dgti:d700:declaratie:v4 d700.xsd"
xmlns="mfp:anaf:dgti:d700:declaratie:v4"
luna="6" an="2026" felD="2"
nume_decl="Popescu" pren_decl="Ion" func_decl="Administrator"
totalPlata_A="1"
cif="1234565" den="EXEMPLU TEST SRL" dec_inreg="010"
Bifa_A="1" Bifa_A1="1"/>