Document Type

Returns a list of all Peppol document types.

The response can be filtered using the following parameters:

  • category
  • state
  • scheme
  • version

Endpoints

For information only. Full, normative endpoint definitions in the Swagger documentation.

EndpointDescriptionRole
GET /document_typesList all document typesuser

Example DocumentType datatype

{
    "id": "at-0d9",
    "abstract": false,
    "bis-version": "3",
    "category": "Invoice",
    "comment": "TICC-312",
    "domain-community": "POAC",
    "initial-release": "8.8",
    "issued-by-openpeppol": true,
    "name": "MY PINT Invoice v1.0",
    "process-ids": [
        {
            "scheme": "cenbii-procid-ubl",
            "value": "urn:peppol:bis:billing"
        }
    ],
    "scheme": "peppol-doctype-wildcard",
    "state": "active",
    "value": "urn:oasis:names:specification:ubl:schema:xsd:Invoice-2::Invoice##urn:peppol:pint:billing-1@my-1::2.1",
    "version": "9.1"
}

I cannot access the live Peppol codelist endpoint, so I cannot return the full, current list of all Peppol document types. To obtain the complete and up‑to‑date list, query the official Peppol codelist service or download the codelist from the documentation site you linked.

Below is example code showing how you might call a hypothetical /document_types endpoint with optional filters (category, state, scheme, version) and work with the kebab‑case fields exactly as returned.

import fetch from "node-fetch";

async function listDocumentTypes({ category, state, scheme, version } = {}) {
  const params = new URLSearchParams();
  if (category) params.set("category", category);
  if (state) params.set("state", state);
  if (scheme) params.set("scheme", scheme);
  if (version) params.set("version", version);

  const url = `https://example.peppol-service.org/document_types?${params.toString()}`;

  const res = await fetch(url, { method: "GET" });
  if (!res.ok) {
    throw new Error(`HTTP ${res.status} - ${res.statusText}`);
  }

  /**
   * The API is expected to return an array of DocumentType objects, e.g.:
   * {
   *   "id": "at-0d9",
   *   "abstract": false,
   *   "bis-version": "3",
   *   "category": "Invoice",
   *   "comment": "TICC-312",
   *   "domain-community": "POAC",
   *   "initial-release": "8.8",
   *   "issued-by-openpeppol": true,
   *   "name": "MY PINT Invoice v1.0",
   *   "process-ids": [
   *     {
   *       "scheme": "cenbii-procid-ubl",
   *       "value": "urn:peppol:bis:billing"
   *     }
   *   ],
   *   "scheme": "peppol-doctype-wildcard",
   *   "state": "active",
   *   "value": "urn:oasis:names:specification:ubl:schema:xsd:Invoice-2::Invoice##urn:peppol:pint:billing-1@my-1::2.1",
   *   "version": "9.1"
   * }
   */

  const data = await res.json();

  // IMPORTANT: keep the kebab-case field names as-is; do not convert to camelCase.
  // Example: filter in-memory for active Invoice documents in scheme "peppol-doctype-wildcard".
  const filtered = data.filter((doc) =>
    doc.category === "Invoice" &&
    doc.state === "active" &&
    doc.scheme === "peppol-doctype-wildcard"
  );

  return filtered;
}

(async () => {
  try {
    const docs = await listDocumentTypes({ state: "active" });
    console.log("Active document types:");
    for (const d of docs) {
      console.log(`- ${d.id}: ${d.name} (category=${d.category}, version=${d.version})`);
    }
  } catch (err) {
    console.error("Error listing document types:", err);
  }
})();
Filter parameterDescriptionExample value
categoryHigh-level document categoryInvoice, Order, Catalogue
stateLifecycle state of the document typeactive, deprecated
schemeDocument type identifier schemepeppol-doctype-wildcard
versionCodelist version in which the document type is defined9.1