₹PayLink Developer docs Docs

Developer docs

PayLink has three public HTTP APIs, each for a different reader and each with its own kind of key. The browser pages (/admin, /{tenant}/console, checkout) are for people and use LoginLink sign-in, not keys.

APIWho uses itKeyBase path
Payments API
Guide · Reference
A merchant's own server (website, app backend). The integration you'd otherwise write for Razorpay, PayU or PhonePe, written once.sk_test_{tenant}_…
sk_live_{tenant}_…
/api/v1
Tenant automation API
Guide · Reference
Scripts and back-office tools that do what a merchant's team does in the console: approve UPI payments, upload bank statements, refunds, webhooks, risk rules.tdk_{tenant}_… with chosen capabilities/api/tenant
Platform API
Reference
Whoever runs this PayLink installation: create and manage tenants, auto-provisioning, audit.pdk_… from /admin → Developers/api/admin

Standards PayLink follows

  • REST over HTTPS with JSON, described by OpenAPI 3 (payments, tenant, platform), so you can generate a client in any language.
  • Bearer keys (Authorization: Bearer …, RFC 6750). Keys are stored only as hashes and shown once; revoke any time.
  • Prefixed keys (sk_test_, sk_live_, tdk_, pdk_, whsec_), the convention Stripe made common: you can tell what a key is and whether it's live at a glance, and secret scanners can spot a leaked one. The tenant slug in the key names whose it is; it is not a secret, the random part is.
  • Test and live separation: a test key can never touch real money.
  • Idempotency keys on creates, so a retried request never makes a second payment.
  • Amounts in minor units (paise) as integers, never floats. ISO 4217 currency codes.
  • Signed webhooks: HMAC-SHA256 over {timestamp}.{body} with a replay window, retried with back-off for 24 hours.
  • Least privilege: developer keys carry only the capabilities you tick; secret keys can't change settings.
  • Errors are JSON { "error": "code", "error_description": "…" } with the right HTTP status.