---
title: "KositArtifacts – API reference · Quittio"
description: "Downloads the KoSIT validator and the XRechnung validator configuration (level L5) and compiles the Peppol BIS Billing 3.0 Schematron to XSLT with the Saxon bundled in the validator (requires Java)."
canonical_url: "https://quittio.dev/en/docs/api/Quittio/Core/Validation/Drivers/KositArtifacts"
locale: en
meta:
  "og:description": "Downloads the KoSIT validator and the XRechnung validator configuration (level L5) and compiles the Peppol BIS Billing 3.0 Schematron to XSLT with the Saxon bundled in the validator (requires Java)."
  "og:image": "https://quittio.dev/og/quittio-en.jpg"
  "og:image:alt": "Quittio: Invoices, settled. E-invoicing for PHP and Laravel, with a validated sample invoice."
  "og:image:height": "630"
  "og:image:type": image/jpeg
  "og:image:width": "1200"
  "og:title": "KositArtifacts – API reference · Quittio"
  "twitter:image": "https://quittio.dev/og/quittio-en.jpg"
  "twitter:image:alt": "Quittio: Invoices, settled. E-invoicing for PHP and Laravel, with a validated sample invoice."
---

> Index of every page on this site: [llms.txt](https://quittio.dev/llms.txt)

[API reference](https://quittio.dev/docs/api) / [Quittio](https://quittio.dev/docs/api/Quittio) \\ [Core](https://quittio.dev/docs/api/Quittio/Core) \\ [Validation](https://quittio.dev/docs/api/Quittio/Core/Validation) \\ [Drivers](https://quittio.dev/docs/api/Quittio/Core/Validation/Drivers)

# KositArtifacts

final class in quittio/core

`Quittio\Core\Validation\Drivers\KositArtifacts` · [Source](https://github.com/Quittio/quittio/blob/v0.7.1/packages/core/src/Validation/Drivers/KositArtifacts.php#L17)

Downloads the KoSIT validator and the XRechnung validator configuration (level L5) and compiles the Peppol BIS Billing 3.0 Schematron to XSLT with the Saxon bundled in the validator (requires Java).

## Constants \#

| Constant | Value | Description |
| --- | --- | --- |
| `CONFIGURATION_FILE` | `'xrechnung-3.0.2-validator-configuration-2026-08-31.zip'` | |
| `CONFIGURATION_TAG` | `'v2026-08-31'` | |
| `PEPPOL_TAG` | `'v3.0.20'` | |
| `SCHXSLT_VERSION` | `'1.10.1'` | |
| `SHA256` | `['https://repo1.maven.org/maven2/org/kosit/validator/1.6.3/validator-1.6.3-standalone.jar' => '799e64befca97d4080e03608c80b85dd5a5ecc5f4ae4f35d1116ec2855b9a7c9' …` | SHA-256 of the pinned downloads. The default download checks them, because the validator JAR is run with java and release tags can be moved; update them together with the versions. |
| `VALIDATOR_VERSION` | `'1.6.3'` | |

## Methods \#

| Method | Description |
| --- | --- |
| `->__construct()` | |
| `->compilePeppol()` | Compiles the Peppol Schematron into peppol/PEPPOL-EN16931-UBL.xsl below $target. download() must have run before, because Saxon comes with the validator JAR. |
| `::configurationUrl()` | |
| `->download()` | |
| `::peppolScenarios()` | Scenario file for Peppol BIS Billing 3.0; the repository is the download target. |
| `::peppolUrl()` | |
| `::schxsltUrl()` | |
| `::validatorUrl()` | |

### `__construct()`#

```
public function __construct(
    (Closure(string): string)|null $fetch = null,
    (Closure(list<string>, string, int): array{exitCode: int, stdout: string, stderr: string})|null $run = null,
)
```

| Parameter | Type | Description |
| --- | --- | --- |
| `$fetch` | `(Closure(string): string)\|null` = `null` | returns the body of a URL; the default checks it against SHA256 |
| `$run` | `(Closure(list<string>, string, int): array{exitCode: int, stdout: string, stderr: string})\|null` = `null` | runs a process |

### `compilePeppol()`#

```
public function compilePeppol(
    string $target,
    string $java = 'java',
    bool $force = false,
): array{scenarios: string, repository: string}
```

Compiles the Peppol Schematron into peppol/PEPPOL-EN16931-UBL.xsl below $target. download() must have run before, because Saxon comes with the validator JAR.

| Parameter | Type | Description |
| --- | --- | --- |
| `$target` | `string` | |
| `$java` | `string` = `'java'` | |
| `$force` | `bool` = `false` | |

<dl><dt>Returns</dt>
<dd><code>array{scenarios: string, repository: string}</code></dd>
</dl>

### `configurationUrl()`#

```
public static function configurationUrl(
    string $tag = self::CONFIGURATION_TAG,
    string $file = self::CONFIGURATION_FILE,
): string
```

static

| Parameter | Type | Description |
| --- | --- | --- |
| `$tag` | `string` = `self::CONFIGURATION_TAG` | |
| `$file` | `string` = `self::CONFIGURATION_FILE` | |

<dl><dt>Returns</dt>
<dd><code>string</code></dd>
</dl>

### `download()`#

```
public function download(
    string $target,
    bool $force = false,
): array{jar: string, scenarios: string, repository: string}
```

| Parameter | Type | Description |
| --- | --- | --- |
| `$target` | `string` | |
| `$force` | `bool` = `false` | |

<dl><dt>Returns</dt>
<dd><code>array{jar: string, scenarios: string, repository: string}</code></dd>
</dl>

### `peppolScenarios()`#

```
public static function peppolScenarios(): string
```

static

Scenario file for Peppol BIS Billing 3.0; the repository is the download target.

<dl><dt>Returns</dt>
<dd><code>string</code></dd>
</dl>

### `peppolUrl()`#

```
public static function peppolUrl(string $tag = self::PEPPOL_TAG): string
```

static

| Parameter | Type | Description |
| --- | --- | --- |
| `$tag` | `string` = `self::PEPPOL_TAG` | |

<dl><dt>Returns</dt>
<dd><code>string</code></dd>
</dl>

### `schxsltUrl()`#

```
public static function schxsltUrl(string $version = self::SCHXSLT_VERSION): string
```

static

| Parameter | Type | Description |
| --- | --- | --- |
| `$version` | `string` = `self::SCHXSLT_VERSION` | |

<dl><dt>Returns</dt>
<dd><code>string</code></dd>
</dl>

### `validatorUrl()`#

```
public static function validatorUrl(string $version = self::VALIDATOR_VERSION): string
```

static

| Parameter | Type | Description |
| --- | --- | --- |
| `$version` | `string` = `self::VALIDATOR_VERSION` | |

<dl><dt>Returns</dt>
<dd><code>string</code></dd>
</dl>

```json
{"@context":"https://schema.org","@graph":[{"@id":"https://quittio.dev/en#website","@type":"WebSite","description":"E-invoicing for PHP and Laravel: create, validate, read and archive ZUGFeRD, XRechnung and Peppol invoices.","inLanguage":"en","name":"Quittio","url":"https://quittio.dev/en","publisher":{"@id":"https://quittio.dev/#identity"},"translationOfWork":{"@id":"https://quittio.dev/#website"}},{"@id":"https://quittio.dev/en/docs/api/Quittio/Core/Validation/Drivers/KositArtifacts#webpage","@type":"WebPage","description":"Downloads the KoSIT validator and the XRechnung validator configuration (level L5) and compiles the Peppol BIS Billing 3.0 Schematron to XSLT with the Saxon bundled in the validator (requires Java).","name":"KositArtifacts – API reference","url":"https://quittio.dev/en/docs/api/Quittio/Core/Validation/Drivers/KositArtifacts","isPartOf":{"@id":"https://quittio.dev/en#website"},"potentialAction":[{"@type":"ReadAction","target":["https://quittio.dev/en/docs/api/Quittio/Core/Validation/Drivers/KositArtifacts"]}],"primaryImageOfPage":{"@id":"https://quittio.dev/#logo"}},{"@id":"https://quittio.dev/#identity","@type":"Organization","description":"Open-Source-Bibliothek für E-Rechnungen in PHP und Laravel (ZUGFeRD, XRechnung, Peppol) und Quittio Managed.","email":"kontakt@niklasforst.de","legalName":"Niklas Forst – Softwareentwicklung","name":"Quittio","url":"https://quittio.dev","founder":{"@type":"Person","name":"Niklas Forst","url":"https://quittio.dev/ueber"},"logo":{"@id":"https://quittio.dev/#logo"},"sameAs":["https://github.com/Quittio/quittio","https://packagist.org/packages/quittio/quittio"]},{"@id":"https://quittio.dev/#logo","@type":"ImageObject","caption":"Quittio","contentUrl":"https://quittio.dev/logo.png","inLanguage":"en","url":"https://quittio.dev/logo.png"}]}
```