Payouts to Cards

Make payouts directly to a credit, debit or prepaid card using RazorpayX APIs.


With RazorpayX, you can make payouts directly to a credit card, debit card or prepaid card. Making payout to a card is the same as normal payouts.

Payouts via IMPS, NEFT, and UPI are supported on both RazorpayX virtual accounts and current accounts. Payouts via ‘card‘ mode (also known as network rails) are supported only on virtual accounts.

There are three ways to make a payout to a card, after collecting a card number from the customer:

Watch Out!

  • Coverage for payouts to tokenised and non-tokenised is different.
  • Payouts to tokenised cards is supported only for limited issuers on Visa and Mastercard.
  • Payouts to tokenised cards are not supported via bank rails. Its only supported for the mode ‘card’.
  • Please refer to for coverage on payouts via bank modes and ‘card’ mode.

According to the latest guidelines from RBI, businesses cannot save their customer’s card credentials (card number and other card data) on their own servers.

To save a card number as per RBI guidelines, you can use a tokenization service like

. Payouts to these tokenised cards can be made using the mode ‘card’ on RazorpayX.

Feature Request

This is an on-demand feature and available only to PCI-compliant merchants. To enable this feature, raise a request using the

on the RazorpayX Dashboard.

The Payouts to Cards entity has the following response fields:

id

string The unique identifier linked to the payout. For example, pout_00000000000001.

entity

string The entity being created. For example, payout.

fund_account_id

string The unique identifier linked to the fund account. For example, fa_00000000000001.

fund_account

object The account to which you want to make the payout.

id

string The unique identifier linked to the fund account. For example, fa_00000000000001.

account_type

string The type of account linked to the contact id. Here, it will be card.

contact_id

string The unique identifier linked to the contact. For example, cont_00000000000001.

contact

object

id

string The unique identifier linked to the contact. For example, cont_00000000000001.

entity

string The entity being created. Here, it will be contact.

name

string The contact's name. For example, Gaurav Kumar.

contact

string The contact's phone number. For example, 9123456789.

email

string The contact's email address. For example, gaurav.kumar@example.com.

type

string A classification for the contact being created. For example, employee.

reference_id

string A user-entered reference for the contact. For example, Acme Contact ID 12345.

batch_id

string This parameter is populated if the contact was created as part of a bulk upload. For example, batch_00000000000001.

active

boolean Possible values:

  • true (default) - active
  • false - inactive

notes

object Key-value pair that can be used to store additional information about the entity. Maximum 15 key-value pairs, 256 characters (maximum) each. For example, "note_key": "Beam me up Scotty”.

created_at

integer Timestamp, in Unix, when the contact was created. For example, 1545320320.

card

object The details of the card used.

last4

string The last 4 digits of the card number. If the input_type = service_provider_token then it is the last 4 digits of the card token.

network

string The network operator that has issued the card. For example, Mastercard, Visa.

type

string The type of card. For example, credit or debit.

issuer

string The bank that has issued the card. For example, ICIC, HDFC.

input_type

string Possible values:

  • service_provider_token : When the token number used is provided by an external service.
  • card : When a card number is provided.
  • razorpay_token : When the token id used is provided by Razorpay.

amount

integer The payout amount, in paise. For example, if you want to transfer ₹10000, pass 1000000. Minimum value 100.

Handy Tips
The value passed here does not include fees and tax. Fees and tax, if any, are deducted from your account balance.

currency

string The payout currency. Here, it is INR.

notes

array of objects Key-value pair that can be used to store additional information about the entity. Maximum 15 key-value pairs, 256 characters (maximum) each. For example, "note_key": "Beam me up Scotty”.

fees

integer The fees for the payout. This field is populated only when the payout moves to the processing state. For example, 5.

tax

integer The tax that is applicable for the fee being charged. This field is populated only when the payout moves to the processing state. For example, 1.

status

string The status of the payout. Possible payout states:

utr

string The unique transaction number linked to a payout. For example, HDFCN00000000001.

mode

string The mode used to make the payout. Available modes:

  • NEFT
  • RTGS
  • IMPS
  • UPI
  • card

    Watch Out!
    The payout modes are case sensitive.

purpose

string The purpose of the payout that is being created. The following classifications are available in the system by default:

  • refund
  • cashback
  • payout
  • salary
  • utility bill
  • vendor bill

    Handy Tips
    Additional purposes for payouts can be created via the and then used in the API. However, it is not possible to create a new purpose for the payout via the API.

reference_id

string Maximum length 40 characters. A user-generated reference given to the payout. For example, Acme Transaction ID 12345. You can use this field to store your own transaction ID, if any.

narration

string Maximum length 30 characters. Allowed characters: a-z, A-Z, 0-9 and space. This is a custom note that also appears on the bank statement.

Handy Tips
• If no value is passed for this parameter, it defaults to the Merchant Billing Label.
• Ensure that the most important text forms the first 9 characters as banks may truncate the rest as per their standards.

batch_id

string This parameter is populated if the contact was created as part of a bulk upload. For example, batch_00000000000001.

status_details

object This parameter returns the current status of the payout. For example, IMPS is not enabled on beneficiary account, Retry with different mode.

failure_reason

string

created_at

integer Timestamp, in Unix, when the contact was created. For example, 1545320320.

fee_type

string Indicates the fee type charged for the payout. Possible values:

  • free_payout

error

object The error object.

description

string A description for the error. For example, IMPS is not enabled on beneficiary account, please retry with different mode.

source

string Possible values:

  • gateway: Technical error at Razorpay Partner bank.
  • beneficiary_bank: Technical error at beneficiary bank.
  • business: Merchant action required.
  • internal: Technical error at Razorpay's server.

reason

string The error reason. For example, imps_not_allowed.

.

You can create payouts to cards without not saving card numbers using the Composite API.

Watch Out!

  • Payouts to cards via standalone Payout API are not allowed when the card number is passed in the API request.
  • Card numbers, expiry details and cardholder names are in compliance with .
  • Supported modes - IMPS, NEFT, UPI and card.
  • In case a payout fails, please collect the card details from the customer and re-initiate the payout.
  • Know about the .

The following endpoint makes payouts to cards without saving the card number.

POST
/v1/payouts

account_number

mandatory

string The account from which you want to make the payout.
Account details can be found on the RazorpayX Dashboard. For example, 7878780080316316.

  • Pass your virtual account number if you want money to be deducted from your virtual account.
  • Pass your current account number if you want money to be deducted from your current account.
    Watch Out!
    This is not your Contact's bank account number.

amount

mandatory

integer The payout amount, in paise. For example, if you want to transfer ₹10000, pass 1000000. Minimum value is 100.

currency

mandatory

string The payout currency. Here, it is INR.

mode

mandatory

string The mode to be used to create the payout. Available modes:

  • NEFT
  • RTGS
  • IMPS
  • UPI
  • card

    Watch Out!
    The payout modes are case sensitive. When creating payouts using APIs, ensure payout modes are entered in upper case.

purpose

mandatory

string The purpose of the payout that is being created. The following classifications are available in the system by default:

  • refund
  • cashback
  • payout
  • salary
  • utility bill
  • vendor bill

    Handy Tips
    Additional purposes for payouts can be created via the and then used in the API. However, it is not possible to create a new purpose for the payout via the API.

queue_if_low_balance

optional

boolean Possible values:

  • true : The payout is queued when your business account does not have sufficient balance to process the payout.
  • false (default) : The payout is never queued. The payout fails if your business account does not have sufficient balance to process the payout.

fund_account

mandatory

object The account to which you want to make the payout.

account_type

mandatory

string The type of account linked to the contact id. Here, it will be card.

card

mandatory

object The details of the card used.

input_type

mandatory

string Here, the value is card.

number

mandatory

string Same field can accept card numbers or card tokens.

name

optional

string The name on the card.

expiry_month

optional

string The expiry month of the entered card.

expiry_year

optional

string The expiry year of the entered card.

contact

mandatory

object The Contact's details.

name

mandatory

string Name of the contact. This field is case-sensitive. A minimum of 3 characters and a maximum of 50 characters are allowed. Name cannot end with a special character, except .. Supported characters: a-z, A-Z, 0-9, space, , - , _ , / , ( , ) and .. For example, Gaurav Kumar.

email

optional

string The contact's email address. For example, gaurav.kumar@example.com.

contact

optional

string The contact's phone number. For example, 9123456789.

type

optional

string Classification for the contact being created. For example, employee. Possible values: vendor, customer, employee, self.

reference_id

optional

string A user-generated reference given to the contact. For example, Acme Contact ID 12345. This field can have a maximum length of 40 characters.

notes

optional

object Key-value pair that can be used to store additional information about the entity. Maximum 15 key-value pairs, 256 characters (maximum) each. For example, "note_key": "Beam me up Scotty”.

reference_id

optional

string Maximum length 40 characters. A user-generated reference given to the payout. For example, Acme Transaction ID 12345. You can use this field to store your own transaction ID, if any.

narration

optional

string Maximum length 30 characters. Allowed characters: a-z, A-Z, 0-9 and space. This is a custom note that also appears on the bank statement.

Handy Tips
• If no value is passed for this parameter, it defaults to the Merchant Billing Label.
• Ensure that the most important text forms the first 9 characters as banks may truncate the rest as per their standards.

notes

array of objects Key-value pair that can be used to store additional information about the entity. Maximum 15 key-value pairs, 256 characters (maximum) each. For example, "note_key": "Beam me up Scotty”.

Handy Tips

We highly recommend you get PCI-DSS compliance and make private API calls that are authenticated using your API Key. This helps reduce risks related to security.

Descriptions for the response parameters are present in the

parameters table.

You can save card numbers and make payouts to it only by creating tokens.

You can create tokens using:

Handy Tips

  • Payouts via IMPS, NEFT and UPI are not supported via tokenised cards.
  • Token expiry month and year are mandatory in case of external service provider.

You can create Payouts to Cards using Composite APIs as well.

The following endpoint creates fund account with tokens.

POST
/v1/fund_accounts

contact_id

mandatory

string The unique identifier of the contact for which you want to fetch payouts. For example, cont_00000000000001.

account_type

mandatory

string The type of account linked to the contact id. Here, it will be card.

card

mandatory

object The details of the card used.

number

mandatory

string Same field can accept card numbers or card tokens. Here, the value is card token.

expiry_month

mandatory

string The expiry month of the card numbers or card token. Here, the value is of card token.

expiry_year

mandatory

string The expiry year of the card numbers or card token. Here, the value is of card token.

input_type

mandatory

string Here, the value is service_provider_token.

token_provider

mandatory

string The name of the aggregator that provided the token.

Descriptions for the response parameters are present in the

parameters table.

The following endpoint creates a payout to external tokens.

POST
/v1/payouts

account_number

mandatory

string The account from which you want to make the payout. Account details can be found on the RazorpayX Dashboard. For example, 7878780080316316.

amount

mandatory

integer The payout amount, in paise. For example, if you want to transfer ₹10000, pass 1000000. Minimum value is 100.

currency

mandatory

string The payout currency. Here, it is INR.

mode

mandatory

string The mode to be used to create the payout. Available modes: NEFT, RTGS, IMPS, UPI, Card.

purpose

mandatory

string The purpose of the payout that is being created. The following classifications are available in the system by default:

  • refund
  • cashback
  • payout
  • salary
  • utility bill
  • vendor bill

    Handy Tips
    Additional purposes for payouts can be created via the and then used in the API. However, it is not possible to create a new purpose for the payout via the API.

fund_account_id

mandatory

string The unique identifier linked to the fund account.

reference_id

optional

string Maximum length 40 characters. A user-generated reference given to the payout. For example, Acme Transaction ID 12345. You can use this field to store your own transaction ID, if any.

narration

optional

string Maximum length 30 characters. Allowed characters: a-z, A-Z, 0-9 and space. This is a custom note that also appears on the bank statement.

Handy Tips
• If no value is passed for this parameter, it defaults to the Merchant Billing Label.
• Ensure that the most important text forms the first 9 characters as banks may truncate the rest as per their standards.

queue_if_low_balance

optional

boolean The payout is automatically queued if the account balance is low.

Descriptions for the response parameters are present in the

parameters table.

You can use

to offer your customers a saved card experience.

You can create payouts to cards using Razorpay Token HQ.

The following endpoint creates fund account with tokens.

POST
/v1/fund_accounts

contact_id

mandatory

string The unique identifier of the contact for which you want to fetch payouts. For example, cont_00000000000001.

account_type

mandatory

string The type of account linked to the contact id. Here, it will be card.

card

mandatory

object The details of the card used.

input_type

mandatory

string Here, the value is razorpay_token.

token_provider

mandatory

string The name of the aggregator that provided the token.

token_id

mandatory

string The unique identifier of the token to which the payout has to be made. If it is razorpay_token then the token_id must be present.

Descriptions for the response parameters are present in the

parameters table.

The following endpoint creates a payout with tokens.

POST
/v1/payouts

Descriptions for the request parameters are present in the

table above, to create a Payout.

Descriptions for the response parameters are present in the

parameters table.