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)

  • runs manageDeclarationUpload, manageDeclarationPartition, and manageDeclarationFinalize

  • gzips and splits the XML file before partition upload

  • 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:
    Path(result.file_name or "vat-declaration.xml.gz").write_bytes(result.file_content)

query_vat_declaration_data() hides the multipart parsing. The returned file_content is the gzipped declaration XML file part as bytes.

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.3.0.tar.gz (32.7 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.3.0-py3-none-any.whl (33.1 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: qtx_nav_evat-0.3.0.tar.gz
  • Upload date:
  • Size: 32.7 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.3.0.tar.gz
Algorithm Hash digest
SHA256 d49d8f118736af48a92813480347b4b98bf2394917e1332696c2e80c3f90047d
MD5 3f493889073099d0d5252f314280a691
BLAKE2b-256 4a820330e22c2b9687a147798d2121192866cc8dbf442440a877f2688f21142a

See more details on using hashes here.

File details

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

File metadata

  • Download URL: qtx_nav_evat-0.3.0-py3-none-any.whl
  • Upload date:
  • Size: 33.1 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.3.0-py3-none-any.whl
Algorithm Hash digest
SHA256 870f4268a0f52f846f3ad60fa4b4b78c556cbce2145b29094b3a0dba9dcd24f2
MD5 a9eb97606cf67adb98e896c98fc05087
BLAKE2b-256 eab212e7f929d542cc09746b608be00220830a48c2a8def6ea64392796782304

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

0.4.0

2 files

This release

0.3.0 This release

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