"KSeF Python client for creating invoices"
Project description
KSeF utils
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
- https://www.podatki.gov.pl/ksef/
- https://ksef-test.mf.gov.pl/web/
- https://www.youtube.com/watch?v=dnBGO6IPtzA
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)
Built Distribution
ksef_utils-1.4-py3-none-any.whl
(13.6 kB
view details)
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
Algorithm | Hash digest | |
---|---|---|
SHA256 | adb18a4588aedfa47e30e4ed02c275838bf6e12316b66ef4fc80ef843fb8514d |
|
MD5 | a6e7bee8d1ffab14b9c505b503268adb |
|
BLAKE2b-256 | f8d8025ae474ced2148d157ab767335e1d65d88c6cce10d54143c377cd9d8acd |
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
Algorithm | Hash digest | |
---|---|---|
SHA256 | 68eebfb9ad2b729be6f000a9143939a48abf21d9a70771c963c518861e907a86 |
|
MD5 | 186ea2d09c566c57a70f9df0530276a2 |
|
BLAKE2b-256 | 6c1b41ddbd03ec74a21c30695c1afb7031b6be6365e3e47e9cf2fc304f2ab302 |