Tre understøttede betalingsudbydere: Stripe (kort), MobilePay (Vipps MobilePay) og Flatpay (kort, lave gebyrer, backend Frisbii/Reepay). Kortdata gemmes aldrig hos os. Stripe/MobilePay har selvbetjenings-wizards; Flatpay forbindes med guidet flow direkte på betalinger-siden.
Kernebegreber
- Stripe-wizard: /admin/settings/stripe-setup — 5 trin med checklist + webhook-verifikator. Nøgler indsættes i trin 2, live-nøgler i trin 5 — man behøver aldrig forlade guiden. Webhook oprettes AUTOMATISK når nøglerne forbindes; trin 3 har "Genopret webhook automatisk"- og "Verificér webhook"-knapper (manuel dashboard-opsætning findes kun som avanceret fallback bag en fold-ud).
- MobilePay-wizard: /admin/settings/mobilepay-setup — 4 trin (kun selvbetjening, IKKE "kontakt support"). Indtastningsfelter er indbygget: alle 4 nøgler indsættes i trin 2, produktionsnøgler i trin 4 — man behøver aldrig forlade guiden.
- Forbind/afbryd: /admin/indstillinger/betalinger viser status for alle tre udbydere + on/off-toggle og "Forbind"/"Afbryd"-knap. For Stripe og Flatpay vises gemte nøgler (maskeret) + webhook-status med ret/rotér-knapper — ingen afbrydelse nødvendig for at rette.
- Test vs. Live: systemet detekterer automatisk og viser badge. Test-nøgler trækker ingen rigtige penge.
Stripe — opsætning
- Konto: opret på dashboard.stripe.com/register. Verificer email. Vælg Danmark som land.
- API-nøgler: Stripe Dashboard → Developers → API keys → Publishable (
pk_test_/pk_live_) + Secret (sk_test_/sk_live_). Begge SKAL være fra samme mode. Brug IKKE restricted keys — fuld adgang kræves. Klik "Reveal test key" for at se Secret. - Webhook (AUTOMATISK): oprettes af systemet i din Stripe-konto når nøglerne forbindes — inkl. alle events og signing secret. Ingen manuel opsætning i Stripe Dashboard nødvendig. Mangler/fejler forbindelsen: "Ret webhook" → "Genopret webhook automatisk" (manuel
whsec_-indtastning findes under "Avanceret"). - 8 events (tilmeldes automatisk):
checkout.session.completed,checkout.session.expired,charge.refunded,charge.dispute.created,customer.subscription.updated,customer.subscription.deleted,invoice.payment_succeeded,invoice.payment_failed. - Webhook-status (betalinger-kortet): "aktiv (seneste hændelse …)" / "oprettet — afventer første hændelse" / "FEJLER — signaturen matcher ikke" (rødt banner; fix = Genopret) / "manuel opsætning (ældre)" / "mangler".
- Test: book et hold med kort
4242 4242 4242 4242, vilkårlig fremtidig udløbsdato + 3-cifret CVC. Afvist-test:4000 0000 0000 0002. - Verificér webhook: wizardens "Verificér webhook"-knap kalder Stripe og tjekker endpoint, status, events, api-version og signing secret.
- Live: udfyld virksomhedsoplysninger (CVR, bank, adresse, ID) i dashboard.stripe.com/account/onboarding → hent live-nøgler (slå "Test mode" FRA) → udskift API-nøglerne i indstillinger — webhook genoprettes AUTOMATISK i live-mode når nøglerne gemmes.
MobilePay — opsætning (Vipps MobilePay)
- Valuta + brand: samme integration for DKK og NOK. DKK-studio → kunden ser "MobilePay"; NOK-studio → kunden ser "Vipps". Samme konto og wizard, kun navn+valuta skifter; betalingsknappen følger studiets valuta automatisk. EUR og andre valutaer kan IKKE bruge MobilePay/Vipps → brug Stripe.
- Konto: opret erhvervskonto i Vipps MobilePay Portal. Kræver CVR, virksomhedsadresse, bank, kontaktperson med MitID. Godkendelse 1-3 hverdage.
- Vigtige valg under onboarding: "Jeg gør det selv, eller får mine egne udviklere til at gøre det for mig" + "På vores egen hjemmeside".
- Hvis MobilePay spørger om integrator: "Vi er selv ansvarlige for integrationen og integrerer direkte mod MobilePays API."
- 4 påkrævede nøgler: Client ID, Client Secret, Subscription Key (Ocp-Apim-Subscription-Key), Merchant Serial Number (MSN).
- Hvor: Portal → "Utvikler"/"Developer" → API-nøgler. Vælg Test-miljø først.
- Test: download "Vipps MT" (Merchant Test) fra App Store/Google Play. Test-nummer:
+47 99999999. - Live: verificer kontostatus i portalen → hent produktionsnøgler (samme sted, men "Production"-miljø) → udskift i indstillinger.
Sådan gør du
- Start opsætning: /admin/indstillinger/betalinger → "Forbind Stripe" eller "Forbind MobilePay" → wizardens trin følges.
- Slå udbyder til/fra: samme side → toggle ud for udbyder (kræver forbindelse er aktiv).
- Ret Stripe-nøgler uden at afbryde: /admin/indstillinger/betalinger → "Ret API-nøgler" → indtast nye nøgler → "Validér nøgler" → "Gem nøgler". Skiftes til en anden Stripe-konto/mode genoprettes webhook-forbindelsen automatisk på den nye konto.
- Genopret/ret webhook uden at røre nøglerne: /admin/indstillinger/betalinger → "Ret webhook"/"Opsæt webhook" → "Genopret webhook automatisk" (opretter nyt endpoint m. alle events + rydder gamle op; sikkert at køre igen). Manuel
whsec_-indtastning under "Avanceret". Mangler webhook: gult banner; signaturfejl: rødt banner. - Ret MobilePay-nøgler uden at afbryde: /admin/indstillinger/betalinger → "Ret nøgler" ved MobilePay → indtast alle 4 nøgler → "Validér" → "Gem nøgler". Gemte nøgler vises maskeret (MSN i fuld længde). MobilePay-webhook registreres automatisk — intet manuelt webhook-trin.
- Afbryd: samme side → "Afbryd"-knap (kræver bekræftelse).
- Skift fra test til live: kør wizardens sidste trin (Stripe trin 5 / MobilePay trin 4) — kun nye nøgler; Stripe-webhook genoprettes automatisk i live-mode.
Flatpay — opsætning
- Konto: opret på flatpay.com. 0,99% gebyr per transaktion; Dankort, Visa, Mastercard.
- Forbind: /admin/indstillinger/betalinger → "Forbind Flatpay" → guidet flow på siden (ingen separat wizard).
- API-nøgle: Frisbii/Reepay-dashboard → Indstillinger → API-nøgler → privat nøgle (
priv_...) → "Validér nøgle". - Webhook secret: Frisbii-dashboard → Indstillinger → Webhooks → kopiér secret → indsæt → "Forbind Flatpay". Webhook-URL + påkrævede events registreres AUTOMATISK; eksisterende webhooks fjernes ikke.
- Efter forbindelse: kortet viser konto, maskeret API-nøgle og webhook-status + toggle "Aktiveret" + "Ret nøgler" + "Rotér webhook-secret" + "Afbryd forbindelse".
- Rotér webhook-secret: indsæt nyt secret — det gamle accepteres fortsat i en overgangsperiode (ingen webhooks tabes).
- Dækning: drop-in, klippekort, abonnementer, gavekort, behandlinger, PT-pakker, sæsonhold (KUN engangsbetaling — rater er Stripe-only).
Regler / grænser
- Understøttede udbydere: Stripe, MobilePay og Flatpay — ikke PayPal, Klarna, bankoverførsel som primær udbyder.
- Flatpay kræver valuta DKK. Flatpay-betalte medlemskaber kan IKKE sættes på pause (opsig i stedet).
- Flatpay kan IKKE udskyde/reducere første abonnements-træk: planer med fremtidig opstartsdato skjuler Flatpay-valget automatisk; rabatkode eller fast plads-venteliste ved abonnementskøb afvises med henvisning til kort/MobilePay (intet halvt køb oprettes, rabatkoden forbruges ikke).
- Flatpay-abonnementer kører via Frisbii og koster ca. 349 kr./md. + ca. 1% oven i kortraten; Flatpays engangsbetalinger har INGEN månedsafgift. Til rene medlemskaber er Stripe typisk billigere (ingen fast månedsafgift). Flatpay yder ingen support på opsætning af abonnementsprodukter i Frisbii og kræver privatlivspolitik + handelsbetingelser på hjemmesiden (det gør Stripe også).
- Test- og live-nøgler MÅ IKKE blandes (begge skal være samme mode).
- Stripe-Secret/MobilePay-Secret gemmes krypteret server-side; Secret deles aldrig med browser.
- Webhook-URL skal være HTTPS — fungerer ikke på localhost uden tunnel.
- Stripe-konto i Danmark: udbetaling til dansk bankkonto med reg.nr. + kontonummer.
FAQ
- Hvilke nøgler skal jeg bruge til Stripe? — Publishable (
pk_test_/pk_live_) + Secret (sk_test_/sk_live_) — IKKE restricted keys. Begge fra samme mode. - Er det OK at dele Stripe Secret key med jer? — Ja. Vi gemmer den krypteret og bruger den kun til at oprette betalinger/abonnementer for dit studio. Samme model som alle andre bookingsystemer.
- Skal jeg selv opsætte webhook / finde Signing secret? — Nej, oprettes automatisk (inkl. secret) når nøglerne forbindes. Kun ved avanceret manuel opsætning: Stripe Dashboard → Webhooks → din destination → "Signing secret" (
whsec_...). - Hvilke events lytter webhook på? — Alle 8 tilmeldes automatisk:
checkout.session.completed,checkout.session.expired,charge.refunded,charge.dispute.created,customer.subscription.updated,customer.subscription.deleted,invoice.payment_succeeded,invoice.payment_failed. - Kan jeg teste uden rigtige penge? — Ja. Stripe: brug test-nøgler + kort
4242 4242 4242 4242. MobilePay: brug Vipps MT test-app + nummer+47 99999999. - Skal jeg lave nyt webhook når jeg går live? — Nej — udskift kun API-nøglerne; webhook-forbindelsen genoprettes automatisk i live-mode.
- Hvor lang tid tager MobilePay-godkendelse? — Typisk 1-3 hverdage efter du har indsendt CVR + bank + ID.
- Hvad svarer jeg når MobilePay spørger om integrator? — "Vi er selv ansvarlige for integrationen og integrerer direkte mod MobilePays API."
- Hvad sker der hvis nøglerne er forkerte? — Toggle kan ikke slås til, og forsøg på betaling fejler. Tjek at du har kopieret hele nøglen og at test/live matcher.
- Jeg har gemt nøgler men mangler webhook — skal jeg starte forfra? — Nej. /admin/indstillinger/betalinger → gult banner/"Opsæt webhook" → "Genopret webhook automatisk" (ét klik). Nøglerne røres ikke.
- Hvor er min webhook-URL? — Vises efter oprettelse i trin 3-panelet og på succes-skærmen. Format:
https://<slug>.holdstyring.dk/api/payments/webhooks/stripe?t=<slug>(oprettes automatisk i samme mode som nøglerne). - Kan jeg se de nøgler jeg har gemt? — Ja, maskeret (fx
pk_test_••••Xy9Z) på /admin/indstillinger/betalinger og i wizard-formularerne. Hele Secret key vises aldrig igen. - Skal jeg kontakte support for MobilePay? — Nej, brug wizarden /admin/settings/mobilepay-setup — den er selvbetjening hele vejen.
- Hvilke nøgler skal jeg bruge til Flatpay? — Privat API-nøgle (
priv_..., Frisbii-dashboard → Indstillinger → API-nøgler) + webhook secret (Indstillinger → Webhooks). Webhook-URL/events registreres automatisk. - Hvad kan betales via Flatpay? — Drop-in, klippekort, abonnementer, gavekort, behandlinger, PT-pakker og sæsonhold med engangsbetaling (sæson-rater kræver Stripe). Flatpay-abonnementer kan ikke sættes på pause endnu.
- Koster Flatpay ekstra for abonnementer? — Ja: løbende abonnementer kører via Frisbii og koster ca. 349 kr./md. + ca. 1% oven i kortraten (engangsbetalinger har ingen månedsafgift). Til rene medlemskaber er Stripe typisk billigere, da der ikke er nogen fast månedsafgift.
- Hvorfor kan kunden ikke vælge Flatpay til abonnement m. rabatkode/senere opstart? — Flatpay kan ikke udskyde/reducere første træk. Fremtidig opstartsdato → Flatpay-valget skjules; rabatkode/venteliste → afvises med henvisning til kort/MobilePay. Intet halvt køb; rabatkode forbruges ikke.