PHPackages                             szymon-s292/ksef-client - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. szymon-s292/ksef-client

ActiveLibrary

szymon-s292/ksef-client
=======================

A KSeF 2.0 client library for PHP with support for XAdES authentication.

1.0.0(yesterday)00

Since Jul 19Compare

[ Source](https://github.com/szymon-s292/ksef-client)[ Packagist](https://packagist.org/packages/szymon-s292/ksef-client)[ RSS](/packages/szymon-s292-ksef-client/feed)WikiDiscussions Synced today

READMEChangelogDependencies (1)Versions (2)Used By (0)

KSeF Client
===========

[](#ksef-client)

Biblioteka PHP do komunikacji z API KSeF 2.0 z możliwością autoryzacji przez certyfikat KSeF - jedyną możliwość autoryzacji od 1 stycznia 2027 roku. Biblioteka jest bardzo prosta w użyciu i nie wielka.

Setup
-----

[](#setup)

```
composer require szymon-s292/ksef-client

```

Klasy biblioteki
----------------

[](#klasy-biblioteki)

- Enum 'KsefMode' - dostępne środowiska KSeF w jakim ma działać biblioteka. (::TEST - Testowe, ::DEMO - Przedprodukcyjne, ::PROD - Produkcyjne)
- Klasa 'Auth' - uwierzytelnianie przez certyfikat, token i możliwość automatycznego nimi zarządzania w bazie MySQL (TokenManager).

```
use KSeFClient\KsefMode;
use KSeFClient\Auth;

$auth = new Auth(
    "1091041978",   // nip podmiotu
    KsefMode::TEST, // środowisko KSeF
    null,           // token KSeF - puste jeżeli uwierzytelniasz się przez certyfikat
    $ksef_cert,     // certyfikat KSeF
    $ksef_pkey,     // klucz prywatny KSeF
    $pkey_pass,     // hasło do klucza prywatnego KSeF
    false,          // czy używać automatycznego przechowywania tokenów w bazie
);
```

- Klasa 'InteractiveSession' - zarządzanie sesją interaktywną do wysyłki faktur i pobierania ich statusu.

```
use KSeFClient\KsefMode;
use KSeFClient\InteractiveSession;

$interactive_session = new InteractiveSession(
    $auth,         // klasa 'Auth' utworzona wcześniej do uwierzytelnienia w KSeF
    KsefMode::TEST // środowisko KSeF
);
```

- Klasa 'KsefApi' - bezpośrednia interakcja z API

```
use KSeFClient\KsefApi;
use KSeFClient\KsefMode;

$ksef_api = new KsefApi(
    KsefMode::TEST, // środowisko KSeF
);
```

Przykłady użycia
----------------

[](#przykłady-użycia)

#### Pobranie tokenów dostępowych przy użyciu autoryzacji certyfikatem.

[](#pobranie-tokenów-dostępowych-przy-użyciu-autoryzacji-certyfikatem)

```
require_once __DIR__ . '/../vendor/autoload.php';

use KSeFClient\KsefMode;
use KSeFClient\Auth;

// wczytanie certyfikatu i klucza prywatnego
$ksef_cert = file_get_contents(__DIR__ . "/1091041978.crt");
$ksef_pkey = file_get_contents(__DIR__ . "/1091041978.key");
$pkey_pass = "HASLO_KLUCZA_PRYWATNEGO";

// utworzenie klasy z autoryzacją certyfikatem
$auth = new Auth("1091041978", KsefMode::TEST, null, $ksef_cert, $ksef_pkey, $pkey_pass, false);

// wygenerowanie podpisu XAdES, utworzenie sesji i pobranie tokenów autoryzujących
$tokens = $auth->auth_with_xades();

// zwracana wartość
/*
[
    "access_token" => "",
    "access_token_expires_at" => "",
    "refresh_token" => "",
    "refresh_token_expires_at" => ""
]
*/
```

#### Pobranie tokenów dostępowych przy użyciu autoryzacji tokenem.

[](#pobranie-tokenów-dostępowych-przy-użyciu-autoryzacji-tokenem)

```
require_once __DIR__ . '/../vendor/autoload.php';

use KSeFClient\KsefMode;
use KSeFClient\Auth;

// utworzenie klasy z autoryzacją tokenem
$auth = new Auth("1091041978", KsefMode::TEST, $ksef_token, null, null, null, false);

// autoryzacja tokenem KSeF
$tokens = $auth->auth_with_token();

// zwracana wartość
/*
[
    "access_token" => "",
    "access_token_expires_at" => "",
    "refresh_token" => "",
    "refresh_token_expires_at" => ""
]
*/
```

\*\* W obu powyższych przpadkach należy samodzielnie zapisać pobrane tokeny \*\*

---

#### Funkcja automatycznego zarządzenia i odświeżania tokenów. Klasa 'Auth' zarządza wtedy tokenami w tabelach `tokens` i `subjects` i odświeża je automatycznie.

[](#funkcja-automatycznego-zarządzenia-i-odświeżania-tokenów-klasa-auth-zarządza-wtedy-tokenami-w-tabelach-tokens-i-subjects-i-odświeża-je-automatycznie)

1. Należy utworzyć tabele `tokens` i `subjects` (dump struktury znajduje się w pliku [db.php](https://github.com/szymon-s292/ksef-client/db.php)).
2. W tabeli `subjects` dodać swój podmiot dla którego się uwierzytelnia

```
INSERT INTO `subjects`(`nip`,`name`,`address`,`ksef_mode`) VALUES('1091041978','Podmiot1','ul. Testowa 1','TEST');
```

3. Przed użyciem klasy 'Auth' zdefiniować 4 zmienne połączeniowe do bazy MySQL

```
define('KSEF_DB_HOST', 'localhost');
define('KSEF_DB_USER', 'ksef-client');
define('KSEF_DB_PASS', '');
define('KSEF_DB_NAME', 'ksef-client');
```

\*\* Uwierzytelnienie KSeF z automatycznym odświeżaniem i zapisywaniem tokenów \*\*

Nie należy używać metod `auth_with_token()` lub `auth_with_xades()` ponieważ powodują one rozpoczęcie nowego procesu autoryzacji. Funckja `get_access_token()` wywoła je automatycznie jeżeli token wygaśnie.

```
require_once __DIR__ . '/../vendor/autoload.php';

use KSeFClient\KsefMode;
use KSeFClient\Auth;

// utworzenie klasy z autoryzacją certyfikatem i automatycznym zapisem/odświeżaniem (ostatni parametr true)
$auth = new Auth("1091041978", KsefMode::TEST, null, $ksef_cert, $ksef_pkey, $pkey_pass, true);

// pobranie tokenów dostępowych z bazy, odświeżenie lub wygenerowanie nowych
$tokens = $auth->get_access_token();

// zwracana wartość
/*
[
    "access_token" => "",
    "access_token_expires_at" => "",
]
*/
```

###  Health Score

35

—

LowBetter than 77% of packages

Maintenance100

Actively maintained with recent releases

Popularity0

Limited adoption so far

Community2

Small or concentrated contributor base

Maturity33

Early-stage or recently created project

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Unknown

Total

1

Last Release

1d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/df154d8c86d905328844e3af7eef2ce1236d6b642fc9eb80a182e1c552ca0840?d=identicon)[szymon-s292](/maintainers/szymon-s292)

### Embed Badge

![Health badge](/badges/szymon-s292-ksef-client/health.svg)

```
[![Health](https://phpackages.com/badges/szymon-s292-ksef-client/health.svg)](https://phpackages.com/packages/szymon-s292-ksef-client)
```

###  Alternatives

[laravel/socialite

Laravel wrapper around OAuth 1 &amp; OAuth 2 libraries.

5.7k108.5M922](/packages/laravel-socialite)[leantime/leantime

Open source project management system for non-project managers. Simple like Trello, powerful like Jira. Built with neurodiversity in mind.

10.2k4.0k](/packages/leantime-leantime)[shopware/platform

The Shopware e-commerce core

3.4k1.5M3](/packages/shopware-platform)[civicrm/civicrm-core

Open source constituent relationship management for non-profits, NGOs and advocacy organizations.

751291.4k46](/packages/civicrm-civicrm-core)[shopware/core

Shopware platform is the core for all Shopware ecommerce products.

585.6M592](/packages/shopware-core)[shopware/administration

Administration frontend for the Shopware Core

414.3M118](/packages/shopware-administration)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
