Paytm
paytm.com ↗Paytm has no self-serve 'Sign in with Paytm' OAuth — user login exists only inside the Mini App platform (business KYC + partner approval), and the documented 'OAuth Token API' is a merchant server token, not user delegation.
01Pick your path
02Time & effort
- DEVPick the surface: merchant token vs Mini App login20–40 minutessourced[S4]Read the API reference sidebar: 'OAuth Token API' is under Payments; the login flow is under Mini Apps → Login Flow.
- DEVOpen a Paytm for Business / merchant account15–60 minutessourced[S1]Paytm claims 'create your account in under five minutes' and 'instant activation', but verification of business details can add days (inferred).
- PRODRequest Mini App access + client_id and redirect approvalwait 5–20 daysinferred[S7][probe]No source states an approval SLA; the probe shows keys are not self-serve.
- DEVWire login flow and token exchange2–6 hourstested[probe][S4]Authorize page and token endpoint confirmed to exist; request/response params are undocumented, expect trial-and-error with Paytm support.
- PRODMini App review and go-livewait 3–15 daysinferred[S7]Paytm advertises '2 developers can complete the integration in 2 Weeks' — that is build effort, not an approval SLA.
03Steps
Get a working connection
In the Paytm API reference, 'OAuth Token API' and 'Access Token API' live under Payments; the user-facing flow is Mini Apps → Login Flow (paytmFetchAuthCode, getAccessToken, getUserInfo). Write down which one your agent needs before touching code.
“OAuth Token API * Native Fetch User PayMode Status API” — [S4] verified verbatim
↗ developer.paytm.com/docs/Sign up as a merchant (company name, business type, live website). This account is the prerequisite for any Paytm-issued client_id; billing/settlement bank details are captured here.
“Open a merchant account, accept digital payments and log in to manage settlements, QR codes and your Soundbox.” — [S1] verified verbatim
↗ dashboard.paytmpayments.com/login/Point users at https://accounts.paytm.com/oauth-js-sdk/login/index.html?client_id=<yours>&response_type=code&redirect_uri=<https callback>. Note the probe: an invalid client_id still renders a login page with HTTP 200, so verify success by the presence of a code on your redirect, not by page load.
↗ accounts.paytm.com/oauth-js-sdk/login/index.htmlPOST the returned code to the discovered token endpoint from your backend. The exact grant_type/client authentication/response shape is not published — log the raw response and confirm parameters with Paytm before you ship.
Call getUserInfo (server-side, never in the browser) to fetch the minimum profile fields, map them to a local session, and store the Paytm user identifier as your external ID. Keep access tokens server-side only.
↗ developer.paytm.com/docs/
Make it production-ready
Use the Mini App Store 'Get Started' / 'API Documentation' entry points to request platform access, then send the credential request (see artifact) with your registered redirect URI, required user fields, and environment needs.
“Integrate using open source technologies like HTML and Java script and reach out to 150 Million monthly active users on Paytm App.” — [S7] verified verbatim
↗ business.paytm.com/miniappsSend this to the onboarding contact listed on Paytm's merchant pages (onboarding.support@paytmpayments.com) or through the Mini App 'Get Started' flow. It gives the partner team the four things they will ask for: business identity, redirect URI, minimum data set, and token contract.
◆ prepared by agent · Draft request to Paytm partner/onboarding teamSubject: Mini App login flow — client credentials and redirect URI request Hello Paytm Mini Apps / Onboarding team, We are building <product>, a <category> app, and want to use the Paytm Mini App Login Flow (paytmFetchAuthCode -> getAccessToken -> getUserInfo) to sign users in. Business details - Legal name / business type: <name>, <Private Limited | Proprietorship | Partnership/LLP | ...> - Merchant account: <merchant ID / registered email at dashboard.paytmpayments.com> - Live website: https://<yourdomain> Technical ask - Sandbox and production client_id for the Mini App login flow - Registered redirect URI: https://<yourdomain>/auth/paytm/callback (HTTPS, single host) - Requested user data: name, Paytm user ID, <phone only if required> — nothing beyond what we render - Token endpoint behaviour at https://accounts.paytm.com/oauth/token: grant type, client authentication method, access/refresh token lifetimes Compliance - Data stored in <region>, deleted on account deletion; privacy policy: https://<yourdomain>/privacy - Secrets held server-side only (Checksum / server SDK) Questions 1. Which scopes or consent strings does the login flow expose? scopes_supported is empty on https://accounts.paytm.com/.well-known/openid-configuration. 2. Is the login flow usable outside the Paytm in-app webview? 3. What is the expected review turnaround for a new Mini App? Thanks, <name>, <role>
04Requirements, scopes & nuances
You'll need
- ▸A Paytm for Business merchant account with completed KYC: company name, contact person, mobile, email, business type, and a live (or soon-live) website URL. inferred[S1]
- ▸Mini App platform onboarding if you want user identity — the login flow ships only as part of the Mini App platform. sourced ❝[S7][S4]
- ▸A client_id/credentials pair and at least one registered HTTPS redirect URI issued by Paytm; there is no self-serve registration page. inferred[probe]
- ▸For merchant API calls: server-side signing (Paytm Checksum) and server SDKs (Java/Node/PHP/Python) — secrets must stay server-side. sourced ❝[S3]
Gotchas
- !The 'OAuth Token API' in Paytm's API reference sits under Payments — it is a merchant server token, not user-delegated OAuth. Do not bill it to your planner as user sign-in. inferred[S4]
- !The only user-facing login primitive Paytm documents is the Mini Apps Login Flow: paytmFetchAuthCode JS API → getAccessToken API → getUserInfo API, i.e. it runs inside the Mini App platform, not as a standalone OIDC provider. sourced ❝[S4]
- !The discovery document at accounts.paytm.com advertises authorization_endpoint=https://accounts.paytm.com/oauth-js-sdk/login/index.html — a JS-SDK login page, an unusual authorize URL that will not behave like a standard /authorize redirect. tested[probe]
- !scopes_supported is absent from the discovered metadata, so there is no published scope catalogue to pick a least-privilege subset from. tested[probe]
- !Merchant onboarding is a KYC form, not a click-through: company name, contact person, mobile, email, whether your website is live, and business type (Private Ltd / Public Ltd / Proprietorship / Partnership-LLP / Trust / HUF / Unregistered). inferred[S1]
- !Mini App login is delivered through the Paytm app webview, so it will not authenticate users on a plain web browser session; plan a fallback identity path for desktop/web. inferred[S7]
| Scope / permission | Tier | Note | Evidence |
|---|---|---|---|
| Merchant access token (OAuth Token API) | basic | Not a user scope. Client-credential style token for your own merchant account; grants payment/refund/settlement operations you are already entitled to. | inferred[S4] |
| getUserInfo (Mini App profile read) | sensitive | The closest thing to a scope: the Mini App getUserInfo API returns the signed-in user's details. Ask for only the fields you render. | inferred[S4] |
| paytmFetchAuthCode / getAccessToken (login flow grant) | gated | The grant itself, not a named scope. scopes_supported was absent from the discovery document, so no least-privilege scope list can be chosen from public docs. | tested[probe][S4] |
| Phone / Paytm user ID (if returned by getUserInfo) | restricted | Treat as sensitive PII for Indian DPDP purposes; request only if your flow genuinely needs it, and document retention. | inferred[S4] |
05If you get blocked
→ Scope the project to what Paytm actually ships: (a) merchant-side OAuth Token API for your own account [S4]; (b) Mini App Login Flow inside Paytm's app [S4/S7]. There is no social-login product to enable.
→ Sign up at https://business.paytm.com/ and complete the Payment Gateway form at https://dashboard.paytmpayments.com/login/ (company name, business type, live website). Write to onboarding.support@paytmpayments.com for status.
→ Register the redirect URI with Paytm during onboarding and test only with the issued client_id; treat the HTML 200 as 'credentials required', not as a working authorize URL.
→ Hardcode https://accounts.paytm.com/.well-known/openid-configuration or the endpoints it returns; do not build generic OIDC discovery against auth.paytm.com or login.paytm.com.
06Evidence: what was tested, sourced, and still uncertain
Sources read
- [S1] Paytm for Business - Merchant Account and Business Login official
- [S2] Secure & Fast UPI Payments, Recharge Mobile & Pay Bills official
- [S3] Paytm for Developers: API and SDK Documentation official
- [S4] Start Building with Paytm official
- [S5] Download the Paytm for Business App - Merchant Payments App official
- [S6] Paytm.com - Partner With Us official
- [S7] Paytm Mini Apps - Discover and Build Mini Apps on Paytm Today official
- [composio] Composio — Managed OAuth apps directory official
- [probe] Live HTTP probes run by the agent (dummy client_id, no credentials) probe
Still uncertain
- ? Token endpoint contract is unknown: grant_type, client authentication (secret vs PKCE), token lifetime and refresh behaviour are not in any fetched source and were not exercised beyond a discovery read.
- ? No published scope catalogue — scopes_supported was empty in the discovery document, so scope names in this guide are inferred from the documented Mini App APIs (getUserInfo), not from a Paytm scope list.
- ? Whether the Mini App login flow can be used by a third-party website/app outside the Paytm in-app webview is not stated in any source; the 'oauth-js-sdk' authorize path suggests it is webview-bound.
- ? Approval durations for Mini App onboarding and for credential issuance are not published anywhere in these sources; all waits marked here are inferred.
- ? The probe tested a single fake client_id and one redirect_uri; behaviour with a real (expired/revoked) client_id is unverified.
- ? Sources are thin on OAuth specifics: business.paytm.com, paytm.com/oauth and paytm.com/partner-with-us are marketing pages, and developer.paytm.com is a docs index — no page describing a user-consent OAuth product was retrieved.
- ? Generated automatically; no app was registered and no review was submitted.