Leverera licensnycklar, nedladdningsbara filer, feature flags och åtkomst till Discord, GitHub, Telegram, Framer och Notion automatiskt när kunder betalar.
Entitlements omvandlar en genomförd betalning eller en aktiv prenumeration till åtkomst: en licensnyckel i kundens inkorg, en feature flag som din app kontrollerar, en Discord-roll, ett GitHub-repository, en Notion-mall, en Framer-remixlänk, en Telegram-chattinbjudan eller ett nedladdningsbart filpaket. Dodo Payments utfärdar, spårar och återkallar åtkomsten automatiskt när betalningens livscykel 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, till exempel en Pro-licensnyckel, en Discord-roll kallad “Patrons”, åtkomst till ditt privata GitHub-repository eller ett nedladdningsbart e-bokspaket. Du kopplar entitlements till produkter, och Dodo Payments levererar dem när en kund betalar.När en kund köper produkten skapar Dodo Payments ett grant: en enskild kunds utfärdande av denna entitlement. Ett grant har en av fyra statusar: Pending medan leveransen pågår, Delivered när kunden har åtkomst, Failed om leveransen inte kunde slutföras och Revoked när åtkomsten dras tillbaka.
Entitlements styr fulfillment (har kunden åtkomst?). Credits styr förbrukning (hur mycket kan kunden använda?). Du kan koppla båda till samma produkt. Se Credit-Based Billing för credits.
Grants följer samma betalnings- och prenumerationshändelser som du tar emot som webhooks. Dodo Payments skapar och återkallar automatiskt grants för köp baserat på betalningens livscykel, så du behöver inte anropa grant-API:t själv.
Dodo Payments skapar ett grant när en betalning slutförs eller en prenumeration blir aktiv. Grants för feature flags börjar som Delivered. Grants för licensnycklar börjar också som Delivered när entiteln använder fulfillment_mode: auto (standardvärdet). Med fulfillment_mode: manual börjar grantet som Pending utan nyckel tills du tillhandahåller en med Fulfill License Key Grant. Alla andra integrationer börjar som Pending.OAuth-baserade integrationer (Discord, GitHub, Notion) exponerar en oauth_url som kunden besöker för att ge sitt samtycke. Dodo Payments försöker generera denna URL när grantet skapas. Om det misslyckas förblir fältet null tills kunden startar accept-flödet från sitt leveransmejl eller Customer Portal. Plattformdirekta integrationer (Telegram, Framer, Digital Files) förblir Pending endast medan leveransen provisioneras och övergår sedan till Delivered.
2
Delivered
När leveransen är slutförd övergår grantet till Delivered och delivered_at anges. Leveransen är slutförd när licensnyckeln har genererats, rollen har tilldelats, åtkomsten till repositoryt har beviljats, fillänkarna har lösts eller OAuth-flödet har slutförts.
3
Failed
Om integrationsanropet returnerar ett fel som inte kan försökas igen, till exempel en återkallad OAuth-token, nekad behörighet eller en fil som inte längre finns, övergår grantet till Failed. Fälten error_code och error_message registrerar orsaken.
4
Revoked
När åtkomsten dras tillbaka, till exempel för att en prenumeration avslutas, en återbetalning utfärdas eller du återkallar grantet, övergår grantet till Revoked. Fältet revocation_reason registrerar utlösaren.
Ingen ändring. Prenumerationshändelserna nedan styr dessa grants.
subscription.active
Utfärdar grants för alla kopplade entitlements som ännu inte har något grant och utfärdar på nytt grants som tidigare återkallats för samma prenumeration. Grants som återkallats med manual, refund eller platform_external utfärdas inte på nytt.
subscription.renewed
Ingen ändring. Befintliga grants kvarstår vid förnyelser.
subscription.past_due
Ingen ändring. Grants förblir levererade under hela grace period.
subscription.on_hold
Återkallar alla levererade och väntande grants med revocation_reason: subscription_on_hold.
subscription.paused
Återkallar alla levererade och väntande grants med revocation_reason: SubscriptionPaused. Till skillnad från de andra prenumerationsorsakerna använder detta värde PascalCase, så matcha det exakt.
subscription.unpaused
Utfärdar på nytt grants som tidigare återkallats för samma prenumeration, på samma sätt som subscription.active.
subscription.cancelled
Återkallar alla grants med revocation_reason: subscription_cancelled.
subscription.expired
Återkallar alla grants med revocation_reason: subscription_expired.
subscription.plan_changed
Återkallar alla aktuella grants med revocation_reason: plan_changed och utfärdar sedan grants för den nya planens entitlements.
refund.succeeded (engångsbetalning)
Återkallar grants för betalningen med revocation_reason: refund.
Manuell API-återkallelse
Återkallar grantet med revocation_reason: manual. Manuella återkallelser utfärdas inte automatiskt på nytt vid förnyelse av prenumerationen.
Licensnyckel inaktiverad
För grants för licensnycklar återkallar inaktivering av den underliggande nyckeln grantet med revocation_reason: license_key_disabled. Om nyckeln aktiveras igen återställs grantet automatiskt.
Plattformavvikelse upptäckt
Om integrationsplattformens sida hamnar ur synk, till exempel om en Discord-roll tas bort manuellt, GitHub App förlorar åtkomst till repositoryt eller en avstämning hittar ett saknat mål, återkallar Dodo Payments grantet med revocation_reason: platform_external. Det utfärdas inte automatiskt på nytt vid prenumerationsförnyelse förrän plattformsproblemet har lösts.
Prenumerationsstyrda grants är idempotenta per (entitlement, customer, subscription), så förnyelser och återaktiveringar skapar inte dubbletter av grants. Engångsgrants är idempotenta per (entitlement, customer, payment).
Gå till Entitlements i dashboarden och klicka på + för att skapa en entitlement.
2
Pick an Integration
Välj integrationstyp: License Key, Digital Files, Feature Flag, Discord, GitHub, Telegram, Figma, Framer eller Notion. För en plattformsintegration ansluter du ditt konto först om du inte redan har gjort det.
3
Configure Delivery
Fyll i fälten för integrationen. GitHub frågar till exempel efter ett repository och en behörighetsnivå, Discord efter en server och en valfri roll, och License Key efter en aktiveringsgräns och en licenslängd.
Creating a GitHub entitlement. Each integration shows the fields it needs.
4
Save
Klicka på Create Entitlement. Du kan nu koppla entiteln till valfri produkt.
Öppna en produkt, gå till avsnittet Entitlements och välj de entitlements som ska levereras när produkten köps. En produkt kan leverera flera entitlements samtidigt. En Pro-plan kan till exempel 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.
Efter ett köp får kunden ett leveransmejl med licensnyckeln, nedladdningslänkar, OAuth-inbjudningslänkar eller den plattformsinbjudan som gäller för produktens entitlements. Samma uppgifter finns kvar i Customer Portal, under orderhistoriken, så länge grantet är aktivt.
Åtkomst för prenumeranter via Discord, GitHub och Notion kräver att kunden auktoriserar Dodo Payments att bevilja åtkomsten. Dessa grants förblir Pending tills kunden slutför OAuth-flödet via länken i sitt mejl eller Customer Portal. När kunden har auktoriserat övergår grantet till Delivered och Dodo Payments provisionerar plattformsåtkomsten.
När ett grant återkallas tar Dodo Payments bort åtkomsten på plattformen: Discord-rollen tas bort, GitHub-samarbetspartnern tas bort eller licensnyckeln inaktiveras. Kunden ser ändringen i Customer Portal.
För Digital Files stoppar en återkallelse nya försignerade nedladdnings-URL:er, men ogiltigförklarar inte kopior som kunden redan har laddat ner. Planera din innehållsstyrning med detta i åtanke.
Öppna valfri entitlement från dashboarden för att se dess grants. Detaljpanelen visar totalt antal utfärdade grants, ett statusfilter och en rad per grant med kunden, datumet då åtkomsten användes, statusen och åtgärden Revoke.Om du vill hantera grants programmatiskt listar du dem med filtret status och återkallar ett enskilt grant med dess ID:
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 grant-livscykeln. Prenumerera på dem för att hålla din applikation synkroniserad med vad varje kund har åtkomst till.
Händelse
Utlöses när
entitlement_grant.created
Ett grant skapas. Automatiskt uppfyllda grants för licensnycklar och grants för feature flags anländer som Delivered. Manuellt uppfyllda grants för licensnycklar och alla andra integrationer anländer som Pending och övergår sedan till Delivered när plattformsanropet lyckas eller, för OAuth-baserade integrationer, när kunden auktoriserar.
entitlement_grant.delivered
Ett befintligt grant övergår till Delivered, så kunden får nu åtkomst. Ett grant som är Delivered när det skapas utlöser endast created.
entitlement_grant.failed
Grantet kunde inte levereras. Kontrollera error_code och error_message.
entitlement_grant.revoked
Åtkomsten har dragits tillbaka. Kontrollera revocation_reason.
Entitlement Grant Webhook Payloads
Visa hela payload-schemat, exempel på händelser och referensen revocation_reason.
Använd en entitlement per leveranskanal. Dela inte en Discord-entitlement mellan produkter med olika rollsyften. Skapa en entitlement per roll så att återkallelse förblir tydlig.
Testa i testläge först. Skapa entiteln, koppla den till en testprodukt, genomför en checkout och följ grantet från Pending till Delivered. Avsluta sedan testprenumerationen och bekräfta att grantet har återkallats.
Lyssna på entitlement_grant.delivered, inte payment.succeeded. En betalning kan lyckas innan fulfillment är slutförd, särskilt för OAuth-flöden. Vänta tills grantet når Delivered innan du låser upp beroende funktioner i dina egna system. Ett grant som levereras vid skapandet, till exempel en automatiskt uppfylld licensnyckel eller en feature flag, anländer i stället som entitlement_grant.created med status: "Delivered".
Behandla entitlement_grant.failed som åtgärdskrävande. Ett misslyckat grant innebär att en kund har betalat men inte fått åtkomst. Visa dessa grants för ditt supportteam eller utlös en ny grant.
Koppla revocation_reason till dina retention-flöden. En subscription_on_hold-återkallelse kan återställas eftersom kunden kanske uppdaterar sitt kort. En manual-återkallelse är avsiktlig. Behandla dem olika i kundmeddelanden.
Återkalla inte åtkomst vid subscription.past_due. Den händelsen öppnar en grace period, och kunden behåller åtkomsten tills perioden löper ut. Vänta på subscription.on_hold eller subscription.cancelled.