OpenClaw
Deploy a managed OpenClaw agent in 60 seconds
Launch on Hostinger →
Hermes Agent
Run your Hermes agent, fully managed
Launch on Hostinger →
Hostinger VPS
Spin up a VPS in one click, 20% off
Launch on Hostinger →
Firecrawl
Crawl and scrape any site into clean data
Try Firecrawl free →
Context.dev
One API to scrape, enrich, and extract the web
Start building free →
Jotform
Forms, workflows, and AI Agents for your team
Try Jotform free →
CodeRabbit
AI code reviews for every PR
Try CodeRabbit free →
Your product here
Reach 100k AI builders a month
Learn more →
Claude Market
Menu
SkillsMCPPluginsMarketplacesNewsletterSubmit MCPSkillPluginMCPMCP, plugin, or skillAdvertise
Claude Market
SkillsMCPPluginsMarketplacesNewsletterSubmit MCPSkillPluginMCPMCP, plugin, or skillAdvertise
Skills/hubspot/agent-cli-skills/quote-to-cash
quote-to-cash logo

quote-to-cash

hubspot/agent-cli-skills
883 installs18 stars
Run it on Hostinger, 20% off →Your friend gets 20% off too, using this linkFree API →|Command Execution|View on GitHub|Create your own skill →

Installation

npx skills add https://github.com/hubspot/agent-cli-skills --skill quote-to-cash

Summary

Build the product catalog, assemble quotes (line items + associations to deals), and track invoices and subscriptions through to revenue.

SKILL.md

Resources

FileWhen to use
resources/q2c-essentials.mdSix-field cheat sheet, association directions, portal caveats for invoices/subscriptions/orders/carts.

Foundations

Read bulk-operations/SKILL.md first — JSONL piping, batch read, pagination, and the dry-run/digest/confirm flow for destructive ops live there. Reshape recipes (read → write payload) are in bulk-operations/resources/json-patterns.md.

hubspot <command> --help is the source of truth. Object types are plural (products, line_items, quotes, invoices, subscriptions). Never hardcode property tables — hubspot properties list --type <type> is one call away. Verify any enum value the agent is about to write with hubspot properties get --type <type> --name <property> and read options[].value.

Portal note: invoices, subscriptions, orders, carts show an empty objectTypeId in hubspot objects types. They work through objects search/list when the token has the matching scope (invoices-read, subscriptions-read, etc.) and 403 otherwise. CLI-created quotes are always DRAFT; approval routing, share links, PDF generation, and invoice creation usually require the HubSpot UI.

1. Create a product

hubspot objects create --type products \
  --property name="Enterprise License" \
  --property price=12000 \
  --property hs_sku=ENT-001

For a recurring product set recurringbillingfrequency; check the API enum values first with hubspot properties get --type products --name recurringbillingfrequency --format json | jq -r '.options[].value'. Bulk-import a catalog by piping JSONL of {"properties":{...}} to hubspot objects create --type products --dry-run.

2. Build a quote: line items → quote → associations

objects create emits one result line per stdin line, in input order. That lets you build line items, capture their IDs, and associate them to the new quote in three pipes — no per-record shell loop.

DEAL_ID=12345

# 1. Create the line items. items.jsonl holds {"name":..,"qty":..,"price":..,"product_id":..} per line.
jq -c '{properties:{
    name:.name, quantity:(.qty|tostring), price:(.price|tostring),
    hs_product_id:.product_id, hs_line_item_currency_code:"USD"
  }}' items.jsonl \
| hubspot objects create --type line_items > /tmp/lineitems.jsonl

# 2. Create the quote.
QUOTE_ID=$(hubspot objects create --type quotes \
  --property hs_title="Acme Corp - 2026" \
  --property hs_expiration_date=2026-06-30 \
  --property hs_currency=USD \
  --format json | jq -r '.data.id // .id')

# 3. Associate every new line item to the quote in one pipe.
jq -r '.id' /tmp/lineitems.jsonl \
| jq -cR --arg q "$QUOTE_ID" '{from:("quotes:" + $q), to:("line_items:" + .)}' \
| hubspot associations create

# 4. Link the quote to the deal.
hubspot associations create --from "deals:$DEAL_ID" --to "quotes:$QUOTE_ID"

Discount handling — discount is the writable percentage (10 = 10% off). hs_total_discount is HubSpot-computed; do not set it. Verify with hubspot properties get --type line_items --name hs_total_discount (look for modificationMetadata.readOnlyValue:true) before relying on this in a portal you don't own.

Promote a quote out of DRAFT when ready to share:

hubspot objects update --type quotes <quote_id> --property hs_status=APPROVAL_NOT_NEEDED

Verify hs_status enum values for your portal: hubspot properties get --type quotes --name hs_status --format json | jq -r '.options[].value'.

3. Track invoices

The CLI reads invoice data and updates status; creation usually needs HubSpot Commerce + UI. Filter by hs_invoice_status and date.

# All outstanding invoices
hubspot objects search --type invoices \
  --filter "hs_invoice_status=OUTSTANDING" \
  --properties hs_number,hs_amount_billed,hs_balance,hs_due_date

# Past-due (overdue) invoices, dynamic date
hubspot objects search --type invoices \
  --filter "hs_due_date<$(date +%Y-%m-%d) AND hs_invoice_status!=PAID" \
  --properties hs_number,hs_due_date,hs_balance

# Invoices billed in the last 30 days
hubspot objects search --type invoices \
  --filter "hs_invoice_date>=$(date -v-30d +%Y-%m-%d 2>/dev/null || date -d '30 days ago' +%Y-%m-%d)" \
  --properties hs_number,hs_amount_billed,hs_invoice_date

Verify the status enum the same way: hubspot properties get --type invoices --name hs_invoice_status --format json | jq -r '.options[].value'.

4. Track subscriptions

Same shape, filter on hs_subscription_status. Verify the enum values before writing the filter — do not hardcode ACTIVE/CANCELLED/PAST_DUE:

hubspot properties get --type subscriptions --name hs_subscription_status --format json \
  | jq -r '.options[].value'

# Then filter (case matters)
hubspot objects search --type subscriptions \
  --filter "hs_subscription_status=<value-from-above>" \
  --properties hs_mrr,hs_arr,hs_subscription_status

# Sum MRR across active subs
hubspot objects search --type subscriptions \
  --filter "hs_subscription_status=<active-value>" --format json \
  | jq '[.data[].properties.hs_mrr | select(. != null) | tonumber] | add'

Known constraints

  • invoices, subscriptions, orders, carts need the matching read scope on the active token; 403 means the user OAuth login or private-app token is missing the scope.
  • Destructive ops (objects delete on products/quotes/line_items) often need a private-app token: export HUBSPOT_ACCESS_TOKEN=<token>. See bulk-operations/SKILL.md for the dry-run → digest → confirm flow before bulk-deleting catalog records.
  • Quote share links, PDF generation, approval routing, and from-scratch invoice creation are UI-only — the CLI updates records but cannot send a quote to a customer.
  • hs_total_discount on line items is read-only — set discount (percentage) instead.

Score

0–100
63/ 100

Grade

C

Popularity15/30

883 installs — growing adoption.

Completeness27/30

Documented: full SKILL.md body, description, one-line install. Missing: category/license metadata.

Trust15/25

Community skill with a public GitHub source repository you can review.

Freshness6/15

No update timestamp is tracked for this skill in our catalog.

Scored automatically from popularity, completeness, trust, and freshness — computed only from data in our catalog, never fabricated.

Proud of your score? Add this badge to your README.

Paste a snippet into your GitHub README. The badge updates automatically and links back to this page.

Quote To Cash skill score badge previewScore badge

Markdown

[![Quote To Cash skill](https://www.claudemarket.ai/skills/hubspot/agent-cli-skills/quote-to-cash/badges/score.svg)](https://www.claudemarket.ai/skills/hubspot/agent-cli-skills/quote-to-cash)

HTML

<a href="https://www.claudemarket.ai/skills/hubspot/agent-cli-skills/quote-to-cash"><img src="https://www.claudemarket.ai/skills/hubspot/agent-cli-skills/quote-to-cash/badges/score.svg" alt="Quote To Cash skill"/></a>

Quote To Cash FAQ

How do I install the Quote To Cash skill?

Run “npx skills add https://github.com/hubspot/agent-cli-skills --skill quote-to-cash” in your terminal. The skill is added to your agent's skills directory and picked up automatically on the next run — no restart or extra configuration needed.

What does the Quote To Cash skill do?

Build the product catalog, assemble quotes (line items + associations to deals), and track invoices and subscriptions through to revenue. The full SKILL.md on this page shows the exact instructions the skill gives your agent.

Is the Quote To Cash skill free?

Yes. Quote To Cash is a free, open-source skill published from hubspot/agent-cli-skills. As with any third-party skill, review the source repository before installing it into an agent with sensitive access.

Does Quote To Cash work with Claude Code and OpenClaw?

Yes. Skills use the portable SKILL.md format, so Quote To Cash works with Claude Code, OpenClaw, Codex, Hermes, and any other agent that reads SKILL.md skills.

Recommended skills

Browse all →
find-skills logo

find-skills

vercel-labs/skills

2.9M installsInstall
grill-me logo

grill-me

mattpocock/skills

784K installsInstall
frontend-design logo

frontend-design

anthropics/skills

750K installsInstall
grill-with-docs logo

grill-with-docs

mattpocock/skills

667K installsInstall
improve-codebase-architecture logo

improve-codebase-architecture

mattpocock/skills

642K installsInstall
agent-browser logo

agent-browser

vercel-labs/agent-browser

639K installsInstall

Related guides

Hand-picked reading to help you choose, install, and use agent skills.

Guide10 Openclaw Skills Every Nextjs Developer NeedsGuideHow To Build Your First Openclaw SkillGuideBest Openclaw Skills 2026

Skills by category

FrontendBackend & APIsTesting & QASecurityDevOps & CI/CDMCP & ToolingAutomationData & Analysis+27 more

MCP servers by category

MCP & ToolingBackend & APIsData & AnalysisDevOps & CI/CDAutomationSecurityDocsTesting & QA+24 more

Plugins by category

AutomationDevOps & CI/CDData & AnalysisDesign & CreativeSecurityBackend & APIsFrontendTesting & QA+16 more

Marketplaces by category

AutomationData & AnalysisDevOps & CI/CDDesign & CreativeFrontendBackend & APIsTesting & QASecurity+21 more

The Agent Stack

Weekly Claude Code, Agent SDK, and MCP moves worth your time — free.

Claude Market

AI agent skills directory, marketplace, and workflow hub for OpenClaw, Hermes Agent, Claude Code, Codex, and MCP-powered operator stacks.

Independent project, not affiliated with Anthropic.

Resources

  • Browse Skills
  • Browse MCP Servers
  • Browse Plugins
  • Browse Marketplaces
  • Newsletter

More

  • Submit a Tool
  • Create a Skill
  • Advertise
  • Free Tools
  • API
  • Shipping
  • Contact
  • Terms
  • Privacy
© 2026 Claude Market · Not affiliated with Anthropic
Fazier badgeFeatured on Twelve ToolsFeatured on Wired BusinessRemote OpenClaw - Featured on AI Agents DirectoryListed on Turbo0Featured on Uneed