Tallgruppen er et regnskapsbyrå i Bergen med 120 ansatte og 2 400 kunder. I fjor tok de inn mellom 30 og 50 nye kunder hver måned, og hver av dem tok to uker å få i gang. I dag tar det tjue minutter. Dette innlegget går gjennom flyten de bygde, med kode fra deres egen integrasjon (gjengitt med tillatelse).
Steg 1: organisasjonsnummer inn
Alt starter med at en rådgiver taster inn organisasjonsnummeret til den nye kunden i Tallgruppens kundesystem (skrevet i .NET). Ett kall henter alt:
var v = await spire.Virksomheter.HentAsync(orgnr, new HentParams {
Utvid = ["roller", "rettighetshavere", "underenheter"]
});
kunde.Navn = v.Navn;
kunde.Organisasjonsform = v.Organisasjonsform;
kunde.Fakturaadresse = v.Postadresse ?? v.Forretningsadresse;
kunde.MvaPliktig = v.MvaRegistrert;
kunde.Bransje = v.Naering.Tekst;
kunde.KanMottaEhf = v.KanMottaEhf;
Rådgiveren ser kundekortet ferdig utfylt og retter det som eventuelt er feil, i stedet for å skrive alt. Det tar under et minutt.
Steg 2: kundekontroll
Hvitvaskingsloven krever at byrået kjenner kundens eiere og ledelse. Tidligere ble det gjort med skjermbilder fra tre registre. Nå lagres det strukturert:
kunde.DagligLeder = v.Roller.DagligLeder;
kunde.Styre = v.Roller.Styre;
kunde.ReelleRettighetshavere = v.Rettighetshavere;
kunde.KundekontrollUtfort = DateTime.UtcNow;
kunde.KundekontrollRequestId = v.RequestId; // revisjonsspor
RequestId er Spire-Request-Id. Revisor kan slå den opp og se nøyaktig hva Spire svarte den dagen. Tallgruppens revisor godkjente den nye kundekontrollen uten merknader.
Steg 3: oppdragsavtale til riktig person
Oppdragsavtalen genereres fra kundekortet som PDF. Det nye er hvem den sendes til: ikke «kontaktpersonen», men den som ifølge registeret har signaturrett.
var signatarer = v.Roller.Signaturberettigede.First(); // første gyldige kombinasjon
var jobb = await spire.Signeringer.OpprettAsync(new SigneringParams {
Tittel = $"Oppdragsavtale {v.Navn}",
Dokument = pdf,
Nivaa = "eid",
Parter = signatarer.Select(navn => new Part {
Navn = navn,
Epost = kunde.EpostFor(navn),
Rolle = "oppdragsgiver"
}).Concat([new Part { Navn = radgiver.Navn, Epost = radgiver.Epost, Rolle = "byrå", Rekkefolge = 2 }]).ToList(),
Frist = DateTime.Today.AddDays(14),
Paaminnelser = [1, 3, 7],
LagringDager = 3650,
});
Kunden signerer med eID. Rådgiveren signerer etterpå (rekkefølge 2). Webhooken signering.fullfort arkiverer PDF-en i kundemappen og setter kunden som aktiv.
96 prosent av avtalene signeres innen 24 timer. Før kom 8 prosent aldri tilbake.
Steg 4: hold kundekortet ferskt
Det som før var en årlig gjennomgang, er nå en webhook:
// POST /spire-webhook
var hendelse = spire.Webhooks.Verifiser(kropp, signatur, hemmelighet);
if (hendelse.Type == "virksomhet.roller_endret") {
var kunde = await db.Kunder.FindAsync(hendelse.Data.Orgnr);
await kø.LeggTil(new GjennomgaKundekontroll(kunde.Id, hendelse.Id));
}
Når en kunde bytter daglig leder eller styre, havner kunden i en kø for gjennomgang samme dag. Tallgruppen vet nå om endringer før kundene selv forteller om dem.
Steg 5: honorar som EHF
Den siste biten er byråets egne fakturaer. kunde.KanMottaEhf fra steg 1 avgjør kanalen, men i praksis trenger de ikke tenke på det: Faktura velger selv.
var f = await spire.Fakturaer.OpprettAsync(new FakturaParams {
Mottaker = new Mottaker { Orgnr = kunde.Orgnr },
Forfall = DateTime.Today.AddDays(14),
Linjer = honorar.Linjer,
Purreløp = "standard",
}, idempotencyKey: $"honorar-{kunde.Id}-{periode}");
await spire.Fakturaer.SendAsync(f.Id);
Tallene
| Før | Etter | |
|---|---|---|
| Tid til signert avtale (median) | 14 dager | 20 minutter |
| Avtaler som aldri kom tilbake | 8 % | under 1 % |
| Manuell registrering per år | ca. 1 100 timer | ca. 0 |
| Kundekontroll | Årlig skippertak | Løpende |
Integrasjonen tok to utviklere tre uker. Tallgruppen er på Skala med omtrent 180 000 kall i måneden.
«Før Spire brukte vi to uker på å få en ny kunde i gang. Nå taster en rådgiver inn organisasjonsnummeret, og oppdragsavtalen er signert før kaffen er kald.» Ingrid Åsheim, daglig leder
Hele historien ligger under kunder. Vil dere bygge noe lignende? Regnskapsbyrå-løsningen beskriver flyten, og vi hjelper gjerne til.