Agent skill

Cashclaw Invoicer

by ertugrulakben in ertugrulakben/cashclaw

Handles invoice creation, payment link generation, payment status tracking, and automated reminders via Stripe API.

MITAuto-check passedDocuments & Office

Install Cashclaw Invoicer

skills CLI
$ npx skills add ertugrulakben/cashclaw --skill cashclaw-invoicer -a claude-code

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

GitHub CLI
$ gh skill install ertugrulakben/cashclaw cashclaw-invoicer --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/ertugrulakben/cashclaw.git skills-src && mkdir -p .claude/skills && cp -r skills-src/skills/cashclaw-invoicer .claude/skills/cashclaw-invoicer && 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
cashclaw-invoicer
GitHub stars
303
Token cost
~2.5k tokens
SKILL.md length
472 words
Files
2 (incl. scripts)
Skills in repo
13
Repo updated
First seen
Licence
MIT

At a glance

Handles invoice creation, payment link generation, payment status tracking, and automated reminders via Stripe API.

  • Works in 3 steps: Stripe account with API access enabled. → STRIPE_SECRET_KEY set in environment or… → Node.js 18+ installed (for the…
  • Tasks that involve Forms and invoices
  • SKILL.md covers Prerequisites, Invoice Creation, Payment Reminder Flow and Multi-Currency Support, plus 5 more sections
  • Runs JavaScript scripts from its folder; calls curl, node and npm; reaches api.stripe.com; needs STRIPE_SECRET_KEY

What it does

Cashclaw Invoicer is an agent skill from ertugrulakben/cashclaw. Handles invoice creation, payment link generation, payment status tracking, and automated reminders via Stripe API. Supports multi-currency billing and recurring payments.

Its SKILL.md is about 2.5k tokens, which your agent loads only when the skill is triggered. The skill folder holds 2 other files, including scripts (for example `scripts/stripe-ops.js`).

It sits in Documents & Office, covering Forms and invoices and Project management. It works with Stripe. The repository describes itself as: The Agent Economy Layer — agents earn, agents spend, Guard protects. 13 skills, runtime cost cap, recursive kill, tool firewall. 50+ HYRVE API endpoints, job polling daemon, MPP…. The licence is MIT.

When your agent uses it

  • Tasks that involve Forms and invoices
  • Tasks that involve Project management

Example prompts

  • “Use the cashclaw-invoicer skill to handle invoice creation, payment link generation, payment status tracking, and automated reminders via Stripe API”
  • “/cashclaw-invoicer”

Requirements

  • Node.js
  • A credential in STRIPE_SECRET_KEY

Workflow steps

3 steps, taken from the first numbered list in SKILL.md.

  1. Stripe account with API access enabled.
  2. STRIPE_SECRET_KEY set in environment or ~/.cashclaw/config.json.
  3. Node.js 18+ installed (for the stripe-ops.js script).

What it can do on your machine

Read from SKILL.md and the folder at commit ff30cb3. 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

    Ships 1 file in scripts/ (JavaScript), which the agent can run.

    Shell commands in SKILL.md call:

    • curl
    • node
    • npm
    • just

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

  • Network

    Hosts in commands or code, which the agent is likely to contact:

    • api.stripe.com

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

  • Credentials

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

    • STRIPE_SECRET_KEY

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

Context cost

Cashclaw Invoicer loads about 2.5k tokens when it runs. Until then it costs about 47 tokens; SKILL.md has 472 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~47
When it runs · the whole SKILL.md, loaded when a task matches
~2.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); the scripts in this folder are not scanned.

SKILL.md

The full file from ertugrulakben/cashclaw at commit ff30cb3, republished under its MIT licence (© ertugrulakben). 472 words, ~2,537 tokens.

Download SKILL.mdSave it as .claude/skills/cashclaw-invoicer/SKILL.md (or your agent's skills folder). This skill also uses 1 other file; get the full folder from GitHub.
name
cashclaw-invoicer
description
Handles invoice creation, payment link generation, payment status tracking, and automated reminders via Stripe API. Supports multi-currency billing and recurring payments.

CashClaw Invoicer

You handle all payment operations for CashClaw. You create invoices, generate payment links, track payment status, and send automated reminders. Every dollar earned must be tracked accurately. This is the skill that turns delivered work into collected revenue.

Prerequisites

  1. Stripe account with API access enabled.
  2. STRIPE_SECRET_KEY set in environment or ~/.cashclaw/config.json.
  3. Node.js 18+ installed (for the stripe-ops.js script).

Install the Stripe SDK:

bash
npm install stripe

Invoice Creation

When to Invoice
  • Pre-payment model: Create a payment link at ACCEPT stage. Client pays before work begins.
  • Post-payment model: Create an invoice at DELIVER stage. Client pays after receiving deliverables.
  • Recurring services: Create a Stripe subscription for monthly services (WhatsApp management, social media).
Invoice Data Structure
json
{
  "mission_id": "MISSION-20260223-001",
  "client": {
    "name": "Acme Corp",
    "email": "billing@acme.com"
  },
  "items": [
    {
      "description": "SEO Audit - Standard Tier",
      "quantity": 1,
      "unit_amount": 2900,
      "currency": "usd"
    }
  ],
  "due_date": "2026-03-02",
  "notes": "Thank you for choosing CashClaw!",
  "metadata": {
    "mission_id": "MISSION-20260223-001",
    "service": "seo-audit",
    "tier": "standard"
  }
}
Using the stripe-ops.js Script
bash
# Create a payment link
node scripts/stripe-ops.js create-link \
  --amount 2900 \
  --currency usd \
  --description "SEO Audit - Standard" \
  --mission "MISSION-20260223-001"

# Create a full invoice
node scripts/stripe-ops.js create-invoice \
  --email "billing@acme.com" \
  --amount 2900 \
  --currency usd \
  --description "SEO Audit - Standard" \
  --due-days 7

# Check payment status
node scripts/stripe-ops.js check-status \
  --invoice "in_1234567890"

# Send payment reminder
node scripts/stripe-ops.js send-reminder \
  --invoice "in_1234567890" \
  --template "gentle"
Using Stripe API Directly (curl)

If the script is unavailable, use curl with the Stripe API:

bash
# Create a customer
curl https://api.stripe.com/v1/customers \
  -u "$STRIPE_SECRET_KEY:" \
  -d "email=client@example.com" \
  -d "name=Client Name" \
  -d "metadata[mission_id]=MISSION-20260223-001"

# Create an invoice item
curl https://api.stripe.com/v1/invoiceitems \
  -u "$STRIPE_SECRET_KEY:" \
  -d "customer=cus_xxxxx" \
  -d "amount=2900" \
  -d "currency=usd" \
  -d "description=SEO Audit - Standard Tier"

# Create and send the invoice
curl https://api.stripe.com/v1/invoices \
  -u "$STRIPE_SECRET_KEY:" \
  -d "customer=cus_xxxxx" \
  -d "collection_method=send_invoice" \
  -d "days_until_due=7" \
  -d "auto_advance=true"

# Finalize the invoice
curl -X POST https://api.stripe.com/v1/invoices/in_xxxxx/finalize \
  -u "$STRIPE_SECRET_KEY:"

# Send the invoice
curl -X POST https://api.stripe.com/v1/invoices/in_xxxxx/send \
  -u "$STRIPE_SECRET_KEY:"

# Create a payment link (one-time)
curl https://api.stripe.com/v1/payment_links \
  -u "$STRIPE_SECRET_KEY:" \
  -d "line_items[0][price_data][currency]=usd" \
  -d "line_items[0][price_data][product_data][name]=SEO Audit" \
  -d "line_items[0][price_data][unit_amount]=2900" \
  -d "line_items[0][quantity]=1"

# Check invoice status
curl https://api.stripe.com/v1/invoices/in_xxxxx \
  -u "$STRIPE_SECRET_KEY:"

# List unpaid invoices
curl "https://api.stripe.com/v1/invoices?status=open&limit=100" \
  -u "$STRIPE_SECRET_KEY:"

Payment Reminder Flow

Automated reminders follow this exact schedule:

Day 0: Invoice Sent
Subject: Invoice #{number} from {Business Name}

Hi {name},

Please find your invoice for {service} attached.

Amount: {currency} {amount}
Due Date: {due_date}

Pay now: {payment_link}

Thank you for your business!

Best,
{Business Name}
Day 3: Gentle Reminder

Only send if invoice is still unpaid.

Subject: Friendly reminder: Invoice #{number}

Hi {name},

Just a quick reminder that invoice #{number} for {amount} is
due on {due_date}.

You can pay securely here: {payment_link}

If you have already paid, please disregard this message.

Thanks!
{Business Name}
Day 7: Follow-up
Subject: Invoice #{number} - Payment due

Hi {name},

Your invoice #{number} for {amount} is now past due.

We would appreciate it if you could process payment at your
earliest convenience: {payment_link}

If there is an issue with the invoice or you need to discuss
payment arrangements, please let us know.

Best regards,
{Business Name}
Day 14: Final Notice
Subject: Final notice: Invoice #{number} overdue

Hi {name},

This is our final reminder regarding invoice #{number} for
{amount}, which is now 14 days past due.

Please process payment immediately: {payment_link}

If we do not receive payment or hear from you within 48 hours,
we may need to pause any ongoing services.

If there are any issues, please reach out so we can work
something out.

Regards,
{Business Name}
Reminder Rules
  1. Never send more than 1 reminder per day.
  2. Stop reminders immediately once payment is received.
  3. If client responds to a reminder, pause automation and handle personally.
  4. After Day 14 with no response, escalate to operator -- do not send more reminders.
  5. Track all reminder events in ~/.cashclaw/ledger.jsonl.

Multi-Currency Support

Supported currencies and their Stripe codes:

CurrencyCodeSmallest UnitExample
US Dollarusdcents$29.00 = 2900
Euroeurcents29.00 EUR = 2900
British Poundgbppence29.00 GBP = 2900
Turkish Liratrykurus29.00 TRY = 2900
Canadian Dollarcadcents$29.00 CAD = 2900
Australian Dollaraudcents$29.00 AUD = 2900

Important: Stripe uses the smallest currency unit (cents, pence, etc.). Always multiply the display amount by 100 before sending to Stripe.

Show full SKILL.md (179 more words)Show less
Currency Detection
  • Default to USD unless client specifies otherwise.
  • Detect from client's location or previous invoices.
  • Always confirm currency with client before invoicing.

Payment Tracking

Ledger Entry Format

Every payment event is logged to ~/.cashclaw/ledger.jsonl:

json
{"ts":"2026-02-23T12:00:00Z","event":"invoice_created","mission_id":"MISSION-20260223-001","invoice_id":"in_xxx","amount":2900,"currency":"usd"}
{"ts":"2026-02-23T12:01:00Z","event":"invoice_sent","mission_id":"MISSION-20260223-001","invoice_id":"in_xxx"}
{"ts":"2026-02-23T14:30:00Z","event":"payment_received","mission_id":"MISSION-20260223-001","invoice_id":"in_xxx","amount":2900,"currency":"usd","payment_id":"pi_xxx"}
Dashboard Update

After every payment event, update ~/.cashclaw/dashboard.json:

json
{
  "pending_payments": [
    {
      "invoice_id": "in_xxx",
      "mission_id": "MISSION-20260223-001",
      "amount": 2900,
      "currency": "usd",
      "status": "open",
      "due_date": "2026-03-02",
      "reminder_stage": 0
    }
  ],
  "recent_payments": [
    {
      "invoice_id": "in_yyy",
      "amount": 900,
      "currency": "usd",
      "paid_at": "2026-02-22T10:00:00Z"
    }
  ]
}

Refund Handling

If a client requests a refund:

  1. Verify the original payment in Stripe.
  2. Determine refund type:
    • Full refund: Client unhappy with deliverable. Process immediately.
    • Partial refund: Scope reduced or partial delivery. Calculate pro-rata.
  3. Process via Stripe:
bash
# Full refund
curl https://api.stripe.com/v1/refunds \
  -u "$STRIPE_SECRET_KEY:" \
  -d "payment_intent=pi_xxxxx"

# Partial refund
curl https://api.stripe.com/v1/refunds \
  -u "$STRIPE_SECRET_KEY:" \
  -d "payment_intent=pi_xxxxx" \
  -d "amount=1500"
  1. Log the refund event in the ledger.
  2. Update mission status to refunded.
  3. Send confirmation to client.

Recurring Billing

For monthly services (WhatsApp Manager, Social Media):

bash
# Create a product
curl https://api.stripe.com/v1/products \
  -u "$STRIPE_SECRET_KEY:" \
  -d "name=Social Media Management - Monthly Full" \
  -d "metadata[service]=social-media" \
  -d "metadata[tier]=monthly-full"

# Create a recurring price
curl https://api.stripe.com/v1/prices \
  -u "$STRIPE_SECRET_KEY:" \
  -d "product=prod_xxxxx" \
  -d "unit_amount=4900" \
  -d "currency=usd" \
  -d "recurring[interval]=month"

# Create a subscription
curl https://api.stripe.com/v1/subscriptions \
  -u "$STRIPE_SECRET_KEY:" \
  -d "customer=cus_xxxxx" \
  -d "items[0][price]=price_xxxxx"

Error Handling

Stripe ErrorMeaningAction
card_declinedCard was declinedAsk client for alternative payment method
expired_cardCard has expiredNotify client to update card
incorrect_cvcWrong CVCAsk client to retry with correct CVC
processing_errorStripe processing issueRetry after 5 minutes
rate_limitToo many API callsWait 60 seconds, then retry

Never expose raw Stripe error messages to clients. Translate them to human-friendly messages.

Example Commands

bash
# Create and send an invoice
cashclaw invoice --client "billing@acme.com" --amount 29 --service "SEO Audit" --due 7

# Check all unpaid invoices
cashclaw invoice --list --status unpaid

# Send reminders for overdue invoices
cashclaw invoice --remind --overdue

# Process a refund
cashclaw invoice --refund --invoice "in_xxxxx" --amount 29

© ertugrulakben, MIT. 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 (scripts) in skills/cashclaw-invoicer of ertugrulakben/cashclaw.

  • SKILL.md
  • scripts/stripe-ops.js

Open the folder on GitHubat commit ff30cb3

Compare with similar skills

Cashclaw Invoicer 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.

Cashclaw Invoicer compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Cashclaw Invoicer this skillertugrulakben/cashclaw303—~2.5kAutomated safety check: PassMIT
Using Stripe CLIbitwarden/ai-plugins155—~3.7kAutomated safety check: PassCustom licence
Trace A Paymentsuperset-sh/superset15k—~1.5kAutomated safety check: PassCustom licence
Metronomefossasia/eventyay1.7k—~2.3kAutomated safety check: PassApache-2.0
Metronomefcakyon/claude-codex-settings1.2k—~3.2kAutomated safety check: PassMIT
Int Stripeevolution-foundation/evo-nexus545—~720Automated safety check: PassCustom licence

Similar skills

  • Using Stripe CLI

    bitwarden/ai-plugins

    Official

    Query read-only Stripe test-mode data and advance an already-attached test clock.

    155 GitHub stars~3.7k tokensUpdated yesterday
    Documents & OfficeAuto-check passed
  • Trace A Payment

    superset-sh/superset

    Answer a question about money that already moved in Stripe — why a charge failed, what a customer was billed, where an invoice or payout stands — by reading the object chain instead of guessing from…

    15k GitHub stars~1.5k tokensUpdated today
    Documents & OfficeAuto-check passed
  • Metronome

    fossasia/eventyay

    Guides Metronome usage-based billing integration decisions — event ingestion (single and batch, idempotency, billable metrics), contract design (rate cards, overrides, dimensional pricing…

    1.7k GitHub stars~2.3k tokensUpdated yesterday
    Documents & OfficeAuto-check passed
  • Metronome

    fcakyon/claude-codex-settings

    Guides Metronome usage-based billing integration decisions — event ingestion (single and batch, idempotency, billable metrics), contract design (rate cards, overrides, dimensional pricing…

    1.2k GitHub stars~3.2k tokensUpdated 2 days ago
    Documents & OfficeAuto-check passed
  • Int Stripe

    evolution-foundation/evo-nexus

    Query and manage Stripe data via the Stripe API. An agent skill from evolution-foundation/evo-nexus.

    545 GitHub stars~720 tokensUpdated 5 mo ago
    Documents & OfficeAuto-check passed
  • Stripe

    refly-ai/refly-skills

    Integrate with Stripe for payment processing. An agent skill from refly-ai/refly-skills.

    204 GitHub stars~470 tokensUpdated 2 mo ago
    Documents & OfficeAuto-check passed

More from ertugrulakben/cashclaw

All 13 skills in this repo
  • Cashclaw Guard

    ertugrulakben/cashclaw

    Runtime protection layer for AI agents. An agent skill from ertugrulakben/cashclaw.

    303 GitHub stars~1.4k tokensUpdated 4 days ago
    Auto-check passed
  • Cashclaw Lead Generator

    ertugrulakben/cashclaw

    Generates qualified B2B leads through systematic research, data collection, and scoring.

    303 GitHub stars~2k tokensUpdated 4 days ago
    Auto-check passed
  • Cashclaw SEO Auditor

    ertugrulakben/cashclaw

    Performs comprehensive SEO audits on websites covering technical SEO, on-page optimization, off-page signals, and performance metrics.

    303 GitHub stars~1.7k tokensUpdated 4 days ago
    Auto-check passed
  • Cashclaw Competitor Analyzer

    ertugrulakben/cashclaw

    Performs competitor research and generates detailed analysis reports with market positioning insights.

    303 GitHub stars~2.7k tokensUpdated 4 days ago
    Auto-check passed
  • Cashclaw Content Writer

    ertugrulakben/cashclaw

    Writes professional blog posts, social media content, and email newsletters optimized for SEO and engagement.

    303 GitHub stars~1.9k tokensUpdated 4 days ago
    Auto-check passed
  • Cashclaw Core

    ertugrulakben/cashclaw

    The business brain of CashClaw. An agent skill from ertugrulakben/cashclaw.

    303 GitHub stars~2k tokensUpdated 4 days ago
    Auto-check passed

Works with

Questions about Cashclaw Invoicer

What does Cashclaw Invoicer do?

Handles invoice creation, payment link generation, payment status tracking, and automated reminders via Stripe API. Cashclaw Invoicer is an agent skill from ertugrulakben/cashclaw. Handles invoice creation, payment link generation, payment status tracking, and automated reminders via Stripe API.

When should I use Cashclaw Invoicer?

Cashclaw Invoicer fits situations like: tasks that involve Forms and invoices; tasks that involve Project management.

How do I install Cashclaw Invoicer in Claude Code?

Run `npx skills add ertugrulakben/cashclaw --skill cashclaw-invoicer -a claude-code`. Or copy the skill folder (skills/cashclaw-invoicer in ertugrulakben/cashclaw) into .claude/skills/cashclaw-invoicer in your project. Claude Code loads it when a task matches its description.

How do I install Cashclaw Invoicer in Codex?

Run `npx skills add ertugrulakben/cashclaw --skill cashclaw-invoicer -a codex`. Or copy the skill folder (skills/cashclaw-invoicer in ertugrulakben/cashclaw) into .agents/skills/cashclaw-invoicer in your project. Codex loads it when a task matches its description.

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

What does Cashclaw Invoicer need to run?

Going by SKILL.md and its folder, Cashclaw Invoicer needs JavaScript for the scripts in its folder, the command-line tools its instructions call (curl, node, npm and just) and credentials named STRIPE_SECRET_KEY. Our summary lists: Node.js; A credential in STRIPE_SECRET_KEY.

Does Cashclaw Invoicer access the network?

SKILL.md names 1 domain. In commands or code: api.stripe.com; the agent is likely to contact it when it follows the instructions. This is read from the text; nothing was executed.

Is Cashclaw Invoicer 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. The check reads SKILL.md only: the scripts in the folder are not scanned, so read them before running anything.

What licence does Cashclaw Invoicer use?

Cashclaw Invoicer is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Cashclaw Invoicer use?

About 2.5k tokens (SKILL.md is roughly 10k 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 Cashclaw Invoicer?

Skills that share tags, products or a category with Cashclaw Invoicer: Using Stripe CLI (bitwarden/ai-plugins, 155 stars), Trace A Payment (superset-sh/superset, 15k stars), Metronome (fossasia/eventyay, 1.7k stars) and Metronome (fcakyon/claude-codex-settings, 1.2k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Cashclaw Invoicer?

ertugrulakben (a GitHub user) maintains it in ertugrulakben/cashclaw, which has 303 GitHub stars. The repository holds 13 skills in this directory. The repository was last updated on October 6, 2026.

Source: ertugrulakben/cashclaw on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.