Add Peppol e-invoicing to
your Rails app.
Install the peppol.sh gem and send compliant Peppol e-invoices from your Rails controllers. Clean Ruby API, validated, and delivered. Ship in minutes.
Your code calls. We deliver via Peppol.
Call the peppol.sh API from your Rails 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.
Send invoice from your controller
Call Peppol::Invoice.send() from your Rails controller or background job with your invoice data as a hash.
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.
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.
Everything your Rails app needs for Peppol
A clean Ruby API that handles the full lifecycle from invoice hash to Peppol delivery.
Ruby Gem
Clean Ruby API for invoices, credit notes, and responses. Idiomatic Ruby interface that feels native to your Rails app.
EU e-invoicing compliance
Invoices are validated against EN 16931 and Peppol BIS 3.0 before delivery. Meet Belgium 2026 and EU ViDA mandates.
Rails integration
Rails generator for config, initializer support, and seamless integration with your existing Rails application.
Webhook support
Verify signatures in Rails controllers. 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 error classes with validation details. Know exactly what field is missing or invalid before delivery.
Three steps. Five minutes.
Get Peppol e-invoicing running in your Rails app in under five minutes.
Install the gem
Add gem 'peppol-sh' to your Gemfile, then run bundle install.
Configure your API key
Run rails generate peppol:install and add your API key to credentials.
Send your first invoice
Call Peppol::Invoice.send() with your invoice data. We handle conversion, validation, and delivery.
Pay per invoice. No monthly fees.
Common questions
Does this work with Sidekiq and other background jobs?
Yes. The SDK works anywhere in your Rails app — controllers, Sidekiq workers, Active Job, rake tasks, or model callbacks.
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 Rails?
Create a controller with a route. The SDK includes a concern to verify webhook signatures and 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 Rails. Ship in minutes.
Install the gem, configure your API key, and start sending compliant e-invoices from your Rails app.
Get started →