Registreret dansk virksomhed — CVR-nr. 46634675Databehandling på servere i EU
FlowParse
API August 2026 17 min læsning

API til regnskabssoftware

Bogføringsloven kræver et registreret system — ikke at systemet selv læser bilag. FlowParse er API'en, der læser fakturaer, kvitteringer og kontoudtog for dit regnskabssystem, mens du bygger resten af produktet.

FlowParse
flowparse.io

Hvad et regnskabssystem faktisk skal læse

Et dansk regnskabssystem, der lever op til bogføringslovens krav til digitale systemer, skal kunne registrere, opbevare og eksportere bogføringen korrekt. Loven stiller ikke krav om, at systemet selv skal kunne læse en faktura ud af en PDF-fil eller genkende posteringerne på et scannet kontoudtog — men det er præcis den funktion, kunderne i praksis forventer, fordi det er den, der sparer dem for indtastning.

Den forventning er, hvad denne side handler om: dokumentgenkendelse som en separat, veldefineret API-funktion, som et regnskabssystem kan bygge oven på, i stedet for selv at udvikle og vedligeholde et OCR-lag ved siden af sit egentlige produkt.

FlowParse
flowparse.io

Hvorfor dette ikke handler om OIOUBL og NemHandel

Et naturligt første spørgsmål fra et dansk regnskabssystem er, om dette overlapper med NemHandel, OIOUBL eller Peppol — Danmarks infrastruktur til strukturerede e-fakturaer mellem virksomheder og det offentlige. Svaret er nej, og det er værd at være tydelig om hvorfor: en OIOUBL-faktura, der kommer gennem NemHandel, er allerede struktureret data. Den skal læses fra sin XML, ikke genkendes med OCR — det ville være at gøre arbejdet om.

Det, langt de fleste danske virksomheder faktisk sidder med hver måned, er noget andet: en udenlandsk leverandørs faktura uden for NemHandel, en kvittering fra en fysisk butik, et kontoudtog fra banken, et udlæg fotograferet med en telefon. Ingen af dem kommer struktureret. Det er dét dokumentgenkendelse løser — og det er det, dette API er bygget til.

Det er værd at gentage denne skelnen tydeligt, for den kommer ofte op igen senere — hos en ny udvikler på teamet, hos en kunde, der spørger, eller hos en revisor, der skal forstå flowet. Jo klarere skellet er fra starten, jo mindre forvirring opstår senere.

Hvad dette ikke gør

Udsteder ikke OIOUBL-, NemHandel- eller Peppol-fakturaer

Det er en helt anden infrastruktur — strukturerede fakturaer, der allerede eksisterer som data, skal læses fra deres XML, ikke genkendes med dette API.

Gør ikke jeres system til et registreret bogføringssystem

Registreringen hos Erhvervsstyrelsen handler om jeres systems egne funktioner som helhed — dette API er én byggeklods, ikke en genvej til registreringen.

Sender intet til SKAT

Udtrækket returnerer strukturerede tal til jeres eget system. Indberetning, moms og SAF-T-eksport forbliver jeres systems ansvar.

Bogfører ikke selv posteringerne

Det læser og strukturerer dokumentet. Kontering, modkonti og selve bogføringen sker i jeres eget system, ud fra den struktur, I får tilbage.

Hvor det passer ind i dit produkt

Et regnskabssystems fulde dokumentflow dækker typisk tre kilder: strukturerede e-fakturaer gennem NemHandel, banktransaktioner gennem en bankforbindelse eller CAMT/MT940-fil, og alt det resterende — fakturaer, kvitteringer og kontoudtog, der ikke kommer på nogen af de to strukturerede veje. Dette API er bygget specifikt til den tredje kategori, som i praksis udgør en stor del af, hvad en bogholder eller virksomhedsejer uploader manuelt hver måned.

FlowParse
flowparse.io

Jo bedre et regnskabssystem dækker alle tre kilder konsistent, jo mindre af bogføringen ender med at stå tilbage som ren manuel indtastning — hvilket i praksis er det, der oftest afgør, om en kunde oplever produktet som et reelt tidsbesparende værktøj eller som endnu en digital udgave af en papirbunke.

Hvorfor det virker uden en skabelon pr. leverandør

En almindelig tidlig antagelse om dokumentgenkendelse er, at den kræver en skabelon pr. leverandør eller pr. bank — en fastlagt kortlægning af, hvor på siden hvert felt plejer at stå. Den tilgang bryder sammen, i det øjeblik en kunde uploader en faktura fra en leverandør, ingen skabelon endnu er bygget til, hvilket for et bogføringssystem med kunder på tværs af mange brancher og leverandørrelationer ikke er et sjældent kanttilfælde — det er en jævnlig hændelse.

Genkendelsen arbejder i stedet ud fra dokumentets egen struktur — den læser en fakturas layout, sådan som en person ville, i stedet for at matche den mod en fast skabelon for én bestemt leverandør. En faktura fra en leverandør, der behandles for første gang, læses på samme måde som en fra en leverandør, der er set tusind gange før, hvilket betyder direkte noget for et bogføringssystem, hvis kundekreds ikke er begrænset til en håndfuld velkendte leverandørforhold.

Det samme gælder kontoudtog og finansielle rapporter — et kontoudtogs posteringsliste eller en rapports flersektionsstruktur læses ud fra dokumentets egne trykte sektioner og totaler, ikke ud fra en skabelon knyttet til én bestemt bank eller ét bestemt regnskabsprograms eksportformat.

Kaldene, der betyder noget

Fire endpoints dækker selve udtrækket, dokumenteret i sin helhed på API-dokumentationssiden — herunder er de kald, I reelt vil bruge fra en produktionspipeline.

POST /extract — en fremmed leverandørfaktura
curl -X POST https://flowparse.io/api/v1/extract \
  -H "Authorization: Bearer pf_live_xxx" \
  -H "Content-Type: application/json" \
  -d '{ "file": "JVBERi0xLjcK...", "filename": "supplier-invoice.pdf" }'
# → { "type":"invoice", "pages":2, "billedPages":2,
#     "price": { "eur":0.07, "perPageEur":0.035, "complexity":"standard" },
#     "data": { "type":"invoice", "data": {
#       "vendor_name":"Example GmbH", "invoice_number":"INV-2201",
#       "total_amount":1840.00, "line_items":[ ... ] } } }
POST /validate — gratis, ingen omkostning
curl -X POST https://flowparse.io/api/v1/validate \
  -H "Authorization: Bearer pf_live_xxx" \
  -H "Content-Type: application/json" \
  -d '{ "type": "invoice", "data": { "vendor_name": "Example GmbH",
        "total_amount": 1840.00 } }'
# → { "valid": true, "issues": [] }

/validate er gratis på alle planer — det rigtige sted at afprøve jeres datakontrakt, før noget koster noget.

Hvad bliver læst

DokumenttypeHvad kommer tilbage
FakturaLeverandør, fakturanummer, dato, forfaldsdato, momsbeløb og hver linje med beskrivelse, antal og pris
KvitteringButik, dato, beløb, momssats og de enkelte varelinjer, hvor de findes
KontoudtogBank, kontohaver, periode og hver postering med dato, tekst, beløb og saldo
Finansiel rapportVirksomhed, periode, valuta og hver linje i regnskabets sektioner, plus en kontrol af, om totalerne går op
FlowParse
flowparse.io

Hvordan det rigtige dokument genkendes

Jeres pipeline behøver ikke fortælle API'et på forhånd, om der kommer en faktura, en kvittering eller et kontoudtog — klassificeringen sker automatisk som en del af samme /extract-kald, ud fra dokumentets egen struktur. En kunde kan uploade hvad som helst gennem den samme flade, og I får det skema tilbage, der faktisk matcher det, der blev sendt.

Sådan fungerer prisen

Udtræk afregnes pr. side, i kompleksitetstrin — et rent, digitalt genereret dokument koster mindre end en tæt, flersidet rapport eller en scanning af lav kvalitet. Ingen licens pr. bruger, ingen minimumsforpligtelse for at komme i gang.

GET /usage — se jeres plan og saldo
curl https://flowparse.io/api/v1/usage \
  -H "Authorization: Bearer pf_live_xxx"
# → { "plan":"PRO", "pageRangeEur": { "minEur":0.01, "maxEur":0.15 },
#     "balance": { "pages":812, "monthlyRemaining":712, "bonusPages":100 } }

For et regnskabssystem oversættes det direkte til en kendt omkostning pr. kunde eller pr. bilag — et tal, I kan bygge direkte ind i jeres egen prissætning, i stedet for en uforudsigelig infrastrukturpost.

Sådan fungerer det i dit produkt

1

Kunden uploader et dokument

Fakturaen, kvitteringen eller kontoudtoget, dér hvor jeres produkt allerede modtager bilag.

2

Jeres pipeline kalder /extract

Ét POST-kald med filen; struktureret JSON med felter, linjer og sikkerhedsniveau kommer tilbage.

3

Data ruter efter sikkerhedsniveau

Høj-sikkerhed går videre automatisk; lav-sikkerhed sendes til jeres egen kø til gennemgang.

4

Data lander i jeres eget bogføringsflow

Klar til kontering og postering — selve bogføringslogikken forbliver jeres.

Et gennemregnet eksempel

En kunde hos et regnskabssystem uploader ti udenlandske leverandørfakturaer og ét scannet kontoudtog i forbindelse med en månedlig bogføring.

DokumentResultat
10 udenlandske fakturaerAlle klassificeret korrekt, linjer og momsbeløb læst, 0,4 sekunder pr. faktura
1 scannet kontoudtog42 posteringer læst, saldoen går op, sikkerhedsniveau 0,97
Manuel gennemgang nødvendigNej — alt gik videre automatisk

Havde kunden i stedet uploadet en OIOUBL-faktura fra NemHandel, ville den slet ikke skulle igennem dette API — den er allerede data, og skal læses direkte fra sin XML.

Værd at bemærke: det samme kald håndterede alle ti udenlandske fakturaer, uden at noget af dem havde behøvet en forhåndsdefineret skabelon — hver leverandørs layout blev læst, som det var, første gang systemet så det.

Byg selv eller integrér

At bygge det selvAt kalde dette API
En generel OCR-tjeneste plus jeres egen feltgenkendelse, linjegenopbygning og sikkerhedslogikÉt typet skema tilbage fra ét kald
Ingeniørtid målt i måneder, plus løbende vedligehold når nye layouts dukker opIntegration typisk oppe at køre inden for en dag eller to
Egen infrastruktur til hosting, overvågning og skaleringIngen infrastruktur — forbrugsbaseret pris, ingen servere at drive
Jeres eget team ejer enhver nøjagtighedsregressionUdtrækskvaliteten er kerneproduktet, forbedret uafhængigt af jeres udgivelsescyklus

Almindelige integrationsfejl

At behandle et lavt sikkerhedsniveau som en afvisning

En lav score på ét felt betyder, at netop det felt er reelt usikkert og værd at kigge på — ikke at hele dokumentet eller kunden skal afvises. De fleste teams ruter efter feltniveau, ikke én samlet dokumentdom.

At sammenligne navne med en streng eksakt matchning

"Acme Trading Aps" og "ACME TRADING APS" er samme virksomhed. Et matchningstrin, der normaliserer store/små bogstaver, tegnsætning og selskabsformer, før det sammenligner, undgår en bølge af falske mismatches, der intet har med reel risiko at gøre.

At springe /validate over under udviklingen

At teste jeres datakontrakt mod det gratis /validate-endpoint, før I kører rigtig udtræksvolumen, fanger integrationsfejl — et manglende felt jeres kode forventer, en typemismatch — uden at bruge penge, mens I stadig fejlfinder jeres egen pipeline.

At antage, at en totalkontrol, der ikke går op, betyder et forfalsket dokument

En mismatch kan lige så godt skyldes en side, der ikke scannede rent, som et reelt manipuleret dokument. Det er et stærkt signal til gennemgang, ikke bevis på noget i sig selv.

Nøjagtighed og sikkerhedsniveau

Feltnøjagtigheden ligger omkring 99 % på almindelige layouts — digitalt genererede fakturaer og kvitteringer. En scannet eller fotograferet aflevering varierer mere, hvilket er præcis hvorfor hvert felt har sit eget sikkerhedsniveau.

Den granularitet betyder, at én usikker linje på en ellers klar faktura ikke kræver samme gennemgangsindsats som et dokument, hvor genkendelsen har haft svært ved det som helhed — hvilket holder jeres kø til manuel gennemgang proportional med den faktiske usikkerhed.

FlowParse
flowparse.io

Eksportformater

Ud over rå JSON til direkte integration kan det samme udtrukne dokument eksporteres til xlsx eller csv.

POST /export — Excel-fil
curl -X POST https://flowparse.io/api/v1/export \
  -H "Authorization: Bearer pf_live_xxx" \
  -H "Content-Type: application/json" \
  -d '{ "format": "xlsx", "type": "invoice", "data": { ... } }'
# → { "format":"xlsx", "filename":"invoice.xlsx",
#     "encoding":"base64", "content":"UEsDBB..." }

Fejl og grænser

KodeBetydning
400Ugyldig forespørgsel eller ikke-understøttet format
401Manglende, ugyldig eller tilbagekaldt API-nøgle
422Intet udtrækbart data i det indsendte dokument
429Sidesaldo opbrugt — fyld op for at fortsætte

Der er ingen grænse for kald pr. sekund at designe efter — den eneste grænse er jeres sidesaldo, som fyldes op med det samme ved betaling, så en travl måned ikke kræver særlig håndtering i jeres pipeline.

Fra pilot til fuld kundebase

Et regnskabssystem, der integrerer dette for første gang, starter typisk med at sende en håndfuld testdokumenter manuelt gennem /extract, bekræfter at skemaet matcher, hvad deres eget bogføringsflow forventer, og kobler det derefter ind i den rigtige pipeline, når sikkerhedsniveau-tærsklen er tilpasset.

Derfra skalerer det uden nogen ændring i integrationen — det samme kald håndterer ti dokumenter om dagen eller ti tusind, fordi pris og gennemløb er forbrugsbaseret frem for bundet til en fast infrastruktur.

Det betyder, at et regnskabssystem, der lancerer i et nyt segment eller pludselig vinder en stor ny kunde, ikke behøver planlægge en infrastrukturopgradering forud for det — volumen skalerer, som den kommer.

Hvem det er til

Danske regnskabssystemer og bogføringsplatforme

Dokumentgenkendelsen, uden selv at bygge og vedligeholde et OCR-lag ved siden af produktet.

Regnskabsbureauer med eget værktøj

En genkendelseslag til jeres interne system, i stedet for manuel indtastning på tværs af klienter.

Fintech- og betalingsplatforme med bogføringsfunktioner

Dokumentudtræk til de bilag, der ligger uden for jeres bankforbindelse.

Udviklere, der bygger ovenpå et eksisterende system

Et enkelt API-kald i stedet for en intern OCR-afdeling.

Fælles for alle fire er, at dokumentgenkendelse er en nødvendig understøttende funktion, ikke selve kerneproduktet — hvilket er præcis den type opgave, der bør løses af en dedikeret leverandør frem for at optage udviklerkapacitet, der ellers kunne gå til produktets egentlige differentiering.

Kom i gang

Hent en gratis API-nøgle og send en rigtig faktura eller et kontoudtog gennem /extract, før I forpligter jer til noget — intet betalingskort krævet for at se, hvordan svaret ser ud.

De fleste teams har et konkret svar på, om det passer til deres behov, inden for en enkelt eftermiddags test — hurtigere, end de fleste forventer, før de rent faktisk prøver det.

Sikkerhed og privatliv

Uploads er krypteret med TLS hele vejen igennem.

Behandlingen kører på infrastruktur med SOC 2-tilpassede kontroller.

Originale dokumenter slettes kort tid efter behandlingen.

Intet, I uploader, bruges nogensinde til at træne AI-modeller.

Fulde detaljer findes på sikkerhedssiden. For et regnskabssystem, der selv skal kunne stå inde for sin datahåndtering over for kunder og revisorer, betyder det direkte noget at have et konkret, dokumenteret svar klar.

Spørgsmål og svar

Prøv det på et rigtigt dokument

Hent en gratis API-nøgle og se udtrækket på en rigtig faktura eller et rigtigt kontoudtog.

Læs videre