Skip to main content

Prerequisites

To integrate the Dodo Payments API, you’ll need:
  • A Dodo Payments merchant account
  • API Credentials (API key and webhook secret key) from dashboard

Dashboard Setup

  1. Navigate to the Dodo Payments Dashboard
  2. Skapa en produkt (engångsbetalning eller prenumeration). Prenumerationsprodukter måste ha ett pris på minst $1 (eller motsvarande i den valda valutan); belopp under denna miniminivå stöds inte.
  3. Generate your API key:
    • Go to Developer > API
    • Detailed Guide
    • Copy the API key the in env named DODO_PAYMENTS_API_KEY
  4. Configure webhooks:
    • Go to Developer > Webhooks
    • Create a webhook URL for payment notifications
    • Copy the webhook secret key in env

Integration

Välj den integrationsväg som passar ditt användningsfall:
  • Checkout Sessions (rekommenderas): Bäst för de flesta integrationer. Skapa en session på din server och omdirigera kunder till en säker, värdbaserad checkout.
  • Overlay Checkout: Använd detta när du behöver en upplevelse på sidan där checkout öppnas som ett modalt överlägg på din webbplats.
  • Inline Checkout: Bädda in checkout direkt i sidans layout för en helt integrerad och varumärkesanpassad checkout-upplevelse.
  • Static Payment Links: Kodfria, direkt delbara URL:er för snabb insamling av betalningar.
  • Dynamic Payment Links: Länkar som skapas programmatiskt. Checkout Sessions rekommenderas dock eftersom de ger större flexibilitet.
  • Mobile Checkout SDKs: För inbyggda Android-, iOS-, React Native- och Flutter-appar. Skapa sessionen på din server enligt ovan och skicka sedan checkout_url till SDK:t.
Overlay och Inline Checkout är endast för webbläsare — de bäddar in checkout på en webbsida. Om du bygger en inbyggd mobilapp ska du skapa checkout-sessionen på din server och öppna den med Mobile Checkout SDKs i stället.

1. Checkout Sessions

Använd Checkout Sessions för att skapa en säker, värdbaserad checkout-upplevelse för engångsbetalningar eller prenumerationer. Du skapar en session på din server och omdirigerar sedan kunden till den returnerade checkout_url.
Checkout-sessioner är som standard giltiga i 24 timmar. Om du skickar confirm=true är sessionerna giltiga i 15 minuter och alla obligatoriska fält måste anges.
1

Create a checkout session

Välj önskat SDK eller anropa REST API.
2

Redirect customer to checkout

Efter att sessionen har skapats omdirigerar du till checkout_url för att starta det värdbaserade flödet.
Använd Checkout Sessions för det snabbaste och mest tillförlitliga sättet att börja ta emot betalningar. För avancerad anpassning kan du läsa den fullständiga guiden för Checkout Sessions och API Reference.

2. Overlay Checkout

För en smidig checkout-upplevelse på sidan kan du utforska vår integration för Overlay Checkout, som gör det möjligt för kunder att slutföra betalningar utan att lämna din webbplats.

3. Inline Checkout

För helt integrerade checkout-upplevelser som bäddas in direkt på sidan använder du vår integration för Inline Checkout. Då kan du skapa anpassade ordersammanfattningar och ha full kontroll över checkout-layouten, medan Dodo Payments hanterar betalningsinsamlingen på ett säkert sätt. Med statiska betalningslänkar kan du snabbt ta emot betalningar genom att dela en enkel URL. Du kan anpassa checkout-upplevelsen genom att skicka query-parametrar för att förifylla kunduppgifter, styra formulärfält och lägga till anpassade metadata.
1

Construct your payment link

Börja med bas-URL:en och lägg till ditt produkt-ID:
2

Add core parameters

Inkludera viktiga query-parametrar:
  • integer
    standard:"1"
    Antal artiklar som ska köpas.
  • string
    obligatorisk
    URL dit kunden ska omdirigeras efter att betalningen har slutförts.
Omdirigerings-URL:en innehåller betalningsuppgifter som query-parametrar, till exempel:
https://example.com/?payment_id=pay_ts2ySpzg07phGeBZqePbH&status=succeeded&email=customer%40example.com

Om produkten har licensnycklar aktiverade läggs även en license_key-parameter till (kommaseparerad för flera nycklar):
https://example.com/?payment_id=pay_xxx&status=succeeded&license_key=LK-001&email=customer%40example.com
3

Pre-fill customer information (optional)

Lägg till kund- eller faktureringsfält som query-parametrar för att förenkla checkout.
  • string
    Kundens fullständiga namn (ignoreras om firstName eller lastName anges).
  • string
    Kundens förnamn.
  • string
    Kundens efternamn.
  • string
    Kundens e-postadress.
  • string
    Kundens land.
  • string
    Gatuadress.
  • string
    Ort.
  • string
    Delstat eller provins.
  • string
    Postnummer/ZIP-kod.
  • boolean
    true eller false
4

Control form fields (optional)

Du kan inaktivera specifika fält så att de blir skrivskyddade för kunden. Detta är användbart när du redan har kundens uppgifter (t.ex. för inloggade användare).
Om du vill inaktivera ett fält anger du dess värde och ställer in motsvarande disable…-flagga på true:
Att inaktivera fält bidrar till att förhindra oavsiktliga ändringar och säkerställer datakonsistens.
Om du ställer in showDiscounts=false inaktiveras och döljs rabattsektionen i checkout-formuläret. Använd detta om du vill förhindra att kunder anger kupong- eller kampanjkoder under checkout.
5

Add advanced controls (optional)

  • string
    Anger betalningsvalutan. Standardvärdet är faktureringslandets valuta.
  • boolean
    standard:"true"
    Visa eller dölj valutaväljaren.
  • number
    Fastställer det debiterade beloppet i större valutaenheter (t.ex. 12.5 för 12,50 USD). Gäller endast Pay What You Want-produkter. Värdet ignoreras om det understiger produktens minimipris.
  • string
    Anpassade metadatafält (t.ex. metadata_orderId=123).
paymentAmount på en betalningslänk är inte samma enhet som fältet amount i Checkout Sessions API. Länkparametern använder större valutaenheter (12.5 = 12,50 USD), medan API:ets product_cart[].amount använder den minsta valören (1250 = 12,50 USD). Se Dynamic Pricing för API-fältet.
6

Share the link

Skicka den färdiga betalningslänken till din kund. När kunden besöker länken samlas alla frågeparametrar in och lagras med ett sessions-ID. URL:en förenklas sedan till att endast innehålla sessionsparametern (t.ex. ?session=sess_1a2b3c4d). Den lagrade informationen finns kvar vid siduppdateringar och är tillgänglig under hela checkoutprocessen.
Kundens checkoutupplevelse är nu smidigare och personanpassad utifrån dina parametrar.

4. Dynamiska betalningslänkar

Välj Checkout Sessions för de flesta användningsområden; de ger större flexibilitet och kontroll.
Skapas via ett API-anrop eller vårt SDK med kunduppgifter. Här är ett exempel: Det finns två API:er för att skapa dynamiska betalningslänkar:
Båda slutpunkterna för att skapa länkar är föråldrade. POST /payments och POST /subscriptions fortsätter att fungera för befintliga integrationer, men nya integrationer bör använda Checkout Sessions (POST /checkouts) i stället.
Guiden nedan gäller skapande av engångsbetalningslänkar. Detaljerade instruktioner om hur du integrerar prenumerationer finns i denna integrationsguide för prenumerationer.
Se till att du skickar payment_link = true för att få betalningslänken
När du har skapat betalningslänken omdirigerar du dina kunder så att de kan slutföra betalningen.

Implementera webhooks

Konfigurera en API-slutpunkt för att ta emot betalningsaviseringar. Här är ett exempel med Next.js:
Vår webhook-implementation följer specifikationen Standard Webhooks. Definitioner av webhook-typer finns i vår guide till webhookhändelser.

Händelser att lyssna efter

Aktivera payload.type och hantera de händelser som är relevanta för ett engångsbetalningsflöde. Lyssna som minst efter:
Slutför alltid ordern vid payment.succeeded från webhooken**, inte vid webbläsarens omdirigering — omdirigeringen kan missas om kunden stänger fliken, medan webhooken försöks igen tills den har bekräftats.
Om du säljer digitala produkter med licensnycklar ska du även hantera license_key.created. En fullständig lista över händelser — inklusive händelser för prenumerationer, rättigheter, krediter, återställning och kravhantering — finns i guide till webhookhändelser. Du kan hänvisa till detta projekt med en demoimplementation på GitHub som använder Next.js och TypeScript. Du kan se den aktiva implementationen här.

Viktigt att känna till om Checkout och valutor

Dynamiska belopp (Pay-What-You-Want) anges i produktens basvaluta — inte i en valfri lokal valuta — och basvalutan är begränsad till USD, INR, GBP och EUR. Om du vill ta ut ett fast belopp i en annan valuta (t.ex. PHP) kan du inte skicka det direkt: använd Adaptive Pricing (omvandlar ditt basbelopp med aktuell växelkurs) eller Localized Pricing (fast pris per valuta, men är inte kompatibelt med Pay-What-You-Want).
Ange valutan uttryckligen. Skicka billing_currency och billing_address.country i checkoutsessionen. Om de utelämnas identifieras valuta och land från kundens IP (Adaptive Currency), vilket kanske inte motsvarar det du avser att debitera.
Checkoutsessioner upphör efter 24 timmar (15 minuter när confirm: true), och varje checkout_url är avsett att användas en gång — skapa en ny session för varje kund och betalningsförsök i stället för att återanvända en länk.
Återkommande köp med ett klick. För en återkommande kund med en sparad betalningsmetod skickar du payment_method_id tillsammans med confirm: true för att debitera direkt och helt hoppa över valet av metod.

Relaterad API-referens

Create Checkout Session

API-referens för att skapa säkra, hostade checkoutsessioner för engångsbetalningar och prenumerationer

Create Payment Link

API-referens för att programmatiskt skapa dynamiska betalningslänkar
Senast ändrad 6 augusti 2026