Cashfree CLI

Cashfree CLI

Enables AI agents to test Cashfree payment integrations end-to-end by creating orders, simulating payments, listening to webhooks, and verifying signatures via MCP tools.

Category
Visit Server

README

Cashfree CLI

Prove a Cashfree integration works end to end — from your terminal, or from your AI agent.

Built by Mothi Venkatesh — Product Marketing at Cashfree Payments. An agent-native CLI for the developer (and the coding agent) who would rather never open the dashboard.

Most payment CLIs fetch objects. This one proves the loop: create an order, pay it, catch the webhook, verify the signature, and cross-check the API before it says "done." Sandbox by default. Runs fully offline with --mock — no keys, no setup.

git clone https://github.com/mothivenkatesh/cashfree-cli
cd cashfree-cli && npm install && npm run build
node dist/index.js verify --mock
Verifying upi success (mock)
  ✓ order created  order_d5f8…ae97 (ACTIVE)
  ✓ payment initiated  MOCK_pay_db0f…01a0
  ✓ webhook received  signature valid
  ✓ api cross-check  order_status=PAID (expected PAID)
  ✓ artifact  .cashfree/verify-….json

Zero runtime dependencies · Node 20+ · one binary that is also an MCP server.


What it does

  • Closes the integration loop in five commandsinitsimulatelistenverifydoctor. The slow part of a payment integration is testing webhooks and proving it works; this is built for exactly that.
  • One binary, two consumers — a human at a terminal, and an AI agent over MCP. Same commands, same safety, both ways.
  • Runs offline--mock boots a built-in sandbox simulator that signs and delivers real webhooks, so the whole loop runs with no credentials.
  • Agent-native by default--json output (auto-on when piped), semantic exit codes, and structured errors with suggested_fix so an agent self-corrects.
  • A webhook is a signal, not the truthverify always cross-checks the authoritative API before declaring success. Never the webhook payload alone.
  • Grounded in the real APIx-api-version: 2025-01-01, real endpoints, HMAC-SHA256 webhook verification. No invented shapes.

What works today

  • verify — the full loop, validated against the live Cashfree sandbox: real order → pay → simulate → webhook → signature match → API cross-check → typed artifact.
  • Payment Gateway, live-validated: orders create/get, payments list, links create/get, order pay, simulate, refunds create, settlements get + settlements today, disputes order/get.
  • Signed webhook delivery confirmed live — the sandbox delivers signed webhooks; this CLI's signature verification matches Cashfree's exactly.
  • listen — forward webhooks to localhost and verify signatures locally, no ngrok (mock + cross-process proven).
  • Real-mode webhooks via --tunnelverify --tunnel / listen --tunnel open a cloudflared tunnel so live Cashfree webhooks reach localhost; graceful fallback if cloudflared is absent.
  • OpenAPI codegennpm run codegen generates typed defs from Cashfree's live specs (PG/Payouts/Verification) for drift-checking.
  • init — scaffolds .env.example, a webhook handler with real signature verification, and an AGENTS.md so coding agents stop guessing the API.
  • doctor — preflight: credentials, API version, connectivity, mode.
  • mcp serve — exposes the surface as 8 MCP tools over stdio JSON-RPC.
  • 10/10 tests, clean TypeScript build, zero runtime dependencies.

Roadmap — not done yet

  • Secure ID (PAN, bank account, UPI verification) — client built; needs signature auth + IP allowlisting handled for a CLI context; live validation pending.
  • Payouts (transfers, beneficiaries) — client built; needs IP allowlisting + V2 body finalized; live validation pending.
  • Subscriptions (UPI Autopay, plans, mandates) — commands built and grounded in the docs; pending sandbox product enablement; live validation pending.
  • Publish to npm for npx cashfree-cli (package is publish-ready), plus a Homebrew tap.
  • Migrate the client to generated types — the npm run codegen pipeline exists; wiring the client to it is the follow-up.
  • More init languages — Python and PHP scaffolds.

The commands

# the loop
cashfree init                                  # scaffold a working integration + AGENTS.md
cashfree simulate payment --payment-id <id> --status SUCCESS
cashfree listen --forward-to http://localhost:3000/webhook
cashfree verify --outcome success              # prove it works, emit an artifact
cashfree doctor                                # why you are not live yet

# resources (Payment Gateway)
cashfree orders create --amount 100            # orders get <id>
cashfree payments list <order_id>
cashfree refunds create --order <id> --amount 50
cashfree links create --amount 100             # links get <id>
cashfree settlements get <order_id>            # settlements today
cashfree disputes order <order_id>             # disputes get <id>

# roadmap surfaces (built, validation pending)
cashfree payouts transfer --amount 500 --vpa name@bank   # payouts balance
cashfree secureid pan --pan ABCDE1234F --name "Name"
cashfree subscriptions create-plan --amount 499 --interval-type MONTH

# auth + agents
cashfree login --client-id <id> --client-secret <secret>
cashfree mcp serve

Add --mock to run any of it offline. Add --json for machine output.

For AI agents

  • --json on every command, auto-on when stdout is piped (TTY detection).
  • Semantic exit codes: 0 ok · 2 auth · 3 validation · 4 confirmation-required · 6 not-found · 7 rate-limited · 8 network. Branch on them; don't scrape text.
  • Structured errors with suggested_fix and retry_after.
  • cashfree mcp serve — the same surface as MCP tools, same gates.
  • cashfree init writes AGENTS.md with the pinned API version, base URLs, and the "webhook is not the truth" rule.

Safety

  • Sandbox by default. --live is required for production.
  • Live money movement (payouts, refunds) also needs --confirm, so a script or agent never moves real money by accident.
  • Credentials live in a 0600 file (OS keychain hardening on the roadmap), never in argv, never logged.

How it's built

  • TypeScript, compiled with tsc, zero runtime dependencies — even the MCP server is a hand-rolled JSON-RPC stdio loop. Fast, reliable npm install.
  • The real HTTP client and an offline mock sandbox implement one CashfreeClient interface, so the CLI and the MCP server share logic and the whole thing is testable without a network.
  • API shapes are grounded in Cashfree's public SDKs and OpenAPI specs.

Status: community project, not an official Cashfree product (yet). Payment Gateway is validated against the live sandbox; the rest is on the roadmap above. Issues and PRs welcome.

MIT © Mothi Venkatesh

Recommended Servers

playwright-mcp

playwright-mcp

A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.

Official
Featured
TypeScript
Magic Component Platform (MCP)

Magic Component Platform (MCP)

An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.

Official
Featured
Local
TypeScript
Audiense Insights MCP Server

Audiense Insights MCP Server

Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.

Official
Featured
Local
TypeScript
VeyraX MCP

VeyraX MCP

Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.

Official
Featured
Local
graphlit-mcp-server

graphlit-mcp-server

The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.

Official
Featured
TypeScript
Kagi MCP Server

Kagi MCP Server

An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.

Official
Featured
Python
E2B

E2B

Using MCP to run code via e2b.

Official
Featured
Neon Database

Neon Database

MCP server for interacting with Neon Management API and databases

Official
Featured
Qdrant Server

Qdrant Server

This repository is an example of how to create a MCP server for Qdrant, a vector search engine.

Official
Featured
Exa Search

Exa Search

A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.

Official
Featured