Agent skill

Customer Management

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

Dodo Payments customer management, covering customer CRUD, saved payment methods, real-money customer wallets and ledger entries, entitlements, and hosted customer portal sessions.

Apache-2.0Auto-check passed

Install Customer Management

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

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

GitHub CLI
$ gh skill install hashgraph-online/awesome-codex-plugins customer-management --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/customer-management .claude/skills/customer-management && 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
customer-management
GitHub stars
1.3k
Token cost
~2.8k tokens
SKILL.md length
719 words
Files
1
Skills in repo
714
Repo updated
First seen
Licence
Apache-2.0

At a glance

Dodo Payments customer management, covering customer CRUD, saved payment methods, real-money customer wallets and ledger entries, entitlements, and hosted customer portal sessions.

  • Linking app users to cus IDs
  • SKILL.md covers When to use this skill, Core concepts, Customer CRUD and Customer Portal, plus 6 more sections
  • Needs DODO_PAYMENTS_API_KEY
  • Opening a Manage billing portal

What it does

Customer Management is an agent skill from hashgraph-online/awesome-codex-plugins. Dodo Payments customer management, covering customer CRUD, saved payment methods, real-money customer wallets and ledger entries, entitlements, and hosted customer portal sessions. Use when linking app users to cus IDs, opening a Manage billing portal, listing or deleting payment methods, or crediting wallets; use credit-based-billing for usage credits.

Its SKILL.md is about 2.8k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.

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

  • Linking app users to cus IDs
  • Opening a Manage billing portal
  • Deleting payment methods
  • Crediting wallets

Example prompts

  • “/customer-management”

Requirements

  • A credential in DODO_PAYMENTS_API_KEY

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

Customer Management loads about 2.8k tokens when it runs. Until then it costs about 94 tokens; SKILL.md has 719 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~94
When it runs · the whole SKILL.md, loaded when a task matches
~2.8k

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). 719 words, ~2,771 tokens.

Download SKILL.mdSave it as .claude/skills/customer-management/SKILL.md (or your agent's skills folder).
name
customer-management
description
Dodo Payments customer management, covering customer CRUD, saved payment methods, real-money customer wallets and ledger entries, entitlements, and hosted customer portal sessions. Use when linking app users to cus_ IDs, opening a Manage billing portal, listing or deleting payment methods, or crediting wallets; use credit-based-billing for usage credits.

Customer Management

Build customer records, hosted self-service portals, saved payment methods, and real-money wallet ledgers. This skill covers the full customer lifecycle: CRUD operations, payment method management, time-bound portal sessions, and idempotent wallet transactions.

When to use this skill

  • Creating, listing, retrieving, or updating customer records
  • Building a self-service customer portal for invoices, subscriptions, and payment methods
  • Managing saved payment methods and customer payment history
  • Implementing customer wallet balances and ledger entries for credits or refunds
  • Linking your app's user records to Dodo customers
  • Reading customer entitlements and credit balances

Core concepts

Customers are records in Dodo that group payments, subscriptions, and portal access. Each customer has an ID (prefix cus_), email, name, and optional metadata.

Customer Portal is a hosted, time-bound session that lets customers self-serve: view invoices, cancel subscriptions, change plans, update payment methods, recover on-hold subscriptions, and download license keys. You create a session and redirect to its link.

Payment Methods are saved cards or other payment instruments linked to a customer. You can list and delete them; creation happens during checkout.

Customer Wallets hold real-money balances (USD, INR) that customers can spend on future purchases. They are NOT the same as usage credits (see credit-based-billing skill). Wallet ledger entries are idempotent via idempotency_key to prevent duplicate charges.

Entitlements are feature or file grants. listCreditEntitlements returns credit balances; listEntitlements returns feature/file grants; listEntitlementGrants lists individual grants with revocation status.

Customer CRUD

Create, list, retrieve, and update customer records.

typescript
import DodoPayments from 'dodopayments';

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

// Create a customer
const customer = await client.customers.create({
  email: 'alice@example.com',
  name: 'Alice Chen',
  metadata: {
    userId: 'user_12345',
    tier: 'premium',
  },
});
console.log(customer.customer_id); // cus_...

// List customers
const customers = await client.customers.list({
  page_size: 10,
});

// Retrieve a customer
const retrieved = await client.customers.retrieve('cus_abc123');

// Update a customer
await client.customers.update('cus_abc123', {
  name: 'Alice Chen-Smith',
  metadata: { tier: 'enterprise' },
});

Customer Portal

Create a time-bound session that redirects customers to a hosted portal. In the portal, customers can view invoices, cancel subscriptions, change plans, update payment methods, recover on-hold subscriptions, and download license keys.

Never call the SDK from the browser: it uses your secret API key. Create the session in a server route and return only the link.

typescript
// Server route: create a portal session
const session = await client.customers.customerPortal.create('cus_abc123', {
  return_url: 'https://yourapp.com/dashboard',
  // send_email: true, // optionally also email the link to the customer
});

return Response.json({ link: session.link });
typescript
// Browser: redirect the customer
const res = await fetch('/api/portal', { method: 'POST' });
const { link } = await res.json();
window.location.href = link;

The portal session link is valid for 24 hours. Pass send_email: true to have Dodo also email the link to the customer. Customers cannot:

  • Create new subscriptions (use checkout for that)
  • Refund themselves
  • Change their email or name (contact support)
  • Access billing history beyond invoices

If you need to rebuild any of these, you're duplicating the portal. Use it instead.

Saved Payment Methods

List and delete payment methods saved to a customer.

typescript
// List payment methods for a customer
const methods = await client.customers.retrievePaymentMethods('cus_abc123');
console.log(methods);
// {
//   items: [{ payment_method_id: 'pm_xyz789', payment_method: 'card' }]
// }

// Delete a payment method
await client.customers.deletePaymentMethod('pm_xyz789', {
  customer_id: 'cus_abc123',
});

Payment methods are created during checkout when the customer opts to save their card. You cannot create them directly via the API.

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

Customer Wallets

Wallets hold real-money balances (USD, INR) that customers can spend on future purchases. They are distinct from usage credits. List wallet balances and create idempotent ledger entries.

typescript
// List wallets for a customer
const wallets = await client.customers.wallets.list('cus_abc123');
console.log(wallets);
// {
//   items: [
//     { currency: 'USD', balance: 5000, customer_id: 'cus_abc123', ... },
//     { currency: 'INR', balance: 100000, customer_id: 'cus_abc123', ... }
//   ],
//   total_balance_usd: 17000
// }

// List ledger entries
const entries = await client.customers.wallets.ledgerEntries.list('cus_abc123', {
  page_size: 20,
});

// Create a ledger entry (credit or debit)
// Amounts are in the smallest currency unit (cents for USD, paise for INR)
await client.customers.wallets.ledgerEntries.create('cus_abc123', {
  amount: 1000, // $10.00 in USD
  currency: 'USD',
  entry_type: 'credit', // or 'debit'
  reason: 'Refund for order #12345',
  idempotency_key: 'refund_order_12345_v1',
});

Idempotency is critical. If your network fails after creating a ledger entry, retrying with the same idempotency_key returns the existing entry instead of creating a duplicate charge. Always use a stable, unique key per transaction.

Wallets are real money. Do not create entries without idempotency keys, and do not expose wallet balances to the client without verification.

Reading Customer Entitlements

Entitlements are feature or file grants. There are three methods:

typescript
// List credit entitlements (credit balances)
const credits = await client.customers.listCreditEntitlements('cus_abc123');
console.log(credits);
// {
//   items: [{
//     credit_entitlement_id: 'cred_ent_1',
//     balance: '5000',
//     name: 'API Calls',
//     overage: '0',
//     unit: 'calls'
//   }]
// }

// List feature/file entitlements
const features = await client.customers.listEntitlements('cus_abc123');
console.log(features);
// {
//   items: [
//     {
//       grant_id: 'entg_feature_1',
//       entitlement_id: 'ent_feature_1',
//       entitlement_name: 'Pro Features',
//       integration_type: 'feature_flag',
//       status: 'delivered',
//       created_at: '2026-01-01T00:00:00Z',
//       updated_at: '2026-01-01T00:00:00Z'
//     }
//   ]
// }

// List individual grants (with revocation status)
const grants = await client.customers.listEntitlementGrants('cus_abc123', {
  page_size: 50,
});
console.log(grants);
// {
//   items: [{
//     id: 'entg_feature_1',
//     entitlement_id: 'ent_feature_1',
//     status: 'Delivered',
//     revoked_at: null
//   }]
// }

Linking Your App's Users to Dodo Customers

Store the Dodo customer ID in your user record, or use metadata to link them.

typescript
// Option 1: Store the Dodo customer ID in your database
const customer = await client.customers.create({
  email: user.email,
  name: user.name,
});
await db.users.update(user.id, { dodo_customer_id: customer.customer_id });

// Option 2: Use metadata to store your user ID
const customer = await client.customers.create({
  email: user.email,
  name: user.name,
  metadata: {
    app_user_id: user.id,
  },
});

// Later, retrieve by email (not a direct API call, but common pattern)
// You must store the mapping yourself or query Dodo's list endpoint
const customers = await client.customers.list({ page_size: 100 });
const found = customers.items.find(c => c.email === user.email);

Email matching pitfall: if a user changes their email in your app, the Dodo customer email won't update automatically. Always sync email changes explicitly via client.customers.update().

Common mistakes

Creating duplicate customers per checkout. Passing customer: { email } does not create a new customer each time: by default, checkout uses the email to find an existing customer and attaches the session to it. Duplicates come from setting feature_flags.always_create_new_customer: true, or from calling customers.create before every checkout. Create the customer once (or let the first checkout create it), store its customer_id, and pass that on later checkouts.

typescript
// WRONG: forces a new customer record on every checkout
const session = await client.checkoutSessions.create({
  product_cart: [{ product_id: 'pdt_abc', quantity: 1 }],
  customer: { email: user.email },
  feature_flags: { always_create_new_customer: true },
});

// RIGHT: reuse the stored customer ID, or fall back to email (matched to an existing customer by default)
const session = await client.checkoutSessions.create({
  product_cart: [{ product_id: 'pdt_abc', quantity: 1 }],
  customer: user.dodo_customer_id
    ? { customer_id: user.dodo_customer_id }
    : { email: user.email },
});

Building a bespoke billing UI instead of using the portal. The portal handles invoices, cancellations, plan changes, payment method updates, and on-hold recovery. If you rebuild these, you're duplicating work and missing edge cases.

Mutating wallet balances without an idempotency key. Retries will create duplicate entries and charge the customer twice.

typescript
// WRONG
await client.customers.wallets.ledgerEntries.create('cus_abc123', {
  amount: 1000,
  currency: 'USD',
  entry_type: 'credit',
  reason: 'Refund',
  // No idempotency_key
});

// RIGHT
await client.customers.wallets.ledgerEntries.create('cus_abc123', {
  amount: 1000,
  currency: 'USD',
  entry_type: 'credit',
  reason: 'Refund',
  idempotency_key: 'refund_order_12345_v1',
});

Exposing portal links publicly. Portal sessions are time-bound and tied to a customer ID. Don't log them or share them in URLs; generate them server-side and redirect immediately.

Confusing wallets with credits. Wallets hold real money (USD, INR). Credits are usage-based entitlements. See the credit-based-billing skill for credit management.

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

Just SKILL.md in plugins/dodopayments/dodo-agent-plugin/skills/customer-management of hashgraph-online/awesome-codex-plugins.

Open the folder on GitHubat commit 9e7b281

Compare with similar skills

Customer Management 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.

Customer Management compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Customer Management this skillhashgraph-online/awesome-codex-plugins1.3k—~2.8kAutomated safety check: PassApache-2.0
Customs and Trade Complianceaffaan-m/ECC276k5 repos~7.2kAutomated safety check: PassApache-2.0
Agent Paymentsruvnet/ruflo74k2 repos~960Automated safety check: PassMIT
Customizeanthropics/claude-for-legal9.6k4 repos~1.2kAutomated safety check: PassApache-2.0
Customizeanthropics/claude-for-legal9.6k3 repos~1.2kAutomated safety check: PassApache-2.0
Customizeanthropics/claude-for-legal9.6k3 repos~1.2kAutomated safety check: PassApache-2.0

Similar skills

  • Covers customs work: HS and HTS tariff classification, entry documents, Incoterms, FTA duty savings, denied-party screening and responses to audits and penalty notices.

    276k GitHub starsUsed in 5 repos~7.2k tokens
    Legal & ComplianceAuto-check passed
  • Agent Payments

    ruvnet/ruflo

    Agent skill for payments - invoke with $agent-payments. An agent skill from ruvnet/ruflo.

    74k GitHub starsUsed in 2 repos~960 tokens
    Auto-check passed
  • Customize

    anthropics/claude-for-legal

    Official

    Guided customization of your IP practice profile — change one thing without re-running the whole cold-start interview.

    9.6k GitHub starsUsed in 4 repos~1.2k tokens
    Legal & ComplianceAuto-check passed
  • Customize

    anthropics/claude-for-legal

    Official

    Guided customization of your corporate practice profile — change one thing without re-running the whole cold-start interview.

    9.6k GitHub starsUsed in 3 repos~1.2k tokens
    Legal & ComplianceAuto-check passed
  • Customize

    anthropics/claude-for-legal

    Official

    Guided customization of your litigation practice profile — change one thing without re-running the whole cold-start interview.

    9.6k GitHub starsUsed in 3 repos~1.2k tokens
    Legal & ComplianceAuto-check passed
  • Customize

    anthropics/claude-for-legal

    Official

    Guided customization of your privacy practice profile — change one thing without re-running the whole cold-start interview.

    9.6k GitHub starsUsed in 3 repos~1.1k tokens
    Legal & ComplianceAuto-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

Questions about Customer Management

What does Customer Management do?

Dodo Payments customer management, covering customer CRUD, saved payment methods, real-money customer wallets and ledger entries, entitlements, and hosted customer portal sessions. Customer Management is an agent skill from hashgraph-online/awesome-codex-plugins. Dodo Payments customer management, covering customer CRUD, saved payment methods, real-money customer wallets and ledger entries, entitlements, and hosted customer portal sessions.

When should I use Customer Management?

Customer Management fits situations like: linking app users to cus IDs; opening a Manage billing portal; deleting payment methods; crediting wallets.

How do I install Customer Management in Claude Code?

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

How do I install Customer Management in Codex?

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

Can I use Customer Management 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 customer-management -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/customer-management, .gemini/skills/customer-management, .github/skills/customer-management and .opencode/skills/customer-management in your project.

What does Customer Management need to run?

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

Does Customer Management 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 Customer Management 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 Customer Management use?

Customer Management 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 Customer Management use?

About 2.8k tokens (SKILL.md is roughly 11k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.

What are the alternatives to Customer Management?

Skills that share tags, products or a category with Customer Management: Customs and Trade Compliance (affaan-m/ECC, 276k stars), Agent Payments (ruvnet/ruflo, 74k stars), Customize (anthropics/claude-for-legal, 9.6k stars) and Customize (anthropics/claude-for-legal, 9.6k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Customer Management?

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.