npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

proupiqr

v1.0.0

Published

Free UPI QR, payment link and Indian merchant calculators, plus an MCP stdio bridge.

Readme

proupiqr

Free UPI payment links, scannable QR codes and Indian merchant calculators in your terminal. A thin HTTP client for Pro UPI QR, with a stdio MCP bridge for Claude Desktop, Cursor and other MCP clients. No API key, account or build step. Node.js 18 or later.

Install

npx proupiqr gst 12000 18 --inter-state
# Or install globally:
npm i -g proupiqr
proupiqr --help
proupiqr --version

Commands

Examples below were checked against the local Tools API before publication. Output blocks are real excerpts; most answers also include links to the matching free browser tools. No calculations or SaaS implementation are bundled in this package.

Payment link

proupiqr link shop@upi "My Shop" --amount 499 --note "Order 1"
UPI payment link for My Shop (shop@upi), ₹499.00, note "Order 1":
upi://pay?pa=shop%40upi&pn=My+Shop&cu=INR&am=499.00&tn=Order+1

Omit --amount to let the payer choose. Opening a UPI link starts a UPI app on a phone, not on a computer.

Terminal QR and PNG

proupiqr qr shop@upi "My Shop" --amount 499 --note "Order 1" --size 512 --out qr.png

Prints a scannable, small terminal QR followed by:

UPI QR code for My Shop (shop@upi), ₹499.00, note "Order 1". Any UPI app can scan it: PhonePe, Google Pay, Paytm, BHIM and bank apps.
Payment link: upi://pay?pa=shop%40upi&pn=My+Shop&cu=INR&am=499.00&tn=Order+1

--out saves the API's PNG (the example produced a 512×512, 3,537-byte PNG). It overwrites the given file if present. --size is 200–1000 pixels, default 512. The terminal QR is rendered locally from the returned upi_uri using the MIT-licensed qrcode package. --json suppresses the terminal rendering but still saves --out.

Read a UPI link

proupiqr read 'upi://pay?pa=shop@upi&pn=My%20Shop&am=499&cu=INR'
This link pays My Shop at shop@upi.
- Payee UPI ID: shop@upi
- Payee name: My Shop
- Amount: ₹499.00 (fixed)
- Currency: INR

Checks: well-formed; any UPI app can read it.

Format checks cannot establish who owns a UPI ID. Check the name in your payment app before paying. You never need a UPI PIN to receive money.

Explain a UPI error

proupiqr error U30
U30: Debit failed at the remitter bank
What it means: The payer's bank could not complete the debit. This is a remitter-side failure, not a daily-limit code (see Z7, Z8, ZU, U03 for limits).
Where it failed: Payer's bank (Bank down)
Money: Debit possible — check UTR. If debited: auto-reversal by T+1 (P2P) or T+5 (P2M)

GST

proupiqr gst 12000 18 --inter-state
₹12,000.00 plus 18% GST, between states:
- Taxable value: ₹12,000.00
- IGST 18%: ₹2,160.00
- Total GST: ₹2,160.00
- Total: ₹14,160.00

--inclusive extracts GST from an inclusive price. Without --inter-state, the answer splits CGST and SGST.

MSMED late-payment interest

proupiqr msmed 10000 2026-01-01 --credit-days 45 --paid-on 2026-04-01
Payment deadline: 2026-02-15 (45 days after 2026-01-01).
Paid 2026-04-01: 45 days late.
Interest: ₹216.40 at 17.25% a year (3 × the RBI Bank Rate of 5.75% as of 7 Oct 2026), compounded monthly.
Total due: ₹10,216.40 (₹10,000.00 + interest).

Dates are YYYY-MM-DD. Omit --paid-on for today. The API defaults --credit-days to 45 (the statutory maximum); without a written agreement the deadline is 15 days after acceptance. The server supplies current rules; this is a calculation, not legal advice.

UPI MDR

proupiqr mdr 5000 --category standard --gst-registered
₹5,000.00 UPI payment:
- MDR: ₹20.00 (₹5,000.00 × 0.4% = ₹20.00)
- GST on MDR (18%): ₹3.60, usually claimable as input tax credit
- Merchant keeps: ₹4,980.00 after the credit
MDR is not a tax, and merchants may not add it to the customer's bill.

Categories: standard (default), essential, capital, p2p. Add --small-merchant for a small P2PM merchant. Rate rules are supplied by the API, not hard-coded in this CLI.

Rupees in words

proupiqr words 125050.50
₹1,25,050.50: One Lakh Twenty Five Thousand Fifty Rupees and Fifty Paise Only

Find a browser tool

proupiqr find rent receipt for HRA
Free tools for "rent receipt for HRA":
- Rent receipt generator: HRA-ready monthly receipts with amount in words and a stamp box. https://www.proupiqr.in/rent-receipt-generator/?utm_source=mcp&utm_medium=tool

The API returns up to five matching tools by default.

JSON, errors and configuration

proupiqr gst 12000 18 --inter-state --json
PROUPIQR_API_BASE=http://127.0.0.1:4545 proupiqr words 125050.50

--json prints the raw {ok, tool, text, data, image?} response without decoration. Monetary input strings are forwarded unchanged, preserving paise precision. On an API error it prints the raw error response to stdout and the actionable error message to stderr.

| Exit | Meaning | | --- | --- | | 0 | Success | | 1 | Tool/API validation error, or local output-file error | | 2 | Usage/configuration error | | 3 | Network, timeout or malformed HTTP JSON response |

The base defaults to https://www.proupiqr.in. REST requests use /api/tools/<tool_name>/ with the required trailing slash. Requests time out after 30 seconds; there are no automatic retries. Public REST limit: 120 calls/minute per network address. No API key required. PROUPIQR_API_BASE changes where inputs are sent, so only point it at a trusted server.

MCP: Claude Desktop / Cursor

proupiqr mcp translates newline-delimited JSON-RPC on stdin into POST requests to /mcp/, then writes one JSON reply per stdout line. It remembers the negotiated protocol version, forwards it in MCP-Protocol-Version, and keeps notifications/empty HTTP 202 responses silent. Network failures become JSON-RPC errors for requests. Diagnostics use stderr only.

Add this to Claude Desktop's claude_desktop_config.json or Cursor's MCP configuration:

{
  "mcpServers": {
    "proupiqr": {
      "command": "npx",
      "args": ["-y", "proupiqr", "mcp"]
    }
  }
}

Restart the client after editing. If npx is not on the desktop app's PATH, use its absolute path (on Windows, use npx.cmd). For reproducible setups, pin the version in the args: ["-y", "[email protected]", "mcp"].

The remote server is stateless and unauthenticated. Local verification negotiated 2025-11-25, listed all nine tools, and calculated IGST ₹2,160.00 / total ₹14,160.00 through tools/call; the initialized notification produced no stdout line. Clients that support remote HTTP directly can connect to https://www.proupiqr.in/mcp/ instead.

Privacy

Inputs are sent to proupiqr.in to compute the answer and are not stored by the service. The CLI stores nothing except a PNG you explicitly request with --out; your shell history and terminal/client logs may retain arguments and output. Nothing moves money: the payer must approve any payment in their own UPI app. Never send a UPI PIN, OTP or other secret. See the privacy policy.

Website · Tools API documentation · MCP documentation · Source

Development

cd packages/cli
npm ci
npm test
npm pack --dry-run

Tests use ephemeral local fake HTTP servers, not production. The package contains only this thin client, its MIT license and documentation; there is no proprietary server or calculation code.

Publishing (owner only)

Wait until the public REST API is deployed, create/push the public proupiqr/integrations repository, and confirm repository metadata matches it. Then:

cd packages/cli
npm ci
npm test
npm pack --dry-run
npm login
npm publish --access public

Use the npm account that will own proupiqr, with 2FA enabled. This package has not been published by the build agent.

For subsequent releases, prefer GitHub Actions trusted publishing with provenance, not a long-lived npm token: the workflow is .github/workflows/publish-cli.yml at the repository root. Create/authorize the npm GitHub environment; configure the npm package's trusted publisher for owner proupiqr, repository integrations, workflow publish-cli.yml and environment npm. The template grants id-token: write and runs npm publish --access public --provenance on a matching cli-v<version> tag. The repository must be public for public provenance. The first release may need the manual login/publish above before package-level trusted publishing can be configured.

MIT — Copyright (c) 2026 Kunal Siyag.