> ## 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.99.0 (25 maj 2026)

> Stapling av rabattkoder (upp till 20 per checkout, betalning eller prenumeration), sju nya e-postmeddelanden om kundaviseringar för återbetalningar och händelser i prenumerationens livscykel, en omarbetning av checkoutens betalningssida som höjer lyckade betalningar med 2–3 %, omarbetning av produktformuläret med liveförhandsgranskning och autosparande samt en redesign av Business Settings

## Nya Funktioner

### 1. **Staplade Rabattkoder**

Köpsessioner, betalningar, prenumerationer och ändringar av planer accepterar nu **upp till 20 rabattkoder i en enda begäran** via `discount_codes` array. Koder appliceras **i array ordning** - den första berättigade koden reducerar baspriset, den andra reducerar det redan rabatterade priset, och så vidare - så du kan stapla kampanjer utan att skapa skräddarsydda kombinerade koder.

![Bekräfta planändringsdialog med flera staplade rabattkoder](https://mintcdn.com/dodopayments/Ehnri26kKx69Tfxe/images/changelog/v1.99.0/stacked-discounts.png?fit=max\&auto=format\&n=Ehnri26kKx69Tfxe\&q=85\&s=7a2606d7027de6e662cf9be6b7df8213)

```typescript theme={null}
const session = await client.checkoutSessions.create({
  product_cart: [{ product_id: 'pdt_abc', quantity: 1 }],
  discount_codes: ['WELCOME10', 'BLACKFRIDAY20'], // applied in this order
  customer: { email: 'user@example.com' },
  return_url: 'https://yoursite.com/return'
});
```

**Var det gäller**

| Yta | Fält | Max koder |
| - | - | - |
| Köpsessioner | `discount_codes` | 20 |
| Betalningar | `discount_codes` | 20 |
| Prenumerationer | `discount_codes` | 20 |
| Planändringar | `discount_codes` | 20 |

**Planändringsbeteende**

| `discount_codes`-värde | Effekt |
| - | - |
| Ej angivet | Befintliga rabatter med `preserve_on_plan_change=true` behålls om giltiga för den nya produkten |
| `[]` (tom array) | Alla befintliga rabatter tas bort från prenumerationen |
| `['CODE_A', 'CODE_B', ...]` | Ersätter eventuella befintliga rabatter med denna staplade uppsättning, applicerad i array ordning |

**Svarform**

Den fulla uppsättningen av applicerade rabatter returneras under `discounts` array på betalningar och prenumerationer - varje post inkluderar `discount_id`, `position`, och `cycles_remaining` (för prenumerationer). Det äldre singulara `discount_id`-fältet är föråldrat men fortfarande närvarande för bakåtkompatibilitet.

> [!NOTE]
>
> Det singulara `discount_code`-fältet är **föråldrat** men fortfarande fullt stöd - befintliga integrationer fortsätter att fungera utan ändringar. Det kan inte kombineras med `discount_codes` i samma begäran. Vi rekommenderar att migrera till `discount_codes` när det är bekvämt, även för enskilda koder, för att dra nytta av stapling och den rikare svarformen.

Läs mer: [Rabattkoder](/features/discount-codes.md) | [Köpsession](/developer-resources/checkout-session.md) | [Planändringar](/developer-resources/subscription-upgrade-downgrade.md)

### 2. **Sju Nya Kundnotifieringsmejl**

Sju nya transaktionsmejl skickas nu automatiskt till dina kunder, täckande återbetalningsbekräftelser, prenumerationscykelns milstolpar och betalningsfel. Varje mejl är oberoende på- och avslagen från **Inställningar → Kommunikation** under **Kundmejl**-sektionen.

![Kundmejl inställningspanel med växlar för varje notifieringsmejl](https://mintcdn.com/dodopayments/Ehnri26kKx69Tfxe/images/changelog/v1.99.0/customer-notification-emails.png?fit=max\&auto=format\&n=Ehnri26kKx69Tfxe\&q=85\&s=44cad42723269d9728a9dae2a061613b)

**Aktiverad (påslagen som standard)**

| Mejl | När det skickas |
| - | - |
| **Återbetalning Lyckades** | En återbetalning behandlas framgångsrikt och pengarna är på väg tillbaka till kunden |
| **Prenumeration Provperiod Slut** | \~2 dagar innan en provperiod upphör och den första faktureringsavgiften inträffar |
| **Prenumeration Avbruten Omedelbart** | En prenumeration avbryts med omedelbar effekt |
| **Prenumeration Avbryt vid Nästa Faktureringsdatum** | En prenumeration är schemalagd att avslutas vid slutet av den nuvarande faktureringsperioden |

**Avaktiverad (avslagen som standard)**

| Mejl | När det skickas |
| - | - |
| **Betalning Misslyckades** | Ett betalningsförsök misslyckas - aktivera om du vill att Dodo Payments ska informera kunden direkt istället för att hantera det i ditt eget system |
| **Prenumerationsförnyelse Misslyckades** | Ett prenumerationsförnyelse-betalning misslyckas specifikt; triggad istället för (inte i tillägg till) den allmänna Betalning Misslyckades-mejlet för förnyelsebetalningar |
| **Påminnelse om Kommande Förnyelse** | \~2 dagar innan en prenumeration förnyas |

> [!TIP]
>
> Om du hanterar kundkommunikation själv via webhooks, låt de avaktiverade mejlen vara avslagna för att undvika att skicka kunder dubblettnotiser för samma händelse.

> [!NOTE]
>
> Kundmejl är separerade från de notifieringsmejl som skickas till ditt team. Avaktivering av ett kundmejl påverkar inte ditt teams notiser för samma händelse.

Läs mer: [Kommunikationspreferenser](/features/communication-preferences.md)

## Förbättringar

### 3. **Omarbetning av checkoutens betalningssida**

Betalningssidan i checkouten har omarbetats avsevärt från början till slut — tätare layout, snabbare upplevd laddning, tydligare valideringstillstånd och en förfinad UX för kortinmatning. Sammantaget höjde dessa ändringar **observerade lyckade checkout-betalningar med cirka 2–3 %** för global trafik.

![Föregående betalningssida i kassan](https://mintcdn.com/dodopayments/Ehnri26kKx69Tfxe/images/changelog/v1.99.0/checkout-payment-before.png?fit=max\&auto=format\&n=Ehnri26kKx69Tfxe\&q=85\&s=cd86eb287a4688e14bb01e836382744f)

Before

![Omdesignad betalningssida i kassan](https://mintcdn.com/dodopayments/Ehnri26kKx69Tfxe/images/changelog/v1.99.0/checkout-payment-after.png?fit=max\&auto=format\&n=Ehnri26kKx69Tfxe\&q=85\&s=4eb10926ab5a1a1c97ab4cbf16e78fb2)

After

Vad har ändrats:

* **Smidigare interaktioner med fält** — autofokus, smartare tabbordning och förbättrad tangentbordsnavigering i kortformuläret
* **Tydligare fel- och laddningstillstånd** — inline-validering visas exakt där kunden behöver agera, vilket ersätter det tidigare mönstret med en felbanner för hela formuläret
* **Snabbare rendering** — skeletons och progressiv hydrering eliminerar den korta flimmereffekten med tomt innehåll i långsamma nätverk
* **Förbättringar för mobil** — tryckytor, scrollbeteende och tangentbordshantering är särskilt finjusterade för mobil checkout, där majoriteten av trafiken nu sker

> [!TIP]
>
> Inga integrationsändringar krävs. Befintliga checkout-sessioner börjar automatiskt använda den nya betalningssidan.

### 4. **Omarbetning av produktformuläret**

Flödena för att **skapa**, **redigera** och **duplicera** produkter har byggts om från grunden kring en enhetlig formulärupplevelse.

![Unified product form with Basic Details, Media & Description, Pricing, and a live checkout preview side-by-side](https://mintcdn.com/dodopayments/Ehnri26kKx69Tfxe/images/changelog/v1.99.0/product-form.png?fit=max\&auto=format\&n=Ehnri26kKx69Tfxe\&q=85\&s=12693e04457400a4aa33063ef0d73221)

Höjdpunkter:

* **Liveförhandsgranskning** — se hur produkten visas i checkouten och Customer Portal medan du redigerar, sida vid sida med formuläret
* **Autosparande** — utkast sparas automatiskt, så att det inte längre innebär att ditt arbete går förlorat om du navigerar bort eller förlorar fliken
* **Markdown-redigerare** — produktbeskrivningar har nu stöd för en fullständig markdown-redigerare med live-rendering, länkförhandsgranskningar och kontroller för inline-formatering
* **Paritet för dupliceringsflödet** — när du duplicerar en produkt öppnas samma enhetliga formulär, förifyllt, i stället för en förenklad dialog, så att du kan justera alla fält innan du sparar kopian

> [!TIP]
>
> Använd **Duplicate** för att skapa regionala varianter eller varianter för olika prisnivåer av en befintlig produkt utan att ange beskrivningar, metadata eller konfiguration för fulfilment på nytt.

### 5. **Redesign av sidan Business Settings**

Sidan **Settings → Business** har fått en ny design för att göra konfigurationen enklare att överblicka och snabbare att uppdatera. Inställningarna är nu grupperade i tydligare avsnitt med förklarande text som beskriver effekten av varje växlingsalternativ innan du aktiverar eller inaktiverar det.

Det finns **inga beteendeförändringar** i befintliga inställningar — endast layouten, grupperingen och de omgivande förklaringarna har förbättrats.

![Redesigned Business Settings page with grouped sections for Business Info, Brands, currency, security, and tracking](https://mintcdn.com/dodopayments/Ehnri26kKx69Tfxe/images/changelog/v1.99.0/business-settings.png?fit=max\&auto=format\&n=Ehnri26kKx69Tfxe\&q=85\&s=7603e02f67bb05a590681400f1e3f4b5)

## Förbättringar

* **`credits_amount` override propagated correctly to GET checkout session and payment link routes** — när en checkout-session eller betalningslänk skapades med en `credit_entitlements`-override per checkout returnerade hämtning av sessionen eller länken via GET produktens `credits_amount`-standardvärde i stället för det överskrivna värdet. Detta är nu åtgärdat.
* **Återbetalningsåtgärden inaktiverad för helt återbetalda betalningar** — knappen Refund för en betalning är nu inaktiverad när betalningen har återbetalats helt, med en tooltip som förklarar varför. Tidigare förblev knappen aktiv och returnerade ett fel först efter att formuläret skickats.
* Mindre buggfixar och stabilitetsförbättringar på hela plattformen


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.