Skip to main content
Platsbaserad fakturering debiterar kunder baserat på antalet användare på deras konto. Dodo Payments implementerar detta med hjälp av add-on-systemet: en basprenumerationsprodukt plus ett add-on per plats vars kvantitet motsvarar antalet platser.

Implementation Tutorial

Steg-för-steg-guide med kodexempel.

Add-ons Documentation

Läs om add-on-systemet som driver platsbaserad fakturering.

Subscription Management

Hantera platsbaserade prenumerationer och planändringar.

Webhooks

Spåra platsändringar med subscription-webhooks.

Vad är platsbaserad fakturering?

Platsbaserad fakturering debiterar kunder baserat på antalet användare som har åtkomst till produkten. I stället för en fast avgift skalas priset efter teamets storlek.

Vanliga användningsområden

Fördelar med platsbaserad prissättning

För ditt företag:
  • Intäkterna ökar när kunderna växer
  • Kunderna kan budgetera förutsägbart
  • Tydlig uppgraderingsväg från individuell nivå till team och företag
  • Högre livstidsvärde när teamen växer
För dina kunder:
  • Betala bara för de användare de har
  • Enkelt att förstå och prognostisera kostnader
  • Lägg till eller ta bort användare efter behov
  • Rättvis prissättning som motsvarar teamets storlek

Så fungerar det

Dodo Payments implementerar platsbaserad fakturering med hjälp av systemet Add-ons. En platsbaserad prenumeration består av två delar: Kundens månadsbelopp är:
Exempel: 8 extra platser på en Team Plan

Prisstrategier

Välj den platsbaserade prisstrategi som passar ditt företag:

Strategi 1: Bas + add-on per plats

Inkludera ett bestämt antal platser i basplanen och ta betalt för ytterligare platser.
Bäst för: Produkter där små team kan fungera med baserbjudandet.

Strategi 2: Ren prissättning per plats

Ta ut ett fast pris per plats utan basavgift.
Implementering: Sätt priset för basplanen till $0 och använd endast plats-add-onet. Bäst för: Enkel och transparent prissättning.

Strategi 3: Nivåbaserad platsprissättning

Olika basplaner med olika priser per plats.
Implementering: Skapa separata produkter för varje nivå med olika add-on-priser. Bäst för: Att uppmuntra uppgraderingar till högre nivåer samt företagsförsäljning.

Strategi 4: Platsbundtar

Sälj platser i paket i stället för individuellt.
Implementering: Skapa flera add-ons för olika paketstorlekar. Bäst för: Att förenkla köpbeslut och uppmuntra större åtaganden.

Konfigurera platsbaserad fakturering

Steg 1: Planera din prissättning

Definiera din prisstruktur före implementeringen:
1

Define Base Plan

Bestäm vad som ingår i basprenumerationen:
  • Baspris (kan vara $0 vid ren prissättning per plats)
  • Antal inkluderade platser
  • Funktioner som är tillgängliga på denna nivå
2

Set Seat Pricing

Fastställ kostnaden för add-on per plats:
  • Pris per ytterligare plats
  • Eventuella volymrabatter (via flera add-ons)
  • Maximalt antal platser (om tillämpligt)
3

Consider Billing Frequency

Anpassa platspriset efter din faktureringscykel:
  • Månadsprenumerationer → månatliga platsavgifter
  • Årsprenumerationer → årliga platsavgifter (ofta rabatterade)

Steg 2: Skapa plats-add-onet

I din Dodo Payments-dashboard:
  1. Gå till Products → Add-Ons
  2. Klicka på Create Add-On
  3. Konfigurera add-onet:
Använd beskrivande add-on-namn som fungerar bra på fakturor. “Additional Team Seat” är tydligare än “Seat Add-on” för kunder som granskar sina fakturor.

Steg 3: Skapa basprenumerationen

Skapa din prenumerationsprodukt:
  1. Gå till Products → Create Product
  2. Välj Subscription
  3. Konfigurera pris och information
  4. Bifoga ditt plats-add-on i avsnittet Add-Ons

Steg 4: Bifoga add-onet till produkten

Länka plats-add-onet till din prenumeration:
  1. Redigera din prenumerationsprodukt
  2. Bläddra till avsnittet Add-Ons
  3. Klicka på Add Add-Ons
  4. Välj ditt plats-add-on
  5. Spara ändringarna
Din prenumerationsprodukt stöder nu platsbaserad prissättning. Kunder kan köpa valfritt antal extra platser under checkout.

Hantera platser

Lägga till platser i nya prenumerationer

Ange platskvantiteten när du skapar en checkout-session:

Ändra platsantalet i befintliga prenumerationer

Använd Change Plan API för att justera platser. Arrayen addons anger det nya totala platsantalet (inte förändringen).

Ta bort platser

Minska platsantalet genom att ange den lägre kvantiteten:

Ta bort alla extra platser

Skicka en tom addons-array för att ta bort alla add-ons:

Proportionell debitering vid platsändringar

När en platsändring tillämpas mitt i cykeln beräknar Dodo Payments den omedelbara debiteringen i tre steg:
Kreditbeloppet beror på vilket prorationsläge du väljer. Debiteringen avser alltid en hel cykel.
Debiteringen avser alltid en hel cykel. Endast krediten varierar beroende på läge. Därför är det debiterade beloppet sällan “nya platser × pris × återstående dagar”.Med prorated_immediately minskar krediten när cykeln fortskrider, vilket innebär att samma platsändring kostar mer ju senare den görs. Med difference_immediately och full_immediately beror krediten inte på tidpunkten, så dessa två kostar lika mycket oavsett dag i cykeln.

Så krediterar varje läge

Med difference_immediately betalar kunden endast skillnaden mellan det gamla och det nya planpriset. Det är därifrån namnet kommer, och därför är beloppet detsamma oavsett när i cykeln ändringen görs. Om krediten är större än debiteringen för den nya cykeln sparas mellanskillnaden som prenumerationsbunden kredit och tillämpas automatiskt på framtida förnyelser.
prorated_immediately, difference_immediately och full_immediately återställer alla faktureringscykeln till ändringsdatumet. Nästa förnyelse förankras på nytt till den dag då platsändringen tillämpas. Endast do_not_bill behåller det ursprungliga förnyelsedatumet (det nya platsantalet debiteras i sin helhet vid nästa förnyelse, utan debitering vid ändringstillfället).
do_not_bill tillämpar platsändringen omedelbart, inte vid förnyelsen. Det nya platsantalet börjar gälla så snart anropet lyckas, men inget debiteras förrän nästa förnyelse.När platser läggs till får kunden dem kostnadsfritt under resten av den aktuella cykeln. Om 5 platser läggs till för $10 på dag 1 i en 30-dagarscykel får kunden 5 kostnadsfria platser i 29 dagar, och det högre beloppet debiteras första gången på det ursprungliga förnyelsedatumet.När platser tas bort gäller det omvända: platserna tas bort omedelbart och ingen kredit ges för den del av cykeln som redan har betalats.Använd do_not_bill när det är detta du avser, till exempel vid en goodwilluppgradering eller en försäljningsöverenskommen provperiod med extra platser.

Genomräknat exempel: Lägga till 5 platser

Ett scenario som körs genom alla fyra lägen, så att siffrorna kan jämföras direkt.
I alla tre omedelbara lägen får kunden en hel ny månad för $130 i utbyte mot det som betalas idag.

Varför tidpunkten spelar roll för prorated_immediately

Samma ändring kostar mer ju senare i cykeln den görs, eftersom mindre av den aktuella cykeln återstår att kreditera.
Kunden får en hel ny månad i varje rad. Endast fördelningen mellan “redan betalat” och “betalar nu” ändras. Använd difference_immediately om du vill att en platsändring ska kosta lika mycket oavsett när den görs.

Genomräknat exempel: Den “överraskande debiteringen”

Detta är det fall som oftast överraskar merchants. Om ett litet plats-add-on läggs till sent i cykeln kan debiteringen bli mycket större än add-onets pris.
Att lägga till en plats för $10/månad kostar $55.00 med prorated_immediately. Kunden debiteras för en hel ny månad på $60 och krediteras de $5 som återstod av den gamla månaden, och förnyelsedatumet återställs. Om du vill att små tillägg mitt i cykeln endast ska kosta platspriset använder du difference_immediately.

Genomräknat exempel: Ta bort platser (nedgradering)

När den nya planen kostar mindre än krediten sparas överskottet som prenumerationskredit och tillämpas automatiskt på framtida förnyelser av denna prenumeration. Den läggs inte till i Customer Wallet och är inte en credit entitlement.
Krediten täcker hela prenumerationen, basplanen och alla add-ons, inte bara platserna som tas bort.

Läsa förhandsgranskningssvaret

previewChangePlan returnerar de exakta radposter som kommer att debiteras. Varje radpost har en proration_factor:
Det innebär: $50 i baspris och 3 × $10 i add-on krediteras till 50 %, en hel basavgift på $50 debiteras och 8 × $10 i add-on debiteras. Kredit = $40, debitering = $130, netto = $90.
Prorering beräknas på sekunden utifrån den exakta tidpunkten för ändringen, inte avrundat till närmaste dag. De genomräknade exemplen ovan använder avrundade värden vid dagens gränser för tydlighetens skull.
Välja prorationsläge för platsändringar
  • difference_immediately — kunden betalar prisskillnaden, oavsett när ändringen görs. Mest förutsägbart för team som ofta justerar platser och enklast att förklara i ditt gränssnitt.
  • prorated_immediately — kunden krediteras endast för den tid som återstår av den aktuella cykeln. Kostar mer ju senare i cykeln ändringen görs.
  • full_immediately — kunden betalar för en hel ny cykel utan kredit för outnyttjad tid.
  • do_not_bill — platsändringen börjar gälla omedelbart, men inget debiteras nu. Tillagda platser är kostnadsfria fram till nästa förnyelse; borttagna platser dras in utan kredit. Förnyelsedatumet bevaras och det nya platsantalet debiteras i sin helhet från och med den förnyelsen. Det enda läget som inte återställer faktureringscykeln.
Platser som beviljats genom do_not_bill krediteras inte vid en senare planändring, eftersom de aldrig har debiterats. Om du lägger till 5 platser med do_not_bill och sedan ändrar till 3 platser debiteras kunden fullt för 3 platser utan kredit för de 5 platser som de hade tillgång till.
Anropa alltid previewChangePlan och visa det returnerade beloppet innan du bekräftar. Se Proration Guide för detaljerade jämförelser.

Förhandsgranska innan ändring

Förhandsgranska alltid proreringen innan du gör ändringar:

Spåra platser med webhooks

Övervaka platsändringar genom att lyssna på subscription-webhooks:

Relevanta händelser

Exempel på webhook-handler

Arrayen addons i webhook-payloaden innehåller de aktuella add-on-kvantiteterna. Summera dem för att få det totala platsantalet. Om din basplan inkluderar platser (t.ex. 5 inkluderade) lägger du till detta i add-on-totalen i din applikationslogik.

Tillämpa platsgränser

Din applikation måste tillämpa platsgränser. Dodo Payments spårar faktureringen, men du styr åtkomsten.
Förhindra strikt att användare läggs till utöver platsantalet.

Avancerade mönster

Olika platstyper

Erbjud olika platstyper med olika prissättning:
Implementering: Skapa separata add-ons för varje platstyp.

Årliga platsrabatter

Erbjud rabatterade årliga platspriser:
Implementering: Skapa separata produkter för månads- och årsplaner med olika add-on-priser.

Krav på minsta platsantal

Kräv ett minsta antal platser för vissa planer:

Bästa praxis

Bästa praxis för prissättning

  • Tydlig kommunikation: Visa priset per plats tydligt på din prissida
  • Inkluderade platser: Överväg att inkludera några platser i baspriset för att minska tröskeln
  • Volymrabatter: Erbjud lägre priser per plats för större team för att vinna företagsaffärer
  • Årliga incitament: Rabattera årsplaner för att förbättra kassaflöde och kundbehållning

Teknisk bästa praxis

  • Cacha platsantal: Cacha prenumerationens platsantal lokalt för att undvika API-anrop vid varje begäran
  • Synkronisera regelbundet: Synkronisera med jämna mellanrum ditt lokala platsantal med Dodo Payments via API
  • Hantera fel: Visa tydliga felmeddelanden och alternativ för nytt försök om en platsändring misslyckas
  • Revisionsspår: Logga alla platsändringar för faktureringstvister och efterlevnad

Bästa praxis för användarupplevelse

  • Feedback i realtid: Visa kostnadseffekten omedelbart när platser justeras
  • Bekräftelsesteg: Kräv bekräftelse innan faktureringsändringar
  • Transparens kring prorering: Förklara proportionella avgifter tydligt innan de tillämpas
  • Enkla nedgraderingar: Gör det inte svårt att minska antalet platser (det skapar förtroende)

Felsökning

Symtom: Din app visar ett annat platsantal än prenumerationen.Orsaker:
  • Webhooken togs inte emot eller bearbetades inte
  • Race condition under platsändringen
  • Cachad data har inte uppdaterats
Lösningar:
  1. Implementera webhook-handlers för subscription.plan_changed
  2. Lägg till en knapp för “Synkronisera med fakturering” som hämtar den aktuella prenumerationen
  3. Ange en cache-TTL för att säkerställa regelbunden uppdatering
Symtom: Kunden är förvirrad över debiteringsbeloppet mitt i cykeln.Orsak: prorated_immediately används sent i faktureringscykeln (se exemplet Den överraskande debiteringen ovan).Lösningar:
  1. Använd alltid previewChangePlan innan du gör ändringar
  2. Visa en tydlig uppdelning: “Att lägga till X platser kostar $Y idag”
  3. Byt till difference_immediately om du vill att debiteringen alltid ska motsvara prisskillnaden
Symtom: Plats-add-onet är inte tillgängligt under checkout.Orsaker:
  • Add-onet är inte kopplat till produkten
  • Add-onet har arkiverats eller tagits bort
  • Valutorna skiljer sig mellan produkten och add-onet
Lösningar:
  1. Kontrollera att add-onet är kopplat i produktinställningarna
  2. Kontrollera add-onets status i Add-Ons-dashboarden
  3. Säkerställ att valutorna matchar exakt
Symtom: Kunden vill minska antalet platser men har tilldelade användare.Lösningar:
  1. Visa vilka användare som måste tas bort innan platserna minskas
  2. Implementera ett arbetsflöde: Ta bort användare → Minska platser
  3. Överväg en respitstid innan platsminskningen tillämpas

Relaterad dokumentation

Seat-Based Pricing Tutorial

Fullständig implementeringsguide med kod.

Add-ons

Förstå add-on-systemet på djupet.

Plan Changes & Proration

Hantera prenumerationsändringar.

Subscription Webhooks

Spåra prenumerationshändelser.
Senast ändrad 6 oktober 2026