Entitlements
Delete Entitlement
Soft-delete an entitlement. Existing grants keep their status and platform access, but are hidden from the Customer Portal.
DELETE
/
entitlements
/
{id}
JavaScript
import DodoPayments from 'dodopayments';
const client = new DodoPayments({
bearerToken: process.env['DODO_PAYMENTS_API_KEY'], // This is the default and can be omitted
});
await client.entitlements.delete('ent_jt7jcvI79Xh8eehqgWdcm');import os
from dodopayments import DodoPayments
client = DodoPayments(
bearer_token=os.environ.get("DODO_PAYMENTS_API_KEY"), # This is the default and can be omitted
)
client.entitlements.delete(
"ent_jt7jcvI79Xh8eehqgWdcm",
)package main
import (
"context"
"github.com/dodopayments/dodopayments-go"
"github.com/dodopayments/dodopayments-go/option"
)
func main() {
client := dodopayments.NewClient(
option.WithBearerToken("My Bearer Token"),
)
err := client.Entitlements.Delete(context.TODO(), "ent_jt7jcvI79Xh8eehqgWdcm")
if err != nil {
panic(err.Error())
}
}
package com.dodopayments.api.example;
import com.dodopayments.api.client.DodoPaymentsClient;
import com.dodopayments.api.client.okhttp.DodoPaymentsOkHttpClient;
import com.dodopayments.api.models.entitlements.EntitlementDeleteParams;
public final class Main {
private Main() {}
public static void main(String[] args) {
DodoPaymentsClient client = DodoPaymentsOkHttpClient.fromEnv();
client.entitlements().delete("ent_jt7jcvI79Xh8eehqgWdcm");
}
}package com.dodopayments.api.example
import com.dodopayments.api.client.DodoPaymentsClient
import com.dodopayments.api.client.okhttp.DodoPaymentsOkHttpClient
import com.dodopayments.api.models.entitlements.EntitlementDeleteParams
fun main() {
val client: DodoPaymentsClient = DodoPaymentsOkHttpClient.fromEnv()
client.entitlements().delete("ent_jt7jcvI79Xh8eehqgWdcm")
}require "dodopayments"
dodo_payments = Dodopayments::Client.new(
bearer_token: "My Bearer Token",
environment: "test_mode" # defaults to "live_mode"
)
result = dodo_payments.entitlements.delete("ent_jt7jcvI79Xh8eehqgWdcm")
puts(result)<?php
require_once dirname(__DIR__) . '/vendor/autoload.php';
use Dodopayments\Client;
use Dodopayments\Core\Exceptions\APIException;
$client = new Client(
bearerToken: getenv('DODO_PAYMENTS_API_KEY') ?: 'My Bearer Token',
environment: 'test_mode',
);
try {
$result = $client->entitlements->delete('ent_jt7jcvI79Xh8eehqgWdcm');
var_dump($result);
} catch (APIException $e) {
echo $e->getMessage();
}using DodoPayments.Client;
using DodoPayments.Client.Models.Entitlements;
DodoPaymentsClient client = new();
EntitlementDeleteParams parameters = new() { ID = "ent_jt7jcvI79Xh8eehqgWdcm" };
await client.Entitlements.Delete(parameters);use dodopayments::Client;
#[tokio::main]
async fn main() -> dodopayments::Result<()> {
let client = Client::from_env()?;
let id = "id";
let result = client
.entitlements()
.delete()
.id(id)
.await?;
println!("{result:?}");
Ok(())
}curl --request DELETE \
--url https://test.dodopayments.com/entitlements/{id} \
--header 'Authorization: Bearer <token>'Deleting an entitlement is a soft-delete that hides existing grants from the Customer Portal. It does not revoke platform-side access:
- Grants linked to the entitlement remain in the database and keep their current
status. - Discord roles, GitHub collaborator access, Notion access, Telegram membership, license keys, and digital file URLs stay valid.
- No
entitlement_grant.revokedwebhook is emitted, andrevoked_at/revocation_reasonare not set.
DELETE /entitlements/{id}/grants/{grant_id}.If you need to fully cut off access, revoke the grants first, then delete the entitlement.Authorizations
Send your API key as a bearer token: Authorization: Bearer <api_key>. A test mode key starts with dodo_test_, for example dodo_test_AbCd1234EfGh5678.<secret>. A live mode key starts with dodo_live_. Use a test mode key on test.dodopayments.com and a live mode key on live.dodopayments.com. Keys from before these tags have no tag and operate as before.
Path Parameters
Entitlement ID
Response
Entitlement deactivated
Last modified on October 28, 2026
Was this page helpful?
⌘I
JavaScript
import DodoPayments from 'dodopayments';
const client = new DodoPayments({
bearerToken: process.env['DODO_PAYMENTS_API_KEY'], // This is the default and can be omitted
});
await client.entitlements.delete('ent_jt7jcvI79Xh8eehqgWdcm');import os
from dodopayments import DodoPayments
client = DodoPayments(
bearer_token=os.environ.get("DODO_PAYMENTS_API_KEY"), # This is the default and can be omitted
)
client.entitlements.delete(
"ent_jt7jcvI79Xh8eehqgWdcm",
)package main
import (
"context"
"github.com/dodopayments/dodopayments-go"
"github.com/dodopayments/dodopayments-go/option"
)
func main() {
client := dodopayments.NewClient(
option.WithBearerToken("My Bearer Token"),
)
err := client.Entitlements.Delete(context.TODO(), "ent_jt7jcvI79Xh8eehqgWdcm")
if err != nil {
panic(err.Error())
}
}
package com.dodopayments.api.example;
import com.dodopayments.api.client.DodoPaymentsClient;
import com.dodopayments.api.client.okhttp.DodoPaymentsOkHttpClient;
import com.dodopayments.api.models.entitlements.EntitlementDeleteParams;
public final class Main {
private Main() {}
public static void main(String[] args) {
DodoPaymentsClient client = DodoPaymentsOkHttpClient.fromEnv();
client.entitlements().delete("ent_jt7jcvI79Xh8eehqgWdcm");
}
}package com.dodopayments.api.example
import com.dodopayments.api.client.DodoPaymentsClient
import com.dodopayments.api.client.okhttp.DodoPaymentsOkHttpClient
import com.dodopayments.api.models.entitlements.EntitlementDeleteParams
fun main() {
val client: DodoPaymentsClient = DodoPaymentsOkHttpClient.fromEnv()
client.entitlements().delete("ent_jt7jcvI79Xh8eehqgWdcm")
}require "dodopayments"
dodo_payments = Dodopayments::Client.new(
bearer_token: "My Bearer Token",
environment: "test_mode" # defaults to "live_mode"
)
result = dodo_payments.entitlements.delete("ent_jt7jcvI79Xh8eehqgWdcm")
puts(result)<?php
require_once dirname(__DIR__) . '/vendor/autoload.php';
use Dodopayments\Client;
use Dodopayments\Core\Exceptions\APIException;
$client = new Client(
bearerToken: getenv('DODO_PAYMENTS_API_KEY') ?: 'My Bearer Token',
environment: 'test_mode',
);
try {
$result = $client->entitlements->delete('ent_jt7jcvI79Xh8eehqgWdcm');
var_dump($result);
} catch (APIException $e) {
echo $e->getMessage();
}using DodoPayments.Client;
using DodoPayments.Client.Models.Entitlements;
DodoPaymentsClient client = new();
EntitlementDeleteParams parameters = new() { ID = "ent_jt7jcvI79Xh8eehqgWdcm" };
await client.Entitlements.Delete(parameters);use dodopayments::Client;
#[tokio::main]
async fn main() -> dodopayments::Result<()> {
let client = Client::from_env()?;
let id = "id";
let result = client
.entitlements()
.delete()
.id(id)
.await?;
println!("{result:?}");
Ok(())
}curl --request DELETE \
--url https://test.dodopayments.com/entitlements/{id} \
--header 'Authorization: Bearer <token>'