DOCUMENT STRUCTURE

decHfrInternal (decHfrInternal) REQUIRED [1..1]
Submission of data for transport of goods with high fiscal risk, starting and ending in the territory of the country (Bulgaria)
part1 (decHfrInternal/part1) REQUIRED [1..1]
shipper (decHfrInternal/part1/shipper) REQUIRED [1..1]
Supplier/Sender details
ident (decHfrInternal/part1/shipper/ident) REQUIRED [1..1]
base: bulstatminLength: 9
Identification number of Supplier/Sender: - PIN: Civil Registration Number for Bulgarian citizens - FPN: (Foreigner's Personal Number) - PN: (Personal Number) - NRA service number - UIC/BULSTAT - Company Unified Identification Code VALIDATION RULES: • Minimum 9 digits, maximum 13 digits • Must be numeric only (0-9) • Type must match identtype field
identtype (decHfrInternal/part1/shipper/identtype) : identtype REQUIRED [1..1]
Type of identification number of Supplier/Sender: 1 - UIC/BULSTAT - Company Unified Identification Code 2 - PIN = Civil Registration Number for Bulgarian citizens / PIN (Personal Identification Number) 3 - FPN - PNF (Foreigner's Personal Number) / PN (Personal Number) 5 - National Revenue Agency service number
uin (decHfrInternal/part1/uin) : xs:string OPTIONAL [0..1]
maxLength: 13
Unique transport number (UIN) VALIDATION RULES: • Only use this field for corrections to previously submitted declarations • Must be the UIN from the original declaration (13 characters) • For initial declarations, do NOT include this field
carrier (decHfrInternal/part1/carrier) OPTIONAL [0..1]
Carrier details
reprperson (decHfrInternal/part1/carrier/reprperson) OPTIONAL [0..1]
Person details
isperson (decHfrInternal/part1/carrier/reprperson/isperson) : xs:boolean REQUIRED [1..1]
Is person (True - if the carrier is a person/ False - if the carrier is a company)
name (decHfrInternal/part1/carrier/reprperson/name) : xs:string REQUIRED [1..1]
maxLength: 200
Person name
egn (decHfrInternal/part1/carrier/reprperson/egn) : egn REQUIRED [1..1]
Carrier identification number VALIDATION RULES: • Must match identtype: - If identtype = 2 (PIN): exactly 10 digits - If identtype = 3 (FPN): exactly 10 digits - If identtype = 5 (NRA): varies - If identtype = 6 (Other): varies
identtype (decHfrInternal/part1/carrier/reprperson/identtype) : egntype REQUIRED [1..1]
Carrier's identification number type: 2 - PIN = Civil Registration Number for Bulgarian citizens / PIN (Personal Identification Number) 3 - FPN - PNF (Foreigner's Personal Number) / PN (Personal Number) 5 - National Revenue Agency service number 6 - Other
reprfirm (decHfrInternal/part1/carrier/reprfirm) OPTIONAL [0..1]
Legal entity or company details
isfirm (decHfrInternal/part1/carrier/reprfirm/isfirm) : xs:boolean REQUIRED [1..1]
Is Company - (False - if the carrier is a person/ True - if the carrier is a company)
name (decHfrInternal/part1/carrier/reprfirm/name) : xs:string REQUIRED [1..1]
maxLength: 200
Company name
bulstat (decHfrInternal/part1/carrier/reprfirm/bulstat) : vin REQUIRED [1..1]
Company identification number
identtype (decHfrInternal/part1/carrier/reprfirm/identtype) : vintype REQUIRED [1..1]
Company identification number type: 1 - UIC/BULSTAT - Company Unified Identification Code 5 - National Revenue Agency service number 6 - Other 9 - VIN number - Vehicle Identification Number
organizer (decHfrInternal/part1/organizer) OPTIONAL [0..1]
Details about Person/Company organizing the transport
reprperson (decHfrInternal/part1/organizer/reprperson) OPTIONAL
Физическо лице [EN: Natural person - same structure as carrier/reprperson]
reprfirm (decHfrInternal/part1/organizer/reprfirm) OPTIONAL
Company name
regvehicle (decHfrInternal/part1/regvehicle) : xs:string REQUIRED [1..1]
maxLength: 15pattern: [0-9A-Z]{1,15}
Registration number of the main transport vehicle VALIDATION RULES: • Maximum 15 characters • Only uppercase Latin letters (A-Z) and digits (0-9) • No spaces or special characters allowed
regtrailer1 (decHfrInternal/part1/regtrailer1) : xs:string OPTIONAL [0..1]
maxLength: 15pattern: [0-9A-Z]{1,15}
Registration number of additional transport vehicle VALIDATION RULES: • Maximum 15 characters • Only uppercase Latin letters (A-Z) and digits (0-9) • No spaces or special characters allowed
regtrailer2 (decHfrInternal/part1/regtrailer2) : xs:string OPTIONAL [0..1]
maxLength: 15pattern: [0-9A-Z]{1,15}
Registration number of additional transport vehicle VALIDATION RULES: • Maximum 15 characters • Only uppercase Latin letters (A-Z) and digits (0-9) • No spaces or special characters allowed
istransfer (decHfrInternal/part1/istransfer) : xs:boolean REQUIRED [1..1]
Transferring? (True if there is info about transferring goods to another carrier) VALIDATION RULES: • If istransfer = true, the following fields become MANDATORY: - transferaddress - transferdate - transfertime - transcarrier
transferaddress (decHfrInternal/part1/transferaddress) : addressdetailed OPTIONAL [0..1]
Address of transferring goods to another carrier in a structured form VALIDATION RULES: • MANDATORY if istransfer = true • Either (street AND numb) OR localaddress must be provided • ekatte field is always REQUIRED
localaddress(decHfrInternal/part1/transferaddress/localaddress) : xs:string OPTIONAL[0..1]
maxLength: 100
Full address text
street(decHfrInternal/part1/transferaddress/street) : xs:string OPTIONAL[0..1]
maxLength: 100
Street
numb(decHfrInternal/part1/transferaddress/numb) : xs:string OPTIONAL[0..1]
maxLength: 5
Number
ekatte(decHfrInternal/part1/transferaddress/ekatte) : xs:string REQUIRED[1..1]
maxLength: 5pattern: [0-9]{1,5}
EKATTE код [EN: EKATTE code - always required for any address]
transferdate (decHfrInternal/part1/transferdate) : xs:date OPTIONAL [0..1]
Date of transfer VALIDATION RULES: • MANDATORY if istransfer = true • Must be after loaddate • Must be before receiveddate
transfertime (decHfrInternal/part1/transfertime) : xs:string OPTIONAL [0..1]
maxLength: 5format: HH:MM
Transfer time in format hh:mm (00:00) VALIDATION RULES: • Format: HH:MM (24-hour format) • MANDATORY if istransfer = true • Combined transferdate/transfertime must be between loaddate/loadtime and receiveddate/receivedtime
transcarrier (decHfrInternal/part1/transcarrier) OPTIONAL [0..1]
Second carrier datа on transfer if there is different carrier VALIDATION RULES: • MANDATORY if istransfer = true • Must provide either reprperson OR reprfirm (not both)
transregvehicle (decHfrInternal/part1/transregvehicle) : xs:string OPTIONAL [0..1]
maxLength: 15pattern: [0-9A-Z]{1,15}
Registration number of the main transport vehicle after the transfer
transregtrailer1 (decHfrInternal/part1/transregtrailer1) OPTIONAL [0..1]
Registration number of additional transport vehicle 1 after the transfer
transregtrailer2 (decHfrInternal/part1/transregtrailer2) OPTIONAL [0..1]
Registration number of additional transport vehicle 2 after the transfer
loadaddress (decHfrInternal/part1/loadaddress) : addressdetailed REQUIRED [1..1]
Address of initially loading of the goods VALIDATION RULES: • Either (street AND numb) OR localaddress must be provided • ekatte field is always REQUIRED
localaddress (decHfrInternal/part1/loadaddress/localaddress) : xs:string OPTIONAL [0..1]
maxLength: 100
Full address text
street (decHfrInternal/part1/loadaddress/street) : xs:string OPTIONAL [0..1]
maxLength: 100
Street
numb (decHfrInternal/part1/loadaddress/numb) : xs:string OPTIONAL [0..1]
maxLength: 5
Номер [EN: Number]
ekatte (decHfrInternal/part1/loadaddress/ekatte) : xs:string REQUIRED [1..1]
maxLength: 5pattern: [0-9]{1,5}
EKATTE code - National classification of populated areas - always required
loaddate (decHfrInternal/part1/loaddate) : xs:date REQUIRED [1..1]
Date of initially loading of the goods VALIDATION RULES: • Must be in the future (after the current date/time when declaration is submitted) • Must be before receiveddate
loadtime (decHfrInternal/part1/loadtime) : xs:string REQUIRED [1..1]
maxLength: 5format: HH:MM
Time of initially loading of the goods in format hh:mm (00:00) VALIDATION RULES: • Format: HH:MM (24-hour format) • Combined loaddate/loadtime must be in the future • Combined loaddate/loadtime must be before receiveddate/receivedtime
transhipment (decHfrInternal/part1/transhipment) OPTIONAL [0..1]
Data on the transport of goods by water, rail and/or air and requiring transhipment
istranshipment (decHfrInternal/part1/transhipment/istranshipment) : xs:boolean REQUIRED
True if there is info about transport of goods by water, rail and/or air and requiring transhipment VALIDATION RULES: • If istranshipment = true, the following fields become MANDATORY: - transporttype - transdate - transtime - transaddress • For initial declarations: transdate/transtime must equal loaddate/loadtime
transporttype (decHfrInternal/part1/transhipment/transporttype) OPTIONAL
123
Type of transport from which the goods are transshipped 1 - By water; 2 - By rail; 3 - By air.
transdate (decHfrInternal/part1/transhipment/transdate) : xs:date OPTIONAL
Transhipment date
transtime (decHfrInternal/part1/transhipment/transtime) OPTIONAL
Transhipment time in format hh:mm (00:00)
transaddress (decHfrInternal/part1/transhipment/transaddress) : address OPTIONAL
Transhipment address is a structured form
localaddress(decHfrInternal/part1/transhipment/transaddress/localaddress) : xs:string OPTIONAL[0..1]
maxLength: 100
Улица, №, ж.к., бл., вх., ап. [EN: Full address text]
street(decHfrInternal/part1/transhipment/transaddress/street) : xs:string OPTIONAL[0..1]
maxLength: 100
Street
numb(decHfrInternal/part1/transhipment/transaddress/numb) : xs:string OPTIONAL[0..1]
maxLength: 5
Number
ekatte(decHfrInternal/part1/transhipment/transaddress/ekatte) : xs:string REQUIRED[1..1]
maxLength: 5pattern: [0-9]{1,5}
EKATTE code - always required for any address
cr (decHfrInternal/part1/cr) REQUIRED [1..1]
Данни за получател/купувач [EN: Recipient/Buyer data]
rowenum (decHfrInternal/part1/cr/rowenum) REQUIRED [1..unbounded]
Recipient/Buyer row
crident (decHfrInternal/part1/cr/rowenum/crident) : bulstat REQUIRED
Recipient/Buyer identification number
cridenttype (decHfrInternal/part1/cr/rowenum/cridenttype) : identtype REQUIRED
Identification number type: 1 - UIC/BULSTAT - Company Unified Identification Code 2 - PIN = Civil Registration Number for Bulgarian citizens / PIN (Personal Identification Number) 3 - FPN - PNF (Foreigner's Personal Number) / PN (Personal Number) 5 - National Revenue Agency service number
crname (decHfrInternal/part1/cr/rowenum/crname) : xs:string REQUIRED
maxLength: 200
Recipient/Buyer name
address (decHfrInternal/part1/cr/rowenum/address) REQUIRED
Data and addresses for receiving/unloading goods for the transported goods
rowenum (decHfrInternal/part1/cr/rowenum/address/rowenum) REQUIRED [1..unbounded]
Address row
receivedaddress (decHfrInternal/part1/cr/rowenum/address/rowenum/receivedaddress) : address REQUIRED
Address of receipt/unloading of the goods/goods - in structured form VALIDATION RULES: • Either (street AND numb) OR localaddress must be provided • ekatte field is always REQUIRED
localaddress(decHfrInternal/part1/cr/rowenum/address/rowenum/receivedaddress/localaddress) : xs:string OPTIONAL[0..1]
maxLength: 100
Full address text
street(decHfrInternal/part1/cr/rowenum/address/rowenum/receivedaddress/street) : xs:string OPTIONAL[0..1]
maxLength: 100
Street
numb(decHfrInternal/part1/cr/rowenum/address/rowenum/receivedaddress/numb) : xs:string OPTIONAL[0..1]
maxLength: 5
Number
ekatte(decHfrInternal/part1/cr/rowenum/address/rowenum/receivedaddress/ekatte) : xs:string REQUIRED[1..1]
maxLength: 5pattern: [0-9]{1,5}
EKATTE code - always required for any address
receiveddate (decHfrInternal/part1/cr/rowenum/address/rowenum/receiveddate) : xs:date REQUIRED
Дата на получаване [EN: Receiving date] VALIDATION RULES: • Must be after loaddate • Must be after transferdate (if transfer applies)
receivedtime (decHfrInternal/part1/cr/rowenum/address/rowenum/receivedtime) OPTIONAL
Time of receipt/unloading of the goods/goods in hh:mm fromat (00:00) VALIDATION RULES: • Format: HH:MM (24-hour format) • Combined receiveddate/receivedtime must be after loaddate/loadtime • Combined receiveddate/receivedtime must be after transferdate/transfertime (if transfer applies)
goods (decHfrInternal/part1/cr/rowenum/address/rowenum/goods) REQUIRED
Data about the transported goods
rowenum (decHfrInternal/part1/cr/rowenum/address/rowenum/goods/rowenum) REQUIRED [1..unbounded]
Goods row
code (decHfrInternal/part1/cr/rowenum/address/rowenum/goods/rowenum/code) : xs:string REQUIRED
maxLength: 20
Combined Nomenclature commodity code only for goods from the list of goods with high fiscal risk (for the selected group)
quantitytype (decHfrInternal/part1/cr/rowenum/address/rowenum/goods/rowenum/quantitytype) OPTIONAL
кгм2броя
Unit of measure VALIDATION RULES: • MANDATORY from 01.05.2025 for goods using new codes added by Order № ZMF-237/31.03.2025 • For goods with existing codes, this field remains OPTIONAL • Allowed values: кг (kilograms), м2 (square meters), броя (pieces)
quantitynet (decHfrInternal/part1/cr/rowenum/address/rowenum/goods/rowenum/quantitynet) : xs:decimal REQUIRED
Goods quantity - net VALIDATION RULES: • Must be greater than 0.00 • Must be less than or equal to quantitygross (if quantitygross is provided)
quantitygross (decHfrInternal/part1/cr/rowenum/address/rowenum/goods/rowenum/quantitygross) : xs:decimal OPTIONAL
Goods quantity - gross VALIDATION RULES: • Must be greater than or equal to 0.00 • Must be greater than or equal to quantitynet
price (decHfrInternal/part1/cr/rowenum/address/rowenum/goods/rowenum/price) : xs:decimal REQUIRED
Goods value in BGN for amounts relating to periods up to 31.12.2025, and Euro for amounts relating to periods from 01.01.2026. VALIDATION RULES: • MANDATORY when purpose = 01 (delivery) or 05 (storage) • When provided, must be greater than 0.00 • Currency: BGN until 31.12.2025, EUR from 01.01.2026
purpose (decHfrInternal/part1/cr/rowenum/address/rowenum/goods/rowenum/purpose) REQUIRED
01020304050607
Purpose of transported high fiscal risk goods: 01 delivery of goods; 02 complaint of goods; 03 donation of goods; 04 processing of goods; 06 other. VALIDATION RULES: • If purpose = 01 (delivery) OR 05 (storage), then price field is REQUIRED and must be > 0.00 • If purpose = 06 (other), purposeother field should be filled
purposeother (decHfrInternal/part1/cr/rowenum/address/rowenum/goods/rowenum/purposeother) : xs:string OPTIONAL
maxLength: 1000
Purpose of the goods: • complaint; • other;
cname (decHfrInternal/part1/cname) : xs:string REQUIRED [1..1]
maxLength: 200
Contact person data - Name, Surname
cphone (decHfrInternal/part1/cphone) : xs:string REQUIRED [1..1]
maxLength: 10
Contact person phone
cphonecode (decHfrInternal/part1/cphonecode) : xs:string REQUIRED [1..1]
maxLength: 10pattern: (\+)?[0-9 \-]{0,10}
Contact person phone code VALIDATION RULES: • Maximum 10 characters • Pattern: optional '+' followed by digits (0-9), spaces, or hyphens (-) • Example: +359, 00359, +44
cpemail (decHfrInternal/part1/cpemail) : xs:string REQUIRED [1..1]
maxLength: 200pattern: [^@]+@[^\.]+\..+
Email address for correspondence of the obligated person for fiscal control proceedings VALIDATION RULES: • Maximum 200 characters • Must be valid email format: [chars]@[chars].[domain] • No spaces allowed
dname (decHfrInternal/part1/dname) : xs:string REQUIRED [1..1]
maxLength: 200
Declarant name
iscorrect (decHfrInternal/part1/iscorrect) : xs:boolean REQUIRED [1..1]
True/False - I declare that the information provided in this form is true and accurate. I am aware that I bear responsibility for false data under Art. 313 of the Criminal Code VALIDATION RULES: • Must be set to true to submit the declaration • By setting to true, declarant acknowledges criminal liability under Article 313 of the Criminal Code for providing false information