Sjekker Vipps-status

Donasjoner her bruker ekte Vipps-betalinger

Vi sjekker produksjonsstatus før du får mulighet til å fortsette.

Se koden i stedet ↓
Vipps · Next.js · TypeScript · tRPC · Prisma

Hele Vipps-reisen.
Ferdig bygget.

En komplett, kjørende Vipps-integrasjon du kan klone eller plukke moduler fra: engangsbetaling, abonnement, QR, Vipps Login, signerte webhooks, refusjon og partner-modellen med eget salgssted per kunde. Alt er gratis og MIT-lisensiert — det eneste som kan betales på denne siden, er en frivillig donasjon til vedlikeholderen.

Kunde
Logg inn · betal · følg opp
Administrator
Trekk · refunder · avstem
Sikkerhet
HMAC + autoritativ status
Se hele flyten

Samme Vipps-integrasjon. To helt ulike behov.

Bytt perspektiv for å se nøyaktig hva kunden opplever, og hva administratoren kan følge opp.

Jeg er kunde

Fra første klikk til full kontroll

Kunden slipper skjemaer, kortnumre og usikkerhet. Alt godkjennes i Vipps, og historikken ligger samlet på Min side.

  1. 1
    Logg inn

    Vipps deler verifisert navn og kontaktinformasjon etter samtykke.

  2. 2
    Velg betaling

    Betal én gang, eller opprett en månedlig eller årlig avtale.

  3. 3
    Godkjenn i Vipps

    Kunden sendes trygt til Vipps og tilbake når handlingen er godkjent.

  4. 4
    Få oversikt

    Se kvittering, betalingsstatus og administrer aktive avtaler på Min side.

Prøv kundereisen →
Ta den i bruk

Ekte kode fra dette repoet.

Ingenting under er skrevet for en demo. Det er de samme linjene som kjører betalingen du kan prøve lenger nede på siden — kopier dem, eller klon hele appen.

Kjør den lokalt
git clone https://github.com/aridder/vipps-starter
cd vipps-starter
cp .env.example .env
npm install && npm run db:up && npm run db:reset
npm run dev

Så trenger du Vipps-nøkler

Hent test-nøkler i Vipps-portalen og legg dem i .env. Alt peker mot testmiljøet som standard — du kan ikke flytte ekte penger ved et uhell.

Ett kall til ePayment. Referansen er også idempotensnøkkelen, så et forsøk nummer to returnerer den samme betalingen i stedet for å lage en ny.

src/server/vipps.ts
const res = await fetch(`${BASE}/epayment/v1/payments`, {
  method: "POST",
  headers: {
    ...baseHeaders(msn),
    Authorization: `Bearer ${token}`,
    // The reference identifies exactly one payment, so it is
    // the natural idempotency key: a retry returns the same
    // payment instead of being rejected as a duplicate.
    "Idempotency-Key": reference,
  },
  body: JSON.stringify({
    amount: { currency: "NOK", value: amountOre },
    paymentMethod: { type: "WALLET" },
    reference,
    userFlow: "WEB_REDIRECT",   // or "QR"
    returnUrl,
    paymentDescription: description.slice(0, 100),
  }),
});
Den viktigste regelen

Hvor status kommer fra.

Dette er feilen de fleste egenutviklede integrasjoner gjør, og den viser seg først som penger som mangler eller telles to ganger.

Betalingsflyt: hvor status kommer fraAppen oppretter en betaling hos Vipps, kunden godkjenner i Vipps-appen, Vipps sender en webhook som kun er et signal, og appen henter deretter autoritativ status fra Vipps.Kundenettleser + Vipps-appDin appNext.js · tRPCVippsePayment API1. Opprett betaling2. Til Vipps-appen3. Webhook: «noe skjedde»signert, men ikke bevis4. Hent status — dette er fasiten
Den grå pilen er ikke bevis. Webhooken kan signeres, men den leveres minst én gang, uten rekkefølgegaranti, og av og til ikke i det hele tatt. Redirecten styres av brukeren. Begge er signaler om å gå og spørre Vipps. Den grønne pilen er det eneste stedet appen henter sannheten om at penger faktisk har flyttet seg.
Tilstandene

Hva skjer med en betaling.

Klikk deg gjennom tilstandene en ekte Vipps-betaling går gjennom, og hva appen din må gjøre i hver av dem.

Vipps rapporterer: AUTHORIZED
Hva det betyr
Kunden har godkjent. Beløpet er reservert på kundens konto, men ikke trukket.
Hva appen din skal gjøre
Trekk beløpet (capture) når du leverer. Skal du ikke levere, må du kansellere — ellers står kundens penger unødvendig sperret.
Prøv en ekte QR-betaling med live statusoppdatering →
Produktportefølje

Det som er bygget nå – og det som venter på aktivering.

Porteføljen prioriterer komplette brukerreiser fremfor flest mulig API-logoer. Hver modul skal være forståelig, testbar og nyttig både for kunde og administrator.

Prøv nå

Vipps Login

Passordfri innlogging med verifisert kundeprofil og tydelig samtykke.

Prøv nå

ePayment

Engangsbetaling, reservasjon, trekk, kansellering og hel eller delvis refusjon.

Prøv nå

Recurring

Månedlige og årlige avtaler med automatiske trekk, retry og oppsigelse.

Bygget — se koden

Order Management

Rike kvitteringer og ordrelinjer legges direkte i Vipps-aktiviteten for hver engangsbetaling.

Prøv nå

QR

Vipps-generert betalings-QR med fysisk kundetilstedeværelse og live, autoritativ statussjekk.

Bygget — se koden

Report API

Datobasert avstemming av funds og fees i den rollebeskyttede driftssentralen.

Bygget — se koden

Signerte webhooks

Hendelser valideres med HMAC, mens API-oppslag bekrefter autoritativ status.

Bygget — se koden

Partner (flere salgssteder)

Én plattform, mange kunder: hver organisasjon har sitt eget salgssted (MSN), og pengene går rett til dem — aldri via plattformen. Webhooks registreres selvbetjent per MSN. Ofte kalt «super-merchant», men det er ikke Vipps' begrep.

Les mer

Vipps Recurring uten omvei

Fire mønstre som skiller en abonnementsintegrasjon som holder fra en som dobbelttrekker — modellen, idempotensnøkkelen, autoritativ status og AUTHORIZED-detaljen. Med diagrammer og ekte kode.

Les artikkelen →
Hvilket produkt trenger du?

ePayment, Express, Recurring eller QR?

Det er stort sett ett spørsmål som avgjør: hva slags kjøp er det? Under er kriteriene, og hva som er bygget her.

ProduktVelg denne nårI dette repoet
ePaymentVipps-docs ↗Standardvalget. Kunden betaler på nettsiden din — digitalt produkt, donasjon, eller en vare du allerede har adressen til.Bygget

Brukt av donasjonsknappen på denne siden.

ePayment ExpressVipps-docs ↗Fysisk vare der du trenger adresse og fraktvalg. Kunden velger frakt inne i Vipps-appen, og du får adressen tilbake på et callback.Bak et flagg

Bygget, men av som standard til et ekte produkt og levering er satt opp.

RecurringVipps-docs ↗Abonnement, medlemskap eller fast støtte. Kunden godkjenner én avtale, og du trekker på den senere uten at kunden må gjøre noe.Bygget

Avtale + trekk, med en daglig kjøring som lager trekket før forfall.

QRVipps-docs ↗Kunden er fysisk til stede — kasse, bord, plakat, automat. Skanning åpner betalingen i appen.Bygget

Her løst som ePayment med userFlow QR, ikke som eget QR-API.

LoginVipps-docs ↗Du vil vite hvem kunden er — verifisert navn, e-post og telefon — uten å bygge passord og glemt-passord selv.Bygget

Bestilles som eget produkt hos Vipps, i tillegg til betaling.

CheckoutVipps-docs ↗Var den ferdigpakkede løsningen som samlet innlogging, betaling og frakt i én økt.Ikke bygget

Vipps har merket Checkout som legacy og selger løsningen til Kustom. Derfor bygger dette repoet på ePayment direkte.

Fakta hentet fra Vipps' egen dokumentasjon 28.08.2026.

Spørsmål folk faktisk stiller

Før du begynner.

Svarene er hentet fra Vipps' egen dokumentasjon. Der dokumentasjonen er uklar, står det at den er det — i stedet for en gjetning.

Selger denne siden noe?
Nei. Koden og all dokumentasjon er gratis og åpen på GitHub (MIT-lisens) — det finnes ingen betalt tilgang, ikke noe abonnement på innhold og ingen tjenester til salgs her. Betalingene på siden er frivillige donasjoner til utvikleren, uten motytelse, og finnes utelukkende for å demonstrere integrasjonen med ekte produksjonsbetalinger. En bedrift som vil ta imot Vipps-betalinger med denne koden, inngår sin egen avtale direkte med Vipps og får sitt eget salgssted (MSN).
Trenger jeg en Vipps-avtale bare for å teste?
Ja. Et test-salgssted opprettes automatisk når bedriften bestiller et Vipps-produkt som inkluderer et API. Testnøklene er normalt klare noen minutter etter det, mens produksjonsnøkler tar noen dager. Du kan altså ikke laste ned dette repoet og teste mot Vipps helt uten en bedriftsrelasjon.
Hva kreves for å komme i gang som bedrift?
Et registrert foretak med organisasjonsnummer i Norge, Danmark eller Finland, og en bedriftskonto i samme land. Vipps gjør kundekontroll (KYC), og avtalen signeres med elektronisk ID før du kan gå live. Selve go-live er en produktspesifikk sjekkliste, ikke en fritekstvurdering. Dokumentasjonen sier ikke noe eksplisitt om enkeltpersonforetak — spør Vipps hvis det er din situasjon.
Hva koster Vipps?
Vipps publiserer standardpriser: integrert betaling og faste betalinger til 2,99 % + 1 kr per transaksjon, betalingslenker til 2,49 % + 1 kr, donasjoner til 1,99 % + 1 kr, og Login fra 300 kr per måned. Vipps presiserer selv at dette er standard virksomhetsnivå, og at andre nivåer kan være tilgjengelige på forespørsel eller via partner — så sjekk prissiden før du regner på det. Tallene her er hentet 28.08.2026.
Hvordan skiller testmiljøet seg fra produksjon?
Test kjører mot apitest.vipps.no med egne nøkler og en egen test-app (MT-appen). Testbrukere har telefonnummer, fødselsnummer og et forhåndsregistrert kort, og er ikke knyttet til ett bestemt salgssted. Tre ting finnes ikke i test: oppgjør (og dermed ingen oppgjørsrapporter), partner-nøkler, og pålitelige push-varsler.
Hva er MSN, og hva er «partner»-modellen?
Et MSN (Merchant Serial Number) identifiserer et salgssted — ikke en bedrift. Én bedrift kan ha flere salgssteder, hvert med egen konto og egne nøkler. En partner er en plattform som handler på vegne av flere bedrifter: med partner-nøkler bruker du ett nøkkelsett på tvers, og angir hvilket salgssted hver forespørsel gjelder. Pengene går aldri via plattformen — hver bedrift er selv Vipps-kunde med eget organisasjonsnummer og eget oppgjør. «Super-merchant» er ikke Vipps’ eget begrep; det er lånt vokabular fra andre betalingsplattformer.
Hva er den vanligste feilen i en Vipps-integrasjon?
Å tro på webhooken. Vipps anbefaler selv både webhooks og oppslag, og status skal hentes fra Get payment details. Den nest vanligste er mer subtil: en betaling blir stående i AUTHORIZED også etter at du har trukket den — tilstanden forteller deg ikke om du har trukket. Behandler du «AUTHORIZED» som «ikke trukket ennå», trekker du to ganger. Og reservasjoner som ikke skal trekkes, må kanselleres før fristen, ellers ligger kundens penger unødvendig sperret.
Kan jeg bruke denne koden kommersielt?
Ja, uten forbehold. Koden er MIT-lisensiert: bruk den til hva du vil, også kommersielt, uten å spørre først. Behold copyright-linjen i LICENSE, så har du oppfylt hele forpliktelsen.
All dokumentasjon hos Vipps ↗
Laget av

Asbjørn Riddervold

Utvikler med sans for artige idéer og enkle løsninger. Til daglig i Kantega, ellers stadig på jakt etter nye idéer å utforske.

Fritt å bruke

Vipps Starter er MIT-lisensiert. Bruk den til hva du vil, også kommersielt, uten å spørre. Trenger du hjelp med Vipps eller betaling, tar jeg oppdrag — og sparte den deg tid, holder en donasjon prosjektet i live. 🙏

MIT-lisensen ↗