Oversikt
LagDinBridge automatiserer overføring av WooCommerce-ordrer til Fiken. Ordrer, kontakter, fakturaer, innbetalinger og kreditnotaer synkroniseres automatisk, slik at du slipper manuell dobbeltregistrering og reduserer feil. Integrasjonen bruker Fiken API v2 med OAuth2-autentisering.
Hva synkroniseres
Kunder
Opprettes automatisk i Fiken. Oppdateres ved endret navn, adresse eller telefon (Bokføringsloven §5-1-1).
Ordrer
Ordrelinjer med beskrivelse, antall, enhetspris (netto i øre), MVA og inntektskonto. Støtter fremmedvaluta.
Fakturaer
Tre moduser: kontantsalg (cash=true), ubetalt faktura (cash=false), eller utkast (draft). Konfigurerbart per integrasjon.
Innbetalinger
Kontantsalg inkluderer betaling automatisk. Fiken bruker issueDate som betalingsdato.
Kreditnotaer
Full og delvis kreditnota via /creditNotes/full og /creditNotes/partial
MVA-koder
Automatisk MVA-beregning basert på kundens land (NO, EU, eksport)
Autentisering (OAuth2)
Fiken API v2 bruker OAuth2 Authorization Code for integrasjoner. Brukeren klikker «Koble til Fiken» og godkjenner tilgangen i Fiken. Tokens lagres kryptert.
Access Token
Bearer token for API-kall. Utløper etter 1 time.
Refresh Token
Brukes til å fornye access token automatisk.
GET /api/v2/companies/{slug}/invoices
Authorization: Bearer {access_token}
Accept: application/jsonPOST https://fiken.no/oauth/token
Content-Type: application/x-www-form-urlencoded
Authorization: Basic base64(client_id:client_secret)
grant_type=refresh_token&refresh_token={refresh_token}Fiken API v2 — endepunkter
Kundebehandling
| Metode | Endepunkt | Formål |
|---|---|---|
| GET | /api/v2/companies/{slug}/contacts?email={email} | Søk kontakt på e-post |
| POST | /api/v2/companies/{slug}/contacts | Opprett ny kontakt (kunde) |
| PUT | /api/v2/companies/{slug}/contacts/{id} | Oppdater eksisterende kontakt (adresse, navn, telefon) |
Fakturering
| Metode | Endepunkt | Formål |
|---|---|---|
| POST | /api/v2/companies/{slug}/invoices | Opprett faktura (cash=true/false) |
| POST | /api/v2/companies/{slug}/invoices/drafts | Opprett fakturautkast (ikke bokført) |
| DELETE | /api/v2/companies/{slug}/invoices/drafts/{id} | Slett fakturautkast |
| POST | /api/v2/companies/{slug}/invoices/counter | Initialiser fakturateller |
{
"uuid": "a3b5c7d9-...", // Deterministisk UUID5 basert på integrasjon+ordre
"customerId": 11637123456,
"issueDate": "2026-03-01",
"dueDate": "2026-03-01",
"currency": "NOK", // Eller EUR, USD, GBP — Fiken konverterer til NOK
"bankAccountCode": "1920:10001",
"cash": true,
"paymentAccount": "1920:10001",
"ourReference": "WooCommerce #295", // Selgers referanse (§5-1-1)
"yourReference": "Ola Nordmann", // Kjøpers navn
"orderReference": "295", // Ordrenummer fra WooCommerce
"lines": [
{
"description": "Produktnavn",
"quantity": 1,
"unitPrice": 6400,
"vatType": "HIGH",
"incomeAccount": "3000"
}
]
}Referansefelt (Bokføringsforskriften §5-1-1): ourReference = selgers referanse («WooCommerce #NNN»), yourReference = kjøpers navn, orderReference = ordrenummer fra WooCommerce. Disse sikrer sporbarhet mellom nettbutikk og regnskap.
Kreditnotaer (refusjoner)
| Metode | Endepunkt | Formål |
|---|---|---|
| POST | /api/v2/companies/{slug}/creditNotes/full | Full kreditnota mot eksisterende faktura |
| POST | /api/v2/companies/{slug}/creditNotes/partial | Delvis kreditnota med egne linjer |
| POST | /api/v2/companies/{slug}/creditNotes/counter | Initialiser kreditnotateller |
Oppslag og hjelpeendepunkter
| Metode | Endepunkt | Formål |
|---|---|---|
| GET | /api/v2/companies/{slug}/bankAccounts | Hent bankkontoer (19xx-serien) |
| GET | /api/v2/companies/{slug}/accounts?range=3000-3999 | Hent inntektskontoer (3xxx) |
| GET | /api/v2/companies/{slug} | Tilkoblingstest + firmainfo |
WooCommerce API-endepunkter
| Metode | Endepunkt | Formål |
|---|---|---|
| GET | /wp-json/wc/v3/orders?status=completed&per_page=100 | Hent ordrer (paginert) |
| GET | /wp-json/wc/v3/orders/{id} | Enkeltordre med detaljer |
| GET | /wp-json/wc/v3/orders/{id}/refunds | Refusjoner for en ordre |
Dataflyt — Ordresynkronisering
Hent ordrer fra WooCommerce
REST API v3 med paginering. Kun ordrer med status «completed» og betalt.
Sjekk idempotens
wc_fiken_mappings sikrer at ingen ordre behandles to ganger. Sjekk på wc_order_id + integration_id.
Finn, oppdater eller opprett kontakt
Søk i Fiken på e-post. Oppdater eksisterende kontakt hvis navn, adresse eller telefon har endret seg. Opprett ny kontakt hvis ikke funnet.
Bestem MVA-kode
Basert på kundens land og EU VAT-nummer: norsk MVA (HIGH/MEDIUM/LOW), EU B2B reverse charge (0%), eller eksportfritak.
Bygg fakturalinjer
Ordrelinjer med beskrivelse (maks 200 tegn), antall, enhetspris i øre, MVA-kode og inntektskonto.
Bestem overføringsmodus
Online-betaling (Stripe/Vipps) → betalt (cash=true). Fakturabetaling (bacs/invoice) → ubetalt (cash=false) eller utkast (draft), basert på innstilling.
Opprett faktura i Fiken
Faktura med deterministisk UUID (server-side idempotens), valuta, bankAccountCode og cash-flagg. Fremmedvaluta (EUR, USD osv.) sendes direkte — Fiken konverterer til NOK.
Lagre mapping
Fiken faktura-ID lagres i wc_fiken_mappings for idempotens, refusjonssporing og statusoppfølging.
Synkroniseringsfrekvens
Nattlig batch-synkronisering
Alle nye og endrede ordrer synkroniseres automatisk kl. 02:00 hver natt.
Manuell synkronisering
Brukeren kan trigge synkronisering fra dashbordet. Ordrer hentes og sendes til Fiken umiddelbart.
Automatisk feilhåndtering
Feilede synkroniseringer forsøkes automatisk på nytt med exponential backoff (opptil 5 forsøk).
MVA-håndtering
| Fiken-kode | Sats | Beskrivelse |
|---|---|---|
| HIGH | 25 % | Standard norsk MVA (de fleste varer og tjenester) |
| MEDIUM | 15 % | Næringsmidler (mat og drikke) |
| LOW | 12 % | Transport, kino, hotell, overnatting |
| EXEMPT | 0 % | Fritatt (helse, utdanning) |
| EXEMPT_EXPORT | 0 % | Eksport ut av Norge |
| EXEMPT_REVERSE_CHARGE | 0 % | EU B2B med gyldig VAT-nummer (omvendt avgiftsplikt) |
| OUTSIDE | 0 % | Utenfor MVA-området |
Bestemmelseslogikk
Hvis land = NO:
Mat/drikke → 15% (MEDIUM)
Transport/hotell → 12% (LOW)
Standard → 25% (HIGH)
Hvis land i EU + B2B + gyldig VAT-nummer:
→ 0% omvendt avgiftsplikt (EXEMPT_REVERSE_CHARGE)
VAT-nummer hentes automatisk fra WooCommerce meta_data
(støtter: EU VAT Number, YITH VAT, Aelia EU VAT Assistant m.fl.)
Hvis land i EU + B2C (uten VAT-nummer):
→ 25% norsk MVA (HIGH) — forenklet modell
Hvis utenfor EU:
→ 0% eksport (EXEMPT_EXPORT)Betalingskonto-mapping
| Betalingsmetode | Konto | Beskrivelse |
|---|---|---|
| Bankoverføring (bacs) | 1920 | Bankinnskudd |
| Kontant (cod) | 1900 | Kontanter |
| Sjekk (cheque) | 1920 | Bankinnskudd |
| PayPal | 1910 | Andre innbetalinger |
| Stripe | 1910 | Andre innbetalinger |
| Klarna | 1910 | Andre innbetalinger |
| Vipps | 1910 | Andre innbetalinger |
| Nets/Bambora | 1910 | Andre innbetalinger |
| Standard (ukjent) | 1920 | Bankinnskudd (fallback) |
Prioritet: Bruker-konfigurert per-metode → bruker-global → innebygd mapping → 1920:10001 (fallback). Betalingsmetoder kan også settes til å hoppes over (ikke overføres til Fiken).
Fremmedvaluta-støtte
LagDinBridge sender ordrevalutaen direkte til Fiken. For ordrer i EUR, USD, GBP eller andre valutaer opprettes fakturaen i originalvalutaen. Fiken konverterer automatisk til NOK for bokføring basert på gjeldende valutakurs.
Faktura #10010 — Valuta: EUR
Beløp: 49,00 EUR (hvorav MVA 9,80 EUR)
NOK-kurs: Fiken henter automatisk fra Norges Bank
Bokført: 549,22 NOK (automatisk konvertert)
→ Salgsdokumentet viser EUR-beløp
→ Regnskapet føres i NOKAutomatisk kundeoppdatering
Når en ordre synkroniseres, sjekker LagDinBridge om kundens data har endret seg siden forrige gang. Hvis navn, adresse, postnummer, by eller telefon er endret, oppdateres kontakten automatisk i Fiken før fakturaen opprettes.
| Felt | Sjekkes | Oppdateres |
|---|---|---|
| Navn | Ja | Ja |
| Adresse | Ja | Ja |
| Postnummer | Ja | Ja |
| By | Ja | Ja |
| Telefon | Ja | Ja |
| Land | Ja | Ja |
| Org.nr (B2B) | Ja | Ja — fra billing.organization_number eller vat_number |
| E-post | Brukes som oppslags-nøkkel | Nei (identifikator) |
Overføringsmoduser
Betalt — Kontantsalg (cash=true)
Brukes for online-betalinger (Stripe, PayPal, Vipps, Klarna). Faktura opprettes med cash: true. Fiken registrerer betaling automatisk med issueDate som betalingsdato.
Ubetalt — Fakturabetaling (cash=false)
Brukes for fakturabetalinger (B2B, bacs, invoice). Faktura opprettes med cash: false og forfallsdato 14 dager etter fakturadato. Vises som utestående kundefordring i Fiken.
Utkast — Fakturautkast (draft)
Brukes når brukeren ønsker full kontroll før bokføring. Fakturautkast opprettes via POST /invoices/drafts. Utkastet er ikke bokført — det vises under «Utkast» i Fiken og kan fritt redigeres eller slettes. Først når brukeren manuelt godkjenner utkastet i Fiken, bokføres det som en ordinær faktura.
Regnskapsmessig føring
1. Betalt modus — Kontantsalg (Stripe, Vipps, Klarna o.l.)
Kunden har allerede betalt i nettbutikken. Fiken oppretter faktura og registrerer betaling i samme operasjon (cash=true).
POST /invoices med cash=true
Fiken bokfører automatisk:
┌──────────────────────────────────────────────────────┐
│ Debet 1920 Bank kr 80,00 │
│ Kredit 3000 Salgsinntekt kr 64,00 │
│ Kredit 2701 Utgående MVA, høy sats kr 16,00 │
└──────────────────────────────────────────────────────┘
→ Resultat: Faktura opprettet og betalt i ett steg.
Ingen åpen kundefordring.POST /creditNotes/full med invoiceId + issueDate
Fiken bokfører automatisk:
┌──────────────────────────────────────────────────────┐
│ Kredit 1500 Kundefordring kr -80,00 │
│ Debet 3000 Salgsinntekt kr 64,00 │
│ Debet 2701 Utgående MVA, høy sats kr 16,00 │
└──────────────────────────────────────────────────────┘
→ Resultat: Inntekt og MVA reversert.
Kreditnota må settes som oppgjort i Fiken
(«Sett til oppgjort uten betaling»).POST /creditNotes/partial med invoiceId, contactId og linjer
Fiken bokfører automatisk:
┌──────────────────────────────────────────────────────┐
│ Kredit 1500 Kundefordring kr -40,00 │
│ Debet 3000 Salgsinntekt kr 32,00 │
│ Debet 2701 Utgående MVA, høy sats kr 8,00 │
└──────────────────────────────────────────────────────┘
→ Resultat: Delvis inntekt reversert.
Kreditnota må settes som oppgjort i Fiken.2. Ubetalt modus — Fakturabetaling (B2B)
Kunden betaler på faktura. Fakturaen bokføres som utestående kundefordring med 14 dagers forfallstid.
POST /invoices med cash=false, dueDate = issueDate + 14 dager
Fiken bokfører automatisk:
┌──────────────────────────────────────────────────────┐
│ Debet 1500 Kundefordring kr 98,00 │
│ Kredit 3000 Salgsinntekt kr 78,40 │
│ Kredit 2701 Utgående MVA, høy sats kr 19,60 │
└──────────────────────────────────────────────────────┘
→ Resultat: Faktura vises som UBETALT i Fiken.
Forfalt beløp = 98,00. Betaling registreres
manuelt i Fiken når kunden betaler.POST /creditNotes/full med invoiceId + issueDate
Fiken bokfører automatisk:
┌──────────────────────────────────────────────────────┐
│ Kredit 1500 Kundefordring kr -98,00 │
│ Debet 3000 Salgsinntekt kr 78,40 │
│ Debet 2701 Utgående MVA, høy sats kr 19,60 │
└──────────────────────────────────────────────────────┘
→ Resultat: Kundefordring = 0. Ingen penger å
tilbakebetale fordi kunden aldri betalte.
Kreditnota utligner fakturaen direkte.POST /creditNotes/partial med invoiceId, contactId og linjer
Fiken bokfører automatisk:
┌──────────────────────────────────────────────────────┐
│ Kredit 1500 Kundefordring kr -49,00 │
│ Debet 3000 Salgsinntekt kr 39,20 │
│ Debet 2701 Utgående MVA, høy sats kr 9,80 │
└──────────────────────────────────────────────────────┘
→ Resultat: Kundefordring redusert fra 98,00 til 49,00.
Kunden skylder nå kun det gjenværende beløpet.3. Utkast — Fakturautkast (ikke bokført)
Fakturautkast sendes til Fikens utkast-kø og bokføres ikke før brukeren manuelt godkjenner det i Fiken. Ingen bilagsføring skjer automatisk.
POST /invoices/drafts
Fiken lagrer utkastet UTEN bokføring:
┌──────────────────────────────────────────────────────┐
│ Ingen bilagsføring — utkastet vises under │
│ «Salg → Utkast» i Fiken. │
│ │
│ Brukeren kan: │
│ • Redigere alle felter (linjer, beløp, MVA) │
│ • Godkjenne → bokføres som ordinær faktura │
│ • Slette → ingen regnskapsmessig effekt │
└──────────────────────────────────────────────────────┘
→ Resultat: Utkast opprettet. Ingen kontering
før manuell godkjenning i Fiken.DELETE /invoices/drafts/{draftId}
Siden utkastet aldri ble bokført, trengs ingen kreditnota:
┌──────────────────────────────────────────────────────┐
│ Utkastet slettes fra Fiken. │
│ Ingen bilag, ingen kontering, ingen reversering. │
└──────────────────────────────────────────────────────┘
→ Resultat: Utkastet er fjernet. Ingen
regnskapsmessig påvirkning.1) DELETE /invoices/drafts/{draftId} — slett gammelt utkast
2) POST /invoices/drafts — opprett nytt med gjenværende linjer
Eksempel: Kunde kjøpte 2 varer, refunderer 1:
┌──────────────────────────────────────────────────────┐
│ Originalt utkast (2 linjer): │
│ Linje 1: Produkt A — 1 stk — 200,00 │
│ Linje 2: Produkt B — 1 stk — 150,00 │
│ │
│ Refusjon: Produkt A refunderes │
│ │
│ Nytt utkast (1 linje): │
│ Linje 1: Produkt B — 1 stk — 150,00 │
└──────────────────────────────────────────────────────┘
→ Resultat: Nytt utkast med kun gjenværende varer.
Ingen kreditnota nødvendig.Oppsummering per modus
| Modus | Faktura | Betaling | Kreditnota | Oppgjør |
|---|---|---|---|---|
| Betalt (cash=true) | POST /invoices | Automatisk (issueDate) | /creditNotes/full eller /partial | Manuelt i Fiken |
| Ubetalt (cash=false) | POST /invoices | Ingen — utestående | /creditNotes/full eller /partial | Utlignes automatisk |
| Utkast (draft) | POST /invoices/drafts | Ingen — ikke bokført | DELETE /invoices/drafts/{id} | Ikke aktuelt |
Refusjonshåndtering
Full refusjon (hele ordren)
Kreditnota opprettes via /creditNotes/full med referanse til originalfakturaens invoiceId. Fiken reverserer alle linjer automatisk med korrekt MVA-kode og beløp. Kreditnotaen kobles til originalfakturaen i Fikens kundereskontro.
Delvis refusjon
Kreditnota opprettes via /creditNotes/partial med egne kreditlinjer. Proporsjonal MVA-fordeling etter Bokføringsforskriften § 5-1-1. Hver kreditlinje beregnes med riktig MVA basert på originalordrens linjer. Kreditnotaen kobles til originalfakturaen via invoiceId.
Refusjon på utkast (draft)
Når originalordren ble sendt som utkast (ikke bokført), håndteres refusjoner annerledes: Utkastet slettes i stedet for å opprette kreditnota. Ved delvis refusjon slettes det gamle utkastet og et nytt utkast opprettes med kun de gjenværende varene. Ingen kreditnota trengs fordi utkastet aldri ble bokført.
Verifiseringsmodus (staging)
Når verifiseringsmodus er aktivert, legges refusjoner i en staging-kø for manuell godkjenning. Brukeren ser refusjonsdetaljer og kan godkjenne eller avvise. Først ved godkjenning opprettes kreditnotaen i Fiken (eller utkastet slettes, dersom originalordren var et utkast).
Idempotens og feilhåndtering
Duplikatbeskyttelse
| Kontekst | Mekanisme | Nøkkel |
|---|---|---|
| Ordre → faktura | Deterministisk UUID5 | uuid5(wc-fiken-{integration}-{ordre}) |
| Ordre → duplikatsjekk | Database mapping | wc_fiken_mappings.wc_order_id |
| Refusjon → duplikatsjekk | processed_refund_ids (JSON) | [refund_id_1, refund_id_2, ...] |
| Fakturateller | Auto-init ved 409 | POST /invoices/counter |
| Kreditnotateller | Auto-init ved 409 | POST /creditNotes/counter |
Feilhåndteringsmekanismer
- Circuit breaker: Åpnes etter 5 påfølgende feil og tilbakestilles automatisk etter 60 sekunder. Auth- og valideringsfeil teller ikke.
- Eksponentiell backoff: Opptil 5 forsøk med økende ventetid (2s → 4s → 8s → 16s → 32s, maks 60s).
- Ratebegrensning: Maks 50 forespørsler per 60 sekunder (Fikens grense er ca. 60/min).
- Connection pooling: Gjenbrukbare HTTP-forbindelser med granulerte timeouts (connect 10s, read 45s, write 15s).
- Automatisk teller-init: Ved 409 «counter not initialized» initialiseres faktura- eller kreditnotateller automatisk og kallet forsøkes på nytt.
Slik kobler du til
- 1
Opprett integrasjon i LagDinBridge
Gå til Integrasjoner → Ny → velg WooCommerce → Fiken.
- 2
Koble til WooCommerce
Fyll inn WooCommerce-URL, Consumer Key og Consumer Secret. Test tilkoblingen.
- 3
Koble til Fiken
Klikk «Koble til Fiken» — du blir sendt til Fiken for å godkjenne tilgangen. Etter godkjenning lagres tokens automatisk.
- 4
Konfigurer innstillinger
Velg betalingskonto-mapping, MVA-innstillinger, og om du vil bruke verifiseringsmodus (staging).
- 5
Start synkronisering
Klikk «Synkroniser nå» for å hente ordrer, eller vent på nattlig batch-synkronisering.
Sikkerhet
Kryptert lagring
Alle API-nøkler og tokens krypteres med Fernet (AES-128-CBC + HMAC-SHA256) før lagring
HTTPS-only
All kommunikasjon med eksterne API-er skjer over TLS 1.2+ — ingen ukryptert trafikk
Tenant-isolering
Hver brukers credentials er isolert — ingen deling av nøkler mellom kunder
Feilhåndtering
Circuit breaker, exponential backoff (5 forsøk), og respekt for rate limits
Forutsetninger
- Aktiv Fiken-konto (API-modul aktiveres automatisk via OAuth)
- WooCommerce REST API aktivert med Consumer Key + Consumer Secret
- LagDinBridge-konto hos Technobridge
- Konfigurasjon av betalingskonto-mapping (gjøres i LagDinBridge)
Kontaktinformasjon
Utvikler: Technobridge
E-post: post@technobridge.no
LagDinBridge er utviklet av Technobridge
Spørsmål? Kontakt oss på post@technobridge.no