Customer Billing Ops
Use this skill for real customer operations, not generic payment API design.
The goal is to help the operator answer: who is this customer, what happened, what is the safest fix, and what follow-up should we send?
When to Use
- Customer says billing is broken, they want a refund, or they cannot cancel
- Investigating duplicate subscriptions, accidental charges, failed renewals, or churn risk
- Reviewing plan mix, active subscriptions, yearly vs monthly conversion, or team-seat confusion
- Creating or validating a billing portal flow
- Auditing support complaints that touch subscriptions, invoices, refunds, or payment methods
Preferred Tool Surface
- Use connected billing tools such as Stripe first
- Use email, GitHub, or issue trackers only as supporting evidence
- Prefer hosted billing/customer portals over custom account-management code when the platform already provides the needed controls
Guardrails
- Never expose secret keys, full card details, or unnecessary customer PII in the response
- Do not refund blindly; first classify the issue
- Distinguish among:
- accidental duplicate purchase
- deliberate multi-seat or team purchase
- broken product / unmet value
- failed or incomplete checkout
- cancellation due to missing self-serve controls
- For annual plans, team plans, and prorated states, verify the contract shape before taking action
Workflow
1. Identify the customer cleanly
Start from the strongest identifier available:
- customer email
- Stripe customer ID
- subscription ID
- invoice ID
- GitHub username or support email if it is known to map back to billing
Return a concise identity summary:
- customer
- active subscriptions
- canceled subscriptions
- invoices
- obvious anomalies such as duplicate active subscriptions
2. Classify the issue
Put the case into one bucket before acting:
| Case |
Typical action |
| Duplicate personal subscription |
cancel extras, consider refund |
| Real multi-seat/team intent |
preserve seats, clarify billing model |
| Failed payment / incomplete checkout |
recover via portal or update payment method |
| Missing self-serve controls |
provide portal, cancellation path, or invoice access |
| Product failure or trust break |
refund, apologize, log product issue |
3. Take the safest reversible action first
Preferred order:
- restore self-serve management
- fix duplicate or broken billing state
- refund only the affected charge or duplicate
- document the reason
- send a short customer follow-up
If the fix requires product work, separate:
- customer remediation now
- product bug / workflow gap for backlog
4. Check operator-side product gaps
If the customer pain comes from a missing operator surface, call it out explicitly. Common examples:
- no billing portal
- no usage/rate-limit visibility
- no plan/seat explanation
- no cancellation flow
- no duplicate-subscription guard
Treat those as ECC or website follow-up items, not just support incidents.
5. Produce the operator handoff
End with:
- customer state summary
- action taken
- revenue impact
- follow-up text to send
- product or backlog issue to create
Output Format
Use this structure:
CUSTOMER
- name / email
- relevant account identifiers
BILLING STATE
- active subscriptions
- invoice or renewal state
- anomalies
DECISION
- issue classification
- why this action is correct
ACTION TAKEN
- refund / cancel / portal / no-op
FOLLOW-UP
- short customer message
PRODUCT GAP
- what should be fixed in the product or website
Examples of Good Recommendations
- "The right fix is a billing portal, not a custom dashboard yet"
- "This looks like duplicate personal checkout, not a real team-seat purchase"
- "Refund one duplicate charge, keep the remaining active subscription, then convert the customer to org billing later if needed"
Source: affaan-m/ECC → skills/customer-billing-ops/SKILL.md
Also appears in: hashgraph-online/awesome-codex-plugins/plugins/Colin4k1024/tsp/skills/customer-billing-ops/SKILL.md
1---2name: customer-billing-ops3description: Operate customer billing workflows such as subscriptions, refunds, churn triage, billing-portal recovery, and plan analysis using connected billing tools like Stripe. Use when the user needs to help a customer, inspect subscription state, or manage revenue-impacting billing operations.4---5# Customer Billing Ops67Use this skill for real customer operations, not generic payment API design.89The goal is to help the operator answer: who is this customer, what happened, what is the safest fix, and what follow-up should we send?1011## When to Use1213- Customer says billing is broken, they want a refund, or they cannot cancel14- Investigating duplicate subscriptions, accidental charges, failed renewals, or churn risk15- Reviewing plan mix, active subscriptions, yearly vs monthly conversion, or team-seat confusion16- Creating or validating a billing portal flow17- Auditing support complaints that touch subscriptions, invoices, refunds, or payment methods1819## Preferred Tool Surface2021- Use connected billing tools such as Stripe first22- Use email, GitHub, or issue trackers only as supporting evidence23- Prefer hosted billing/customer portals over custom account-management code when the platform already provides the needed controls2425## Guardrails2627- Never expose secret keys, full card details, or unnecessary customer PII in the response28- Do not refund blindly; first classify the issue29- Distinguish among:30 - accidental duplicate purchase31 - deliberate multi-seat or team purchase32 - broken product / unmet value33 - failed or incomplete checkout34 - cancellation due to missing self-serve controls35- For annual plans, team plans, and prorated states, verify the contract shape before taking action3637## Workflow3839### 1. Identify the customer cleanly4041Start from the strongest identifier available:4243- customer email44- Stripe customer ID45- subscription ID46- invoice ID47- GitHub username or support email if it is known to map back to billing4849Return a concise identity summary:5051- customer52- active subscriptions53- canceled subscriptions54- invoices55- obvious anomalies such as duplicate active subscriptions5657### 2. Classify the issue5859Put the case into one bucket before acting:6061| Case | Typical action |62|------|----------------|63| Duplicate personal subscription | cancel extras, consider refund |64| Real multi-seat/team intent | preserve seats, clarify billing model |65| Failed payment / incomplete checkout | recover via portal or update payment method |66| Missing self-serve controls | provide portal, cancellation path, or invoice access |67| Product failure or trust break | refund, apologize, log product issue |6869### 3. Take the safest reversible action first7071Preferred order:72731. restore self-serve management742. fix duplicate or broken billing state753. refund only the affected charge or duplicate764. document the reason775. send a short customer follow-up7879If the fix requires product work, separate:8081- customer remediation now82- product bug / workflow gap for backlog8384### 4. Check operator-side product gaps8586If the customer pain comes from a missing operator surface, call it out explicitly. Common examples:8788- no billing portal89- no usage/rate-limit visibility90- no plan/seat explanation91- no cancellation flow92- no duplicate-subscription guard9394Treat those as ECC or website follow-up items, not just support incidents.9596### 5. Produce the operator handoff9798End with:99100- customer state summary101- action taken102- revenue impact103- follow-up text to send104- product or backlog issue to create105106## Output Format107108Use this structure:109110```text111CUSTOMER112- name / email113- relevant account identifiers114115BILLING STATE116- active subscriptions117- invoice or renewal state118- anomalies119120DECISION121- issue classification122- why this action is correct123124ACTION TAKEN125- refund / cancel / portal / no-op126127FOLLOW-UP128- short customer message129130PRODUCT GAP131- what should be fixed in the product or website132```133134## Examples of Good Recommendations135136- "The right fix is a billing portal, not a custom dashboard yet"137- "This looks like duplicate personal checkout, not a real team-seat purchase"138- "Refund one duplicate charge, keep the remaining active subscription, then convert the customer to org billing later if needed"139140---141142**Source:** [`affaan-m/ECC`](https://github.com/affaan-m/ECC) → `skills/customer-billing-ops/SKILL.md`143144**Also appears in:** `hashgraph-online/awesome-codex-plugins/plugins/Colin4k1024/tsp/skills/customer-billing-ops/SKILL.md`