Donasjoner her bruker ekte Vipps-betalinger
Vi sjekker produksjonsstatus før du får mulighet til å fortsette.
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.
Samme Vipps-integrasjon. To helt ulike behov.
Bytt perspektiv for å se nøyaktig hva kunden opplever, og hva administratoren kan følge opp.
Fra første klikk til full kontroll
Kunden slipper skjemaer, kortnumre og usikkerhet. Alt godkjennes i Vipps, og historikken ligger samlet på Min side.
- 1Logg inn
Vipps deler verifisert navn og kontaktinformasjon etter samtykke.
- 2Velg betaling
Betal én gang, eller opprett en månedlig eller årlig avtale.
- 3Godkjenn i Vipps
Kunden sendes trygt til Vipps og tilbake når handlingen er godkjent.
- 4Få oversikt
Se kvittering, betalingsstatus og administrer aktive avtaler på Min side.
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.
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 devSå 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.
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),
}),
});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.
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.
- 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.
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.
Vipps Login
Passordfri innlogging med verifisert kundeprofil og tydelig samtykke.
ePayment
Engangsbetaling, reservasjon, trekk, kansellering og hel eller delvis refusjon.
Recurring
Månedlige og årlige avtaler med automatiske trekk, retry og oppsigelse.
Order Management
Rike kvitteringer og ordrelinjer legges direkte i Vipps-aktiviteten for hver engangsbetaling.
QR
Vipps-generert betalings-QR med fysisk kundetilstedeværelse og live, autoritativ statussjekk.
Report API
Datobasert avstemming av funds og fees i den rollebeskyttede driftssentralen.
Signerte webhooks
Hendelser valideres med HMAC, mens API-oppslag bekrefter autoritativ status.
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.
ePayment Express ↗
Hele flyten er bygget med serverstyrt vare, samtykke, adresse og fast frakt. Slås på først når et ekte produkt og levering er konfigurert.
Eksperimentell adapterAgentic Commerce (UCP) ↗
En isolert Payment Handler-kontrakt er klar for AI- og samtaleflyter. Ingen produksjonskall før Vipps stabiliserer API-et.
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 →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.
| Produkt | Velg denne når | I 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.
Støtt prosjektet 💜
Hvis Vipps Starter sparer deg tid, spander det du kan. Hver krone hjelper med å holde det vedlike.
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?
Trenger jeg en Vipps-avtale bare for å teste?
Hva kreves for å komme i gang som bedrift?
Hva koster Vipps?
Hvordan skiller testmiljøet seg fra produksjon?
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?
Hva er den vanligste feilen i en Vipps-integrasjon?
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?
LICENSE, så har du oppfylt hele forpliktelsen.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 ↗