Agent skill

Subscription Integration

by hashgraph-online in hashgraph-online/awesome-codex-plugins

Dodo Payments subscription lifecycle after checkout, covering trials, statuses like active, onhold, and cancelled, plan upgrades and downgrades, proration, cancellation, failed-payment recovery…

Apache-2.0Auto-check passedBackend & APIs

Install Subscription Integration

skills CLI
$ npx skills add hashgraph-online/awesome-codex-plugins --skill subscription-integration -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install hashgraph-online/awesome-codex-plugins subscription-integration --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/hashgraph-online/awesome-codex-plugins.git skills-src && mkdir -p .claude/skills && cp -r skills-src/plugins/dodopayments/dodo-agent-plugin/skills/subscription-integration .claude/skills/subscription-integration && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
subscription-integration
GitHub stars
1.3k
Token cost
~4.1k tokens
SKILL.md length
1,177 words
Files
2 (incl. references)
Skills in repo
714
Repo updated
First seen
Licence
Apache-2.0

At a glance

Dodo Payments subscription lifecycle after checkout, covering trials, statuses like active, onhold, and cancelled, plan upgrades and downgrades, proration, cancellation, failed-payment recovery…

  • Works in 6 steps: Granting Access on return_url Instead of… → Using Deprecated subscriptions.create → Misinterpreting subscription.plan_changed → …
  • Managing recurring billing
  • SKILL.md covers When to use this skill, Core Concepts, Creating a Subscription and Subscription Lifecycle & Status, plus 8 more sections
  • Needs DODO_PAYMENTS_API_KEY

What it does

Subscription Integration is an agent skill from hashgraph-online/awesome-codex-plugins. Dodo Payments subscription lifecycle after checkout, covering trials, statuses like active, onhold, and cancelled, plan upgrades and downgrades, proration, cancellation, failed-payment recovery, mandates, and on-demand charges. Use when managing recurring billing, plan changes, dunning, or off-session charging; use checkout-integration to start the purchase.

Its SKILL.md is about 4.1k tokens, which your agent loads only when the skill is triggered. The skill folder holds 2 other files, including reference files (for example `references/webhook-events.md`).

It sits in Backend & APIs, covering Payments and billing. The repository describes itself as: A curated list of awesome OpenAI Codex / ChatGPT plugins, skills, and resources. The 1 Codex Marketplace. See live plugins at: https://hol.org/plugins/best-codex-plugins. The licence is Apache-2.0.

When your agent uses it

  • Managing recurring billing
  • Off-session charging
  • Use checkout-integration to start the purchase

Example prompts

  • “/subscription-integration”

Requirements

  • A credential in DODO_PAYMENTS_API_KEY

Workflow steps

6 steps, taken from the step headings in SKILL.md.

  1. Granting Access on return_url Instead of Webhook
  2. Using Deprecated subscriptions.create
  3. Misinterpreting subscription.plan_changed
  4. Forgetting Proration Mode
  5. Confusing on_hold with paused
  6. Not Handling cancel_at_next_billing_date

What it can do on your machine

Read from SKILL.md and the folder at commit 9e7b281. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    No scripts in the folder and no shell commands in SKILL.md (its code samples are typescript).

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    Links to these hosts (documentation or services it may open):

    • docs.dodopayments.com

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names these keys or tokens, usually read from environment variables:

    • DODO_PAYMENTS_API_KEY

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Subscription Integration loads about 4.1k tokens when it runs, and up to ~5k if it reads all its reference files. Until then it costs about 97 tokens; SKILL.md has 1,177 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~97
When it runs · the whole SKILL.md, loaded when a task matches
~4.1k
With references · SKILL.md plus every file in references/, read only if the agent opens them
~5k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check passed

The automated check found no risky patterns in SKILL.md.

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.

SKILL.md

The full file from hashgraph-online/awesome-codex-plugins at commit 9e7b281, republished under its Apache-2.0 licence (© hashgraph-online). 1,177 words, ~4,065 tokens.

Download SKILL.mdSave it as .claude/skills/subscription-integration/SKILL.md (or your agent's skills folder). This skill also uses 1 other file; get the full folder from GitHub.
name
subscription-integration
description
Dodo Payments subscription lifecycle after checkout, covering trials, statuses like active, on_hold, and cancelled, plan upgrades and downgrades, proration, cancellation, failed-payment recovery, mandates, and on-demand charges. Use when managing recurring billing, plan changes, dunning, or off-session charging; use checkout-integration to start the purchase.

Dodo Payments Subscription Integration

Implement recurring billing with trials, plan changes, and on-demand charging. Subscriptions are created through Checkout Sessions, managed via the subscriptions API, and monitored through webhooks.

When to use this skill

  • Building a subscription product with recurring billing and trials
  • Handling plan upgrades, downgrades, and migrations mid-cycle
  • Implementing on-demand/off-session charging with mandates
  • Managing failed payments and dunning recovery
  • Building a customer self-service portal for subscription management

Core Concepts

Subscription lifecycle: The eight subscription statuses are pending, active, past_due, on_hold, paused, cancelled, failed, and expired. A trialing subscription reports active; subscription.renewed is an event, not a status. A failed renewal moves a subscription to past_due (only if you configured a grace period; access is kept) or on_hold (access revoked); both are recoverable. paused is a deliberate freeze by you or the customer. failed is terminal and only happens when initial creation fails. Cancellation sets it to cancelled or schedules it to become expired at period end.

Checkout Sessions: The recommended path for creating subscriptions. A single-use hosted checkout that collects payment and customer data, then creates the subscription server-side.

Proration: When a customer changes plans mid-cycle, Dodo calculates credits or charges based on the time remaining. Proration mode controls whether the customer is billed immediately, credited, or neither.

Mandates: Authorization to charge a customer's payment method repeatedly (for subscriptions) or on-demand (for usage-based billing). Created during Checkout, can be updated if payment fails.


Creating a Subscription

typescript
import DodoPayments from 'dodopayments';

const client = new DodoPayments({
  bearerToken: process.env.DODO_PAYMENTS_API_KEY,
  environment: 'test_mode',
});

const session = await client.checkoutSessions.create({
  product_cart: [
    { product_id: 'pdt_monthly_plan', quantity: 1 }
  ],
  subscription_data: {
    trial_period_days: 14, // Optional
  },
  customer: {
    email: 'subscriber@example.com',
    name: 'Jane Doe',
  },
  return_url: 'https://yoursite.com/success',
});

// Redirect user to session.checkout_url
console.log('Redirect to:', session.checkout_url);

The customer completes payment on the hosted checkout. On success, Dodo creates the subscription and fires the subscription.active webhook.

With Add-ons
typescript
const session = await client.checkoutSessions.create({
  product_cart: [
    {
      product_id: 'pdt_pro_monthly',
      quantity: 1,
      addons: [
        { addon_id: 'adn_extra_seats', quantity: 3 }
      ]
    }
  ],
  subscription_data: {
    trial_period_days: 7,
  },
  customer: { email: 'user@example.com' },
  return_url: 'https://yoursite.com/success',
});

Subscription Lifecycle & Status

StatusMeaningTransitions
pendingCreation in progress→ active, failed
activeActively renewing→ past_due, on_hold, paused, cancelled, expired
past_dueRenewal failed and the grace period is open; customer keeps access until past_due_ends_at→ active (debt settled), on_hold or cancelled (grace period ends, per your setting)
on_holdRenewal/plan-change payment failed; renewals stopped, access revoked; recoverable→ active (payment method updated / retry succeeds), cancelled
pausedDeliberately paused by you or the customer; billing frozen, access revoked→ active (resumed), cancelled
cancelledWill not renew→ expired (at period end)
failedInitial mandate/payment failed at creation; terminal. Never reached from on_hold or exhausted retries(no recovery)
expiredSubscription term ended(terminal)

past_due only occurs if you enable a grace period; without one, a failed renewal goes straight to on_hold.

Trial period: If trial_period_days is set, the subscription enters active immediately but charges nothing until the trial ends. The first charge occurs on the trial end date.


Subscription Methods

Retrieve
typescript
const subscription = await client.subscriptions.retrieve('sub_xxxxx');
console.log(subscription.status, subscription.next_billing_date);
Pause and Resume

Pause and resume run through status on the update endpoint. Send it on its own: combining paused/active with any other field is rejected with 422.

typescript
// Pause: renewals stop, access is revoked, next_billing_date shifts by the pause length
await client.subscriptions.update('sub_xxxxx', { status: 'paused' });

// Resume
await client.subscriptions.update('sub_xxxxx', { status: 'active' });

Pausing emits subscription.paused; resuming emits subscription.unpaused. Customer self-service pause in the portal is opt-in (Settings → Subscriptions → Allow Subscription Pause).

Update Payment Method

When a subscription is on_hold due to failed payment, the customer can update their payment method. This automatically charges any outstanding dues.

typescript
await client.subscriptions.updatePaymentMethod('sub_xxxxx', {
  payment_method: {
    type: 'existing',
    payment_method_id: 'pm_new_method',
  },
});

Success emits payment.succeeded followed by subscription.active.

List Usage History (Metered Subscriptions)
typescript
const history = await client.subscriptions.retrieveUsageHistory('sub_xxxxx', {
  page_size: 50,
  page_number: 0,
});
Retrieve Credit Usage
typescript
const creditUsage = await client.subscriptions.retrieveCreditUsage('sub_xxxxx');
console.log('Subscription:', creditUsage.subscription_id);

for (const item of creditUsage.items) {
  console.log(item.credit_entitlement_name, item.balance); // balance is a string
}

Plan Changes (Upgrades & Downgrades)

Change Plan
typescript
await client.subscriptions.changePlan('sub_xxxxx', {
  product_id: 'pdt_higher_tier',
  quantity: 1,
  proration_billing_mode: 'prorated_immediately',
  on_payment_failure: 'prevent_change',
});

Proration modes:

ModeUpgradeDowngradeBilling date
prorated_immediatelyCredit for unused time on the old plan, then charge a full new cycle (net = full new cycle − unused credit)Same formula; a credit only remains if the unused credit exceeds the new plan priceResets to change date
difference_immediatelyFull new-plan chargeDifference becomes creditResets
full_immediatelyFull new-plan chargeFull new-plan charge, no creditResets
do_not_billNo chargeNo creditPreserved

Payment failure handling:

  • prevent_change: Keep the old plan if the charge fails.
  • apply_change: Apply the new plan even if payment fails (subscription may become on_hold).

Scheduling: effective_at defaults to 'immediately'. Pass effective_at: 'next_billing_date' to schedule the change (typical for downgrades) - nothing is charged now, the customer keeps the current plan until the period ends, and the pending change appears on the subscription as scheduled_change (cancel it with cancelChangePlan).

typescript
await client.subscriptions.changePlan('sub_xxxxx', {
  product_id: 'pdt_lower_tier',
  quantity: 1,
  proration_billing_mode: 'prorated_immediately',
  effective_at: 'next_billing_date',
});

Plan changes are rejected while the subscription is past_due. Settle the renewal debt first.

Preview Plan Change

Show the customer a quote before committing:

typescript
const preview = await client.subscriptions.previewChangePlan('sub_xxxxx', {
  product_id: 'pdt_new_plan',
  quantity: 1,
  proration_billing_mode: 'prorated_immediately',
});

console.log('Effective at:', preview.immediate_charge.effective_at);
console.log('Line items:', preview.immediate_charge.line_items);
console.log('Summary:', preview.immediate_charge.summary);
console.log('New plan:', preview.new_plan);
Cancel a Scheduled Plan Change
typescript
await client.subscriptions.cancelChangePlan('sub_xxxxx');

Cancellation

Immediate Cancellation
typescript
await client.subscriptions.update('sub_xxxxx', {
  status: 'cancelled',
});

Access is revoked immediately.

Cancel at Period End
typescript
await client.subscriptions.update('sub_xxxxx', {
  cancel_at_next_billing_date: true,
});

The subscription remains active until the next billing date, then transitions to expired. The subscription.cancelled webhook includes cancel_at_next_billing_date: true and next_billing_date so you know when to revoke access.


Show full SKILL.md (461 more words)Show less

On-Demand (Off-Session) Charging

For usage-based or metered subscriptions, charge the customer on-demand without a scheduled renewal.

Create Subscription with Mandate
typescript
const session = await client.checkoutSessions.create({
  product_cart: [
    { product_id: 'pdt_usage_based', quantity: 1 }
  ],
  subscription_data: {
    on_demand: {
      mandate_only: true,
    }
  },
  customer: { email: 'user@example.com' },
  return_url: 'https://yoursite.com/success',
});

This creates a subscription with a mandate but no automatic renewal. You control when to charge.

Charge On-Demand
typescript
const charge = await client.subscriptions.charge('sub_xxxxx', {
  product_price: 2500, // $25.00 in cents
  product_currency: 'USD',
  product_description: 'API calls for January 2025',
});

console.log('Payment ID:', charge.payment_id);

Amounts are in the smallest currency unit (cents for USD, paise for INR, etc.).

Dodo does not automatically retry on-demand charges. You own retry logic and decline filtering. Monitor payment.failed webhooks and implement your own retry strategy.


Failed Payments & Recovery

On-Hold Subscriptions

When a renewal or plan-change charge fails, the subscription moves to on_hold. This is recoverable.

typescript
// Listen for subscription.on_hold webhook
case 'subscription.on_hold':
  // Notify customer, offer payment method update
  await sendPaymentFailedEmail(data.customer.customer_id);
  break;
Recovery Options
  1. Payment Retries: Opt-in under Settings → Recovery. Dodo retries failed renewals up to 8 times over a configurable 1–30 day window (default 13 days). Only for soft declines.

  2. Customer Portal: Customer updates payment method → automatic charge for outstanding dues → subscription.active.

  3. Manual Charge: You update the payment method server-side, then call updatePaymentMethod().

Dunning

Dunning sends up to four configurable emails for on_hold renewals and customer-portal cancellations. Exhausted dunning does not change the subscription state; you must handle the final outcome.


Customer Portal

Allow customers to self-serve: view subscriptions, update payment methods, cancel, and upgrade/downgrade.

typescript
const portalSession = await client.customers.customerPortal.create(
  'cus_xxxxx',
  { return_url: 'https://yoursite.com/account' }
);

// Redirect to portalSession.link

Portal links expire after 24 hours. Customers can:

  • View subscription details and renewal dates
  • Cancel immediately or at period end
  • Upgrade/downgrade within enabled Product Collections
  • Update payment methods and reactivate on_hold subscriptions
  • View billing history and download invoices

For full customer management (creating, updating, listing), see the customer-management skill.


Webhook Events

Full guide: references/webhook-events.md.

Covers:

  • Example Handler

Credit Entitlements

Attach credit entitlements to subscription products to grant credits each billing cycle. For full credit management, see the credit-based-billing skill.

Quick example:

typescript
// Product has credit entitlement attached (e.g., 10,000 tokens/month)
const session = await client.checkoutSessions.create({
  product_cart: [
    { product_id: 'pdt_pro_with_credits', quantity: 1 }
  ],
  subscription_data: {
    trial_period_days: 14,
  },
  customer: { email: 'user@example.com' },
  return_url: 'https://yoursite.com/success',
});

On each renewal, credits are issued. Monitor credit.added and credit.deducted webhooks to sync your ledger.


Common Mistakes

1. Granting Access on return_url Instead of Webhook

Wrong:

typescript
// On return_url redirect
await grantAccess(user.id);

The return_url is hit before the subscription is fully created. Dodo may still be processing the mandate or payment. Always wait for subscription.active webhook.

Right:

typescript
// In webhook handler
case 'subscription.active':
  await grantAccess(data.customer.customer_id);
  break;
2. Using Deprecated subscriptions.create

Wrong:

typescript
const sub = await client.subscriptions.create({
  product_id: 'pdt_monthly',
  customer_id: 'cus_xxxxx',
});

This endpoint is deprecated. Use Checkout Sessions.

Right:

typescript
const session = await client.checkoutSessions.create({
  product_cart: [{ product_id: 'pdt_monthly', quantity: 1 }],
  customer: { customer_id: 'cus_xxxxx' },
  return_url: 'https://yoursite.com/success',
});
3. Misinterpreting subscription.plan_changed

subscription.plan_changed fires for upgrades, downgrades, add-on changes, AND when cancel_at_next_billing_date is toggled. Don't assume every plan_changed event means a paid upgrade succeeded. Inspect the payload and check the subscription's current product_id.

4. Forgetting Proration Mode

Wrong:

typescript
// Missing proration_billing_mode
await client.subscriptions.changePlan('sub_xxxxx', {
  product_id: 'pdt_new',
  quantity: 1,
  // proration_billing_mode: 'prorated_immediately', // REQUIRED
});

This will fail. Always specify a proration mode.

5. Confusing on_hold with paused

on_hold is involuntary: a payment failed, and it is recovered by updating the payment method or a successful retry. paused is deliberate: you or the customer froze the subscription with subscriptions.update(id, { status: 'paused' }), and it is resumed with { status: 'active' }. Handle subscription.paused/subscription.unpaused separately from subscription.on_hold.

6. Not Handling cancel_at_next_billing_date
typescript
// Wrong: revoke immediately
await revokeAccess(data.customer.customer_id);

// Right: check the flag
if (data.cancel_at_next_billing_date) {
  await scheduleAccessRevocation(data.subscription_id, new Date(data.next_billing_date));
} else {
  await revokeAccessImmediately(data.subscription_id);
}

Resources

© hashgraph-online, Apache-2.0. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

SKILL.md and 1 other file (references) in plugins/dodopayments/dodo-agent-plugin/skills/subscription-integration of hashgraph-online/awesome-codex-plugins.

  • SKILL.md
  • references/webhook-events.md

Open the folder on GitHubat commit 9e7b281

Compare with similar skills

Subscription Integration next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

Subscription Integration compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Subscription Integration this skillhashgraph-online/awesome-codex-plugins1.3k—~4.1kAutomated safety check: PassApache-2.0
Billing Automationwshobson/agents40k13 repos~473Automated safety check: PassMIT
Stripe Best Practicesfossasia/eventyay1.7k1 repos~1.7kAutomated safety check: PassApache-2.0
Pinme Uniwebpayglitternetwork/pinme3.7k—~7.3kAutomated safety check: PassMIT
PayRam Payment AnalyticsPayRam/payram-mcp158—~4.1kAutomated safety check: PassNone
Test Convt Serveropencoredev/convt258—~1.6kAutomated safety check: PassAGPL-3.0

Similar skills

  • Billing Automation

    wshobson/agents

    Covers building subscription billing: billing cycles, subscription states, invoice generation, proration, tax handling and dunning for failed payments.

    40k GitHub starsUsed in 13 repos~473 tokens
    Backend & APIsAuto-check passed
  • Stripe Best Practices

    fossasia/eventyay

    Guides Stripe integration decisions across development and test environment planning (separate sandboxes vs the shared test mode sandbox), API selection (Checkout Sessions vs PaymentIntents)…

    1.7k GitHub starsUsed in 1 repo~1.7k tokens
    Backend & APIsAuto-check passed
  • Pinme Uniwebpay

    glitternetwork/pinme

    A skill your agent uses when generating, modifying, or reviewing PinMe Worker (Cloudflare Worker TypeScript) code that accepts payments through UniwebPay — payment links, products/prices, checkout…

    3.7k GitHub stars~7.3k tokensUpdated 27 days ago
    Backend & APIsAuto-check passed
  • PayRam Payment Analytics

    PayRam/payram-mcp

    Queries a PayRam server's dashboard data through its REST APIs with a Bearer token: payment search, daily volume, unswept balances, sweep history and on-ramp metrics.

    158 GitHub stars~4.1k tokensUpdated yesterday
    Backend & APIsAuto-check passed
  • Test Convt Server

    opencoredev/convt

    Run and verify the convt jobs API, Postgres queue, object storage, sandbox worker and metering locally.

    258 GitHub stars~1.6k tokensUpdated yesterday
    Backend & APIsAuto-check passed
  • AWS Marketplace Metering

    aws/agent-toolkit-for-aws

    Official

    Deploys, queries, and debugs AWS Marketplace usage-based (PAYG) metering — the pipeline (ResolveCustomer, BatchMeterUsage, EventBridge via SAM) and querying/debugging metering records, statuses…

    2.8k GitHub stars~18k tokensUpdated today
    Backend & APIsAuto-check passed

More from hashgraph-online/awesome-codex-plugins

All 714 skills in this repo
  • Anime Reaction Gif

    hashgraph-online/awesome-codex-plugins

    Create original anime-style reaction stickers as looping GIFs and MP4 previews, using generated character pose sheets and timed key poses.

    1.3k GitHub stars~922 tokensUpdated today
    Auto-check passed
  • Calibredb

    hashgraph-online/awesome-codex-plugins

    Manage and query Calibre libraries with the calibredb CLI (local paths or Calibre Content server URLs).

    1.3k GitHub stars~1k tokensUpdated today
    Auto-check passed
  • Rust API Test Harness

    hashgraph-online/awesome-codex-plugins

    A skill your agent uses when adding, changing, testing, or debugging Rust HTTP APIs and services, especially when Codex needs black-box integration tests, random-port app startup, real database test…

    1.3k GitHub stars~1.7k tokensUpdated today
    Auto-check passed
  • Art

    hashgraph-online/awesome-codex-plugins

    Make a studio's game look like something at build time — a cover from a real frame of the game (free), painted covers, backdrops, textures and character plates from image models through the…

    1.3k GitHub stars~2.4k tokensUpdated today
    Auto-check passed
  • Calle

    hashgraph-online/awesome-codex-plugins

    Use CALL-E from Codex through the calle CLI. An agent skill from hashgraph-online/awesome-codex-plugins.

    1.3k GitHub stars~2.9k tokensUpdated today
    Auto-check passed
  • Game Balance Economy

    hashgraph-online/awesome-codex-plugins

    Balance game difficulty, resources, rewards, probability, progression, economies, and dominant strategies.

    1.3k GitHub stars~618 tokensUpdated today
    Auto-check passed

Categories

Questions about Subscription Integration

What does Subscription Integration do?

Dodo Payments subscription lifecycle after checkout, covering trials, statuses like active, onhold, and cancelled, plan upgrades and downgrades, proration, cancellation, failed-payment recovery…. Subscription Integration is an agent skill from hashgraph-online/awesome-codex-plugins. Dodo Payments subscription lifecycle after checkout, covering trials, statuses like active, onhold, and cancelled, plan upgrades and downgrades, proration, cancellation, failed-payment recovery, mandates, and on-demand charges.

When should I use Subscription Integration?

Subscription Integration fits situations like: managing recurring billing; off-session charging; use checkout-integration to start the purchase.

How do I install Subscription Integration in Claude Code?

Run `npx skills add hashgraph-online/awesome-codex-plugins --skill subscription-integration -a claude-code`. Or copy the skill folder (plugins/dodopayments/dodo-agent-plugin/skills/subscription-integration in hashgraph-online/awesome-codex-plugins) into .claude/skills/subscription-integration in your project. Claude Code loads it when a task matches its description.

How do I install Subscription Integration in Codex?

Run `npx skills add hashgraph-online/awesome-codex-plugins --skill subscription-integration -a codex`. Or copy the skill folder (plugins/dodopayments/dodo-agent-plugin/skills/subscription-integration in hashgraph-online/awesome-codex-plugins) into .agents/skills/subscription-integration in your project. Codex loads it when a task matches its description.

Can I use Subscription Integration in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add hashgraph-online/awesome-codex-plugins --skill subscription-integration -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/subscription-integration, .gemini/skills/subscription-integration, .github/skills/subscription-integration and .opencode/skills/subscription-integration in your project.

What does Subscription Integration need to run?

Going by SKILL.md and its folder, Subscription Integration needs credentials named DODO_PAYMENTS_API_KEY. Our summary lists: A credential in DODO_PAYMENTS_API_KEY.

Does Subscription Integration access the network?

SKILL.md names 1 domain. As links in the text: docs.dodopayments.com. This is read from the text; nothing was executed.

Is Subscription Integration safe to install?

Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.

What licence does Subscription Integration use?

Subscription Integration is published under the Apache-2.0 licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Subscription Integration use?

About 4.1k tokens (SKILL.md is roughly 16k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full. Its references folder adds about 947 tokens, read only when the agent opens those files.

What are the alternatives to Subscription Integration?

Skills that share tags, products or a category with Subscription Integration: Billing Automation (wshobson/agents, 40k stars), Stripe Best Practices (fossasia/eventyay, 1.7k stars), Pinme Uniwebpay (glitternetwork/pinme, 3.7k stars) and PayRam Payment Analytics (PayRam/payram-mcp, 158 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Subscription Integration?

hashgraph-online (a GitHub organization) maintains it in hashgraph-online/awesome-codex-plugins, which has 1,255 GitHub stars. The repository holds 714 skills in this directory. The repository was last updated on October 9, 2026.

Source: hashgraph-online/awesome-codex-plugins on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.