Paytm Subscriptions

Paytm Subscriptions enables you to collect recurring payments from your customers automatically based on a preselected schedule.

Subscription payments are meant for services/products that are consumed on an ongoing basis and payments are made on fixed intervals. Via Paytm, you can charge your customers automatically without any explicit payment action at customers end.

Paymodes supported for subscription payments

Paytm currently supports the following payment methods to collect recurring payments -

Payment MethodCard SchemeBanks
Credit CardVisa, Master Card, AMEX (coming soon)All Banks
Debit CardDebit CardICICI, Kotak, Citibank, Canara Bank, Standard Chartered
Paytm Wallet

For subscriptions where customer has paid via wallet, RBI mandates the merchant has to take explicit customer's consent before initiating EACH successive payment/subscription transaction. Merchant has to preserve the customer’s consent log and share at the time of customer dispute/process audit with Paytm

Getting started with Paytm Subscriptions

Subscription Payments involves two broad steps -

Step 1: Creation of subscription

A subscription starts with taking consent from customer to deduct periodic payment from her chosen payment method for a product/service.

The customer journey is as follows -

  • You offer to provide a product/service on an ongoing basis under one or more subscription plans. This plan presents a payment schedule to the customer
  • Once the customer selects a plan, she makes a one-time payment to provide
    • Consent on regular and timely payments as per the service schedule
    • Link a payment instrument from which all future plan payments will be deducted automatically

Step 2: Collect recurring payments for subscription

In this step, the customer’s registered payment instrument is charged without her intervention. You initiate a renewal transaction which is validated by Paytm against the subscription plan established in STEP 1. In case the validation is successful, a charge is made to customer’s registered payment instrument

Subscription Solutions offered by Paytm

We offer two solutions to support subscription payments. Select a solution based on the payment experience you want to build for your customers -

Custom Checkout

Paytm provides secure APIs to create your own payment checkout page on your mobile app or website. Custom Checkout offers the flexibility to create a payment experience that closely follows your own brand and thematic guidelines.

Paytm Checkout

In this standard hosted solution, customers are redirected to Paytm where they complete the payment. Checkout is the faster way to go live with Subscriptions if a customized payment experience is not critical for you.

The following table lists the basic difference between the two solutions * -

Paytm CheckoutCustom Checkout
Payment experience customization availableNo. Standard Paytm experience is invoked for all customersYes
Payment page behaviorRedirection to Paytm Checkout and then to banksHosted natively within your app or website. One-click redirection to banks for payment
Effort required for integrationLowerHigher
Feature update delivery
(to accommodate new payment methods in the future and other product updates)
Always updated real-timeNeeds to be updated by you manually

* Note that these two solutions differ only in the subscription creation step.

Paytm Checkout provides a secure, PCI-compliant way to accept recurring payments via Debit/Credit card and Paytm Balance from your customers in your mobile app or website.

Demo for Paytm Checkout

payment checkout demo img

Overview of recurring payment processing via Paytm Checkout Subscription

Creation of subscription

  1. Customer selects the subscription plan along with payment schedule on your page. The payment process starts at the click of pay button on your platform
  2. Create an order in your subscription/order system and generate checksumhash required for making a payment request. Checksumhash is used for detecting errors or tampering introduced during the transmission of payment request. Checksum is generated using merchant key
  3. Send the payload and checksumhash in an HTML form POST to Paytm. This redirects the customer to Paytm's payment page
  4. Customer fills payment method details and completes the two-factor authentication. Once the payment is complete, a response is posted in an HTML form POST on your app/website's callback URL
  5. Verify checksumhash received in response to ensure that it has not been tampered with
  6. Paytm provides a Subscription ID on successful creation of a subscription. This ID should be stored in your system as a unique identifier for the created subscription. This ID is required in renewal and cancellation process
  7. Lastly, verify transaction status with Transaction Status API via a server to server call. This protects you from scenarios where your account credentials are compromised or request/response has been tampered with

Renewal of subscription

On the date of renewal, send the renewal request in the Renewal API. This renewal request is generated using the Paytm subscription ID which provided at the time of subscription creation. On failure of renewal transaction, a new renewal can be reattempted provided “Retry” is configured in the subscription plan. Lastly after one successful renewal transaction in a renewal cycle, a new renewal transaction cannot be attempted

Cancellation of subscription

Any time you or your customer wants to cancel an existing subscription, you can use the Cancel API. Once cancelled, the subscription is terminated and cannot be reused further.

The chart below captures the detailed interaction of each component:

subscription creation image

Steps in processing subscription payments via Checkout

Step 1 :

At the click of payment button by customer on your website, create a subscription order in your system and generate the required payload for payment request. Parameters of payload are as follows -

REQUEST ATTRIBUTES
REQUEST_TYPE String (20) MandatoryType of transaction. SUBSCRIBE for subscription transaction
MIDString (20) MandatoryThis is a unique identifier provided to every merchant by Paytm. MID is part of your account credentials and is different on staging and production environment. Your staging MID is available here and production MID will be available once your activation is complete
ORDER_IDString (20) MandatoryUnique reference ID for a transaction which is generated by merchant Special characters allowed in Order ID are: @, -, _, .
CUST_IDString (64) MandatoryUnique reference ID for every customer which is generated by merchant Special characters allowed in Cust_ID are @, ! ,_ ,$, .
SUBS_SERVICE_IDString (20) OptionalSubscription service identifier provided by the merchant. This is unique id and used to identify the customer at the time of renewal call
CHANNEL_IDString (3) MandatoryThis parameter is used to control the theme of the payment page. Based on the channel passed, Paytm will render the layout suitable for that specific platform
For websites, the value is WEB
For Mobile websites/App, the value is WAP
WEBSITEString (30) MandatoryFor staging environment: For staging environment: WEBSTAGING
For production environment: Will be available here once your activation is complete
CALLBACK_URLString (255) MandatoryOn completion of transaction, Paytm payment gateway will send the response on this URL.. Sample URL is - https://merchant.com/callback/
TXN_AMOUNTString (10) MandatoryThis is the upfront amount ” that is to be charged from the customer at the time of creation of subscription. Should contain digits up to two decimal points. Only special character allowed is (“.”)
SUBS_AMOUNT_TYPEString (10) MandatoryRenewal amount of subscription can be fixed or capped to max amount. Possible values of this attributes are
1. FIX: Amount charged in all renewal transactions will be same as TXN_AMOUNT
2. VARIABLE: Renewal amount can be variable and capped by SUBS_MAX_AMOUNT
SUBS_MAX_AMOUNTString (10) ConditionalMaximum amount that can be deducted in a subscription request. Mandatory: if SUBS_AMOUNT_TYPE is VARIABLE
SUBS_FREQUENCY_UNITString (10) Mandatory
Defines renewal frequency. If the renewal cycle is of 2 months, its value would be monthly. The values supported for this attribute currently are: DAY, MONTH, YEAR
SUBS_FREQUENCYString (5) MandatoryCombined with SUBS_FREQUENCY_UNIT, this variable defines the frequency. If the renewal cycle is of 2 months, the value of the attributes values can be:
1. if unit is Day then 30
2. if unit is Month then 1
SUBS_START_DATEString (20) OptionalThis is the date from which the renewal starts i.e. first renewal transaction can be charged to the customer. Subsequent renewals can be charged by customer after a definite period defined with SUBS_FREQUENCY and SUBS_FREQUENCY_UNIT. Format of date is YYYY-MM-DD
SUBS_GRACE_DAYSString (2) ConditionalNumber of days after renewal cycle start date for which merchant can send renewal request.
Mandatory: If SUBS_START_DATE is sent in this request
SUBS_EXPIRY_DATEString (10) MandatoryDate when subscription will expire. Format should be YYYY-MM-DD
SUBS_ENABLE_RETRYString (2) MandatoryMerchant can retry a transaction in case of failure from bank/wallet
Possible Value: 0 or 1
SUBS_PPI_ONLYString (1) MandatoryRepresents if add money is allowed at the time of subscription or not.
Possible Values are:
Y : In case of insufficient balance in wallet, renewal transaction will fail
N : In case of insufficient balance in wallet, add money from users saved card will be attempted
SUBS_PAYMENT_MODEString (5) MandatoryAmount for subscription and subsequent renewals will be charged from customer’s credit/debit card Possible Values: CC, DC
MOBILE_NOString (15) MandatoryCustomer's mobile number. Passing this enables faster login for customer into his/her Paytm account. When the customer clicks on login, the mobile number comes pre-filled on our payment page
EMAILString (50) MandatoryCustomer's email ID
CHECKSUMHASHString (108) MandatorySignature to avoid tampering. Generated using server side checksum utility available here
Go through Types of subscriptions supported & creation methodology to understand the varied subscription use cases supported by Paytm

Step 2 :

Generate checksumhash using the Paytm library with parameters in key-value pairs. Using the payload and checksumhash, make an HTML form POST and redirect customer to Paytm. Sample code snippets and Github links for the checksum utility and HTML form post are provided below.

<?php
require_once("encdec_paytm.php");
define("MERCHANT_MID", "TIMESI54326042593468");
define("MERCHANT_KEY", "%BhQSi7MOy0wt#fs");
define("WEBSITE", "dineoutWEB");
define("INDUSTRY_TYPE_ID", "Retail");
$paytmParams = array(
    "REQUEST_TYPE"			=> "SUBSCRIBE",
    "MID"					=> MERCHANT_MID,
    "WEBSITE"				=> WEBSITE,
    "INDUSTRY_TYPE_ID"	    => INDUSTRY_TYPE_ID,
    "CHANNEL_ID" 			=> "WEB",
    "ORDER_ID" 			=> "ORDER_".time(),
    "CUST_ID"				=> "CUST001",
    "MOBILE_NO"			=> "7777777777",
    "EMAIL"				=> "abc@xyz.com",
    "TXN_AMOUNT"			=> "1.00",
    "SUBS_SERVICE_ID"		=> "SUBS001",
    "SUBS_AMOUNT_TYPE" 	=> "VARIABLE",
    "SUBS_MAX_AMOUNT"		=> "2.00",
    "SUBS_FREQUENCY_UNIT"  => "DAY",
    "SUBS_FREQUENCY"		=> "7",
    "SUBS_ENABLE_RETRY"	=> "1",
    "SUBS_START_DATE"		=> "2019-05-01",
    "SUBS_EXPIRY_DATE"	    => "2019-12-31",
    "SUBS_PPI_ONLY"		=> "Y",
    "SUBS_PAYMENT_MODE"	=> "PPI",
    "SUBS_GRACE_DAYS"		=> "1",
    "SSO_TOKEN"	        => "af5c035b-1ae3-4ca3-8d3c-2de1a2ba5600",
    "CALLBACK_URL"			=> "https://pg-stage.paytm.in/MerchantSite/bankResponse"
);
$checksum = getChecksumFromArray($paytmParams, MERCHANT_KEY);
$transactionURL = "https://securegw-stage.paytm.in/order/process";
// $transactionURL = "https://securegw.paytm.in/order/process"; // for production
?>
<html>
	<head>
		<title>Merchant Checkout Page</title>
	</head>
	<body>
		<center><h1>Please do not refresh this page...</h1></center>
		<form method='post' action='<?php echo $transactionURL; ?>' name='paytm_form'>
			<?php
				foreach($paytmParams as $name => $value) {
					echo '<input type="hidden" name="' . $name .'" value="' . $value . '">';
				}
			?>
			<input type="hidden" name="CHECKSUMHASH" value="<?php echo $checksum ?>">
		</form>
		<script type="text/javascript">
			document.paytm_form.submit();
		</script>
	</body>
</html>
Endpoints:
Staging: https://securegw-stage.paytm.in/theia/processTransaction
Production: https://securegw.paytm.in/theia/processTransaction;

For Web:

For App:

HTML Form POST

<html>
    <head>
        <title>Merchant Check Out Page</title>
    </head>
    <body>
        <center><h1>Please do not refresh this page...</h1></center>
            <form method="post" action="https://securegw-stage.paytm.in/order/process" name="f1">
            <table border="1">
                <tbody>
                    <input type="hidden" name="REQUEST_TYPE" value="SUBSCRIBE">
                    <input type="hidden" name="SUBS_SERVICE_ID" value="SUBS7878049">
                    <input type="hidden" name="SUBS_AMOUNT_TYPE" value="VARIABLE">
                    <input type="hidden" name="SUBS_MAX_AMOUNT" value="2">
                    <input type="hidden" name="SUBS_FREQUENCY" value="1">
                    <input type="hidden" name="SUBS_FREQUENCY_UNIT" value="DAY">
                    <input type="hidden" name="SUBS_ENABLE_RETRY" value="1">
                    <input type="hidden" name="SUBS_EXPIRY_DATE" value="2019-06-10">
                    <input type="hidden" name="SUBS_PPI_ONLY" value="Y">
                    <input type="hidden" name="SUBS_PAYMENT_MODE" value="PPI">
                    <input type="hidden" name="SSO_TOKEN" value="29215774-7b11-457e-bf99-c58f17ca5600">
                    <input type="hidden" name="SUBS_START_DATE" value="2019-04-10">
                    <input type="hidden" name="SUBS_GRACE_DAYS" value="0">
                    <input type="hidden" name="MID" value="TIMESI54326042593468">
                    <input type="hidden" name="ORDER_ID" value="OREDR_20190410144451">
                    <input type="hidden" name="CUST_ID" value="CUST001">
                    <input type="hidden" name="INDUSTRY_TYPE_ID" value="Retail">
                    <input type="hidden" name="CHANNEL_ID" value="WEB">
                    <input type="hidden" name="TXN_AMOUNT" value="1">
                    <input type="hidden" name="WEBSITE" value="dineoutWEB">
                    <input type="hidden" name="CALLBACK_URL" value="http://localhost/paytmkit/pgResponse.php">
                    <input type="hidden" name="SUBS_RETRY_COUNT" value="1">
                    <input type="hidden" name="CHECKSUMHASH" value="RvthE5zjtUWU5DPZteTjViJkYEF0Rc7nov4Y+m55YYrfztaW7wgbmnUz5Kyb/0NtjauqQeGhVDk8HNgsEF4PAC+51PaE/gAG37wSSzcHH7Q=">
                </tbody>
            </table>
            <script type="text/javascript">
                document.f1.submit();
            </script>
        </form>
    </body>
</html>

Step 3 :

Customer fills the payment details and is redirected to bank page for authorization. Once the transaction is completed, Paytm updates the subscription contracts and posts the response on your callback URL.

RESPONSE ATTRIBUTES
SUBS_IDString (50)Unique subscription id generated by Paytm for identifying a subscription.
MIDString (20)This is a unique identifier provided to every merchant by Paytm
TXNIDString (64)This is a unique Paytm transaction ID that is issued by Paytm for each transaction
ORDERIDString (50)Unique reference ID for a transaction which is generated by merchant and sent in the request
BANKTXNIDString (250)The transaction ID sent by the bank. In case of Paytm proprietary instruments too, there is unique reference number generated by Pat's system. In case the transaction does not reach the bank, this will be NULL or empty string. Primary reason for this is user dropping out of the payment flow before the transaction reaches to bank to servers
TXNAMOUNTString (10)Amount paid by customer in INR
CURRENCYString (3)Currency in which the transaction has taken place. Currently only "INR" is the supported currency of transaction
STATUSString (20)This contains the transaction status and has only three values: TXN_SUCCESS, TXN_FAILURE and PENDING
RESPCODEString (10)Codes refer to a particular reason of payment failure/success. List in this PDF
RESPMSGString (500)Description message is linked with each respcode. List in this PDF
TXNDATEDateTimeDate and Time of transaction in the format "yyyy-MM-dd HH:mm:ss.S"Example: "2015-11- 02 11:40:46.0"
GATEWAYNAMEString (15)Gateway used by Paytm to process the transactions. By pay modes, the details are provided below
Credit, debit cards UPI - Gateway used to process the transaction. For example, if HDFC gateway has been used to process SBI credit card transactions, the value will be HDFC
Net banking - Net banking transactions are not routed via gateway. Hence issuing bank name is passed in this field
Paytm Wallet - Wallet
BANKNAMEString (500)Name of issuing bank of the payment instrument used by customer. By pay modes, the details are provided below
Credit, debit cards - Name of the issuing bank. Example in case customer uses SBI's credit card, the value will be "SBI"
Paytm Wallet - Wallet
PAYMENTMODEString (15)The payment mode used by customer for transaction
Credit card – CC
Debit card - DC
Paytm wallet – PPI
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
        <title>Paytm Secure Online Payment Gateway</title>
    </head>
    <body>
        <table align='center'>
            <tr>
            <td><STRONG>Transaction is being processed,</STRONG></td>
            </tr>
            <tr>
            <td><font color='blue'>Please wait ...</font></td>
            </tr>
            <tr>
            <td>(Please do not press 'Refresh' or 'Back' button</td>
            </tr>
    </table>
    <FORM NAME='TESTFORM' ACTION='http://localhost/paytmkit/pgResponse.php' METHOD='POST'>
            <input type='hidden' name='CURRENCY' value='INR'>
            <input type='hidden' name='CUST_ID' value='CUST001'>
            <input type='hidden' name='GATEWAYNAME' value='WALLET'>
            <input type='hidden' name='RESPMSG' value='Txn Success'>
            <input type='hidden' name='BANKNAME' value='WALLET'>
            <input type='hidden' name='PAYMENTMODE' value='PPI'>
            <input type='hidden' name='MID' value='TIMESI54326042593468'>
            <input type='hidden' name='RESPCODE' value='01'>
            <input type='hidden' name='TXNID' value='20190410111212800110168568200397294'>
            <input type='hidden' name='TXNAMOUNT' value='1.00'>
            <input type='hidden' name='ORDERID' value='OREDR_20190410144451'>
            <input type='hidden' name='STATUS' value='TXN_SUCCESS'>
            <input type='hidden' name='BANKTXNID' value='6637676'>
            <input type='hidden' name='TXNDATE' value='2019-04-10 14:45:34.0'>
            <input type='hidden' name='CHECKSUMHASH' value='1VQoUt4ue+HzD11zDHAG8lNK6RZDDIxBVByUODQhs6OEkBOrd2ucJrr9CFBpMyHHjfL5tXeoTP4IPBgR
            QKpvUASUI90L9ul/8XII/ZgzpII='>
            <input type='hidden' name='SUBS_ID' value='17963'>
        </FORM>
</body>
    <script type="text/javascript">  document.forms[0].submit();</script>    
</html>

Step 4 :

Checksumhash received in response of transaction needs to verified on server using Paytm library with all the parameters in key-value pairs. Code snippets and Github links for the checksum utility are provided below.

<?php
$paytmParams = $_POST;
$merchantKey="gKpu7IKaLSbkchFS";
$paytmChecksum = isset($_POST["CHECKSUMHASH"]) ? $_POST["CHECKSUMHASH"] : "";
$isValidChecksum = verifychecksum_e($paytmParams, $merchantKey, $paytmChecksum);
if($isValidChecksum == "TRUE") {
    echo "<b>Checksum Matched</b>";
} else {
    echo "<b>Checksum MisMatch</b>";
}
?>

For Web:

For App:

Step 5 :

Validate transaction response via server side request using Transaction Status API. The status returned should be treated as the final status of the transaction.

Step 6 :

Based on the agreed contract, send Paytm a renewal transaction request using the Renewal API. In case the renewal transaction fails, re-attempt the renewal transaction. Two important things here:

  • Renewal transaction is validated against the renewal contract. Once validated, the transaction is accepted and response is provided in the Renewal API
  • Once the transaction is processed by Paytm, we will post the status on your configured callback URL. Additionally you can do a status query from time to time using Transaction Status API

Step 7 :

Subscription can be cancelled using Cancel API. Once cancelled, the subscription ID can not be renewed. In a rare case that the subscription API gets timed out, you can retry cancelling the subscription using the same subscription ID. If you receive a response like “content not found”, then subscription is already cancelled.

On completion of your integration

Post completion of integration on your staging environment, do one complete subscription cycle, which will involve the following -

  • Creation of subscriptions using different payment methods
  • Performing a renewal transaction
  • Cancelling a subscription

Once you attempt a test transaction using test paymodes credentials, do the following -

  • Ensure you re-verify transaction response with the Transaction Status API via a server-to-server call in the payment flow and not separately as a one time activity
  • See the transaction details in “Test Data” mode on your Dashboard
  • Once the test transaction is complete, move your code to live environment with production account details. Note that production accounts details are available after you have activated your account on the dashboard

In case of any issues with integration, please get in touch.


Types of subscriptions supported by Paytm

Listed below are the type of subscriptions we support with attributes required for configuration -

Based on amount charged at the time of renewal

Fixed subscription amount

Applicable when the renewal amount is the same as the amount paid by a user while creation of the subscription. For example, monthly housing maintenance payments.

Attributes required for creating fixed amount subscriptions are -

  • TXN_AMOUNT = the fixed amount to be charged
  • SUBS_AMOUNT_TYPE = FIX

Variable subscription amount

Applicable when the renewal amount is different from the amount paid by a user while creation of the subscription. For example, mobile postpaid bill payments.

Attributes required to create variable amount subscriptions are -

  • TXN_AMOUNT = First upfront amount to be charged to start the subscription
  • SUBS_AMOUNT_TYPE = VARIABLE
  • SUBS_MAX_AMOUNT = Maximum renewal amount that will be charged

Based on first amount charged at the time of creating subscription

Free Trial Period

Applicable when you offer a product/service for free for a certain period of time. After this trial period ends, the renewal transactions begin unless the subscription is cancelled. For example, an audio/video content platform provides a 3-month free trial followed by a fixed or variable monthly rental.

Attributes required to create free trial subscriptions are -

  • TXN_AMOUNT = 0
  • SUBS_AMOUNT_TYPE = VARIABLE
  • SUBS_MAX_AMOUNT = Maximum renewal amount that will be charged

Note: In case the subscription is created for INR 0, then transaction will be for INR 1. This is because two-factor authentication cannot be done for a payment of INR 0. This can be adjusted in the subsequent renewals or refunded to the customer using the refund API.

Upfront amount

Applicable when an one-time upfront amount is charged to the customer to facilitate payments such as installation, delivery etc. at the time of initiating the subscription. For example recovering the installation cost of internet router followed by fixed or variable monthly rental.

Attributes required to create upfront amount subscriptions are -

  • TXN_AMOUNT = First upfront amount to be charged to start the subscription
  • SUBS_AMOUNT_TYPE = VARIABLE
  • SUBS_MAX_AMOUNT = Maximum renewal amount that will be charged

Based on renewal payment duration

Fixed renewal start date

Applicable when a renewal is initiated after a fixed time interval every time. Renewal date does not depend on the date on which renewal payment was made for the previous renewal cycle. For example, bills generation dates at telecom companies are independent of customer payment dates in the previous cycle.

Attributes required to create fixed date renewal subscriptions are -

SUBS_START_DATE - Fixed date from which the renewal cycle needs to be initiated

Renewal transactions needs to be initiated based on the following schedule -

Create Request DateFrequencySubscription Start dateGrace Days1st renewal initiation date2nd renewal initiation date
TFSG>=S and <=S+G>=S+F and <=S+G+F

Variable renewal start date

Applicable when a renewal is initiated after a fixed period from the last renewal. This adds support for use cases where services for the customer are discontinued if the renewal payment is not received and resumed for a fixed period once renewal payment is successfully completed. Take DTH bill payments as an example - if a monthly renewal due on the 1st of every month was successfully completed on 15th April (late renewal). in the subsequent cycle, the renewal payment can be attempted on 15th May.

Attribute requirement for variable data renewal subscriptions are -

SUBS_START_DATE - This attribute should not be passed

Renewal transactions needs to be initiated based on the following schedule -

Subscription TypeCreate Request DateFrequencySubscription Start dateGrace Days1st renewal time period2nd renewal time period
Without Subscription start dateTF--> T+F
Assuming this day is N
> N+F

Best practices for subscription

To ensure high customer satisfaction and larger recurring revenue realization, we have compiled a few best practices for developers and businesses integrating Paytm Subscriptions into their products or services.

Retry for failed renewals

Most common reasons for failure of renewals is insufficient funds in the customer's account or customer issuing bank suffering temporary technical outages. You must build a renewal retry logic spaced over days to increase the chances of a successful renewal.

Subscription cancellation flow

Businesses should have a subscription cancellation flow on their mobile apps, websites or via customer care. Often your customers find it hard to associate with subscription payments as they do not know about an easy subscription termination flow.

Every time a subscription is cancelled, either by the customer or the merchant, Paytm should be updated about the same. Detailed flow for this is covered later.

Customer Communication

In subscription payments, your customer is charged without her explicit consent on renewal every time. To avoid situations where customer is dissatisfied due to an uninformed charge (can lead to chargebacks), merchant must send adequate and timely communication to the customer. We have a list of recommended communication -

Details of agreement/contract on successful completion of STEP 1

This notification should have the following information -

  • Product and services which will be received by the customer
  • Payment schedule (amount, start date, renewal date and payment cycle)
  • Payment instrument (debit card, credit card etc.) linked to this subscription
  • Subscription termination link/steps that customer needs to follow in case she wants to stop the renewals and cancel the subscription
  • First renewal date on which the first charge will be made

Notification before renewal

Before the renewal is initiated, the customer must be informed via an email/SMS/any other notification. This notification should be sent at least a day in advance. This notification should have the following information

  • Amount to be charged. In case of variable renewal amount, complete break up of the charge should be provided
  • Payment instrument details on which the charge will be made
  • Date on which renewal will be attempted
  • Subscription termination link/steps that customer needs to follow in case she wants to stop the renewals and cancel the subscription
  • Agreement/contract details like when the subscription was created/payment schedule/product and services schedule etc.

Notification after a successful or failed renewal

After execution of every renewal transaction, customer should be notified of the status of renewal. In case of a successful renewal, she should be notified of -

  • Amount charged
  • Payment instrument on which the charge was made
  • Date on which the next charge will be made
  • Subscription termination link/steps that customer needs to follow incase he wants to stop the renewals and cancel the subscription
  • Agreement/Contract details like when the subscription was created/payment schedule/product and services schedule etc.

In case of a failed renewal, customer must be informed of the following -

  • Amount charged
  • Payment instrument where charge was made
  • Date on which the retry will be executed
  • Subscription termination link/steps that customer needs to follow in case she wants to stop the renewals and cancel the subscription
  • Agreement/Contract details like when the subscription was created/payment schedule/product and services schedule etc.