Myntos, regnskap for Norge med kildekoden i åpent lende
Myntos er et norsk regnskapsprogram bygget i Lindeman Technologies. Dobbelt bokholderi på SAF-T-datamodellen fra dag én, fakturering kontrollert mot bokføringsforskriften før noe utstedes, og hele programmet offentlig for den som vil lese det. Det er i pre-alpha, og det står det også på nettsiden.
Hvorfor lage enda et regnskapsprogram
Reglene er allerede offentlige. Bokføringsloven sier hva som må lagres, Skatteetaten publiserer formatene, og MVA-meldingen er en åpen spesifikasjon. Programmet som står mellom en bedrift og staten, oversetter altså ett offentlig dokument til et annet, og det finnes ingen god grunn til at den oversettelsen skal være en svart boks. Derfor er kildekoden offentlig: du kan lese hva som skjer med tallene dine, og kjøre det selv om du heller vil det.
Den andre grunnen er datamodellen. De fleste regnskapssystemer lar skjemaet vokse organisk og skrur en SAF-T-eksport på siden av det flere år senere, og det er der avvikene i eksporten kommer fra. Myntos starter i SAF-T Financial-modellen og behandler eksporten som en projeksjon av det som allerede ligger lagret, ikke som et oversettelseslag skrevet under tidspress.
Hva som virker i dag
- Kontoer og organisasjoner: innlogging med e-post eller Google, kolleger inviteres inn i en organisasjon med roller, og abonnementet henger på organisasjonen, ikke på en person. Invitasjoner er engangslenker, lagret hashet.
- Kontantstrømregister: penger inn og ut, der kategorien bestemmer både konto og mva-kode, med brutto-til-netto-splitt, umiddelbar postering, og retting ved reversering i stedet for redigering.
- Fakturering: et salgsdokument kontrolleres mot bokføringsforskriften § 5-1 før det kan utstedes, og hvert avvik navngir paragrafen det kommer fra. Nummereringen er hullfri av konstruksjon: et utkast har ikke nummer, så å forkaste ett etterlater ingen luke. Utstedte fakturaer rettes kun med kreditnota.
- E-faktura: EHF-dokumentet (Peppol BIS Billing 3.0) genereres og fryses ved utstedelse, i forkant av kravet fra 2027. Selve overføringen er ikke bygget ennå, siden den krever et Peppol-aksesspunkt.
- Bilagsarkiv: PDF-er festet til et postert bilag, append-only, validert på magic number, med digest lagret ved siden av.
- Fakturalesing: last opp PDF-en først, så leses dato, beløp, mva, fakturanummer og motpart ut av tekstlaget, mens kategorien velges fra en nummerert meny av en liten modell hostet i Norge på Løynd. Det er valgfritt, avslått uten nøkkel, og ingenting posteres før brukeren bekrefter.
Hva som ikke er bygget ennå
Myntos er i pre-alpha, og veikartet er offentlig av samme grunn som kildekoden er det. SAF-T-eksporten, automatisk MVA-melding, innsending av skattemelding og næringsspesifikasjon gjennom sluttbrukersystem-API-ene til Skatteetaten, og maskinell innlevering av årsregnskapet til Regnskapsregisteret via Altinn 3 er designet og har grensesnitt på plass, men er ikke ferdige. Maskinporten dekker uthentingssiden. Innsending krever juridisk sett en ID-porten-innlogging, og det legger føringer på hvordan autentiseringen må bygges.
Hvor dataene ligger
Regnskap og identitetsdokumenter er den delen av en bedrift man ikke uten videre kan overlate til den regionen en skyleverandør tilfeldigvis defaulter til. PostgreSQL kjører i en EØS-region, dokumentlagringen for bilag er Cloudflare R2 med EU-jurisdiksjon satt, og lagringsreglene står skrevet ned i arkitekturdokumentene heller enn å ligge igjen som en implementasjonsdetalj. Fakturalesingen er tilfellet som normalt ville sendt et dokument ut av landet, og det er nettopp derfor den kjører på vår egen maskinvare i Norge og ikke mot et utenlandsk API.
Stack
- Frontend: Astro og TypeScript på Cloudflare Workers.
- Backend: Python 3.12, FastAPI og SQLAlchemy, containerisert for Cloudflare Containers i EU-jurisdiksjon.
- Database: PostgreSQL i en EØS-region, migrasjoner med Alembic.
- Domenelag: hovedbok, bilag, faktura, mva og identitet holdt adskilt fra HTTP-flaten, med SAF-T-eksporten og de offentlige integrasjonene som egne moduler.