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 en grant, det vill säga en enskild kunds utfärdande av denna rättighet. Grants går igenom ett mindre antal statusar: Pending medan leveransen pågår, Delivered när kunden har fått åtkomst, Failed om leveransen inte kunde slutföras och Revoked när åtkomsten å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 grant skapas när en betalning slutförs eller en prenumeration blir aktiv. Funktionsflaggor går direkt till Delivered. Licensnycklar går också direkt till Delivered när entitlement använder fulfillment_mode: auto (standardvärdet); med fulfillment_mode: manual skapas grant i Pending utan nyckel tills du tillhandahåller en via Fulfill License Key Grant. Alla andra integrationer startar i Pending. OAuth-baserade integrationer (Discord, GitHub, Notion) visar en oauth_url som kunden måste besöka för att slutföra sitt samtycke; fältet är null för en nyskapad grant och fylls i när kunden startar acceptflödet från sitt leveransmejl eller sin kundportal. Plattformdirekta integrationer (Telegram, Framer, Digital Files) befinner sig endast kortvarigt i Pending medan leveransen konfigureras och övergår sedan till Delivered.
2
Delivered
När leveransen är slutförd (licensnyckel genererad, roll tilldelad, åtkomst till repository beviljad, fillänkar lösta, OAuth slutfört) flyttas granten till Delivered och delivered_at anges.
3
Failed
Om integrationsanropet returnerar ett fel som inte kan försöka igen (återkallad OAuth-token, nekad behörighet, filen finns inte längre) flyttas granten till Failed. Fälten error_code och error_message innehåller orsaken.
4
Revoked
När åtkomsten återkallas (prenumerationen avslutas, en återbetalning utfärdas eller en merchant initierar återkallelsen) flyttas granten till Revoked. Fältet revocation_reason registrerar utlösaren.
No-op. Grants styrs av prenumerationshändelsen nedan.
subscription.active
Utfärda grants för alla kopplade entitlements som ännu inte har någon. Utfärda på nytt alla grants som tidigare återkallats för samma prenumeration.
subscription.renewed
No-op. Befintliga grants kvarstår vid förnyelser.
subscription.on_hold
Återkalla alla levererade och väntande grants. revocation_reason: subscription_on_hold.
subscription.paused
Återkalla alla levererade och väntande grants. revocation_reason: SubscriptionPaused.
subscription.unpaused
Utfärda på nytt alla grants som tidigare återkallats för samma prenumeration, exakt på samma sätt som subscription.active gör.
subscription.cancelled
Återkalla alla. revocation_reason: subscription_cancelled.
subscription.expired
Återkalla alla. revocation_reason: subscription_expired.
subscription.plan_changed
Återkalla alla aktuella grants och utfärda sedan grants för den nya planens entitlements. revocation_reason: plan_changed.
refund.succeeded (engångsbetalning)
Återkalla grants för betalningen. revocation_reason: refund.
Manuell API-återkallelse
Återkalla med revocation_reason: manual. Manuella återkallelser utfärdas inte automatiskt på nytt vid förnyelse av prenumerationen.
Licensnyckel inaktiverad
För licensnyckelgrants återkallas grant när den underliggande nyckeln inaktiveras, med revocation_reason: license_key_disabled. Grant aktiveras automatiskt igen om nyckeln återaktiveras.
Plattformavvikelse upptäckt
Om plattformssidan av en integration inte längre är synkroniserad (en Discord-roll tas bort manuellt, GitHub App förlorar åtkomst till ett repository eller en avstämning upptäcker ett saknat mål) återkallas grant med revocation_reason: platform_external. Den utfärdas inte automatiskt på nytt vid förnyelse av prenumerationen förrän det underliggande plattformsproblemet har lösts.
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: License Key, Digital Files, Feature Flag, Discord, GitHub, Telegram, Figma, Framer eller Notion. För plattformsintegrationer ansluter du 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.
Prenumerantåtkomst till Discord, GitHub och Notion kräver att kunden godkänner att Dodo Payments ger dem åtkomst. Dessa grants förblir i statusen Pending tills kunden slutför OAuth-flödet med länken från sitt e-postmeddelande eller Customer Portal. När kunden har godkänt flyttas granten till Delivered och plattformsåtkomsten provisioneras 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('entg_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 grant skapas. Grants med licensnyckel anländer i Delivered vid auto-fulfillment och i Pending vid manual-fulfillment; alla andra integrationer anländer i Pending och övergår till Delivered när plattformsanropet lyckas (eller, för OAuth-baserade integrationer, när kunden godkänner).
entitlement_grant.delivered
Granten övergår till levererad. Kunden har nu åtkomst.
entitlement_grant.failed
Granten kunde inte levereras. Kontrollera error_code och error_message.
entitlement_grant.revoked
Åtkomsten har återkallats. Kontrollera revocation_reason.
Entitlement Grant Webhook Payloads
Se hela payload-schemat, exempelhändelser och revocation_reason referens.
Använd en entitlement per leveranskanal. Dela inte en enskild Discord-entitlement mellan produkter med olika rollavsikter; skapa en per roll för att förenkla återkallelse.
Testa i testläge först. Skapa entitlement, koppla den till en testprodukt, genomför en checkout och följ grantens övergång genom Pending → Delivered. Bekräfta att en annullerad testprenumeration återkallar grant.
Lyssna på entitlement_grant.delivered, inte payment.succeeded. En betalning kan lyckas innan leveransen är klar (särskilt för OAuth-flöden). Vänta på den levererade händelsen innan du låser upp beroende funktioner i dina egna system.
Behandla entitlement_grant.failed som åtgärdskrävande. En misslyckad grant innebär att en kund har betalat men inte fått åtkomst. Visa dessa för ditt supportteam eller utlös en ny grant.
Koppla revocation_reason till dina retentionflöden. En subscription_on_hold-återkallelse kan återställas (kunden kan uppdatera sitt kort). En manual-återkallelse är avsiktlig. Hantera dem olika i kundkommunikationen.