Payment Locking

Feature Details

  • Allows merchants to block/ allow specific payment instruments group/ payment instruments in the payment page.

  • Also for Cards and UPI, getCardFilterList and getUPIFilterList functions are used which return CardFilterList and UPIFilterList. When a new card is being entered or a new vpa address there is a check in place using the filter lists.

  • Payload locking payload is passed in orderDetails within the payload where all the fields are CASE SENSITIVE.

  • When the instrument in transaction call has a mismatch with the instrument selected on payment page, Juspay declines the payment with order status = “JUSPAY_DECLINED” and error = “Payment instrument mismatch”

Payload Details

  • The paymentMethodType needs to be passed as WALLET, CARD, UPI, NB, CONSUMER_FINANCE, CASH, REWARD etc.

  • Two blocks with the same paymentMethodType should not be passed. If two blocks are passed, the first one will always be considered.

Grey Out payment methods

  • Need to disable some payment method for transactions, but still show them on payment page? Gray out and add a message on which the payment method is disabled right now.

  • enable: false, display: true, display message: “Custom message” (character 36 limit)

Structure of Payment Filter

The Schema of PaymentFilterPayload :

Payload : PaymentFilterPayload

Scroll inside to view more
Property
Type & Description
Possible Values
allowDefaultOptions
Type: Maybe Boolean; Use Case: After applying payment locking, this key defines if we have to display the filtered payment method types with the default payment method types or not.
Possible Values: true, false Default Value: true
options
Type: Array PaymentMethodFilter; Use Case: Options define on which payment locking has to be applied on.
Possible Values: Array (Payment MethodFilter)

PaymentMethodFilter

Scroll inside to view more
Property
Type & Description
Possible Values
enable
Type: Boolean; (*Required) Use Case: This is to decide whether to disable or enable the payment method. false will disable the payment method and true will enable the payment method. For CARD/UPI as paymentMethodType it should be true if upiFilters or cardFilters are passed.
Possible Values: true, false
display
Type: Boolean; (*Optional) Use Case: This will gray-out the payment instrument and display displayMessage (if any) when the instrument is disabled using payment locking
Possible Values: true, false
displayMessage
Type: String; (*Optional) Use Case: This is to display custom message under a payment method. Will only work when display is true
Possible Values: "Custom Message"
enable
Type: Boolean; (*Required) Use Case: This is to decide whether to disable or enable the payment method. false will disable the payment method and true will enable the payment method. For CARD/UPI as paymentMethodType it should be true if upiFilters or cardFilters are passed.
Possible Values: true, false
paymentMethodType
Type: PaymentMethodType; (*Required) Use Case: This decides on which payment method type the payment locking should be applied on.
Possible Values: “CARD”, “UPI“, “WALLET“, “NB, “CONSUMER_FINANCE“, “REWARD“, “CASH“ All the values are case sensitive
paymentMethods
Type: Array String; (*Optional) Use Case: This contains the payment methods on which payment locking have to be applied It won’t be considered if paymentMethodType is UPI / CARD.
Possible Values: [“PHONEPE”, ”PAYTM”],... In case of mandate flows (NB, WALLET, CONSUMER_FINANCE) pass additional values with prefix JP_ For example, In NB pass both ["NB_HDFC", "JP_HDFC"] In WALLET pass both["PAYTM", "JP_PAYTM"] In CONSUMER_FINANCE pass both ["ZESTMONEY", "JP_ZESTMONEY"] All the values are case sensitive
cardFilters
Type: Array CardFilter; (*Optional) It won’t be considered unless paymentMethodType is CARD.

CardFilter

Scroll inside to view more
Property
Type & Description
Possible Values
cardBrands
Type: Array String; (*Optional)
Possible values: “VISA”, “RUPAY”,… All the values are case sensitive
cardBins
Type: Array String; (*Optional)
Possible values: [“459000::460000“]
cardCountries
Type: Array String; (*Optional)
Possible values: “INDIA”,… All the values are case sensitive
cardTypes
Type: Array String; (*Optional)
Possible values: “DEBIT”, ”CREDIT” All the values are case sensitive
cardSubTypes
Type: Array String; (*Optional)
Possible values: “BUSINESS”, ”EMPLOYEE_CARD” All the values are case sensitive
cardBanks
Type: Array String; (*Optional)
Possible values: “SBI”,”ICICI”,.... All the values are case sensitive
enable
Type: Boolean
Possible values: true, false

UPIFilter: collect/intent/QR

Scroll inside to view more
Property
Type & Description
Possible Values
upiType
Type: UPIType
Possible values: “COLLECT”, ”INTENT”, "QR" All the values are case sensitive
enable
Type: Boolean
Possible values: true, false

Sample Payload

Refer to the code snippets on the right for reference.

Structure for EMI Filter

Feature Details

  • Allows merchants to hide/show different types of EMI plans(standard, low cost, no cost) under both card EMIs (debit & credit) and cardless EMIs

  • Any particular issuer can be hidden within any of these categories (Ex. HDFC Debit card EMI plans can be specifically blocked)

  • Solution also supports showing only EMI Options on the Payment Page

  • Reach out to your Juspay POC to enable EMI filter via payment locking for your account

  • EmiFilter filters EMI plans on a basic level (Ex. Display only no-cost EMI)

  • EmiSubFilter filters specific plans (Ex. HDFC debit card EMI plans to be specifically blocked)

Structure

The Schema of EmiFilter payload :

Structure

The Schema of EmiSubFilter payload :

Payload : emiOptions

Scroll inside to view more
Property
Type & Description
Possible Values
standardEmi
Type: Maybe EmiSubFilter; Use Case: Controls everything with regards to standard EMI plans
lowCostEmi
Type: Maybe EmiSubFilter; Use Case: Controls everything with regards to low cost EMI plans
noCostEmi
Type: Maybe EmiSubFilter; Use Case: Controls everything with regards to no cost EMI plans
showOnlyEmi
Type: Maybe Boolean; Use Case: EMI will be the only visible instrument on payment page
Possible values: true, false

Payload : standardEmi/lowCostEmi/noCostEmi/showOnlyEmi

Scroll inside to view more
Property
Type & Description
Possible Values
enable
Type: Boolean; (*Required) Use Case: This is to decide whether to disable or enable standardEMI, lowCostEMI or noCostEMI
Possible values: true, false
credit
Type: Maybe Use Case: Controls everything with regards to credit card plans within the given EMI type (standard/ low cost/ no cost)
debit
Type: Maybe Use Case: Controls everything with regards to debit card plans within the given EMI type (standard/ low cost/ no cost)
cardless
Type: Maybe Use Case: Controls everything with regards to cardless card plans within the given EMI type (standard/ low cost/ no cost)

Payload : credit/ debit/ cardless

Scroll inside to view more
Property
Type & Description
Possible Values
enable
Type: Boolean; (*Required) Use Case: This is to decide whether to disable or enable credit, debit or cardless EMI
Possible values: true, false
filters :: enable
Type: Boolean; (*Required) Use Case: This is to decide whether to disable or enable plans
Possible values: true, false
filters :: paymentMethodType
Type: String; Use Case: EMI plans of this particular payment method type will be locked
Possible values: “CARD”, “UPI“, “WALLET“, “NB, “CONSUMER_FINANCE“, “REWARD“, “CASH“ All the values are case sensitive
filters :: paymentMethod
Type: Array String; Use Case: EMI plans of this particular payment method will be locked
Possible values: [“PHONEPE”, ”PAYTM”],... All the values are case sensitive
filters :: issuerFilters
Type: {issuers :: Array String, enable :: Boolean} Use Case: This is to decide whether to disable or enable EMI Issuers based on above filters
Possible values: JP Bank code of the issuer. For example, JP_HDFC
filters :: issuerFilters
Type: {tenures :: Array String, enable :: Boolean} Use Case: This is to decide whether to disable or enable EMI Tenures based on above filters
Possible values: "5::6","12::20"