Skip to content
PHP SDK

Add Peppol e-invoicing to
your Laravel app.

Install the peppol.sh Composer package and send compliant Peppol e-invoices from your Laravel application. Type-hinted, validated, and delivered. Ship in minutes.

Your code calls. We deliver via Peppol.

Call the peppol.sh API from your Laravel app. We convert your invoice to Peppol BIS 3.0 UBL, validate it, and deliver it to your customer's access point on the Peppol network.

1

Send invoice from your controller

Call Peppol::invoices()->send() from your Laravel controller or job with your invoice data as an array.

2

peppol.sh converts & validates

We convert your JSON to Peppol BIS Billing 3.0 UBL XML and run EN 16931 validation. Type errors are caught at build time, validation errors at runtime.

3

Delivered via the Peppol network

The validated e-invoice is delivered to your customer's Peppol access point. Track delivery status via webhooks or the API.

event flow
Laravel App
└→ Peppol::invoices()->send()
└→ peppol.sh
JSON → UBL conversion
EN 16931 validation
BIS 3.0 compliance
└→ Peppol Network
└→ Customer Access Point
status: delivered ✓

Everything your Laravel app needs for Peppol

A type-hinted SDK that handles the full lifecycle from JSON invoice to Peppol delivery.

PHP SDK

Full type hints for invoices, credit notes, and API responses. Catch errors at build time, not in production.

EU e-invoicing compliance

Invoices are validated against EN 16931 and Peppol BIS 3.0 before delivery. Meet Belgium 2026 and EU ViDA mandates.

Laravel integration

Service provider, facades, and config publishing. Works seamlessly with your existing Laravel application.

Webhook support

Verify signatures in Laravel routes. Receive delivery confirmations, validation errors, and status updates.

Sandbox mode

Test your integration with sandbox mode. Send test invoices without touching the live Peppol network.

Error handling

Typed exceptions with validation details. Know exactly what field is missing or invalid before delivery.

Three steps. Five minutes.

Get Peppol e-invoicing running in your Laravel app in under five minutes.

1

Install the package

Run composer require peppol-sh/laravel to add the peppol.sh SDK to your Laravel project.

2

Configure your API key

Add your PEPPOL_API_KEY to your.env file. Get one free from the dashboard.

3

Send your first invoice

Call Peppol::invoices()->send() with your invoice data. We handle conversion, validation, and delivery.

EN 16931 validated
Peppol BIS 3.0 compliant
Belgium 2026 ready
EU ViDA ready
Certified Access Point

Pay per invoice. No monthly fees.

0.25/ invoice sent via Peppol
Free sandbox foreverNo monthly feesCredit notes includedVolume discounts
View pricing details →

Common questions

Does this work with Laravel queues?

Yes. You can dispatch invoice sending to a queue. The SDK works in any context — controllers, jobs, commands, or event listeners.

Do I need to generate UBL XML myself?

No. Send your invoice as a JSON object using the SDK. We handle the conversion to Peppol BIS Billing 3.0 UBL XML, validation against EN 16931, and delivery via the Peppol network.

What if my customer isn't on Peppol?

You can look up any company on the Peppol network using our lookup endpoint. If the recipient isn't registered, the API returns a clear error before you attempt to send.

How do I handle webhooks in Laravel?

Create a route and controller. The SDK includes middleware to verify webhook signatures and a helper to parse the payload.

Is this compliant with EU e-invoicing mandates?

Yes. Every invoice is validated against EN 16931 (the EU standard) and Peppol BIS Billing 3.0 before delivery. This covers the Belgium B2B mandate (January 2026), and prepares you for ViDA (EU-wide, 2030).

Can I test before going live?

Yes. Start in sandbox mode to send test invoices via email. When you're ready, complete KYC verification and switch to live mode to deliver via the real Peppol network.

Peppol e-invoicing for Laravel. Ship in minutes.

Install the SDK, configure your API key, and start sending compliant e-invoices from your Laravel app.

Get started →