---
title: "Get Tenant Peppol Status"
method: GET
path: "/api/admin/tenants/{tenant_id}/peppol/"
tags: ["Admin"]
---

# Get Tenant Peppol Status

`GET /api/admin/tenants/{tenant_id}/peppol/`

## Request

- Base URL: `https://api.e-invoice.be`
- URL: `https://api.e-invoice.be/api/admin/tenants/{tenant_id}/peppol/`
- Auth: HTTP bearer
- TypeScript: <https://skmtc.dev/e-invoice-be/apis/e-invoice-be-peppol-access-point-api/docs/api/admin/tenants/:tenant_id/peppol/get.ts> (a function with typed inputs; its response is checked against the schema)

Get the current Peppol registration status for a tenant on our SMP.

Per-id publication state is derived from the append-only
``peppol_registration_events`` log (latest event per id). With
``?verify=true`` the endpoint additionally runs the live peppol-direct DNS
probe for each id and appends the observation as a new event before deriving
the response — a verified read is, by design, a write to the log.

## Path parameters

- `tenant_id` string, required

## Query parameters

- `verify` boolean

## Response `200`

Successful Response

- PeppolStatusResponse: Response schema for Peppol status check.
  - `peppol_id` string, required
  - `state` 'not_registered' | 'e-invoice' | 'other'
  - `smp` SMPStatus, required: Status information from our SMP.
    - `service_group` ServiceGroupInfo
      - `participant_identifier` string, nullable
      - `participant_scheme` string, nullable
      - `service_metadata_references` object[], nullable
    - `business_card` BusinessCardInfo
      - `participant_identifier` string, nullable
      - `participant_scheme` string, nullable
      - `business_entity` object, nullable
    - `document_types` DocumentTypeInfo[], nullable
      - `document_type_code` string, required
      - `process_identifier` string, required
      - `endpoints` object[], nullable
  - `last_checked_at` string, date-time, required
  - `verified` boolean: Whether a live network verification was performed on this read
  - `publications` PeppolIdPublication[]: Per-id publication state derived from the append-only event log
    - `peppol_id` string, required
    - `state` 'not_published' | 'pending' | 'published': Current publication state of a Peppol id, derived from its latest event. An id with no events reports ``NOT_PUBLISHED`` — a send-only tenant (enrolled, zero publications) is a valid end state, not an error.
    - `latest_event` string, nullable: The vocabulary value of the latest event, or null if the id has none
    - `source` string, nullable: Where the latest event came from (e.g. 'phoss', 'dns')
    - `detail` string, nullable: Free-text detail attached to the latest event
    - `observed_at` string, date-time, nullable: Timestamp of the latest event

## Other responses

- `400`: Bad Request: Invalid Peppol ID or missing tenant data
- `401`: Unauthorized: Invalid or missing admin key
- `403`: Forbidden: Peppol operations not available for organizations in test mode
- `404`: Not Found: Tenant not found
- `422`: Validation Error
- `500`: Internal Server Error: Unexpected server error

## Changes

- **2026-10-11** `0ee5e3d3992a`: 3 info
  - added the new optional `query` request parameter `verify`
  - added the optional property `publications` to the response with the `200` status
  - added the optional property `verified` to the response with the `200` status
- **2026-10-11** `a110eeaf4b6b`: 1 info
  - removed the `hermes` enum value from the `state` response property for the response status `200`
- **2025-10-31** `97871d8011b0`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/e-invoice-be/apis/e-invoice-be-peppol-access-point-api/changes/api/admin/tenants/:tenant_id/peppol/get.md)

---

[API](https://skmtc.dev/e-invoice-be/apis/e-invoice-be-peppol-access-point-api.md) - [All operations](https://skmtc.dev/e-invoice-be/apis/e-invoice-be-peppol-access-point-api/llms.txt) - [OpenAPI document](https://skmtc.dev/e-invoice-be/apis/e-invoice-be-peppol-access-point-api/revisions/0ee5e3d3992a?raw)
