Recept

Leverantörsfakturor in

Två vägar in i leverantörsinkorgen, och de löser olika problem. Den ena tar ett färdigt e-fakturadokument, den andra tar ett mejl med en PDF.

Debet & Kredit kör på din egen server, så bas-URL:en är din — inte vår. Skriv in den här, så byts den ut i varje kodexempel i dokumentationen.

Peppol-UBL

Ett strukturerat dokument. Belopp, momssatser och radposter läses exakt som de står — ingen tolkning behövs.

POST /api/inbound/peppol

Mejl med bilaga

En egen inkorgsadress dit leverantören mejlar sin PDF. Fakturan tolkas av AI och blir ett förslag som en människa godkänner.

Sätts upp under Inställningar → Leverantörsinkorg

Det här är inte en Peppol-accesspunkt

Att ta emot i Peppol-nätverket kräver en registrerad accesspunkt: AS4, SMP-registrering av mottagaradressen och ett avtal med en operatör — ett löpande abonnemang som någon måste drifta.

Vi driftar ingen och tar ingen styckavgift. Du har din egen accesspunkt och pekar den hit, precis som utskicket redan går via din egen punkt. Endpointen tar emot ett färdigt UBL-dokument och gör det till ett utkast i leverantörsinkorgen.

Så här ser anropet ut

Kroppen är antingen UBL:en själv med application/xml, eller JSON med fältet document eller documentBase64. Accesspunkter gör olika, och båda formerna är enkla att avgöra utan att gissa.

curl -X POST "https://din-installation.se/api/inbound/peppol" \
  -H "Authorization: Bearer dk_live_DIN_NYCKEL" \
  -H "Content-Type: application/xml" \
  --data-binary @faktura.xml

Hur dubbletter hanteras

Idempotensen bygger på SHA-256 av dokumentet självt, inte på ett fakturanummer. Det ger precis rätt beteende i båda riktningar:

  • En omleverans är identiska byte och blir inget nytt utkast — accesspunkten kan leverera om utan risk.
  • En rättad faktura är ett annat dokument och ska bli ett nytt utkast, även om fakturanumret är detsamma.
{
  "ok": true,
  "duplicate": true,
  "draftId": "7d8e9f0a-…"
}

Vad som sätts till granska

Leverantören matchas på organisationsnummer, aldrig på namn: "AB Karlsson" och "Karlsson AB" är samma bolag, och ett namn är ingen identitet.

Allt oklart — okänd leverantör, en kreditnota, en varning i dokumentet, en misstänkt dubblett — sätts till granska i stället för att gissas. Adressen kontrolleras dessutom mot ditt organisationsnummer, så ett dokument som är ställt till någon annan avvisas med 400 i stället för att hamna i din bokföring.

Saknas konfigurationen svarar rutten 503 och inte 400. Det är med flit: en accesspunkt som får 503 gör om leveransen, medan en som får 400 kastar dokumentet.

Vidare