Card Mandates

New Mandate Registrations:

As per RBI guidelines, card mandates registration has not been functional since April 1st. Juspay has integrated with the PGs as per the new mandate regime. Please find here the status of the Integration as well as the Banks supported by the new regime.

To start doing new mandate registrations for the live PGs, Merchants need to get it enabled at the PG end.

PG

Visa

Mastercard

Juspay Integration Status

Action required by Merchants

PayU

Live:
Kotak, HDFC, ICICI,
BoB DC, IDFC CC, CIti, SBI, Axis, RBL, IndusInd, Yes Credit, SBM, IDBI Credit, BoI, AU small Finance Credit

Live:
ICICI Debit, Yes Credit, HDFC, RBL, Citi, Axis, IndusInd Credit, SBI, BoI Debit, SCB Credit, SBM, IDBI Credit

Production

PG Enablement

Paytm

Live:
Kotak, HDFC, ICICI,
BoB DC, IDFC CC, CIti, SBI, Axis, RBL, IndusInd, Yes Credit, SBM, IDBI Credit, BoI, AU small Finance Credit

Live:
ICICI Debit, Yes Credit, HDFC, RBL, Citi, Axis, IndusInd Credit, SBI, BoI Debit, SCB Credit, SBM, IDBI Credit

Production

PG Enablement

Billdesk

Live:
Kotak, HDFC, ICICI,
BoB DC, IDFC CC, CIti, SBI, Axis, RBL, IndusInd, Yes Credit, SBM, IDBI Credit, BoI, AU small Finance Credit

Live:
ICICI Debit, Yes Credit, HDFC, RBL, Citi, Axis, IndusInd Credit, SBI, BoI Debit, SCB Credit, SBM, IDBI Credit

Production

PG Enablement & Client ID to be obtained for the existing MID at Billdesk and configured at Juspay dashboard.

Razorpay

Live:
Equitas, HSBC, Onecard, KVB, City Union Bank

Live:
Equitas, HSBC, Onecard, KVB, Citi Union Bank

Production

PG Enablement

📘

Note:

Rupay UAT sign off and CUG testing done, Production in one week. Amex is expected to come soon within a month or two

Mandate Debit in New Mandate Regime

Requirement: In the new Mandate regime, merchants need to notify the Customer before doing the debit along with an Invoice Display Number.

Juspay has abstracted out the integration complexities in order to minimize the changes for Merchants .The possible scenarios and the change for merchants in each scenario is given below.

Pre-debit Notification sent by

Invoice Display Number generation by

Change for Merchant

Juspay

Juspay

Merchants need to call the Mandate Recurring API of Juspay on T-1 day

Juspay

Merchant

Merchants need to call the Mandate Recurring API of Juspay on T-1 day

mandate.display_invoice_number in Mandate Execution API

Merchant

Juspay

mandate.notification_id in Mandate Execution API

Merchant

Merchant

mandate.display_invoice_number in Notification API

mandate.notification_id in Mandate Execution API

👍

Info:

  • mandate.display_invoice_number - It should be alphanumeric and length upto 25 characters
  • mandate.notification_id - The object_reference_id which was sent in notification call
  • mandate.execution_date (Optional) - UNIX EPOCH timestamp format If a merchant wants to send a renewal date for each execution, then they can send a custom date if they don’t want the execution to happen 24hr post notification.

📘

Note

  • Razorpay does not have an option to trigger pre-debit notification separately. . In this case, merchants always have to call Mandate Execution on T-1 day.
  • Invoice Display Number acts as a reference for that recurring transaction. This would be shared to the user in the notification. Merchants can handle customer’s queries on debits with reference to Invoice Display Number. (Applicable for Billdesk, Paytm and PayU only)
  • Merchants who are handling pre debit notification, can do notification retry with same display_invoice_number but different notification_id
  • All the changes are updated in the developer doc. https://developer.juspay.in/reference#mandates
  • Merchants who are not using pre-debit notification have to integrate the Notification API in case they want to handle pre-debit notification.

Migration of old Mandates

As of today, no issuing banks are ready for migration of old mandates that are registered before 1st April. We have below options to do the debit for Mandates registered before 1st April.
The banks agreed for migration of old mandates with SI Hub (For selected bins that are live) are as follows
HDFC, ICICI, IDFC, Kotak, AU small finance bank,RBL, IndusInd, Axis, BoB, BOI, SBI, SBI Cards, Yes Bank
Onecard, KVB agreed for migration with Mandate HQ

  • Silent Migration: PGs are exploring the option to do backend migration of the existing mandate tokens to the new regime without any user intervention. This depends on the issuing banks being ready to do this migration. Note: As of today, Kotak and HDFC banks are ready to do the migration of existing card mandates

  • Re-Registration: If merchants want to re-register the user for the same mandate id with new card mandate register or different mandate payment method, merchants can pass mandate_id in Create Mandate Order Request.

  • New Mandate Registration: Merchants can notify users to set a new mandate with either Card (for the live banks) or any other payment methods for banks that are not live. Ex: UPI, Wallet, NB mandates

  • One time debit: Merchants can notify users to do a one time payment by sharing merchant/Juspay payment page link for the existing card mandates till the banks go live with the new card mandates or are ready for migration of existing card mandates.

Options

Juspay Change

Merchant Change

Silent Migration

No change required

No change required

Re-Registration

Add mandate_id in Create Mandate Order API and update mandate token and status with new registration

Add a new param mandate_in in Create Mandate Order API

New Mandate Registration

No change required

No change required

One time Debit

No change required

Merchant can generate One time payment page link or share Juspay’s payment page link triggered with Create Order API. For Juspay payment page link, merchants need to enable this feature with Juspay

Key Guidelines

Here are some of the key guidelines with respect to how the new regime of cards SI works:

  • Pre-debit notification is mandatory 24 hrs prior to the actual execution date.
  • Mandate Payment transactions can be retried for successful pre-debit notification upto T+4 days. There is no constraint from PG on retry count and interval. Some issuing banks might /might not support this feature.
  • During the mandate registration and notification, an SMS will be triggered by the issuing bank to the user with a bankpage link. Users can either cancel or modify the max amount and end date. Currently Billdesk gives a webhook on the changes done by the user.
  • Merchants are recommended to show the following details in PP during customer Journey: Mandate Start & End date, Frequency, Amount Type, Maximum amount.
    Note: Juspay added a merchant configurable page to show these details in the mandate flow on PP. Merchants on app, can get an SDK update for this change, For web, this will be a backend config.
  • The minimum amount to be passed for card mandates - register or recurring flow is Rs 2.

Paytm Specific (Changes in Paytm Card/Wallet Create Mandate Order API)

We have done unification of common params across cards, wallets and UPI mandates across PGs. The changes are in the Create Mandate Order API as shown below.

Changes in params

Metadata parms (Old Params)

Mapped to common params (New Params)

metadata.PAYTM_V2:SUBSCRIPTION_START_DATE

mandate.start_date

metadata.PAYTM_V2:SUBSCRIPTION_EXPIRY_DATE

mandate.end_date

metadata.PAYTM_V2:SUBSCRIPTION_FREQUENCY

mandate.rule_value

metadata.PAYTM_V2:SUBSCRIPTION_FREQUENCY_UNIT

mandate.frequency

metadata.PAYTM_V2:SUBSCRIPTION_GRACE_DAYS

metadata.PAYTM_V2:SUBSCRIPTION_GRACE_DAYS( No change)

metadata.PAYTM_V2:SUBSCRIPTION_RETRY_COUNT

metadata.PAYTM_V2:SUBSCRIPTION_RETRY_COUNT( No Change)

📘

Note:

In case metadata fields are passed by the merchant, transactions will still proceed but with ASPRESENTED frequency. Please ensure that ON DEMAND frequency is enabled at Paytm’s end.

Definition of the new params

Field

Type

Condition

Definition

mandate.start_date

String

Mandatory for UPI Mandate

Mandate start date in UNIX EPOCH timestamp (UTC timezone). In case of UPI mandate, the start date has to be today’s date.

mandate.end_date

String

Mandatory for UPI Mandate

Mandate end date in UNIX EPOCH timestamp (UTC timezone), from when a mandate will move to EXPIRED state and recurring mandate will not be allowed.

mandate.frequency

String

Optional

ONETIME|DAILY|WEEKLY|FORTNIGHTLY|MONTHLY|BIMONTHLY|QUARTERLY|HALFYEARLY|YEARLY|ASPRESENTED

By Default it is considered as ASPRESENTED

mandate.rule_value

String

Optional

1-7 when frequency is WEEKLY
1-16 when frequency is FORTNIGHTLY
1-31 when frequency is MONTHLY,BIMONTHLY,QUARTERLY,HALFYEARLY, YEARLY

Not required when frequency is ONETIME, DAILY, ASPRESENTED

For Razorpay rule_value will be considered as the last date of the week/month/year
For Paytm rule_value will be considered as today’s date/day

For example, if WEEKLY, this field can have values from 1-7 (Monday to Sunday)

Sample Request

curl -X POST \
https://sandbox.juspay.in/orders \
 -H 'Authorization: Basic <base64 of key:>' \
-H ‘'Content-Type: application/x-www-form-urlencoded'\
 -d "order_id=152664118690577-910" \
 -d "amount=5.00" \
 -d "currency=INR" \
 -d "customer_id=test_juspay" \
 -d "[email protected]" \
 -d "customer_phone=987654321" \
 -d "billing_address_first_name=Parth" \
 -d "billing_address_city=Bengaluru" \
 -d "shipping_address_city=Mumbai" \
 -d "shipping_address_first_name=Parth" \
 -d "options.create_mandate=REQUIRED" \
 -d "mandate.start_date=1598965200" \
 -d "mandate.end_date=1914141600" \
 -d "mandate.frequency=MONTHLY" \
 -d "mandate.rule_value=1" \
 -d "mandate_max_amount=1000.00"