Leverera automatiskt licensnycklar, nedladdningsbara filer, funktionsflaggor och tillgång till plattformar som Discord, GitHub, Telegram, Framer och Notion när kunder betalar.
Rättigheter förvandlar en lyckad betalning eller aktiv prenumeration till verklig åtkomst: en licensnyckel i kundens inkorg, en funktionsflagga som din app kontrollerar, en Discord-roll, ett GitHub-förråd, en Notion-mall, en Framer-remixlänk, en Telegram-chattinbjudan eller ett nedladdningsbart filpaket. Dodo Payments utfärdar, spårar och återkallar den åtkomsten automatiskt när betalningslivscykeln förändras.
The Entitlements dashboard. Each entitlement is a reusable template; the right pane shows individual customer grants.
En entitlement är en återanvändbar definition av något du levererar till en kund: en Pro licensnyckel, en “Patrons”-roll i Discord, åtkomst till ditt privata GitHub-repository, ett nedladdningsbart e-bokpaket. Du fäster entitlements till produkter, och Dodo Payments hanterar resten.När en kund köper produkten skapar Dodo Payments ett grant, en enskild kunds tilldelning av den entitlement. Grants rör sig genom ett litet antal statusar: pending medan leveransen pågår, delivered när kunden har tillgång, failed om leveransen inte kunde slutföras, och revoked när åtkomst återkallas.
Entitlements avgränsar uppfyllelse (har kunden tillgång?). Krediter avgränsar förbrukning (hur mycket kan de använda?). Båda kan fästas till samma produkt. Se Kreditbaserad Fakturering för krediter.
Rättigheter drivs av samma betalnings- och prenumerationshändelser som du redan tar emot som webhooks. Du behöver inte själv kalla på rättighets-API:t för köp. Dodo Payments skapar och återkallar rättigheter automatiskt baserat på den underliggande betalningslivscykeln.
En rättighet skapas när en betalning slutförs eller en prenumeration blir aktiv. Licensnycklar och funktionsflaggor hoppar direkt till delivered. Alla andra integrationer börjar i pending. OAuth-baserade integrationer (Discord, GitHub, Notion) inkluderar en oauth_url som kunden måste besöka för att slutföra samtycke. Plattform-direkta integrationer (Telegram, Framer, Digitala filer) stannar i pending endast kort medan leveransen förbereds, sedan övergår de till delivered.
2
Delivered
När leveransen är klar (licensnyckel genererad, roll tilldelad, förrådsåtkomst beviljad, fillänkar lösta, OAuth slutfört), flyttas rättigheten till delivered och delivered_at sätts.
3
Failed
Om integrationsanropet returnerar ett ej återförsökbart fel (återkallad OAuth-token, nekad behörighet, filen finns inte längre), flyttas rättigheten till failed. Fälten error_code och error_message fångar anledningen.
4
Revoked
När åtkomst tas bort (prenumeration avbokad, återbetalning utfärdad eller köpmaninitierad återkallelse), flyttas rättigheten till revoked. Fältet revocation_reason registrerar utlösaren.
No-op. Rättigheter drivs av prenumerationshändelsen nedan.
subscription.active
Utfärda rättigheter för alla bifogade rättigheter som inte redan har en. Återgiv tidigare återkallade rättigheter för samma prenumeration.
subscription.renewed
No-op. Befintliga rättigheter kvarstår vid förnyelser.
subscription.on_hold
Återkalla alla levererade och väntande rättigheter. revocation_reason: subscription_on_hold.
subscription.cancelled
Återkalla alla. revocation_reason: subscription_cancelled.
subscription.expired
Återkalla alla. revocation_reason: subscription_expired.
subscription.plan_changed
Återkalla alla nuvarande rättigheter, sedan utfärda rättigheter för den nya planens rättigheter. revocation_reason: plan_changed.
refund.succeeded (engångsbetalning)
Återkalla rättigheter för den betalningen. revocation_reason: refund.
Manuell API-återkallelse
Återkalla med revocation_reason: manual. Manuella återkallanden återgrantas inte automatiskt vid prenumerationsförnyelse.
Licensnyckel inaktiverad
För licensnyckelrättigheter, inaktiverar den underliggande nyckeln återkallar rättigheten med revocation_reason: license_key_disabled. Rättigheten återaktiveras automatiskt om nyckeln aktiveras igen.
Plattform drift upptäckt
Om plattformens sida av en integration går ur synk (en Discord-roll borttagen manuellt, GitHub-appen förlorar förrådsåtkomst, eller en avstämningspass upptäcker ett saknat mål), återkallas rättigheten med revocation_reason: platform_external. Inte automatiskt återgrantas vid prenumerationsförnyelse förrän det underliggande plattformsproblemet är löst.
Prenumerationsdrivna rättigheter är idempotenta per (entitlement, customer, subscription); förnyelser och återaktiveringar skapar inte dubbletträttigheter. Engångsrättigheter är idempotenta per (entitlement, customer, payment).
Gå till Rättigheter i din Dodo Payments-instrumentpanel och klicka på + för att skapa en ny rättighet.
2
Pick an integration
Välj integrationstyp: Licensnyckel, Digitala Filer, Funktionsflagga, Discord, GitHub, Telegram, Framer eller Notion. För plattformsintegrationer, anslut ditt konto först om du inte redan har gjort det.
3
Configure delivery
Fyll i integrationsspecifika fält. Till exempel, GitHub frågar efter ett förråd och en behörighetsnivå; Discord frågar efter en server och en valfri roll; Licensnyckel frågar efter aktiveringsbegränsningar och utgångsdatum.
Creating a GitHub entitlement. Each integration shows the fields it needs.
4
Save
Spara rättigheten. Du kan nu bifoga den till valfri produkt.
Öppna en produkt, expandera Avancerade inställningar → Rättigheter & Krediter och välj de rättigheter som ska levereras när produkten köps. En enda produkt kan leverera flera rättigheter samtidigt. Till exempel kan ett Pro-plan innehålla en licensnyckel, GitHub-åtkomst och en Discord-roll.
Attaching entitlements to a product. Selected entitlements are delivered on every successful purchase or active subscription.
Kunder får ett leveransepostmeddelande efter köpet som innehåller licensnyckeln, nedladdningslänkar, OAuth-inbjudningslänkar eller plattformsinbjudan, vad som än gäller för produkternas rättigheter. Samma detaljer förblir tillgängliga på obestämd tid från Kundportalen under deras orderhistorik.
Discord, GitHub och Notion prenumerantåtkomst kräver att kunden auktoriserar Dodo Payments att ge dem åtkomst. Dessa rättigheter förblir i pending-status tills kunden slutför OAuth-flödet med länken från deras e-postmeddelande eller kundportal. När de auktoriserar flyttas rättigheten till delivered och plattformsåtkomsten tillhandahålls omedelbart.
Återkallade rättigheter tas bort på plattformsnivå: Discord-rollen tas bort, GitHub-samarbetaren tas bort, licensnyckeln inaktiveras. Kunder ser ändringen återspeglas i kundportalen.
För Digitala Filer, återkallelse tar bort åtkomsten till de försignerade URL:erna framåt men ogiltigförklarar inte kopior en kund redan har laddat ner. Planera innehållsportering därefter.
Öppna vilken rättighet som helst från instrumentpanelen för att se dess rättigheter. Rättighetspanelen visar totala rättigheter, statusfilter, kundinformation, leveransdatum och en återkallningsåtgärd.Du kan också hantera rättigheter programmatisk:
import DodoPayments from 'dodopayments';const client = new DodoPayments({ bearerToken: process.env['DODO_PAYMENTS_API_KEY'],});// List grants for an entitlementconst grants = await client.entitlements.grants.list('ent_abc123', { status: 'Delivered',});// Revoke a single grantawait client.entitlements.grants.revoke('grant_xyz789', { id: 'ent_abc123',});
Dodo Payments skickar fyra webhook-händelser för rättighetslivscykeln. Prenumerera på dessa händelser för att hålla din applikation i synk med vad varje kund kan få åtkomst till.
Händelse
Utlöses när
entitlement_grant.created
En ny rättighet skapas. Licensnyckelrättigheter anländer delivered; varje annan integration anländer pending och övergår till delivered när plattformsanropet lyckas (eller för OAuth-baserade integrationer, när kunden har godkänt).
entitlement_grant.delivered
Rättigheten övergår till levererat. Kunden har nu åtkomst.
entitlement_grant.failed
Rättigheten kunde inte levereras. Inspektera error_code och error_message.
entitlement_grant.revoked
Åtkomst har tagits bort. Inspektera revocation_reason.
Entitlement Grant Webhook Payloads
Se hela payload-schemat, exempelhändelser och revocation_reason referens.
Använd en rättighet per leveranskanal. Dela inte en enda Discord-rättighet över produkter med olika rollavsikter; skapa en per roll för ren återkallelse.
Testa i testläge först. Skapa rättigheten, bifoga den till en testprodukt, genomför ett köp och se rättigheten övergå genom pending → delivered. Bekräfta att avbokning av testprenumerationen återkallar rättigheten.
Lyssna på entitlement_grant.delivered, inte payment.succeeded. En betalning kan lyckas innan fullföljandet slutförs (särskilt för OAuth-flöden). Vänta på leveranshändelsen innan du låser upp beroende funktioner i dina egna system.
Behandla entitlement_grant.failed som åtgärdbar. En misslyckad rättighet betyder att en kund betalade men inte fick åtkomst. Visa dessa för ditt supportteam eller utlöse en ny beviljning.
Map revocation_reason till dina retentionflöden. En subscription_on_hold återkallelse är återvinningsbar (kunden kan uppdatera sitt kort). En manual återkallelse är avsiktlig. Behandla dem olika i kundkommunikation.