Peppol has two environments: test/pilot and production. Work through this guide in the test environment first. The steps are identical; only the certificate authority, SML endpoint, and truststore differ.
Prerequisites
- phoss SMP deployed and reachable over HTTPS at a public URL
- A domain name registered in DNS (required for SML registration)
- A Peppol SMP ID agreed with your Peppol Authority (e.g.
SMP-MYCOMPANY-001)
Step 1: Obtain a Peppol SMP certificate
Contact your Peppol Authority
Apply for an SMP certificate through your regional OpenPeppol member authority. The authority issues certificates under the Peppol PKI.
- Test environment
- Production environment
Request a Peppol Test SMP certificate (also called AP Test certificate). No production traffic can use this certificate.
Convert the certificate to PKCS#12
Peppol Authorities typically deliver a
.p12 or .pfx file. If you receive separate certificate and key files, combine them:Step 2: Configure the keystore
Place the keystore file on the server (e.g./etc/smp/keystore/smp.p12) and update application.properties:
The bundled truststores (from
peppol-commons) are embedded in the WAR. You can reference them by classpath-relative path as shown above.Step 3: Set Peppol identifier and REST mode
smp.identifiertype = peppol enforces strict Peppol identifier validation (case-insensitive scheme, lowercase value). Use peppol-lax only if you need to support legacy identifiers with mixed case.
Step 4: Configure SML integration
The SML (Service Metadata Locator) is the DNS-based directory that lets Peppol buyers find your SMP. Enable it and set your SMP ID:- Test SML
- Production SML
The test SML is
acc.edelivery.tech.ec.europa.eu. No additional property is needed — phoss SMP uses the test SML by default when operating in test mode.SML registration requires outbound HTTPS access from your server to the SML endpoint on port 443.
Step 5: Set the public URL
phoss SMP must know its own public URL so it can construct correct self-referential links in SMP responses:Step 6: Register with the SML (DNS registration)
Start the server
Deploy phoss SMP and verify it starts without errors. Check the log for keystore loading messages.
Open the management UI
Navigate to
https://smp.mycompany.com/secure/ and log in. Default credentials are [email protected] / password — change the password immediately.Register the SMP in SML
Go to Administration > SML > Register SMP in SML. Click Register.phoss SMP sends a registration request to the SML, which creates a DNS CNAME record pointing
<smpid>.publisher.<sml-domain> to your server’s public URL.Step 7: Create your first service group
A service group represents one participant (e.g. a company receiving invoices). Create one via the UI or REST API. Via management UI: Go to Service Groups > Create and enter the participant’s identifier scheme and value (e.g. scheme0088, value 5060000000001).
Via REST API:
Step 8: Add service metadata
Service metadata tells Peppol senders which document types a participant accepts and which Access Point endpoint to use.Step 9: Verify with a Peppol lookup
Use the Peppol Directory or any SMP client to resolve the participant:<ServiceGroup> XML with your document type references.
Production vs test differences
| Aspect | Test / pilot | Production |
|---|---|---|
| Certificate | Peppol Test SMP cert | Peppol Production SMP cert |
| Truststore | smp-test-truststore.p12 | smp-prod-truststore.p12 |
| SML endpoint | acc.edelivery.tech.ec.europa.eu | edelivery.tech.ec.europa.eu |
global.production | false | true |
| Peppol Directory | test-directory.peppol.eu | directory.peppol.eu |
Troubleshooting SML registration
Registration fails with 'certificate not trusted'
Registration fails with 'certificate not trusted'
The SML validates that your certificate was issued by the Peppol PKI. Make sure you are using the correct certificate for the environment (test vs production) and that it has not expired.
DNS record does not appear after registration
DNS record does not appear after registration
SML DNS changes can take up to 5 minutes to propagate. If the record still does not appear after 10 minutes, verify that
sml.smpid matches the SMP ID registered with your Peppol Authority, and check the phoss SMP log for errors during the registration call.'Connection refused' or timeout reaching SML
'Connection refused' or timeout reaching SML
Your server needs outbound HTTPS access to the SML. Check firewall rules. You can verify connectivity with:
SML registration succeeds but lookups fail
SML registration succeeds but lookups fail
Confirm that
smp.publicurl resolves correctly from outside your network, and that the URL registered in the SML matches the URL where phoss SMP is actually running.