Billing Automation
wshobson/agents
Covers building subscription billing: billing cycles, subscription states, invoice generation, proration, tax handling and dunning for failed payments.
Dodo Payments subscription lifecycle after checkout, covering trials, statuses like active, onhold, and cancelled, plan upgrades and downgrades, proration, cancellation, failed-payment recovery…
$ npx skills add hashgraph-online/awesome-codex-plugins --skill subscription-integration -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install hashgraph-online/awesome-codex-plugins subscription-integration --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ 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-srcUse ~/.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/
Install the "subscription-integration" agent skill from https://github.com/hashgraph-online/awesome-codex-plugins/tree/main/plugins/dodopayments/dodo-agent-plugin/skills/subscription-integration into .claude/skills/subscription-integration/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "subscription-integration", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/hashgraph-online/awesome-codex-plugins/tree/main/plugins/dodopayments/dodo-agent-plugin/skills/subscription-integrationType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add hashgraph-online/awesome-codex-plugins --skill subscription-integration -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install hashgraph-online/awesome-codex-plugins subscription-integration --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/hashgraph-online/awesome-codex-plugins.git skills-src && mkdir -p .agents/skills && cp -r skills-src/plugins/dodopayments/dodo-agent-plugin/skills/subscription-integration .agents/skills/subscription-integration && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "subscription-integration" agent skill from https://github.com/hashgraph-online/awesome-codex-plugins/tree/main/plugins/dodopayments/dodo-agent-plugin/skills/subscription-integration into .agents/skills/subscription-integration/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "subscription-integration", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add hashgraph-online/awesome-codex-plugins --skill subscription-integration -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install hashgraph-online/awesome-codex-plugins subscription-integration --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/hashgraph-online/awesome-codex-plugins.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/plugins/dodopayments/dodo-agent-plugin/skills/subscription-integration .cursor/skills/subscription-integration && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "subscription-integration" agent skill from https://github.com/hashgraph-online/awesome-codex-plugins/tree/main/plugins/dodopayments/dodo-agent-plugin/skills/subscription-integration into .cursor/skills/subscription-integration/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "subscription-integration", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/hashgraph-online/awesome-codex-plugins.git --path plugins/dodopayments/dodo-agent-plugin/skills/subscription-integration--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add hashgraph-online/awesome-codex-plugins --skill subscription-integration -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install hashgraph-online/awesome-codex-plugins subscription-integration --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/hashgraph-online/awesome-codex-plugins.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/plugins/dodopayments/dodo-agent-plugin/skills/subscription-integration .gemini/skills/subscription-integration && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "subscription-integration" agent skill from https://github.com/hashgraph-online/awesome-codex-plugins/tree/main/plugins/dodopayments/dodo-agent-plugin/skills/subscription-integration into .gemini/skills/subscription-integration/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "subscription-integration", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install hashgraph-online/awesome-codex-plugins subscription-integrationInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add hashgraph-online/awesome-codex-plugins --skill subscription-integration -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/hashgraph-online/awesome-codex-plugins.git skills-src && mkdir -p .github/skills && cp -r skills-src/plugins/dodopayments/dodo-agent-plugin/skills/subscription-integration .github/skills/subscription-integration && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "subscription-integration" agent skill from https://github.com/hashgraph-online/awesome-codex-plugins/tree/main/plugins/dodopayments/dodo-agent-plugin/skills/subscription-integration into .github/skills/subscription-integration/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "subscription-integration", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add hashgraph-online/awesome-codex-plugins --skill subscription-integration -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install hashgraph-online/awesome-codex-plugins subscription-integration --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/hashgraph-online/awesome-codex-plugins.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/plugins/dodopayments/dodo-agent-plugin/skills/subscription-integration .opencode/skills/subscription-integration && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "subscription-integration" agent skill from https://github.com/hashgraph-online/awesome-codex-plugins/tree/main/plugins/dodopayments/dodo-agent-plugin/skills/subscription-integration into .opencode/skills/subscription-integration/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "subscription-integration", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
subscription-integrationDodo 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. 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.
6 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit 9e7b281. It shows what the files ask for, not the result of running them.
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.
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.
Links to these hosts (documentation or services it may open):
docs.dodopayments.comFrom URLs in SKILL.md, links to its own repository left out.
Names these keys or tokens, usually read from environment variables:
DODO_PAYMENTS_API_KEYFrom names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
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.
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.
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.
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.
.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.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.
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.
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.
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',
});| Status | Meaning | Transitions |
|---|---|---|
pending | Creation in progress | → active, failed |
active | Actively renewing | → past_due, on_hold, paused, cancelled, expired |
past_due | Renewal 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_hold | Renewal/plan-change payment failed; renewals stopped, access revoked; recoverable | → active (payment method updated / retry succeeds), cancelled |
paused | Deliberately paused by you or the customer; billing frozen, access revoked | → active (resumed), cancelled |
cancelled | Will not renew | → expired (at period end) |
failed | Initial mandate/payment failed at creation; terminal. Never reached from on_hold or exhausted retries | (no recovery) |
expired | Subscription 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.
const subscription = await client.subscriptions.retrieve('sub_xxxxx');
console.log(subscription.status, subscription.next_billing_date);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.
// 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).
When a subscription is on_hold due to failed payment, the customer can update their payment method. This automatically charges any outstanding dues.
await client.subscriptions.updatePaymentMethod('sub_xxxxx', {
payment_method: {
type: 'existing',
payment_method_id: 'pm_new_method',
},
});Success emits payment.succeeded followed by subscription.active.
const history = await client.subscriptions.retrieveUsageHistory('sub_xxxxx', {
page_size: 50,
page_number: 0,
});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
}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:
| Mode | Upgrade | Downgrade | Billing date |
|---|---|---|---|
prorated_immediately | Credit 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 price | Resets to change date |
difference_immediately | Full new-plan charge | Difference becomes credit | Resets |
full_immediately | Full new-plan charge | Full new-plan charge, no credit | Resets |
do_not_bill | No charge | No credit | Preserved |
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).
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.
Show the customer a quote before committing:
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);await client.subscriptions.cancelChangePlan('sub_xxxxx');await client.subscriptions.update('sub_xxxxx', {
status: 'cancelled',
});Access is revoked immediately.
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.
For usage-based or metered subscriptions, charge the customer on-demand without a scheduled renewal.
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.
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.
When a renewal or plan-change charge fails, the subscription moves to on_hold. This is recoverable.
// Listen for subscription.on_hold webhook
case 'subscription.on_hold':
// Notify customer, offer payment method update
await sendPaymentFailedEmail(data.customer.customer_id);
break;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.
Customer Portal: Customer updates payment method → automatic charge for outstanding dues → subscription.active.
Manual Charge: You update the payment method server-side, then call updatePaymentMethod().
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.
Allow customers to self-serve: view subscriptions, update payment methods, cancel, and upgrade/downgrade.
const portalSession = await client.customers.customerPortal.create(
'cus_xxxxx',
{ return_url: 'https://yoursite.com/account' }
);
// Redirect to portalSession.linkPortal links expire after 24 hours. Customers can:
on_hold subscriptionsFor full customer management (creating, updating, listing), see the customer-management skill.
Full guide: references/webhook-events.md.
Covers:
Attach credit entitlements to subscription products to grant credits each billing cycle. For full credit management, see the credit-based-billing skill.
Quick example:
// 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.
return_url Instead of WebhookWrong:
// 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:
// In webhook handler
case 'subscription.active':
await grantAccess(data.customer.customer_id);
break;subscriptions.createWrong:
const sub = await client.subscriptions.create({
product_id: 'pdt_monthly',
customer_id: 'cus_xxxxx',
});This endpoint is deprecated. Use Checkout Sessions.
Right:
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',
});subscription.plan_changedsubscription.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.
Wrong:
// 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.
on_hold with pausedon_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.
cancel_at_next_billing_date// 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);
}© 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
SKILL.md and 1 other file (references) in plugins/dodopayments/dodo-agent-plugin/skills/subscription-integration of hashgraph-online/awesome-codex-plugins.
Open the folder on GitHubat commit 9e7b281
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.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Subscription Integration this skillhashgraph-online/awesome-codex-plugins | 1.3k | — | ~4.1k | Automated safety check: Pass | Apache-2.0 | |
| Billing Automationwshobson/agents | 40k | 13 repos | ~473 | Automated safety check: Pass | MIT | |
| Stripe Best Practicesfossasia/eventyay | 1.7k | 1 repos | ~1.7k | Automated safety check: Pass | Apache-2.0 | |
| Pinme Uniwebpayglitternetwork/pinme | 3.7k | — | ~7.3k | Automated safety check: Pass | MIT | |
| PayRam Payment AnalyticsPayRam/payram-mcp | 158 | — | ~4.1k | Automated safety check: Pass | None | |
| Test Convt Serveropencoredev/convt | 258 | — | ~1.6k | Automated safety check: Pass | AGPL-3.0 |
wshobson/agents
Covers building subscription billing: billing cycles, subscription states, invoice generation, proration, tax handling and dunning for failed payments.
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)…
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…
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.
opencoredev/convt
Run and verify the convt jobs API, Postgres queue, object storage, sandbox worker and metering locally.
aws/agent-toolkit-for-aws
Deploys, queries, and debugs AWS Marketplace usage-based (PAYG) metering — the pipeline (ResolveCustomer, BatchMeterUsage, EventBridge via SAM) and querying/debugging metering records, statuses…
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.
hashgraph-online/awesome-codex-plugins
Manage and query Calibre libraries with the calibredb CLI (local paths or Calibre Content server URLs).
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…
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…
hashgraph-online/awesome-codex-plugins
Use CALL-E from Codex through the calle CLI. An agent skill from hashgraph-online/awesome-codex-plugins.
hashgraph-online/awesome-codex-plugins
Balance game difficulty, resources, rewards, probability, progression, economies, and dominant strategies.
Categories
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.
Subscription Integration fits situations like: managing recurring billing; off-session charging; use checkout-integration to start the purchase.
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.
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.
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.
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.
SKILL.md names 1 domain. As links in the text: docs.dodopayments.com. This is read from the text; nothing was executed.
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.
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.
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.
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.
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.