Skip to main content

"KSeF Python client for creating invoices"

Project description

KSeF utils

ksef-utils Release ksef-utils Test PyPI version PyPI - Python Version Documentation Status

This project contains Python utilities and example requests that can be helpful when integrating with Polish central invoicing system called Krajowy System e-Faktur (KSeF).

Installation

Creating python virtual environment

See virtualenvwrapper documentation.

$ mkvirtualenv ksef
$ workon ksef
(ksef) $

Installing package from source

(ksef) $ git clone https://github.com/pprzetacznik/ksef-utils.git
(ksef) $ cd ksef-utils
(ksef) $ pip install -e .

Installing package from PyPI

(ksef) $ pip install ksef-utils

Run tests

Set up secrets

Log in to https://ksef-test.mf.gov.pl/web/ and generate your individual KSEF_TOKEN.

#!/bin/bash

export KSEF_TOKEN="..."
export KSEF_ENV="test"
export KSEF_NIP="..."
export KSEF_SIGN_CERT_PATH="cert.pem"
export KSEF_SIGN_KEY_PATH="privkey.pem"
export KSEF_SIGN_CA_PATH="cert.pem"

Generate test cert

KSEF_NIP=${KSEF_NIP:-2222222222}
KSEF_SUBJECT="/CN=John Doe/SN=Doe/GN=John/O=My Corp/C=PL/L=Lesser Voivodeship/serialNumber=NIP-${KSEF_NIP}/description=John Doe NIP-${KSEF_NIP}"
openssl req -x509 \
  -nodes \
  -subj "${KSEF_SUBJECT}" \
  -days 365 \
  -newkey rsa \
  -keyout $KSEF_SIGN_KEY_PATH \
  -out $KSEF_SIGN_CERT_PATH

Run pytest framework

(ksef) $ pip install -r requirements.txt
(ksef) $ pytest -svvv

Markers

Run all e2e/functional/current tests

(ksef) $ pytest -svvv tests/test_ksef.py -m "e2e and not ignore"
(ksef) $ pytest -svvv tests/test_ksef.py -m "functional and not ignore"
(ksef) $ pytest -svvv tests/test_ksef.py -m "current and not ignore"
(ksef) $ ./run_tests.sh
(ksef) $ TESTS_MARKERS="init_signed and functional and not ignore" ./run_tests.sh

Example

See tests/test_e2e.py for detailed examples of usage.

from ksef_utils.server import KSEFServer, KSEFService
from ksef_utils.config import TestConfig, DemoConfig, ProdConfig

config = TestConfig()
server = KSEFServer(config)
service = KSEFService(service)

invoice_data = {
    # ...
    # see tests/conftest.py for example json invoice
}

session_token = service.init_signed()
response_send_invoice = service.send_invoice(**invoice_data)

Using cli utilities

(ksef) $ python -m ksef_utils keygen --identifier 1111111111 --identifier_type NIP --working_directory .
(ksef) $ pip install .
(ksef) $ which ksef-utils
(...)/.envs/bin/ksef-utils
(ksef) $ ksef-utils keygen --identifier 1111111111 --identifier_type PESEL --working_directory .

OpenAPI

/openapi/gtw/svc/api/KSeF-common.yaml
/openapi/gtw/svc/api/KSeF-batch.yaml
/openapi/gtw/svc/api/KSeF-online.yaml

Publish new release

$ git tag v1.0
$ git push origin v1.0

Building documentation

(ksef) $ sphinx-build -M html docs docs_build

KSEF references

Contributing

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

ksef-utils-1.4.tar.gz (29.5 kB view details)

Uploaded Source

Built Distribution

ksef_utils-1.4-py3-none-any.whl (13.6 kB view details)

Uploaded Python 3

File details

Details for the file ksef-utils-1.4.tar.gz.

File metadata

  • Download URL: ksef-utils-1.4.tar.gz
  • Upload date:
  • Size: 29.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.11.10

File hashes

Hashes for ksef-utils-1.4.tar.gz
Algorithm Hash digest
SHA256 adb18a4588aedfa47e30e4ed02c275838bf6e12316b66ef4fc80ef843fb8514d
MD5 a6e7bee8d1ffab14b9c505b503268adb
BLAKE2b-256 f8d8025ae474ced2148d157ab767335e1d65d88c6cce10d54143c377cd9d8acd

See more details on using hashes here.

File details

Details for the file ksef_utils-1.4-py3-none-any.whl.

File metadata

  • Download URL: ksef_utils-1.4-py3-none-any.whl
  • Upload date:
  • Size: 13.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.11.10

File hashes

Hashes for ksef_utils-1.4-py3-none-any.whl
Algorithm Hash digest
SHA256 68eebfb9ad2b729be6f000a9143939a48abf21d9a70771c963c518861e907a86
MD5 186ea2d09c566c57a70f9df0530276a2
BLAKE2b-256 6c1b41ddbd03ec74a21c30695c1afb7031b6be6365e3e47e9cf2fc304f2ab302

See more details on using hashes here.

Supported by

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