Peppol Billit for WHMCS Print

  • 0

The Problem

Belgium mandates B2B e-invoicing via Peppol from January 1, 2026. WHMCS sends PDF emails. That won't cut it anymore.

What's Changing

Before 2026: Send PDF invoice by email → Client receives, processes manually → Done.

From 2026: Belgian B2B transactions require structured electronic invoices via Peppol network. PDFs alone don't comply.

What is Peppol?

Peppol (Pan-European Public Procurement Online) is a network for exchanging electronic business documents. Think of it as email for invoices, but structured.

How it works:

  1. You send invoice to Peppol network
  2. Network routes to recipient's accounting software
  3. Invoice arrives as structured data (UBL format)
  4. Automatic processing possible

Benefits:

  • No PDF attachments to download
  • No manual data entry
  • Invoice goes directly into accounting software
  • Structured data enables automation
  • Legal compliance

The WHMCS Gap

WHMCS generates invoices and sends emails. It doesn't:

  • Connect to Peppol network
  • Generate UBL format
  • Route to recipient's accounting software
  • Track Peppol delivery status

For Belgian B2B clients, you need a bridge between WHMCS and Peppol.

The Solution

Peppol Billit connects WHMCS to the Peppol network using Billit as access point. Belgian B2B invoices automatically transmit via Peppol when paid.

What It Does

Automatic Invoice Transmission:

  1. Belgian B2B client pays invoice
  2. Module detects eligibility (BE country + valid VAT number)
  3. Invoice data sent to Billit API
  4. Billit converts to UBL and transmits via Peppol
  5. Client receives invoice in their accounting software
  6. Confirmation email sent to client

Automatic Credit Note Transmission:

  1. Invoice gets refunded in WHMCS
  2. Module sends credit note via Peppol
  3. Client receives credit note in their accounting software

Eligibility Detection:

  • Only triggers for Belgian clients (country = BE)
  • Only triggers for B2B clients (valid BE VAT number in tax_id field)
  • All other clients continue receiving normal WHMCS invoice emails
  • No manual intervention needed

Client Area:

  • "Peppol E-Invoices" link in Billing menu (only visible to eligible clients)
  • List of all Peppol documents sent
  • Type badges (Invoice / Credit Note)
  • Delivery status tracking
  • Links to original WHMCS invoices

Admin Dashboard:

  • Connection test button
  • Statistics (sent, pending, failed)
  • Separate tabs for Invoices and Credit Notes
  • Filter by status
  • Retry failed deliveries
  • View delivery details and API responses

What is Billit?

Billit is a Belgian accounting platform and certified Peppol Access Point. They handle the complexity:

  • UBL format conversion
  • Peppol network routing
  • Recipient lookup
  • Delivery confirmation

This module uses Billit's API to send documents. You need a Billit account with API access.

Technical Implementation

Database: Creates mod_peppol_sent table:

  • Invoice ID and number
  • Document type (invoice/credit_note)
  • Client info
  • Peppol ID (VAT number)
  • Billit Order ID (for webhook matching)
  • Status (pending/sent/accepted/delivered/refused/failed)
  • API response data
  • Timestamps

Hooks:

  • InvoicePaid - sends invoice via Peppol
  • InvoiceRefunded - sends credit note via Peppol
  • EmailPreSend - optionally suppresses default invoice emails for Peppol clients
  • Menu hooks - adds Peppol menu items for eligible clients only

Billit API Endpoints:

  • GET /v1/account/accountInformation - connection test
  • POST /v1/peppol/sendOrder - send invoice/credit note

Authentication: API key in apiKey header (not Bearer token).

Configuration

Billit API Key: Your API key from Billit account settings.

Test Mode: Use Billit sandbox environment for testing. Disable for production.

Email Behavior: Three options:

  • Replace (default): Suppress default WHMCS invoice emails for Peppol clients. They receive "Peppol Invoice Delivered" confirmation instead.
  • Keep: Send both default WHMCS emails AND Peppol delivery confirmation.
  • None: No emails at all for Peppol clients. Invoice is delivered via Peppol only - no email confirmation sent. Use this if your clients receive invoices directly in their accounting software and don't need email notifications.

Default VAT %: VAT percentage for invoice lines (default: 21% for Belgium).

Webhook Secret: Secret key for verifying Billit webhook signatures (see Webhook Setup below).

Email Templates

Module creates two email templates on activation:

  • "Peppol Invoice Delivered"
  • "Peppol Credit Note Delivered"

Customize in Setup → Email Templates → Invoice.

Webhook Setup (Real-time Status Updates)

To receive real-time delivery status updates from Billit (Sent → Accepted → Delivered/Refused), register a webhook.

Register the webhook with Billit:

curl --request POST \
     --url https://api.billit.be/v1/webhooks \
     --header 'accept: application/json' \
     --header 'content-type: application/json' \
     --header 'apiKey: YOUR_BILLIT_API_KEY' \
     --data '{
  "EntityType": "Message",
  "EntityUpdateType": "U",
  "WebhookURL": "https://YOUR_WHMCS_URL/modules/addons/peppol_billit/webhook.php"
}'

Response example:

{
  "WebhookID": 56044,
  "EntityType": "Message",
  "EntityUpdateType": "U",
  "WebhookURL": "https://YOUR_WHMCS_URL/modules/addons/peppol_billit/webhook.php",
  "Secret": "your-secret-key-here"
}

Save the secret: Copy the Secret from the response and paste it in the module settings under Webhook Secret.

Status Flow:

pending → sent → accepted → delivered
                    ↓
                 refused
  • Sent: Invoice queued and validated by Billit
  • Accepted: Peppol network acknowledged receipt
  • Delivered: Customer received the invoice (final state)
  • Refused: Customer or system rejected the invoice

The webhook URL is also displayed in the admin panel under Configuration Status.

When You Need This

Required if:

  • You have Belgian B2B customers
  • You want to comply with Belgium's 2026 e-invoicing mandate
  • You want invoices to arrive directly in client's accounting software

Not required if:

  • No Belgian B2B customers
  • Only B2C customers (consumers, no VAT number)
  • Using external accounting system that already handles Peppol
  • Not operating in Belgium

Installation

  1. Purchase license here
  2. Upload files to /modules/addons/peppol_billit/
  3. Go to Setup → Addon Modules
  4. Activate "Peppol Billit"
  5. Enter your license key
  6. Enter your Billit API key
  7. Test connection
  8. Done

Belgian B2B invoices now transmit via Peppol automatically when paid.

Technical Specifications

Requirements:

  • WHMCS 8.9+
  • PHP 7.4+
  • Billit account with API access
  • Valid Billit API key

Languages included:

  • English
  • Dutch
  • French

Security:

  • Client area validates ownership
  • All files check WHMCS constant
  • SQL injection protection (Capsule ORM)
  • API key stored securely in WHMCS config
  • HTTPS only for API calls

Troubleshooting

Connection test fails:

  • Check API key is correct
  • Check Test Mode matches your API key type (sandbox vs production)
  • Look in WHMCS activity log for details

Invoice not sending via Peppol:

  • Check client is Belgian (country = BE)
  • Check client has valid VAT number (BE + 10 digits in tax_id field)
  • Check invoice is actually paid (status = Paid)
  • Look in activity log for errors

Client not seeing Peppol menu:

  • They must be eligible (Belgian B2B with valid VAT number)
  • Clear template cache

Credit note not sending:

  • Invoice must be in "Refunded" status
  • Check activity log for errors

Client says they didn't receive invoice in accounting software:

  • Check delivery status in admin dashboard
  • Verify their VAT number is correct and registered on Peppol network
  • Their accounting software must be connected to Peppol (not all are)
  • Retry failed delivery from admin dashboard

Comparison: Before vs After

Before Peppol Billit:

Invoice paid → WHMCS sends PDF email → Client downloads PDF
                                      → Client manually enters in accounting software
                                      → PDF gets lost in inbox
                                      → "Can you resend invoice #1234?"

After Peppol Billit:

Invoice paid → Module sends to Billit API → Billit converts to UBL
                                           → Billit sends via Peppol
                                           → Invoice arrives in client's accounting software
                                           → Automatic processing possible
                                           → Client gets confirmation email

This Module vs Credit Notes Module

Different problems, complementary solutions:

Credit Notes for WHMCS:

  • Generates credit note PDF documents
  • Stores in database and optionally Nextcloud
  • Client can download PDFs
  • For EU accounting compliance (formal credit note documents)

Peppol Billit:

  • Transmits invoices and credit notes via Peppol network
  • Documents arrive in client's accounting software
  • No PDF handling (Billit generates UBL)
  • For Belgian B2B e-invoicing mandate compliance

Use both if: You need PDF credit notes for your records AND want to transmit documents via Peppol.

Why Billit?

Peppol requires a certified Access Point to send documents. You can't connect directly to the network.

Options for Access Points:

  • Billit (Belgian, accounting software with API)
  • Exact Online
  • Yuki
  • Various others

We chose Billit because:

  • Belgian company (local support)
  • Clean API
  • Reasonable pricing
  • Handles conversion to UBL automatically
  • Already used by many Belgian businesses

If you're already using different accounting software with Peppol capability, check if they have an API you could integrate with instead.

Why This Exists

ArkHost operates in Belgium. The 2026 e-invoicing mandate means we need to send structured invoices to B2B clients via Peppol. WHMCS doesn't do this.

Options were:

  1. Manually upload every invoice to accounting software (tedious)
  2. Wait for WHMCS to maybe implement Peppol someday (unlikely)
  3. Build integration with Peppol Access Point (practical solution)

We built the module using Billit as Access Point. It's in production at ArkHost. Belgian B2B invoices automatically transmit via Peppol when paid.

Made it available to other Belgian hosting companies facing the same compliance deadline.

License

Commercial module licensed per WHMCS installation.

Purchase: Peppol Billit for WHMCS

Note: You also need a Billit account with API access. That's a separate subscription with Billit.


Was this answer helpful?

« Back

WHOIS Information

×
Loading WHOIS information...