Send your first Peppol e-invoice in under 2 minutes.
You need a getpeppr account with a sandbox API key:
- Sign up at console.getpeppr.dev
- Create an organization
- Go to API Keys and create a sandbox key (
sk_sandbox_...)
git clone https://github.com/zerolooplabs/peppol-invoice-nextjs-starter.git
cd peppol-invoice-nextjs-starter
cp .env.example .env.local # Paste your API key
npm install && npm run devOpen http://localhost:3000 and click Send Demo Invoice.
- Click the button — a real Peppol invoice is sent to the sandbox network
- You get back an invoice ID and status
- Click the console link to see your invoice arrive in the getpeppr dashboard
This is not a mock. The invoice goes through the actual Peppol infrastructure.
Get notified when your invoice status changes (sent, accepted, refused, error, registered, received, paid):
- Go to Webhooks in the getpeppr Console
- Add your endpoint URL:
https://your-app.com/api/webhooks - Copy the signing secret (
whsec_...) - Add to
.env.local:GETPEPPR_WEBHOOK_SECRET=whsec_your_secret_here
The webhook handler at app/api/webhooks/route.ts verifies signatures using the SDK and logs events. Customize the switch statement to handle events in your app.
For local development, use a tunnel like ngrok to expose your localhost.
lib/peppr.ts — SDK client
app/api/send-invoice/route.ts — Send endpoint
app/api/webhooks/route.ts — Webhook handler
app/page.tsx — UI
See docs/production.md for the sandbox-to-production guide.
MIT