API/Rulesets
List supported rulesets
GET/v1/rulesets· API key
The Peppol BIS Billing 3.0 rule releases this API can validate
against. OpenPeppol publishes a release each May and November, and
each becomes mandatory about three months later. Validation uses the
ruleset whose status is current unless you pin one with the
ruleset parameter — useful for testing against an upcoming
release before it becomes mandatory.
curl https://api.einvoicing.dev/v1/rulesets \ -H "Authorization: Bearer $EINVOICING_API_KEY"<?php$client = new GuzzleHttp\Client();$response = $client->request('GET', 'https://api.einvoicing.dev/v1/rulesets', [ 'headers' => [ 'Authorization' => 'Bearer ' . getenv('EINVOICING_API_KEY'), ],]);$data = json_decode((string) $response->getBody(), true)['data'];req, _ := http.NewRequest(http.MethodGet, "https://api.einvoicing.dev/v1/rulesets", nil)req.Header.Set("Authorization", "Bearer "+os.Getenv("EINVOICING_API_KEY"))res, err := http.DefaultClient.Do(req)if err != nil { log.Fatal(err)}defer res.Body.Close()const res = await fetch("https://api.einvoicing.dev/v1/rulesets", { headers: { Authorization: `Bearer ${process.env.EINVOICING_API_KEY}`, },});const { data } = await res.json();Response
200 Every supported ruleset, newest first.
| Field | Type | Description |
|---|---|---|
datarequired | Ruleset[] |
{ "data": [ { "id": "peppol-bis-billing-3.0.21", "name": "Peppol BIS Billing 3.0 — May 2026 release", "version": "3.0.21", "status": "current", "released": "2026-05", "mandatory_from": "2026-08-17" } ]}Errors
Every error is application/problem+json (RFC 9457). Branch on type, which is stable, never on title or detail.
| Status | When |
|---|---|
| 401 | No key, or a key that is unknown or revoked. Problem |
| 429 | Too many requests in a short window. Slow down and retry after the
number of seconds in |
Schemas
Ruleset
One Peppol BIS Billing 3.0 rule release.
| Field | Type | Description |
|---|---|---|
idrequired | string | Pass this as ruleset to pin validation to this release. |
namerequired | string | |
versionrequired | string | |
statusrequired | string | current is used when no ruleset is pinned. upcoming is
published but not yet mandatory; previous has been superseded.
|
releasedrequired | string | The month OpenPeppol published the release, as YYYY-MM. The
official release notes give the month, not the day, so the
contract does not invent one.
|
mandatory_fromrequired | string · date |