Boring APIs. In the best way.
Consistent REST contracts, idempotent writes, signed webhooks and a sandbox that behaves like production. Read the docs, pull a key and make your first call before anyone asks you for a purchase order.
Quickstart# 1. Get your sandbox key from the dashboard
export RUPEECO_KEY="rpc_test_..."
# 2. Make your first call
curl https://api.rupeeco.in/v1/verify/pan \
-H "Authorization: Bearer $RUPEECO_KEY" \
-H "Idempotency-Key: $(uuidgen)" \
-H "Content-Type: application/json" \
-d '{ "pan": "ABCDE1234F", "consent": "Y" }'
# 3. Listen for events
curl https://api.rupeeco.in/v1/webhooks \
-H "Authorization: Bearer $RUPEECO_KEY" \
-d '{ "url": "https://yourapp.com/hooks/rupeeco",
"events": ["payment.captured", "verification.completed"] }'Predictable behaviour, documented edge cases
The parts of an API you only appreciate at 2am during an incident.
One key, every suite
A single scoped API key authenticates against all eight suites. Rotate without redeploying.
Idempotency built in
Send an Idempotency-Key header on any write and retry safely — duplicate charges are impossible.
Signed webhooks
HMAC-SHA256 signatures, exactly-once delivery, automatic retry with exponential backoff and a replay API.
Predictable errors
Stable machine-readable error codes with a human message and a docs link on every failure.
Versioned contracts
Pin an API version per key. Breaking changes ship behind a new version, never inside one.
Sandbox parity
The sandbox mirrors production behaviour, including simulated failures, timeouts and settlement cycles.
Eight suites, one base URL
https://api.rupeeco.in — versioned, region-routed and rate-limited per key.
- POST
/v1/verify/panVerification Suite - POST
/v1/payments/ordersPayments - POST
/v1/collections/linksCollection Suite - POST
/v1/commerce/invoicesCommerce APIs - GET
/v1/analytics/reportsAnalytics & Insights - POST
/v1/risk/evaluateFraud & Risk Engine - GET
/v1/marketplace/catalogAPI Marketplace - POST
/v1/banking/mandatesBanking APIs
Install and start calling
Typed clients with retries, idempotency and webhook verification already handled.
- Node.js
npm install @rupeeco/node - Python
pip install rupeeco - Java
implementation 'in.rupeeco:rupeeco-java:1.0.0' - PHP
composer require rupeeco/rupeeco-php - Go
go get github.com/rupeeco/rupeeco-go - Ruby
gem install rupeeco
Verify before you trust
Every event carries an HMAC-SHA256 signature and a timestamp. Reject anything that fails verification or arrives outside your tolerance window.
// Verify a Rupeeco webhook signature (Node.js)
import crypto from "node:crypto";
export function verify(rawBody, signature, secret) {
const expected = crypto
.createHmac("sha256", secret)
.update(rawBody)
.digest("hex");
return crypto.timingSafeEqual(
Buffer.from(expected),
Buffer.from(signature)
);
}Sandbox access
- Test keys with no volume commitment
- Simulated failures, timeouts and settlement cycles
- Reset your sandbox ledger any time
- Same request and response shapes as production
Need keys today? Email support@rupeeco.in with your company name and the suites you want to test.
Request sandbox accessStart with sandbox keys. Talk commercials when you are ready.
Test the full API surface before you sign anything. When you are ready to go live, we price on the volume you actually process.
Map your flows
A solutions engineer walks through your money-in, money-out and verification requirements and proposes the shortest path live.
Test in sandbox
Pull keys, replay real-world scenarios and validate webhooks against a sandbox that mirrors production behaviour.
Go live and scale
Switch to production keys, turn on routing rules, and add new suites from the marketplace whenever you need them.
