«Kan dere ikke bare sende XML-en til kunden?» er spørsmålet vi får oftest om Faktura. Svaret er nei, og grunnen er Peppol. Dette er forklaringen vi skulle ønske vi hadde da vi begynte.
Fire hjørner
Peppol er et nettverk for å utveksle forretningsdokumenter, først og fremst fakturaer, mellom organisasjoner. Modellen kalles firehjørnersmodellen:
- Avsenderen (deg) lager fakturaen.
- Avsenderens aksesspunkt (Spire) validerer den, finner mottakerens aksesspunkt og leverer.
- Mottakerens aksesspunkt tar imot, kvitterer og leverer videre.
- Mottakeren (kunden din) får fakturaen i sitt regnskapssystem.
Poenget er at du ikke trenger en avtale med hver mottaker. Du trenger ett aksesspunkt, og det snakker med alle andre aksesspunkter etter samme protokoll. Det er som e-post: du sender til en adresse, og nettverket finner frem.
Adressen
Mottakerens adresse i Peppol er en deltaker-ID, for norske selskaper 0192:organisasjonsnummer. For å finne ut om et selskap kan motta, slår aksesspunktet opp i et register (ELMA i Norge, SMP i Peppol-terminologi). Registeret sier hvilke dokumenttyper mottakeren tar imot og hvilket aksesspunkt den bruker.
Det er derfor Spire kan velge kanal automatisk: før sending slår vi opp 0192:923456789. Finnes den, går fakturaen som EHF. Finnes den ikke, går den som PDF på e-post. Feltet kan_motta_ehf på virksomheter i Oppslag er nettopp dette oppslaget, cachet i en time.
Dokumentet
EHF er den norske profilen av Peppol BIS Billing 3.0, som igjen er en profil av UBL 2.1. I praksis: en XML-fil med et fast skjema, pluss et sett regler (Schematron) om hva som er gyldig. Reglene er mange. Et utvalg:
- Summen av linjene må stemme med totalen, på øret, etter avrunding per linje.
- Mva-kategorier må ha riktig kode (S for standard, Z for nullsats, E for fritatt, O for utenfor), og hver kategori må summeres separat.
- Forfallsdato kan ikke være før fakturadato.
- Kreditnota må referere til fakturaen den krediterer.
- Kjøpers referanse er påkrevd for offentlige mottakere.
Spire validerer mot alle reglene før sending. Feiler valideringen, får du 400 ugyldig_parameter med felt som peker på linjen, ikke en avvisning fra mottakeren tre timer senere. Det er den viktigste jobben aksesspunktet gjør.
Hva som skjer når du sender
Når du kaller POST /v1/fakturaer/{id}/send:
- Vi henter mottakeren fra ELMA (cachet) og bekrefter at den tar imot EHF-faktura.
- Vi bygger XML fra JSON-objektet ditt, med riktige koder og avrundinger.
- Vi validerer mot skjema og Schematron. Feil her stopper alt og gir deg feilen.
- Vi pakker dokumentet i en signert konvolutt (SBDH) og sender til mottakerens aksesspunkt over AS4, en protokoll med kryptering og signering i begge retninger.
- Mottakerens aksesspunkt svarer med en teknisk kvittering på at dokumentet er mottatt. Det er
faktura.sendt. - Innen kort tid sender mottakerens aksesspunkt en meldingskvittering (MLR) som sier om dokumentet ble akseptert eller avvist av deres validering. Det er
faktura.levertellerfaktura.avvist. - Noen mottakere sender i tillegg en forretningskvittering (Invoice Response) som sier om fakturaen er godkjent, avvist eller under behandling i regnskapssystemet. Den kommer som
faktura.svarmed statuskode.
Hele kjeden tar vanligvis under 60 sekunder. Hendelsen 19. oktober, der ett aksesspunkt var nede i to og en halv time, var et unntak. Fakturaene lå trygt i kø hos oss til det var tilbake.
Hvorfor ikke bygge det selv
Vi har snakket med flere selskaper som vurderte det. Regnestykket ser slik ut:
- Sertifisering som aksesspunkt hos Peppol-myndigheten, med årlige tester.
- AS4-implementasjon med sertifikathåndtering og rotasjon.
- Schematron-validering som må oppdateres hver gang reglene endres (to ganger i året).
- Drift døgnet rundt, fordi mottakere sender kvitteringer når de vil.
- Oppslag mot ELMA med caching og feilhåndtering.
Det er seks til tolv måneders arbeid og deretter en person på drift, for noe kundene dine aldri ser. Kvist regnet på det og valgte Spire. Seks uker senere sendte de EHF.
Mottak
Alt over gjelder også motsatt vei. Aktiverer du Innboks, registrerer vi organisasjonen din i ELMA, og vi blir mottakerens aksesspunkt for deg. Inngående fakturaer valideres, kvitteres og leveres til deg som JSON med innboks.ny. Du slipper XML her også.
Videre lesing
- Faktura i praksis
- API-referansen for fakturaer
- Peppol-spesifikasjonene er offentlige og lesbare, om enn lange. Søk etter «Peppol BIS Billing 3.0».