Skip to main content

qtx-nav-evat

qtx-nav-evat is a focused Python client package for the NAV EVAT API, built on top of qtx-nav-core. qtx-nav-core provides the shared NAV transport, request envelope, authentication, XML and hashing utilities; this package adds EVAT-specific configuration, request bodies, response parsers, and a high-level client.

What It Contains

  • EvatConfig and EvatEnvironment for selecting the NAV EVAT endpoint
  • EvatClient for the supported EVAT operations
  • DeclarationSchema, AttachmentStatus, and DeclarationProcessingStatusCode string enums
  • typed request body classes for tax code, attachment, and declaration flows
  • parsed response dataclasses for attachment, tax code, and declaration responses
  • a local demo runner in main.py

Requirements

  • Python 3.12 or newer
  • qtx-nav-core>=0.2.3
  • lxml>=5.2.0

Installation

Install from the project root in editable mode during development:

pip install -e .

Or install it as a normal dependency in another project:

pip install qtx-nav-evat

Quick Start

from qtx_nav_core import NavAuth, NavRequestContext, NavSoftwareInfo
from qtx_nav_evat import DeclarationSchema, EvatClient, EvatConfig, EvatEnvironment

config = EvatConfig(environment=EvatEnvironment.TEST)

context = NavRequestContext(
    auth=NavAuth(
        login="login",
        password="password",
        tax_number="12345678",
        sign_key="sign-key",
    ),
    software=NavSoftwareInfo(),
)

with EvatClient(config=config, context=context) as client:
    catalog = client.query_tax_code_catalog(taxpoint_date="2025-01-01")
    print(catalog.valid_from, catalog.valid_to)
    print(len(catalog.tax_codes))

    attachments = client.query_attachment_list()
    print(len(attachments))

    data = client.query_declaration_data(
        declaration_processing_id="processing-id",
        declaration_schema=DeclarationSchema.A60_DECLARATION,
    )

Supported Operations

Tax Code Catalog

  • query_tax_code_catalog(taxpoint_date=None, request_body=None)

  • endpoint path: /queryTaxCodeCatalog

  • returns QueryTaxCodeCatalogResult

  • query_invoice_tax_code(invoice_number="", invoice_direction=InvoiceDirection.INBOUND, request_body=None)

  • endpoint path: /queryInvoiceTaxCode

  • returns QueryInvoiceTaxCodeResponse

  • query_customs_declaration_digest(page=1, declaration_direction=DeclarationDirection.IMPORTER, request_body=None)

  • endpoint path: /queryCustomsDeclarationDigest

  • returns QueryCustomsDeclarationDigestResponse

  • query_customs_declaration_tax_code(cdps_id="", resolution_id="", declaration_direction=DeclarationDirection.IMPORTER, request_body=None)

  • endpoint path: /queryCustomsDeclarationTaxCode

  • returns QueryCustomsDeclarationTaxCodeResponse

Attachments

  • query_attachment_list(request_body=None)

  • endpoint path: /queryAttachmentList

  • returns list[AttachmentListItem]

  • upload_attachment(file_path, request_body=None)

  • endpoint path: /manageAttachmentUpload

  • returns AttachmentUploadResult

  • purge_attachment(claim_check_id, request_body=None)

  • endpoint path: /purgeAttachment

  • returns True if the request completed without an exception

Declarations

  • query_declaration_list(taxpoint_date_from=None, taxpoint_date_to=None, request_body=None)

  • endpoint path: /queryDeclarationList

  • returns list[DeclarationListItem]

  • query_declaration_processing_status(declaration_processing_id="", declaration_schema=DeclarationSchema.VAT_DECLARATION, request_body=None)

  • endpoint path: /queryDeclarationProcessingStatus

  • returns QueryDeclarationProcessingStatusResponse

  • query_declaration_data(declaration_processing_id="", declaration_schema=DeclarationSchema.VAT_DECLARATION, request_body=None)

  • endpoint path: /queryDeclarationData

  • returns DeclarationDataResponse

  • query_vat_declaration_data(declaration_processing_id="", declaration_schema=DeclarationSchema.VAT_DECLARATION, request_body=None)

  • endpoint path: /queryVatDeclarationData

  • returns QueryVatDeclarationDataResponse with metadata and gzipped XML file bytes

  • declaration_upload(file_path=..., declaration_schema=DeclarationSchema.VAT_DECLARATION, period_start=None, period_end=None)

  • runs manageDeclarationUpload, manageDeclarationPartition, and manageDeclarationFinalize

  • gzips and splits the XML file before partition upload

  • uses period_start/period_end when provided; otherwise reads the VAT declaration period from the XML

  • returns the resulting declarationProcessingId

  • declaration_submission(declaration_processing_id="", declaration_schema=DeclarationSchema.VAT_DECLARATION, request_body=None)

  • endpoint path: /manageDeclarationSubmission

  • returns True on success and False if an exception is raised

declaration_schema accepts DeclarationSchema.VAT_DECLARATION ("VAT_DECLARATION") and DeclarationSchema.A60_DECLARATION ("A60"). Response parsers expose declaration schema, attachment status, and declaration processing status code fields as string enum values.

Multipart download example:

result = client.query_vat_declaration_data(
    declaration_processing_id="processing-id",
    declaration_schema=DeclarationSchema.VAT_DECLARATION,
)

print(result.declaration_schema)
print(result.original_request_version)

if result.has_file:
    result.save_file()
    result.save_xml("vat-declaration.xml")

query_vat_declaration_data() hides the multipart parsing. The returned file_content is the gzipped declaration XML file part as bytes. Use save_file() to persist the gzipped file, extract_xml() to get decompressed XML bytes, or save_xml(path) to write the decompressed XML.

Configuration

EvatConfig currently selects one of the built-in NAV EVAT base URLs:

  • EvatEnvironment.TEST -> https://api-test.eafa.nav.gov.hu/analyticsService/v1
  • EvatEnvironment.PRODUCTION -> https://api.eafa.nav.gov.hu/analyticsService/v1
from qtx_nav_evat import EvatConfig, EvatEnvironment

config = EvatConfig(environment=EvatEnvironment.TEST)

Local Demo Script

main.py is a local manual test runner configured through top-level constants. Fill in the credentials and select the operation before running it.

Common constants:

  • ENVIRONMENT
  • OPERATION
  • USERNAME
  • PASSWORD
  • TAX_NUMBER
  • SIGN_KEY
  • TAXPOINT_DATE
  • ATTACHMENT_FILE
  • LOG_XML
  • INCLUDE_SOFTWARE_INFO

PowerShell example:

.\.venv\Scripts\python.exe .\main.py

Documentation

Development Notes

  • the project uses a standard src layout
  • packaging is configured in pyproject.toml
  • tests currently include an import smoke test
  • request and response XML can be inspected through on_request_xml and on_response_xml

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

qtx_nav_evat-0.4.0.tar.gz (33.8 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

qtx_nav_evat-0.4.0-py3-none-any.whl (33.5 kB view details)

Uploaded Python 3

File details

Details for the file qtx_nav_evat-0.4.0.tar.gz.

File metadata

  • Download URL: qtx_nav_evat-0.4.0.tar.gz
  • Upload date:
  • Size: 33.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/7.0.0 CPython/3.14.3

File hashes

Hashes for qtx_nav_evat-0.4.0.tar.gz
Algorithm Hash digest
SHA256 fbeb32a416d9b854779a99651eeef806fc2addc0e863cafd3c883ab46d84a8a1
MD5 4a4be2a44127b406b787ebac98873103
BLAKE2b-256 3f04ef1403322b79675fc8b5af9b7592f96dc14fb39dfcd7df83ed0f6816c28e

See more details on using hashes here.

File details

Details for the file qtx_nav_evat-0.4.0-py3-none-any.whl.

File metadata

  • Download URL: qtx_nav_evat-0.4.0-py3-none-any.whl
  • Upload date:
  • Size: 33.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/7.0.0 CPython/3.14.3

File hashes

Hashes for qtx_nav_evat-0.4.0-py3-none-any.whl
Algorithm Hash digest
SHA256 629a59f118b5c4fa547058be2cd6e006f3d3ccb1bb5e3230ba1efa1b888d15b3
MD5 6cb1b9e110af81bf9932e46535b2a902
BLAKE2b-256 69b2264852c2f823ff382f83edd31092ebc93238a0c48d451cbb0b52ee945baa

See more details on using hashes here.

Release history Release notifications | RSS feed

0.5.2

2 files

0.5.1

2 files

0.5.0

2 files

This release

0.4.0 This release

2 files

0.3.0

2 files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page