Skip to main content

Client for Croatian Fiskalizacija tax service

Project description

fiskal-hr

Python 3 package for integrating with Croatian tax authority Fiskalizacija service.

Scope

The package provides full integration with the Fiskalizacija service, including:

  • checking invoice details in test (DEMO) mode - FiskalClient.check_invoice()
  • submitting an invoice - FiskalClient.submit_invoice()
  • submitting a fiscalization document - FiskalClient.submit_document()
  • changing the payment method - FiskalClient.change_payment_method()

Requirements

You'll need your client certificate, Fiskalizacija service certificate and FINA root CA certificates. Read the integration guide for detailed steps how to get and prepare the certificates.

You'll also need the libxmlsec1 library installed on your computer.

Quickstart

  1. Install fiskal-hr:

    pip install fiskal-hr
    
  2. Make sure you have your certificates ready, then initialize the fiskal client package:

    from fiskalhr.invoice import Invoice
    from fiskalhr.ws import FiskalClient
    from fiskalhr.signature import Signer, Verifier
    
    signer = Signer("path/to/your-client-cert.pem")  # if encrypted, you'll need the password as well
    verifier = Verifier("path/to/service-cert.pem", ["path/to/fina-demo-ca-combined.pem"])
    fiskal_client = FiskalClient(
        "path/to/fina-demo-ca-combined.pem",
        "path/to/wsdl/FiskalizacijaService.wsdl",
        signer,
        verifier,
    )
    
  3. Check communication with the service:

    fiskal_client.test_service()
    

    This sends a "ping" message to the echo service, to check that basic connectivity is working. If there's an error, the test_service() method will raise an exception.

  4. Create a test invoice and ask the service to do sanity checks on it (this only works in the demo mode):

    invoice = Invoice(fiskal_client, oib="YOUR-OIB", invoice_number="1/X/1", total=100)
    
    fiskal_client.check_invoice(invoice)
    

    If there are any errors, the check_invoice() method will raise fiskalhr.ResponseError with the error details in the details attribute.

    Note that this does only basic sanity checking. For example, it will not check if the point of sale location (code X in the invoice number in this example) is registered.

Testing

This package has 100% unit test coverage. To run the tests:

pytest

Coverage report is generated automatically. To export it in HTML form, run coverage html.

The tests do not contact Fiskalizacija service or any other external service, nor do they require actual certificates. They are entirely self-contained.

More info about testing and certificates is available in the testing guide.

Contributing

Found a bug or think something can be improved? All contributions are welcome!

Before changing any code, please open a GitHub issue explaining what you'd like to do. This will ensure that your planned contribution fits well with the rest of the package and minimize the chance your pull request will be rejected.

If changing any code, please ensure that after your changes:

  • all tests pass and the code coverage is still 100%
  • black, flake8 and isort find no problems
  • the code doesn't depend on any external service

Copyright and license

Copyright (C) 2022 by Senko Rasic senko@senko.net

This package may be used and distributed under the terms of MIT license. See the LICENSE file for details.

Project details


Download files

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

Source Distribution

fiskal-hr-0.9.0.tar.gz (16.8 kB view details)

Uploaded Source

Built Distribution

fiskal_hr-0.9.0-py3-none-any.whl (19.7 kB view details)

Uploaded Python 3

File details

Details for the file fiskal-hr-0.9.0.tar.gz.

File metadata

  • Download URL: fiskal-hr-0.9.0.tar.gz
  • Upload date:
  • Size: 16.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.1 CPython/3.10.6

File hashes

Hashes for fiskal-hr-0.9.0.tar.gz
Algorithm Hash digest
SHA256 244d2e01bdbe1a01bfbd48498a35b8cacba1820fbb47dedd9953b522f3a96c7d
MD5 e0ff4725abd9625f783cb476f250061d
BLAKE2b-256 5c23328b992ae0b9dbdc63e82b4dc6e3fa96b23fd16543b92664d000d3238ae6

See more details on using hashes here.

File details

Details for the file fiskal_hr-0.9.0-py3-none-any.whl.

File metadata

  • Download URL: fiskal_hr-0.9.0-py3-none-any.whl
  • Upload date:
  • Size: 19.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.1 CPython/3.10.6

File hashes

Hashes for fiskal_hr-0.9.0-py3-none-any.whl
Algorithm Hash digest
SHA256 37e23aba51c8d317fd863ce644f850e032c94f3027f1a4d0dbc2b518489ec75b
MD5 f1ac9d1935044183c5d865ae1fea94b1
BLAKE2b-256 8224f3253e12392c57a3d731b99c8cf16e78995622780214168474e759549f5e

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page