Aller au contenu principal

Billit-koppeling

Door je Klantel-account te koppelen aan een Billit-abonnement, laat je Billit het officiële factuurnummer toewijzen en de Peppol-verzending uitvoeren. Klantel behoudt de tijdregistratie- en CRM-functionaliteit; Billit neemt de facturatiestroom over.

remarque

De Billit-koppeling is optioneel. Zonder koppeling genereert Klantel zelf UBL-facturen via de standalone-provider (zie Facturen).

Vereisten

  • Een actief Billit-abonnement (zie billit.be)
  • Beheerderrechten in Klantel (admin-rol)

Koppeling instellen

  1. Ga naar InstellingenBillit-koppeling.
  2. Klik op Koppel Billit-account.
  3. Je wordt doorgestuurd naar de Billit-autorisatiepagina.
  4. Log in met je Billit-account en klik op Sta toegang toe.
  5. Je wordt teruggestuurd naar Klantel. De koppeling is actief.

Vanaf nu worden nieuwe facturen aangemaakt via je Billit-account. Billit wijst het officiële factuurnummer toe (bv. F2026/0042 in jouw Billit-nummerreeks) en verstuurt automatisch via Peppol als de ontvanger een Peppol-deelnemer is.

Hoe de OAuth-flow werkt

Klantel → (OAuth2 autorisatie-URL) → Billit-inlogpagina
Billit → (autorisatiecode) → /api/billit/oauth/callback
Klantel ← (access + refresh token versleuteld opgeslagen)

De tokens worden AES-256-GCM versleuteld opgeslagen in de database. Ze zijn nooit leesbaar als plaintext in logs of exports.

Veldmapping Klantel → Billit API

Bij het aanmaken van een factuur via de Billit-connector vertaalt Klantel zijn interne datamodel naar de Billit API-velden.

Factuurniveau

Klantel-veldBillit API-veldToelichting
Factuur.idreferenceInterne Klantel-referentie voor correlatie
Klant.naamcustomer.nameNaam van de factuurationtvanger
Klant.btwnummercustomer.vatNumberFormaat BE0123456789
Klant.straat + huisnummercustomer.address.street + numberAdresonderdelen apart
Klant.postcodecustomer.address.postalCode
Klant.gemeentecustomer.address.city
"BE" (vast)customer.address.countryAltijd BE voor Belgische klanten
invoer.vervalDagen ?? 30paymentTermDaysBetalingstermijn in dagen

Factuurregelniveau

Klantel-veldBillit API-veldToelichting
Regel.omschrijvinglines[].descriptionOmschrijving van de geleverde dienst
Regel.aantalUurlines[].quantityAantal uren als decimaal getal
Regel.uurtariefCent / 100lines[].unitPriceOmzetting eurocenten → euro (Billit verwacht euro's)
Regel.btwTarieflines[].vatRatePercentage: 0, 6, 12 of 21

Responsverwerking

Billit retourneert bij een succesvolle uitreiking:

Billit-responsveldKlantel-opslagToelichting
idFactuur.externeIdBillit-intern ID voor statusopvragen
invoiceNumberFactuur.nummerOfficieel factuurnummer uit Billit-reeks
ublFactuur.ublXmlUBL 2.1 XML gegenereerd door Billit
netAmount × 100Factuur.bedragNettoCentEuro → eurocent
vatAmount × 100Factuur.bedragBtwCentEuro → eurocent
totalAmount × 100Factuur.bedragTotaalCentEuro → eurocent
attention

Bedragen: Klantel slaat bedragen altijd op in eurocenten (ADR-0003). Billit communiceert in euro's met twee decimalen. De conversie (× 100, afgerond met Math.round) vindt plaats in BillitProvider.reikUit().

Webhook-statusupdates

Billit stuurt statusupdates naar POST /api/billit/webhook. De handtekening wordt geverifieerd met HMAC-SHA256 (X-Billit-Signature-header).

Billit-eventKlantel-actie
invoice.sentpeppolStatus = "verzonden"
invoice.deliveredpeppolStatus = "afgeleverd", status = "verzonden"
invoice.payment_receivedstatus = "betaald"
invoice.failedpeppolStatus = "fout", status = "mislukt", admin-alert

Stel de webhook-URL in in je Billit-portaal:

https://app.klantel.be/api/billit/webhook

En synchroniseer het gedeelde geheim (BILLIT_WEBHOOK_SECRET) met de waarde in je Coolify-omgevingsvariabelen.

Koppeling verbreken

  1. Ga naar InstellingenBillit-koppeling.
  2. Klik op Ontkoppel.
  3. Nieuwe facturen worden aangemaakt via de standalone-provider.
  4. Bestaande Billit-facturen blijven zichtbaar in Klantel (alleen-lezen).

Omgevingsvariabelen

VariabeleVerplichtBeschrijving
BILLIT_CLIENT_IDJaOAuth client ID van de Klantel-app in Billit
BILLIT_CLIENT_SECRETJaOAuth client secret
BILLIT_REDIRECT_URIJahttps://app.klantel.be/api/billit/oauth/callback
BILLIT_WEBHOOK_SECRETJaHMAC-geheim voor webhook-handtekeningverificatie
BILLIT_API_BASE_URLNeeStandaard https://api.billit.be/v1
BILLIT_TOKEN_URLNeeStandaard https://auth.billit.be/oauth/token

Probleemoplossing

'Billit-koppeling is niet geconfigureerd'

De OAuth-flow is niet voltooid of de tokens zijn verlopen en kunnen niet worden vernieuwd. Verbreek de koppeling en koppel opnieuw.

Factuur aanmaken geeft HTTP 422

Billit keurde de factuuraanvraag af. Controleer of het BTW-nummer van de klant correct is en of alle verplichte velden zijn ingevuld. De foutmelding van Billit is zichtbaar in de Sentry-logs.

Webhook-handtekening ongeldig

Synchroniseer BILLIT_WEBHOOK_SECRET in Coolify met de waarde in het Billit-portaal. Beide moeten exact overeenkomen.