> ## Documentation Index
> Fetch the complete documentation index at: https://docs.dodopayments.com/llms.txt
> Use this file to discover all available pages before exploring further.

# v1.70.0 (24 december 2025)

> Inline checkout-stöd, använd befintliga betalningsmetoder för omedelbara utcheckningar, hantera prenumerationsplaner från instrumentpanelen, generera korta betalningslänkar, hoppa över framgångssidor med redirect_immediately och aktivera on-demand-prenumerationer för alla företag

## Nya funktioner 🚀

1. **Inline Checkout - Fullt inbäddade utcheckningsupplevelser (BETA)**

   Bädda in Dodo Payments utcheckning direkt på din webbplats för en sömlös, varumärkesanpassad betalningsupplevelse. Till skillnad från överläggningsutcheckning som öppnas som en modal, bäddas inline checkout in direkt i din sidlayout.

   <Frame>
     <img src="https://mintcdn.com/dodopayments/HpxJAc8zNlxzewa_/images/inline-checkout/cover.png?fit=max&auto=format&n=HpxJAc8zNlxzewa_&q=85&s=99c1a92ef01680248a421d3f057b02cd" alt="Omslagsbild för Inline Checkout" style={{ maxHeight: '500px', width: 'auto' }} width="839" height="565" data-path="images/inline-checkout/cover.png" />
   </Frame>

   ### Fördelar

   * **Fullt integrerad**: Skapa utcheckningsupplevelser som smälter samman med din webbplats
   * **Anpassade ordersammanfattningar**: Bygg anpassad UI som synkroniseras med utcheckningen i realtid
   * **Maximal kontroll**: Full kontroll över utcheckningslayout och design
   * **PCI-kompatibel**: Dodo Payments hanterar säkert all känslig betalningsinformation
   * **Realtids-synkronisering**: Använd SDK-händelser för att hålla din UI i synk med utcheckningstillståndet

   ### Hur det fungerar

   Initiera SDK:n med `displayType: 'inline'` och bädda in kassan i ett containerelement:

   ```typescript theme={null}
   import { DodoPayments } from "dodopayments-checkout";

   // Initialize the SDK for inline mode
   DodoPayments.Initialize({
     mode: "test",
     displayType: "inline",
     onEvent: (event) => {
       if (event.event_type === "checkout.breakdown") {
         // Update your UI with real-time tax and total calculations
         const breakdown = event.data?.message;
       }
     },
   });

   // Open checkout in a specific container
   DodoPayments.Checkout.open({
     checkoutUrl: "https://test.checkout.dodopayments.com/session/cks_123",
     elementId: "dodo-inline-checkout" // ID of the container element
   });
   ```

   ### Nyckelfunktioner

   * **Real-time breakdown events**: Ta emot `checkout.breakdown`-händelser medan kunderna anger sina uppgifter
   * **Custom order summaries**: Bygg din egen prisvisning som uppdateras i realtid
   * **Seamless integration**: Kassaramen hanterar betalningsinsamlingen medan du styr layouten
   * **SDK methods**: Använd `open()`, `close()` och `isOpen()` för att styra kassan programmässigt

   <Check>
     Resultat: Fullständigt integrerade kassaupplevelser som matchar ditt varumärke och ger maximal kontroll över betalningsflödet.
   </Check>

   <Tip>
     Använd inline checkout när du vill ha maximal kontroll över kassadesignen. Använd [overlay checkout](/developer-resources/overlay-checkout) för snabbare integration med minimala ändringar av befintliga sidor.
   </Tip>

   Lär dig mer: [Inline Checkout Guide](/developer-resources/inline-checkout)

2. **Create Payments, Subscriptions, and Checkouts Using Existing Payment Methods**\
   Strömlinjeforma kassaflöden genom att använda sparade betalningsmetoder från befintliga kunder. Den nya `payment_method_id`-parametern låter dig skapa betalningar, prenumerationer eller kassasessioner med en kunds tidigare sparade betalningsmetod.

   ### Fördelar

   * **Snabbare utcheckning**: Hoppa över insamling av betalningsmetod för återkommande kunder
   * **Köp med ett klick**: Aktivera omedelbara köp med sparade betalningsmetoder
   * **Prenumerationshantering**: Skapa enkelt prenumerationer med befintliga betalningsmetoder
   * **Förbättrad konvertering**: Minska utcheckningsfriktionen för återkommande kunder

   ### Hur det fungerar

   Använd `payment_method_id` när du skapar kassasessioner, betalningar eller prenumerationer:

   <Tabs>
     <Tab title="Checkout Sessions">
       ```javascript theme={null}
       const session = await client.checkoutSessions.create({
         product_cart: [{ product_id: 'pdt_123', quantity: 1 }],
         customer: {
           customer_id: 'cus_123'
         },
         payment_method_id: 'pm_abc123',
         confirm: true
       });
       ```
     </Tab>

     <Tab title="One-Time Payments">
       ```javascript theme={null}
       const payment = await client.payments.create({
         product_cart: [{ product_id: 'pdt_123', quantity: 1 }],
         customer: { customer_id: 'cus_123' },
         billing: { country: 'US' },
         payment_method_id: 'pm_abc123'
       });
       ```
     </Tab>

     <Tab title="Subscriptions">
       ```javascript theme={null}
       const subscription = await client.subscriptions.create({
         customer: { customer_id: 'cus_123' },
         billing: { country: 'US' },
         product_id: 'pdt_subscription',
         quantity: 1,
         payment_method_id: 'pm_abc123'
       });
       ```
     </Tab>
   </Tabs>

   <Warning>
     När du använder `payment_method_id` i kassasessioner måste `confirm` vara inställt på `true`, och en befintlig `customer_id` måste anges. Betalningsmetoden kommer att valideras för kompatibilitet med betalningens valuta.
   </Warning>

   <Info>
     Betalningsmetoden måste tillhöra kunden och vara kompatibel med betalningsvalutan. Om valideringen misslyckas returnerar förfrågan ett fel.
   </Info>

3. **Ändringar av prenumerationsplaner i instrumentpanelen med uppdateringar av nästa faktureringsdatum**

   Hantera prenumerationsplaner direkt från instrumentpanelen med förbättrad kontroll. Du kan nu ändra prenumerationsplaner och uppdatera nästa faktureringsdatum i en enda åtgärd, vilket ger dig full flexibilitet över prenumerationshanteringen.

   <Frame>
     <img src="https://mintcdn.com/dodopayments/vqwKWj9TjLp0w5lS/images/changelog/subscription-plan-changes.png?fit=max&auto=format&n=vqwKWj9TjLp0w5lS&q=85&s=23d2cf888e9d70316e3a110c10bb77c6" alt="Ändringar i abonnemangsplan i dashboard" style={{ maxHeight: '500px', width: 'auto' }} width="1909" height="962" data-path="images/changelog/subscription-plan-changes.png" />
   </Frame>

   ### Instrumentpanelsfunktioner

   * **Planändringar**: Uppgradera eller nedgradera prenumerationer med ett enda klick
   * **Kontroll av faktureringsdatum**: Uppdatera nästa faktureringsdatum när du ändrar planer
   * **Prorationsalternativ**: Välj hur du vill hantera prorata när du ändrar planer
   * **Visuell förhandsgranskning**: Se exakt hur planändringar påverkar faktureringen innan du bekräftar

   ### Användningsfall

   * **Kundsupport**: Justera snabbt prenumerationsplaner för kundförfrågningar
   * **Kampanjuppgraderingar**: Tillfälligt uppgradera kunder med specifika faktureringsdatum
   * **Planövergångar**: Smidigt överföra kunder mellan prenumerationstjänster
   * **Faktureringjustering**: Justera faktureringsdatum över flera prenumerationer

   <Check>
     Resultat: Fullständig kontroll över prenumerationshantering från instrumentpanelen, vilket minskar behovet av API-anrop för vanliga prenumerationsjusteringar.
   </Check>

   <Tip>
     Använd instrumentpanelen för snabba ändringar av prenumerationsplaner, och API:et för programmatisk prenumerationshantering i din applikation.
   </Tip>

4. **Korta länkar för betalnings-URL:er**\
   Generera renare, mer delbara betalningslänkar med vår nya kortlänksfunktion. Korta länkar ger förkortade utchecknings-URL:er med anpassade slugs, vilket gör dem enklare att dela med kunder eller bädda in på din webbplats.

   <Frame>
     <img src="https://mintcdn.com/dodopayments/vqwKWj9TjLp0w5lS/images/changelog/short-links.png?fit=max&auto=format&n=vqwKWj9TjLp0w5lS&q=85&s=c5361cb37520128513ed5e3b1111fbb1" alt="Funktion för korta länkar för betalnings-URL" style={{ maxHeight: '500px', width: 'auto' }} width="1915" height="962" data-path="images/changelog/short-links.png" />
   </Frame>

   ### Fördelar

   * **Renare URL:er**: Ersätt långa betalnings-URL:er med korta, varumärkesanpassade länkar
   * **Bättre förtroende**: Professionellt utseende länkar som bygger kundens förtroende
   * **Enklare delning**: Förenklade URL:er perfekta för SMS, e-post eller sociala medier
   * **Anpassade slugs**: Skapa minnesvärda, varumärkesanpassade kortlänkar för dina produkter

   ### Hur det fungerar

   Aktivera korta länkar när du skapar utcheckningssessioner eller betalningslänkar:

   <Tabs>
     <Tab title="Checkout Sessions">
       ```javascript theme={null}
       const session = await client.checkoutSessions.create({
         product_cart: [{ product_id: 'pdt_123', quantity: 1 }],
         short_link: true,
         return_url: 'https://yourapp.com/success'
       });
       ```
     </Tab>

     <Tab title="Payment Links">
       ```javascript theme={null}
       const payment = await client.payments.create({
         product_cart: [{ product_id: 'pdt_123', quantity: 1 }],
         short_link: true,
         return_url: 'https://yourapp.com/success'
       });
       ```
     </Tab>
   </Tabs>

   <Check>
     Resultat: En förkortad betalningslänk som är enklare att dela och ser mer professionell ut, vilket förbättrar konverteringsfrekvensen och kundernas förtroende.
   </Check>

   <Info>
     Kortlänkar hanteras i din instrumentpanel och kan visas via [List Short Links API](/api-reference/products/get-products-short-links).
   </Info>

5. **`redirect_immediately` Flag - Skip Payment Success Page**\
   Kontrollera kassaflödet med den nya `redirect_immediately`-flaggan. När den är aktiverad dirigeras kunderna omedelbart efter betalningsslutförandet, och standard-sidan bekräftelsesida hoppas över för en snabbare och mer strömlinjeformad upplevelse.

   ### Användningsfall

   * **Snabbare utcheckningsflöde**: Minska friktionen genom att hoppa över mellanliggande sidor
   * **Anpassade framgångssidor**: Omdirigera direkt till din varumärkesanpassade framgångssida
   * **Mobiloptimering**: Förbättra mobilutcheckningsupplevelsen med omedelbara omdirigeringar
   * **Inbäddade utcheckningar**: Sömlös integration med överläggnings- eller inbäddade utcheckningsflöden

   ### Hur det fungerar

   Aktivera omedelbara omdirigeringar i utcheckningssessioner, betalningar eller prenumerationer:

<Tabs>
  <Tab title="Checkout Sessions">
    ```javascript theme={null}
    const session = await client.checkoutSessions.create({
      product_cart: [{ product_id: 'pdt_123', quantity: 1 }],
      feature_flags: {
        redirect_immediately: true
      },
      return_url: 'https://yourapp.com/success'
    });
    ```
  </Tab>

  <Tab title="One-Time Payments">
    ```javascript theme={null}
    const payment = await client.payments.create({
      product_cart: [{ product_id: 'pdt_123', quantity: 1 }],
      redirect_immediately: true,
      return_url: 'https://yourapp.com/success'
    });
    ```
  </Tab>

  <Tab title="Subscriptions">
    ```javascript theme={null}
    const subscription = await client.subscriptions.create({
      customer: { customer_id: 'cus_123' },
      billing: { country: 'US' },
      product_id: 'pdt_subscription',
      quantity: 1,
      redirect_immediately: true,
      return_url: 'https://yourapp.com/success'
    });
    ```
  </Tab>
</Tabs>

<Tip>
  Använd `redirect_immediately: true` när du har en egen bekräftelsesida som ger bättre användarupplevelse än standardens betalningsbekräftelsesida.
</Tip>

<Note>
  När `redirect_immediately` är aktiverad, omdirigeras kunderna direkt till din `return_url` efter betalningsslutförandet, utan att standardens bekräftelsesida visas alls.
</Note>

6. **On-Demand-prenumerationer - Tillgängliga för alla företag**\
   On-demand-prenumerationer är nu aktiverade för alla företag, vilket ger dig flexibel faktureringskontroll för användningsbaserade och mätbara tjänster.

   ### Vad detta möjliggör

   * **Användningsbaserad fakturering**: Skapa prenumerationer och ta betalt av kunder baserat på faktisk användning
   * **Flexibla faktureringscykler**: Ta betalt av kunder på begäran snarare än fasta intervaller
   * **Mätbara tjänster**: Perfekt för API-användning, lagring, beräkningstid och andra mätbara resurser
   * **Manuell faktureringskontroll**: Skapa avgifter manuellt vid behov, vilket ger dig full kontroll över faktureringens timing

   ### Hur det fungerar

   Skapa en on-demand-prenumeration och ta betalt av kunder vid behov:

   ```javascript theme={null}
   // Create an on-demand subscription
   const subscription = await client.subscriptions.create({
     customer: { customer_id: 'cus_123' },
     billing: { country: 'US' },
     product_id: 'pdt_api_access',
     quantity: 1,
     on_demand: { mandate_only: true }
   });

   // Charge the customer when usage occurs
   await client.subscriptions.charge(subscription.subscription_id, {
     product_price: 4900,
     product_currency: 'USD',
     product_description: 'API usage for September: 1,000 requests'
   });
   ```

   <Check>
     Resultat: Full kontroll över när och hur mycket kunder debiteras, perfekt för användningsbaserade affärsmodeller.
   </Check>

   Lär dig mer: [On-Demand-prenumerationer](/developer-resources/ondemand-subscriptions)

7. **Allmänna buggfixar och förbättringar**\
   Denna version inkluderar prestandaförbättringar, UI-finslipning och löser mindre buggar för en mer pålitlig, strömlinjeformad upplevelse.
