Hoppa till huvudinnehåll
Prenumerationer låter dig sälja pågående tillgång med automatiska förnyelser. Använd flexibla faktureringscykler, gratis provperioder, planändringar och tillägg för att skräddarsy prissättningen för varje kund.

Vad är Prenumerationer?

Prenumerationer är återkommande produkter som kunder köper enligt ett schema. De är idealiska för:
  • SaaS-licenser: Appar, API:er eller plattformsåtkomst
  • Medlemskap: Gemenskaper, program eller klubbar
  • Digitalt innehåll: Kurser, media eller premiuminnehåll
  • Supportplaner: SLA:er, framgångspaket eller underhåll

Nyckelfördelar

  • Förutsägbar intäkt: Återkommande fakturering med automatiska förnyelser
  • Flexibla cykler: Månatliga, årliga, anpassade intervall och provperioder
  • Planagilitet: Proportionering för uppgraderingar och nedgraderingar
  • Tillägg och platser: Koppla valfria, kvantifierbara uppgraderingar
  • Smidig kassa: Hostad kassa och kundportal
  • Utvecklarvänlig: Tydliga API:er för skapande, ändringar och användningsspårning

Skapa Prenumerationer

Skapa prenumerationsprodukter i din Dodo Payments-instrumentpanel, och sälj dem sedan genom kassan eller ditt API. Att separera produkter från aktiva prenumerationer låter dig versionera prissättning, koppla tillägg och spåra prestanda oberoende.

Skapande av prenumerationsprodukter

Konfigurera fälten i instrumentpanelen för att definiera hur din prenumeration säljs, förnyas och faktureras. Avsnitten nedan motsvarar direkt vad du ser i skapelseformuläret.

Produktinformation

  • Produktnamn (obligatoriskt): Det visade namnet som visas i kassan, kundportalen och fakturor.
  • Produktbeskrivning (obligatoriskt): Ett tydligt värdeuttalande som visas i kassan och fakturor.
  • Produktbild (obligatoriskt): PNG/JPG/WebP upp till 3 MB. Används på kassan och fakturor.
  • Varumärke: Koppla produkten till ett specifikt varumärke för temat och e-post.
  • Skattekategori (obligatoriskt): Välj kategori (till exempel, SaaS) för att bestämma skatteregler.
Välj den mest exakta skatte kategorin för att säkerställa korrekt skatteinsamling per region.

Prissättning

  • Prissättningstyp: Välj Prenumeration (denna guide). Alternativ är Engångsbetalning och Användningsbaserad fakturering.
  • Pris (obligatoriskt): Grundläggande återkommande pris med valuta.
  • Rabatt tillämplig (%): Valfri procentuell rabatt som tillämpas på grundpriset; återspeglas i kassan och fakturor.
  • Upprepa betalning varje (obligatoriskt): Intervall för förnyelser, t.ex. varje 1 månad. Välj takten (månader eller år) och kvantitet.
  • Prenumerationsperiod (obligatoriskt): Total term för vilken prenumerationen förblir aktiv (t.ex. 10 år). Efter att denna period har avslutats, stoppas förnyelser om de inte förlängs.
  • Provperiod dagar (obligatoriskt): Ställ in provlängd i dagar. Använd 0 för att inaktivera provperioder. Den första avgiften sker automatiskt när provperioden slutar.
  • Välj tillägg: Koppla upp till 3 tillägg som kunder kan köpa tillsammans med basplanen.
Ändring av prissättning på en aktiv produkt påverkar nya köp. Befintliga prenumerationer följer dina planändrings- och proportioneringsinställningar.
Tillägg är idealiska för kvantifierbara extrafunktioner som platser eller lagring. Du kan kontrollera tillåtna kvantiteter och proportioneringsbeteende när kunder ändrar dem.

Avancerade inställningar

  • Skatteinkluderande prissättning: Visa priser inklusive tillämpliga skatter. Slutlig skatteberäkning varierar fortfarande beroende på kundens plats.
  • Generera licensnycklar: Utfärda en unik nyckel till varje kund efter köp. Se Licensnycklar-guiden.
  • Leverans av digitala produkter: Leverera filer eller innehåll automatiskt efter köp. Läs mer i Leverans av digitala produkter.
  • Metadata: Koppla anpassade nyckel-värde-par för intern taggning eller klientintegrationer. Se Metadata.
Använd metadata för att lagra identifierare från ditt system (t.ex. accountId) så att du kan avstämma händelser och fakturor senare.

Prenumerationsprov

Prov låter kunder få tillgång till prenumerationer utan omedelbar betalning. Den första avgiften sker automatiskt när provperioden slutar.

Konfigurera Prov

Ställ in Provperiod dagar i produktprissättningsavsnittet (använd 0 för att inaktivera). Du kan åsidosätta detta när du skapar prenumerationer:
// Via subscription creation
const subscription = await client.subscriptions.create({
  customer_id: 'cus_123',
  product_id: 'prod_monthly',
  trial_period_days: 14  // Overrides product's trial period
});

// Via checkout session
const session = await client.checkoutSessions.create({
  product_cart: [{ product_id: 'prod_monthly', quantity: 1 }],
  subscription_data: { trial_period_days: 14 }
});
Värdet trial_period_days måste vara mellan 0 och 10 000 dagar.

Upptäck Provstatus

För närvarande finns det inget direkt fält för att upptäcka provstatus. Följande är en workaround som kräver att man frågar betalningar, vilket är ineffektivt. Vi arbetar på en mer effektiv lösning.
För att avgöra om en prenumeration är i prov, hämta listan över betalningar för prenumerationen. Om det finns exakt en betalning med belopp 0, är prenumerationen i provperiod:
const subscription = await client.subscriptions.retrieve('sub_123');
const payments = await client.payments.list({
  subscription_id: subscription.subscription_id
});

// Check if subscription is in trial
const isInTrial = payments.items.length === 1 && 
                  payments.items[0].total_amount === 0;

Uppdatera Provperiod

Förläng provet genom att uppdatera next_billing_date:
await client.subscriptions.update('sub_123', {
  next_billing_date: '2025-02-15T00:00:00Z'  // New trial end date
});
Du kan inte ställa in next_billing_date till en tidigare tid. Datumet måste vara i framtiden.

Ändringar av Prenumerationsplaner

Ändringar av planer låter dig uppgradera eller nedgradera prenumerationer, justera kvantiteter eller migrera till olika produkter. Varje ändring utlöser en omedelbar avgift baserat på den proportioneringsmetod du väljer.

Proportioneringsmetoder

Välj hur kunder faktureras när de ändrar planer:

prorated_immediately

Avgifter proportioneras baserat på återstående tid i den aktuella faktureringscykeln. Bäst för rättvis fakturering som tar hänsyn till oanvänd tid.
await client.subscriptions.changePlan('sub_123', {
  product_id: 'prod_pro',
  quantity: 1,
  proration_billing_mode: 'prorated_immediately'
});

difference_immediately

Tar ut prisskillnaden omedelbart (uppgradering) eller lägger till kredit för framtida förnyelser (nedgradering). Bäst för enkla uppgraderings/nedgraderingsscenarier.
// Upgrade: charges $50 (difference between $30 and $80)
// Downgrade: credits remaining value, auto-applied to renewals
await client.subscriptions.changePlan('sub_123', {
  product_id: 'prod_pro',
  quantity: 1,
  proration_billing_mode: 'difference_immediately'
});
Krediter från nedgraderingar med difference_immediately är prenumerationsomfattande och tillämpas automatiskt på framtida förnyelser. De är distinkta från Kundkrediter.

full_immediately

Tar ut hela det nya planbeloppet omedelbart, oavsett återstående tid. Bäst för att återställa faktureringscykler.
await client.subscriptions.changePlan('sub_123', {
  product_id: 'prod_monthly',
  quantity: 1,
  proration_billing_mode: 'full_immediately'
});

Ändra Planer med Tillägg

Ändra tillägg när du ändrar planer. Tillägg ingår i proportioneringsberäkningarna:
await client.subscriptions.changePlan('sub_123', {
  product_id: 'prod_pro',
  quantity: 1,
  proration_billing_mode: 'difference_immediately',
  addons: [{ addon_id: 'addon_extra_seats', quantity: 2 }]  // Add add-ons
  // addons: []  // Empty array removes all existing add-ons
});
Ändringar av planer utlöser omedelbara avgifter. Misslyckade avgifter kan flytta prenumerationen till on_hold status. Spåra ändringar via subscription.plan_changed webhook-händelser.

Förhandsgranska Planändringar

Innan du åtar dig en planändring, förhandsgranska den exakta avgiften och den resulterande prenumerationen:
const preview = await client.subscriptions.previewChangePlan('sub_123', {
  product_id: 'prod_pro',
  quantity: 1,
  proration_billing_mode: 'prorated_immediately'
});

// Show customer the charge before confirming
console.log('You will be charged:', preview.immediate_charge.summary);

Förhandsgranska Ändra Plan API

Förhandsgranska planändringar innan du åtar dig dem.

Prenumerationsstatusar

Prenumerationer kan befinna sig i olika statusar under sin livscykel:
  • active: Prenumerationen är aktiv och kommer att förnyas automatiskt
  • on_hold: Prenumerationen är pausad på grund av misslyckad betalning. Uppdatering av betalningsmetod krävs för att återaktivera
  • cancelled: Prenumerationen är avbruten och kommer inte att förnyas
  • expired: Prenumerationen har nått sitt slutdatum
  • pending: Prenumerationen håller på att skapas eller bearbetas

På Håll Status

En prenumeration går in i on_hold status när:
  • En förnyelsebetalning misslyckas (otillräckliga medel, utgången kort, etc.)
  • En planändringsavgift misslyckas
  • Auktorisering av betalningsmetod misslyckas
När en prenumeration är i on_hold status, kommer den inte att förnyas automatiskt. Du måste uppdatera betalningsmetoden för att återaktivera prenumerationen.

Återaktivera från På Håll

För att återaktivera en prenumeration från on_hold status, uppdatera betalningsmetoden. Detta automatiskt:
  1. Skapar en avgift för återstående skulder
  2. Genererar en faktura
  3. Bearbetar betalningen med den nya betalningsmetoden
  4. Återaktiverar prenumerationen till active status vid lyckad betalning
// Reactivate subscription from on_hold
const response = await client.subscriptions.updatePaymentMethod('sub_123', {
  type: 'new',
  return_url: 'https://example.com/return'
});

// For on_hold subscriptions, a charge is automatically created
if (response.payment_id) {
  console.log('Charge created:', response.payment_id);
  // Redirect customer to response.payment_link to complete payment
  // Monitor webhooks for payment.succeeded and subscription.active
}
Efter att ha uppdaterat betalningsmetoden för en on_hold prenumeration framgångsrikt, kommer du att få payment.succeeded följt av subscription.active webhook-händelser.

API-hantering

Använd POST /subscriptions för att skapa prenumerationer programmässigt från produkter, med valfria provperioder och tillägg.

API-referens

Visa API:t för att skapa prenumerationer.
Använd PATCH /subscriptions/{id} för att uppdatera kvantiteter, avbryta vid periodens slut eller ändra metadata.

API-referens

Lär dig hur man uppdaterar prenumerationsdetaljer.
Ändra den aktiva produkten och kvantiteter med proportioneringskontroller.

API-referens

Granska alternativ för planändringar.
För on-demand prenumerationer, ta ut specifika belopp på begäran.

API-referens

Ta ut en on-demand prenumeration.
Använd GET /subscriptions för att lista alla prenumerationer och GET /subscriptions/{id} för att hämta en.

API-referens

Bläddra i listning och hämtning av API:er.
Hämta registrerad användning för mätar- eller hybridprissättningsmodeller.

API-referens

Se API:t för användningshistorik.
Uppdatera betalningsmetoden för en prenumeration. För aktiva prenumerationer uppdaterar detta betalningsmetoden för framtida förnyelser. För prenumerationer i on_hold status, återaktiverar detta prenumerationen genom att skapa en avgift för återstående skulder.

API-referens

Lär dig hur man uppdaterar betalningsmetoder och återaktiverar prenumerationer.

Vanliga Användningsfall

  • SaaS och API:er: Tierad åtkomst med tillägg för platser eller användning
  • Innehåll och media: Månatlig åtkomst med introduktionsprov
  • B2B-supportplaner: Årliga kontrakt med premiumsupporttillägg
  • Verktyg och plugins: Licensnycklar och versionerade utgåvor

Integreringsexempel

Kassasessioner (prenumerationer)

När du skapar kassasessioner, inkludera din prenumerationsprodukt och valfria tillägg:
const session = await client.checkoutSessions.create({
  product_cart: [
    {
      product_id: 'prod_subscription',
      quantity: 1
    }
  ]
});

Planändringar med proportionering

Uppgradera eller nedgradera en prenumeration och kontrollera proportioneringsbeteendet:
await client.subscriptions.changePlan('sub_123', {
  product_id: 'prod_new',
  quantity: 1,
  proration_billing_mode: 'difference_immediately'
});

Avbryt vid periodens slut

Schemalägg en avbokning utan omedelbar uppsägning av åtkomst:
await client.subscriptions.update('sub_123', {
  cancel_at_period_end: true
});

On-Demand Prenumerationer

Skapa en on-demand prenumeration och ta betalt senare vid behov:
const onDemand = await client.subscriptions.create({
  customer_id: 'cus_123',
  product_id: 'prod_on_demand',
  on_demand: true
});

await client.subscriptions.createCharge(onDemand.id, {
  amount: 4900,
  currency: 'USD',
  description: 'Extra usage for September'
});

Uppdatera betalningsmetod för aktiv prenumeration

Uppdatera betalningsmetoden för en aktiv prenumeration:
// Update with new payment method
const response = await client.subscriptions.updatePaymentMethod('sub_123', {
  type: 'new',
  return_url: 'https://example.com/return'
});

// Or use existing payment method
await client.subscriptions.updatePaymentMethod('sub_123', {
  type: 'existing',
  payment_method_id: 'pm_abc123'
});

Återaktivera prenumeration från på håll

Återaktivera en prenumeration som har satts på håll på grund av misslyckad betalning:
// Update payment method - automatically creates charge for remaining dues
const response = await client.subscriptions.updatePaymentMethod('sub_123', {
  type: 'new',
  return_url: 'https://example.com/return'
});

if (response.payment_id) {
  // Charge created for remaining dues
  // Redirect customer to response.payment_link
  // Monitor webhooks: payment.succeeded → subscription.active
}

Prenumerationer med RBI-kompatibla mandat

UPI och indiska kortprenumerationer fungerar under RBI (Reserve Bank of India) regler med specifika mandatkrav:

Mandatgränser

Mandattypen och beloppet beror på din prenumerations återkommande avgift:
  • Avgifter under Rs 15 000: Vi skapar ett on-demand mandat för Rs 15 000 INR. Prenumerationsbeloppet debiteras periodiskt enligt din prenumerationsfrekvens, upp till mandatgränsen.
  • Avgifter Rs 15 000 eller mer: Vi skapar ett prenumerationsmandat (eller on-demand mandat) för det exakta prenumerationsbeloppet.

Uppgraderings- och nedgraderingsöverväganden

Viktigt: När du uppgraderar eller nedgraderar prenumerationer, överväg noga mandatgränserna:
  • Om en uppgradering/nedgradering resulterar i ett belopp som överstiger Rs 15 000 och går bortom den befintliga on-demand betalningsgränsen, kan transaktionsavgiften misslyckas.
  • I sådana fall kan kunden behöva uppdatera sin betalningsmetod eller ändra prenumerationen igen för att etablera ett nytt mandat med rätt gräns.

Auktorisering för högvärdesavgifter

För prenumerationsavgifter på Rs 15 000 eller mer:
  • Kunden kommer att uppmanas av sin bank att auktorisera transaktionen.
  • Om kunden misslyckas med att auktorisera transaktionen, kommer transaktionen att misslyckas och prenumerationen kommer att sättas på håll.

48-timmars bearbetningsfördröjning

Bearbetningstidslinje: Återkommande avgifter på indiska kort och UPI-prenumerationer följer ett unikt bearbetningsmönster:
  • Avgifter initieras på det schemalagda datumet enligt din prenumerationsfrekvens.
  • Den faktiska avdragningen från kundens konto sker först efter 48 timmar från betalningsinitiering.
  • Detta 48-timmarsfönster kan förlängas med upp till 2-3 ytterligare timmar beroende på bankens API-svar.

Mandatavbokningsfönster

Under 48-timmars bearbetningsfönstret:
  • Kunder kan avboka mandatet via sina bankappar.
  • Om en kund avbokar mandatet under denna period kommer prenumerationen att förbli aktiv (detta är ett undantagsfall specifikt för indiska kort och UPI AutoPay-prenumerationer).
  • Men den faktiska avdragningen kan misslyckas, och i så fall kommer vi att sätta prenumerationen på håll.
Undantagsfallshantering: Om du ger fördelar, krediter eller prenumerationsanvändning till kunder omedelbart vid avgiftsinitiering, måste du hantera detta 48-timmarsfönster på rätt sätt i din applikation. Överväg:
  • Att fördröja aktivering av fördelar tills betalningsbekräftelse
  • Implementera nådperioder eller tillfällig åtkomst
  • Övervaka prenumerationsstatus för mandatavbokningar
  • Hantera prenumerationshållstatusar i din applikationslogik
Övervaka prenumerationswebhooks för att spåra förändringar i betalningsstatus och hantera undantagsfall där mandat avbokas under 48-timmarsfönstret.

Bästa Praxis

  • Börja med tydliga nivåer: 2–3 planer med uppenbara skillnader
  • Kommunicera prissättning: Visa totalsummor, proportionering och nästa förnyelse
  • Använd provperioder genomtänkt: Konvertera med onboarding, inte bara tid
  • Utnyttja tillägg: Håll basplaner enkla och uppgradera extra
  • Testa ändringar: Validera planändringar och proportionering i testläge
Prenumerationer är en flexibel grund för återkommande intäkter. Börja enkelt, testa noggrant och iterera baserat på adoption, churn och expansionsmått.