Hoppa till huvudinnehåll
Checkout page
Dodo Payments checkout är en konverteringsoptimerad, globalt kompatibel kassasida utformad för digitala produkter och SaaS-företag. Den stödjer flera valutor, språk, skatter, rabatter, tillägg och affärsanpassade efterlevnadsrutiner.

Checkout Sessions API

Skapa värdtjänstkassasessioner programmässigt.

Preview Checkout

Beräkna priser och skatter innan du skapar en session.

Payment Methods

Stödda betalningsmetoder och konfigurationsalternativ.

Adaptiv Valuta

Adaptiv Valuta gör det möjligt för kunder att betala i sin föredragna lokala valuta, vilket förbättrar förtroendet och konverteringsgraden.

Hur Det Fungerar

  1. Aktivera: Aktivera adaptiv valuta från Inställningar → Företag
  2. Välj: Kunder kan byta valuta direkt vid kassan
  3. Konvertera: Priser konverteras dynamiskt med realtids FX-kurser
  4. Visa: Slutgiltigt belopp visas tydligt före betalning
Currency selector on checkout

Adaptive Currency

Läs mer om stödda valutor, växlingsavgifter och hantering av återbetalningar.

Flerspråkig Kassa

Dodo Payments stöder flera språk på kassasidan, vilket gör det möjligt för kunder att slutföra betalningar på ett språk de är bekväma med.
Language selector on checkout

Nyckelhöjdpunkter

  • Språk väljare tillgänglig direkt vid kassan
  • UI-text, etiketter och systemmeddelanden är lokaliserade
  • Förbättrar tillgänglighet och internationell konvertering

Stödda Språk

Kassan stöder 21 språk:
LanguageCode
Arabicar
Catalanca
Chinesezh
Dutchnl
Englishen
Frenchfr
Germande
Hebrewhe
Indonesianid
Italianit
Japaneseja
Koreanko
Malayms
Polishpl
Portuguesept
Romanianro
Russianru
Spanishes
Swedishsv
Thaith
Turkishtr
Du kan tvinga ett specifikt språk i kassan genom att ange force_language-parametern när du skapar en kassasession. Se Checkout Sessions API för detaljer.

Automatisk skatteberäkning

Skatter beräknas automatiskt baserat på kundens faktureringsadress, vilket säkerställer efterlevnad av moms, GST och försäljningsskatter utan manuell konfigurering.

Hur skatteberäkning fungerar

1

Location Detection

Skatteregler tillämpas baserat på kundens land (och region där det är tillämpligt).
2

Dynamic Updates

Skattebelopp uppdateras automatiskt när:
  • Land ändras
  • Adress uppdateras
3

Transparent Display

Den slutliga skatteredovisningen visas tydligt innan betalning.
Skatteberäkningen är helt automatiserad. Ingen manuell konfiguration krävs för standard digitala varor och SaaS-produkter.

Stöd för företagsmomssnummer

För registrerade företag tillåter kassan kunder att ange sitt företagsmomssnummer (t.ex. VAT/GST-nummer).

Vad händer när ett momsnummer anges

  • Skattebehörighet valideras i realtid
  • Tillämpliga skattebefrielser eller omvänd betalningsskyldighet tillämpas
  • Skattebelopp uppdateras omedelbart i kassan
Business Tax ID entry on checkout
Detta är särskilt användbart för B2B SaaS och digitala tjänster där företagskunder kan vara berättigade till skattebefrielser.

Rabattkoder

Kunder kan använda rabatt- eller kampanjkoder som du skapat i instrumentpanelen direkt på kassasidan.

Kassaupplevelse

  1. Kunden anger rabattkoden
  2. Rabatten valideras omedelbart
  3. Uppdaterat pris och besparing visas tydligt
Discount code entry on checkout

API-integrering

Förhandsapplicera en eller flera staplade rabattkoder eller aktivera rabattinmatningsfältet:
const session = await client.checkoutSessions.create({
  product_cart: [
    { product_id: 'prod_abc', quantity: 1 }
  ],
  discount_codes: ['WELCOME20'], // Pre-apply one or more codes (max 20, applied in order)
  feature_flags: {
    allow_discount_code: true // Show discount input field
  },
  return_url: 'https://yoursite.com/return'
});
discount_codes accepterar en array med upp till 20 koder som staplas i ordning. Det enda discount_code-fältet är föråldrat men fungerar fortfarande — befintliga integrationer behöver inte ändras omedelbart. Migrera till discount_codes när det är lämpligt för att använda stapling och den rikare svarformen.

Discount Codes

Lär dig hur du skapar och hanterar rabattkoder.

Validate Discount by Code

Slå upp och validera rabatter med hjälp av kodnamn.

Smart Address Collection

Kassan stödjer flexibel adressinmatning för snabbare slutförande.

Tillgängliga Alternativ

AlternativBeskrivning
Google Address AutofillSnabbval med autofyll
Manual EntryFull kontroll för kompletta adresser
Country SelectionStyr skatte- och efterlevnadsmekanismer
Minimal AddressSamla endast in land (och postnummer där det krävs för skatt) — se Minimalt adressläge
Adressinsamling balanserar hastighet, noggrannhet och global täckning för att maximera konvertering samtidigt som den säkerställer efterlevnad.

Minimalt adressläge

För maximal omvandling, aktivera insamling av minimal adress för att minska friktion i kassan. När minimal_address är inställd på true, samlar kassan endast in:
  • Land — alltid krävt för skattebestämning
  • Postnummer — endast i regioner där det är nödvändigt för beräkning av moms eller GST
Alla andra adressfält (gata, stad, stat) hoppas över, vilket avsevärt snabbar upp kassans avslutning.
Minimalt adressläge som visar endast fält för land och postnummer i kassan
const session = await client.checkoutSessions.create({
  product_cart: [
    { product_id: 'prod_abc', quantity: 1 }
  ],
  minimal_address: true,
  return_url: 'https://yoursite.com/return'
});
Full adressinsamling är fortfarande standard. Aktivera minimal_address för digitala produkter och SaaS-flöden där kompletta faktureringsdetaljer inte krävs.

Minimal Address Reference

Se den fullständiga minimal_address-parameterreferensen i guiden för Checkout Sessions API.

Insamling av telefonnummer

Styr om telefonnumret ska visas i kassan — och om det är obligatoriskt — genom att använda funktionstogglar för kassasessionen.
FlaggaStandardBeteende
allow_phone_number_collectiontrueVisar telefonnummerfältet i kassaflödet
require_phone_numberfalseGör att telefonnummerfältet är obligatoriskt (formulärvalidering kräver ett icke-tomt värde)
const session = await client.checkoutSessions.create({
  product_cart: [{ product_id: 'prod_abc', quantity: 1 }],
  feature_flags: {
    allow_phone_number_collection: true,
    require_phone_number: true
  },
  return_url: 'https://yoursite.com/return'
});
require_phone_number: true kräver allow_phone_number_collection: true. API:et avvisar sessioner där telefoninsamling är inaktiverad medan telefonnummer är obligatoriskt.
Använd require_phone_number för B2B SaaS, reglerade industrier eller något flöde där du behöver en verifierad kontaktkanal för support, bedrägerigranskning eller efterlevnad.

Anpassade fält

Samla in ytterligare information från kunder under utcheckningen genom att definiera anpassade formulärfält. Detta är användbart för att samla in data som företagsnamn, teamstorlek, referenskälla eller annan affärsspecifik information.

Tillgängliga fälttyper

TypBeskrivning
textEnkelradigt textinmatningsfält
numberNumerisk inmatning
emailE-postadress med validering
urlURL med validering
dateDatoväljare
dropdownVälj från fördefinierade alternativ
booleanJa/Nej-växla

Exempel

const session = await client.checkoutSessions.create({
  product_cart: [
    { product_id: 'prod_abc', quantity: 1 }
  ],
  custom_fields: [
    {
      key: 'company_name',
      label: 'Company Name',
      field_type: 'text',
      required: true
    },
    {
      key: 'team_size',
      label: 'Team Size',
      field_type: 'dropdown',
      required: true,
      options: ['1-10', '11-50', '51-200', '200+']
    }
  ],
  return_url: 'https://yoursite.com/return'
});
Kundens svar inkluderas automatiskt i webhook-payloads (payment.succeeded, subscription.active) och API-svar via custom_field_responses-arrayen. Du kan definiera upp till 5 anpassade fält per kassasession.

Custom Fields Guide

Läs mer om konfiguration av anpassade fält och åtkomst till svar.

Sekretesspolicy och godkännande av villkor

För att säkerställa juridisk och efterlevnadstransparens:
Detta hjälper till att uppfylla globala konsumentskydds- och dataskyddskrav inklusive GDPR-efterlevnad.

Insamlingskassa

Produktkollektioner möjliggör en enhetlig kassaupplevelse där kunder kan se och välja bland flera relaterade produkter (t.ex. Starter, Pro, Enterprise-planer) i en enda kassa.

Hur det fungerar

  1. Alla produkter visas: Kunder ser alla aktiva produkter i kollektionen
  2. Första produkten förvald: Den första produkten i kollektionen är automatiskt vald
  3. Jämför alternativ: Kunder kan jämföra priser och funktioner innan de väljer
  4. Enkelval: När en produkt har valts fortsätter kassan med standardbetalningsflödet

Skapa en insamlingskassa

const session = await client.checkoutSessions.create({
  product_collection_id: 'pdc_abc123',
  product_cart: [], // Required: pass an empty array for collection checkout
  return_url: 'https://yoursite.com/return'
});
När du använder product_collection_id, skicka en tom product_cart-array. Rabattkoder kan inte förberedas vid sessionens skapande.

Product Collections

Lär dig hur du skapar och hanterar produktkollektioner för enhetliga kassaupplevelser.

Konfiguration av kassasession

Styr kassabeteendet med Checkout Sessions API:et:
const session = await client.checkoutSessions.create({
  product_cart: [
    { product_id: 'prod_abc', quantity: 1 }
  ],
  customer: {
    email: 'customer@example.com',
    name: 'Jane Doe'
  },
  billing_currency: 'EUR', // Set specific currency
  discount_codes: ['PROMO10'],
  feature_flags: {
    allow_discount_code: true
  },
  return_url: 'https://yoursite.com/return',
  cancel_url: 'https://yoursite.com/pricing', // Optional: where to redirect on cancel
  metadata: {
    order_ref: 'ORD-12345'
  }
});
Efter betalning omdirigeras kunder till din return_url med frågeparametrar bifogade automatiskt — inklusive payment_id eller subscription_id, status, email, och license_key (om tillämpligt). Se Checkout Sessions guide för den fullständiga listan.

Checkout Sessions API

Komplett API-referens för kassasessioner.

Checkout Integration Guide

Steg-för-steg guide för att integrera kassaflödet.

Anpassning av kassautseende

Anpassa utseendet på kassasidan för att matcha ditt varumärke genom att använda customization.theme_config-parametern när du skapar en kassasession via API:et. Konfigurera färger, typsnitt, hörnradie och knapptext för både ljus och mörkt läge.
Anpassad tema kassa

Design & Theme Customization

Konfigurera teman visuellt från instrumentpanelen med inbyggda teman, typografi, färger och liveförhandsgranskning.
Detta avsnitt täcker server-side API temakonfiguration med customization.theme_config. Om du använder Checkout SDK (overlay eller inline checkout), se avsnitten om temaanpassning i Overlay Checkout eller Inline Checkout som använder camelCase-egenskaper (t.ex., bgPrimary istället för bg_primary).

Temakonfigurationsalternativ

EgenskapBeskrivning
lightFärgkonfiguration för ljusläge
darkFärgkonfiguration för mörkt läge
font_primary_urlURL för primärt typsnitt
font_secondary_urlURL för sekundärt typsnitt
font_sizeTypsnittsstorlek: xs, sm, md, lg, xl, 2xl
font_weightTypsnittsvikt: normal, medium, bold, extraBold
radiusHörnradie för UI-element (t.ex. 4px, 0.5rem, 8px)
pay_button_textAnpassad text för betalningsknappen (t.ex. “Slutför köp”, “Prenumerera nu”)

Färgkonfiguration (Ljus/Mörkt läge)

Varje läge (light och dark) stöder följande färgegenskaper:
EgenskapBeskrivning
bg_primaryBakgrundsprimärfärg
bg_secondaryBakgrundssekundärfärg
text_primaryTextprimärfärg
text_secondaryTextsekundärfärg
text_placeholderText platshållarfärg
text_errorText felaktighetsfärg
text_successText framgångsfärg
border_primaryKantprimärfärg
border_secondaryKantsekundärfärg
button_primaryPrimärknapp bakgrundsfärg
button_primary_hoverPrimärknapp hover färg
button_secondarySekundärknapp bakgrundsfärg
button_secondary_hoverSekundärknapp hover färg
button_text_primaryPrimärknapp textfärg
button_text_secondarySekundärknapp textfärg
input_focus_borderInmatningsfokus kantfärg
Alla färgfält accepterar standard CSS-färgformat:
  • Hex: #fff, #ffffff, #ffffffff
  • RGB/RGBA: rgb(255, 255, 255), rgba(255, 255, 255, 0.5)
  • HSL/HSLA: hsl(120, 100%, 50%), hsla(120, 100%, 50%, 0.5)
  • Namngivna färger: red, blue, transparent

Exempel

const session = await client.checkoutSessions.create({
  product_cart: [
    { product_id: 'prod_abc', quantity: 1 }
  ],
  customization: {
    theme_config: {
      // Custom fonts
      font_primary_url: 'https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600&display=swap',
      font_size: 'md',
      font_weight: 'medium',
      radius: '8px',
      pay_button_text: 'Complete Purchase',
      
      // Light mode colors
      light: {
        bg_primary: '#ffffff',
        bg_secondary: '#f5f5f5',
        text_primary: '#1a1a1a',
        text_secondary: '#666666',
        button_primary: '#0066ff',
        button_primary_hover: '#0052cc',
        button_text_primary: '#ffffff',
        border_primary: '#e0e0e0'
      },
      
      // Dark mode colors
      dark: {
        bg_primary: '#1a1a1a',
        bg_secondary: '#2d2d2d',
        text_primary: '#ffffff',
        text_secondary: '#a0a0a0',
        button_primary: '#3385ff',
        button_primary_hover: '#4d99ff',
        button_text_primary: '#ffffff',
        border_primary: '#404040'
      }
    }
  },
  return_url: 'https://yoursite.com/return'
});
Du behöver inte ange alla färgegenskaper. Eventuella odefinierade egenskaper kommer att använda standard tema värden.
Senast ändrad 9 juni 2026