Skip to main content

Test Identifiers

Use these test identifiers to validate your integration in the GoRoute sandbox environment. These identifiers are pre-registered and configured for various testing scenarios.

Sandbox Environment​

All test identifiers work in the sandbox environment:

  • API Base URL: https://app.goroute.ai/peppol-api
  • API Key: Use your sandbox API key (starts with sk_test_)

Test Sender Identifiers​

Use these as the sender (AccountingSupplierParty) in your test invoices:

IdentifierSchemeCountryDescription
9915:phase4-test-sender9915EUGoRoute test sender
0088:5060412690014GLNNLNetherlands test company
0106:12345678KvKNLNetherlands KvK test
0208:0123456789BEBEBelgium test company
9930:DE123456789LeitwegDEGermany public sector test
0009:12345678901234SIRETFRFrance test company
0211:12345678901ITITItaly test company

Test Receiver Identifiers​

Use these as the receiver (AccountingCustomerParty) to test different scenarios:

Successful Delivery​

IdentifierDescriptionBehavior
9915:phase4-test-receiverStandard test receiverAlways accepts, returns MDN
0088:5060412690015GLN test receiverAccepts invoices and credit notes
9915:helger-testPeppol testbedStandard Peppol test endpoint

Error Scenarios​

IdentifierDescriptionBehavior
9915:reject-allRejection testerRejects with business error
9915:timeout-testTimeout testerDelays response (30s+)
9915:invalid-certCertificate errorReturns certificate error
9915:not-registeredLookup failureNot in SMP (404)

Document Type Testing​

IdentifierSupported Documents
9915:invoice-onlyInvoice only
9915:credit-note-onlyCredit Note only
9915:all-documentsInvoice, Credit Note, Order, Order Response

Example Test Invoice​

<?xml version="1.0" encoding="UTF-8"?>
<Invoice xmlns="urn:oasis:names:specification:ubl:schema:xsd:Invoice-2"
xmlns:cac="urn:oasis:names:specification:ubl:schema:xsd:CommonAggregateComponents-2"
xmlns:cbc="urn:oasis:names:specification:ubl:schema:xsd:CommonBasicComponents-2">

<cbc:CustomizationID>urn:cen.eu:en16931:2017#compliant#urn:fdc:peppol.eu:2017:poacc:billing:3.0</cbc:CustomizationID>
<cbc:ProfileID>urn:fdc:peppol.eu:2017:poacc:billing:01:1.0</cbc:ProfileID>
<cbc:ID>TEST-INV-001</cbc:ID>
<cbc:IssueDate>2026-01-26</cbc:IssueDate>
<cbc:DueDate>2026-02-26</cbc:DueDate>
<cbc:InvoiceTypeCode>380</cbc:InvoiceTypeCode>
<cbc:DocumentCurrencyCode>EUR</cbc:DocumentCurrencyCode>

<!-- Test Sender -->
<cac:AccountingSupplierParty>
<cac:Party>
<cbc:EndpointID schemeID="9915">phase4-test-sender</cbc:EndpointID>
<cac:PartyName>
<cbc:Name>GoRoute Test Sender</cbc:Name>
</cac:PartyName>
<cac:PostalAddress>
<cbc:StreetName>Test Street 1</cbc:StreetName>
<cbc:CityName>Amsterdam</cbc:CityName>
<cbc:PostalZone>1012 AB</cbc:PostalZone>
<cac:Country>
<cbc:IdentificationCode>NL</cbc:IdentificationCode>
</cac:Country>
</cac:PostalAddress>
<cac:PartyTaxScheme>
<cbc:CompanyID>NL123456789B01</cbc:CompanyID>
<cac:TaxScheme>
<cbc:ID>VAT</cbc:ID>
</cac:TaxScheme>
</cac:PartyTaxScheme>
<cac:PartyLegalEntity>
<cbc:RegistrationName>GoRoute Test Sender B.V.</cbc:RegistrationName>
<cbc:CompanyID schemeID="0106">12345678</cbc:CompanyID>
</cac:PartyLegalEntity>
</cac:Party>
</cac:AccountingSupplierParty>

<!-- Test Receiver -->
<cac:AccountingCustomerParty>
<cac:Party>
<cbc:EndpointID schemeID="9915">phase4-test-receiver</cbc:EndpointID>
<cac:PartyName>
<cbc:Name>GoRoute Test Receiver</cbc:Name>
</cac:PartyName>
<cac:PostalAddress>
<cbc:StreetName>Receiver Street 42</cbc:StreetName>
<cbc:CityName>Brussels</cbc:CityName>
<cbc:PostalZone>1000</cbc:PostalZone>
<cac:Country>
<cbc:IdentificationCode>BE</cbc:IdentificationCode>
</cac:Country>
</cac:PostalAddress>
<cac:PartyTaxScheme>
<cbc:CompanyID>BE0123456789</cbc:CompanyID>
<cac:TaxScheme>
<cbc:ID>VAT</cbc:ID>
</cac:TaxScheme>
</cac:PartyTaxScheme>
<cac:PartyLegalEntity>
<cbc:RegistrationName>GoRoute Test Receiver BVBA</cbc:RegistrationName>
</cac:PartyLegalEntity>
</cac:Party>
</cac:AccountingCustomerParty>

<cac:TaxTotal>
<cbc:TaxAmount currencyID="EUR">21.00</cbc:TaxAmount>
<cac:TaxSubtotal>
<cbc:TaxableAmount currencyID="EUR">100.00</cbc:TaxableAmount>
<cbc:TaxAmount currencyID="EUR">21.00</cbc:TaxAmount>
<cac:TaxCategory>
<cbc:ID>S</cbc:ID>
<cbc:Percent>21.00</cbc:Percent>
<cac:TaxScheme>
<cbc:ID>VAT</cbc:ID>
</cac:TaxScheme>
</cac:TaxCategory>
</cac:TaxSubtotal>
</cac:TaxTotal>

<cac:LegalMonetaryTotal>
<cbc:LineExtensionAmount currencyID="EUR">100.00</cbc:LineExtensionAmount>
<cbc:TaxExclusiveAmount currencyID="EUR">100.00</cbc:TaxExclusiveAmount>
<cbc:TaxInclusiveAmount currencyID="EUR">121.00</cbc:TaxInclusiveAmount>
<cbc:PayableAmount currencyID="EUR">121.00</cbc:PayableAmount>
</cac:LegalMonetaryTotal>

<cac:InvoiceLine>
<cbc:ID>1</cbc:ID>
<cbc:InvoicedQuantity unitCode="C62">1.00</cbc:InvoicedQuantity>
<cbc:LineExtensionAmount currencyID="EUR">100.00</cbc:LineExtensionAmount>
<cac:Item>
<cbc:Name>Test Product</cbc:Name>
<cac:ClassifiedTaxCategory>
<cbc:ID>S</cbc:ID>
<cbc:Percent>21.00</cbc:Percent>
<cac:TaxScheme>
<cbc:ID>VAT</cbc:ID>
</cac:TaxScheme>
</cac:ClassifiedTaxCategory>
</cac:Item>
<cac:Price>
<cbc:PriceAmount currencyID="EUR">100.00</cbc:PriceAmount>
</cac:Price>
</cac:InvoiceLine>
</Invoice>

Country-Specific Test Identifiers​

Germany (XRechnung)​

IdentifierTypeNotes
9930:04011000-12345-67Leitweg-IDPublic sector test
9930:test-xrechnungLeitweg-IDXRechnung validation test

Include BuyerReference for German public sector:

<cbc:BuyerReference>04011000-12345-67</cbc:BuyerReference>

Italy (FatturaPA)​

IdentifierTypeNotes
0211:IT12345678901Codice FiscaleSDI test recipient
0201:A1B2C3DCodice Destinatario7-char SDI code

France (Factur-X)​

IdentifierTypeNotes
0009:12345678901234SIRETFrench company test
0009:11111111100015SIRETChorus Pro test

Belgium​

IdentifierTypeNotes
0208:0123456789Enterprise NumberBelgian company test
0208:0000000000Enterprise NumberError scenario test

Singapore​

IdentifierTypeNotes
0195:SGUEN123456789UENSingapore company test
0195:SGTEST00001AUENInvoiceNow test

Testing Scenarios​

Successful Send Flow​

# 1. Send test invoice
curl -X POST https://app.goroute.ai/peppol-api/documents/send \
-H "X-API-Key: sk_test_your_key" \
-H "Content-Type: application/xml" \
-d @test-invoice.xml

# Response
{
"transaction_id": "txn_test_abc123",
"status": "accepted"
}

# 2. Check status
curl https://app.goroute.ai/peppol-api/transactions/txn_test_abc123 \
-H "X-API-Key: sk_test_your_key"

# Response
{
"transaction_id": "txn_test_abc123",
"status": "delivered",
"delivered_at": "2026-01-26T10:35:00Z"
}

Validation Error Flow​

# Send invalid invoice (missing required field)
curl -X POST https://app.goroute.ai/peppol-api/documents/validate \
-H "X-API-Key: sk_test_your_key" \
-H "Content-Type: application/xml" \
-d @invalid-invoice.xml

# Response
{
"valid": false,
"errors": [
{
"rule": "BR-16",
"message": "An Invoice shall have at least one Invoice line",
"severity": "error"
}
]
}

Rejection Flow​

# Send to rejection test endpoint
# Use receiver: 9915:reject-all
curl -X POST https://app.goroute.ai/peppol-api/documents/send \
-H "X-API-Key: sk_test_your_key" \
-d @test-invoice-reject.xml

# Response (after async processing)
{
"transaction_id": "txn_test_xyz789",
"status": "rejected",
"error": {
"code": "PEPPOL:REJECTED",
"message": "Document rejected by receiver"
}
}

Best Practices​

  1. Always use test identifiers in sandbox - Never use real production identifiers for testing

  2. Test all error scenarios - Don't just test happy path; test rejections, timeouts, validation errors

  3. Verify webhook handling - Use test identifiers to trigger webhook events

  4. Test country-specific flows - If sending to Germany, test with XRechnung requirements

  5. Clean up test data - Periodically clean up test transactions in your database

Moving to Production​

Before going live, ensure:

  • Replace all test identifiers with real ones
  • Switch to production API key (sk_live_...)
  • Register your real Peppol identifier
  • Update webhook endpoints to production URLs
  • Complete the Production Checklist

Next Steps​