Updated 16 June 2026
If you have been using Paytm for a while, you probably remember the older Paytm Payment Page API (v1). They worked, but came with a lot of manual work.
The new Payment Page API v2 with the initiateTransaction endpoint and the PaytmChecksum SDK fixes most of those pain points.
The old v1 API had multiple endpoints for different payment flows. You had to pick one based on wallet, UPI, or net banking.
The v2 API simplifies this with a single initiateTransaction endpoint that handles all payment types uniformly.
The request body is now clean JSON with a clear head-and-body split. No more dozens of scattered form-encoded parameters.
Everything is organized under one JSON payload, making it much easier to read, debug, and maintain.
|
1 2 3 |
curl -X POST "https://secure.paytmpayments.com/theia/api/v1/initiateTransaction?mid=MERCHANT_ID&orderId=ORDER_ID" \ -H "Content-Type: application/json" \ -d '{"body": {...}, "head": {"signature": "..."}}' |
In the old setup, developers had to manually implement checksum logic, handle encoding, and hope they missed nothing.
The official PaytmChecksum SDK removes all of that hassle with just two simple function calls.
With one call you generate a signature. With another you verify it. The SDK handles SHA-512 hashing and encoding internally.
You do not need to understand the cryptography at all. Just call the function and move on.
|
1 2 3 4 5 6 7 |
use paytm\paytmchecksum\PaytmChecksum; // Generate signature for request $signature = PaytmChecksum::generateSignature($bodyJson, $merchantKey); // Verify signature from response $isValid = PaytmChecksum::verifySignature($responseBody, $merchantKey, $responseSignature); |
This also means fewer bugs. Custom checksum logic often fails silently due to wrong encoding or field ordering.
The SDK has been tested across thousands of integrations. You can trust it to work right the first time.
The v1 API used a single checksum covering all parameters. One replay attack could exploit a gap in that coverage.
The v2 API signs the request body separately from the head. Tampering with any individual field is detected immediately.
The SDK also keeps your merchant key out of URLs and logs. Old integrations sometimes leaked it as a query parameter.
The v2 approach keeps all sensitive data in the request body where it belongs, not exposed in server logs.
|
1 2 3 4 5 6 7 8 |
// Old v1 way (less secure) - checksum in URL or form data // POST /api/generateChecksum?mid=xxx // New v2 way (more secure) - signature in JSON head { "body": { "mid": "...", "orderId": "..." }, "head": { "signature": "GENERATED_SIGNATURE" } } |
A cleaner API and a battle-tested SDK means less time on payment plumbing and more time on your actual product.
If you are still on v1, migrating to v2 with the PaytmChecksum SDK is one of the easiest upgrades you can make.

If you are building on Laravel, Bagisto is a free and open source eCommerce platform worth exploring.
It also has a ready-made Paytm Payment Gateway extension that handles the integration for you out of the box.
If you have more details or questions, you can reply to the received confirmation email.
Back to Home
Be the first to comment.