Skip to main content
Service metadata in the BDXR variants uses a different XML structure from Peppol SMP. The URL paths are the same; the namespace and element names differ.

GET /{ServiceGroupId}/services/{DocumentTypeId} — BDXR 1.0

Returns signed service metadata for the given participant and document type using the BDXR 1.0 namespace. Authentication: Not required.
ServiceGroupId
string
required
The participant identifier in scheme::value format, URL-encoded.
DocumentTypeId
string
required
The document type identifier in scheme::value format, URL-encoded.
curl 'https://smp.example.org/iso6523-actorid-upis%3A%3A0088%3A5060210000007/services/busdox-docid-qns%3A%3Aurn%3Aoasis%3Anames%3Aspecification%3Aubl%3Aschema%3Axsd%3AInvoice-2%3A%3AInvoice%23%23...'

Key difference from Peppol SMP

In BDXR 1.0, the endpoint address uses an <EndpointURI> element instead of the Peppol SMP <EndpointReference><Address> W3C addressing structure.

GET /bdxr-smp-2/{ServiceGroupId}/services/{DocumentTypeId} — BDXR 2.0

Returns service metadata for the given participant and document type using the BDXR 2.0 namespace. Responses are not signed. Authentication: Not required.
ServiceGroupId
string
required
The participant identifier in scheme::value format, URL-encoded.
DocumentTypeId
string
required
The document type identifier in scheme::value format, URL-encoded.
curl 'https://smp.example.org/bdxr-smp-2/iso6523-actorid-upis%3A%3A0088%3A5060210000007/services/busdox-docid-qns%3A%3Aurn%3Aoasis%3Anames%3Aspecification%3Aubl%3Aschema%3Axsd%3AInvoice-2%3A%3AInvoice%23%23...'

BDXR 2.0 structural differences

BDXR 1.0 / Peppol SMPBDXR 2.0
SignedServiceMetadata (signed)ServiceMetadata (unsigned)
ParticipantIdentifier with scheme attributeParticipantID with schemeID attribute
ServiceInformation > ProcessList > Process > ProcessIdentifierProcessMetadata > Process > ID with schemeID attribute
ServiceEndpointList > EndpointProcessMetadata > Endpoint
ServiceActivationDate / ServiceExpirationDateActivationDate / ExpirationDate
ServiceDescriptionDescription
TechnicalContactUrlContact
W3C EndpointReference/Address (Peppol) or EndpointURI (BDXR 1.0)EndpointURI

PUT /{ServiceGroupId}/services/{DocumentTypeId}

Creates or replaces service metadata. The request body must use the namespace matching the configured smp.rest.type. Authentication: Required. See Authentication.
<?xml version="1.0" encoding="UTF-8"?>
<ServiceMetadata xmlns="http://docs.oasis-open.org/bdxr/ns/SMP/1/ServiceMetadata">
  <ServiceInformation>
    <ParticipantIdentifier scheme="iso6523-actorid-upis">0088:5060210000007</ParticipantIdentifier>
    <DocumentIdentifier scheme="busdox-docid-qns">urn:oasis:names:specification:ubl:schema:xsd:Invoice-2::Invoice##...</DocumentIdentifier>
    <ProcessList>
      <Process>
        <ProcessIdentifier scheme="cenbii-procid-ubl">urn:fdc:peppol.eu:2017:poacc:billing:01:1.0</ProcessIdentifier>
        <ServiceEndpointList>
          <Endpoint transportProfile="peppol-transport-as4-v2_0">
            <EndpointURI>https://ap.example.org/as4</EndpointURI>
            <RequireBusinessLevelSignature>false</RequireBusinessLevelSignature>
            <ServiceActivationDate>2024-01-01</ServiceActivationDate>
            <ServiceExpirationDate>2026-12-31</ServiceExpirationDate>
            <Certificate>MIIBkTCB+wIJ...</Certificate>
            <ServiceDescription>Peppol BIS Billing 3.0</ServiceDescription>
            <TechnicalContactUrl>mailto:[email protected]</TechnicalContactUrl>
          </Endpoint>
        </ServiceEndpointList>
      </Process>
    </ProcessList>
  </ServiceInformation>
</ServiceMetadata>

Response

Returns HTTP 200 OK with an empty body on success.

Error responses

StatusCondition
400Identifier mismatch or malformed input
401Missing or invalid credentials
403Authenticated user does not own the service group
404Service group does not exist

DELETE /{ServiceGroupId}/services/{DocumentTypeId}

Deletes service metadata for the given participant and document type. This endpoint is the same for BDXR 1.0 and 2.0. Authentication: Required. See Authentication.
curl -X DELETE \
  'https://smp.example.org/iso6523-actorid-upis%3A%3A0088%3A5060210000007/services/busdox-docid-qns%3A%3Aurn%3Aoasis%3Anames%3Aspecification%3Aubl%3Aschema%3Axsd%3AInvoice-2%3A%3AInvoice%23%23...' \
  -u [email protected]:password

Response

Returns HTTP 200 OK on success.

Error responses

StatusCondition
400Identifier cannot be parsed
401Missing or invalid credentials
403Authenticated user does not own the service group
404Service group or service metadata not found

Build docs developers (and LLMs) love