Skip to main content
POST
Available in🇮🇳 India🇸🇬 Singapore🇺🇸 United States
Use this endpoint to create a payout to a mobile number using Composite Payout API.
Watch Out!
  • Ensure you allowlist IPs and pass the idempotency key to make a successful payout.
  • You can send payouts to VPA (UPI) linked mobile numbers only.

Consider the points given below before firing this API:
  • Contact
    • A new contact is created if any combination of the following details is unique:
      • fund_account.contact.name
      • fund_account.contact.email
      • fund_account.contact.contact
      • fund_account.contact.type
      • fund_account.contact.reference_id
    • If all the above details match the details of an existing contact, the API returns details of the existing contact.
    • Use the Update Contact API if you want to make changes to an existing contact.
  • Fund Account
    • A new fund account is created if any combination of the following details is unique:
      • fund_account.card.name
      • fund_account.card.number
      • fund_account.contact.name
      • fund_account.contact.email
      • fund_account.contact.contact
      • fund_account.contact.type
      • fund_account.contact.reference_id
    • If all the above details match the details of an existing fund account, the API returns details of the existing fund account.
    • You cannot edit the details of a fund account.
To understand the status of the payouts, refer to Payout Status Details.

Request Parameters

string
required
The account from which you want to make the payout.
Account details can be found on the RazorpayX Dashboard. For example, 7878780080316316.
  • Pass your customer identifier if you want money to be deducted from RazorpayX Lite.
  • 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. Log in to your RazorpayX Dashboard and go to My Account & Settings → Banking → Customer Identifier.
  • This value is different for Test Mode and Live Mode.
  • RazorpayX Lite is currently not available for new merchants. To set up a new RazorpayX account, refer to Current Account.
integer
required
The payout amount, in paise. For example, pass 1000000 to transfer an amount of ₹10,000. Minimum value is 100.
The value passed here does not include fees and tax. Fees and tax, if any, are deducted from your account balance.
string
required
The payout currency. Here, it is INR.
string
required
The mode to be used to create the payout. Here, it is UPI.
The payout modes are case-sensitive. When creating payouts using APIs, ensure payout modes are entered in upper case.
string
required
The purpose of the payout. Classifications available in the system by default:
  • refund
  • cashback
  • payout
  • salary
  • utility bill
  • vendor bill
Additional purposes for payouts can be created via the Dashboard and then used in the API. However, it is not possible to create a new purpose for the payout via the API.
object
required
Details of the contact and fund account to which the payout should be made.
string
required
The type of account linked to the contact ID. Here, the value has to be mobile.
object
required
Object for capturing phone number and the name linked to it (optional).
string
required
The contact’s 10-digit mobile number (without country code) to which you wish to send the payout. This has to be linked to a VPA (UPI). For example, 9876543210.
string
The name linked to the mobile number. This, if provided, will be validated against the linked UPI/bank account name. This will not be validated if not entered. For example, Gaurav Kumar.
object
required
Details of the contact to whom the payout should be made.
string
required
Contact’s name. Minimum 3 characters. Maximum 50 characters. This field is case-sensitive. Supported characters: a-z, A-Z, 0-9, space, , - , _ , / , ( , ) and , .. For example, Gaurav Kumar.
string
The contact’s email address. For example, gaurav.kumar@example.com.
string
The contact’s phone number. For example, 9000090000. This can be same or different from the number passed to the mobile object for payout.
string
Classification for the contact. For example, employee. Classifications are available by default:
  • vendor
  • customer
  • employee
  • self
Additional classifications can be created via the Dashboard and then used in APIs. It is not possible to create new classifications via the API.
string
Maximum length is 40 characters. A reference you enter for the contact. For example, Acme Contact ID 12345.
object
Notes you can enter for the contact for future reference. This is a key-value pair. For example, "note_key": "Beam me up Scotty".
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.
string
Maximum length is 40 characters. A reference you enter for the payout. For example, Acme Transaction ID 12345. You can use this field to store your own transaction ID, if any.
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. If no value is passed for this parameter, it defaults to the Merchant Billing Label.
Enter the important text in the first 9 characters as banks truncate the rest as per their standards.
array
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”.

Response Parameters

string
The unique identifier linked to the payout. For example, pout_00000000000001.
string
The entity being created. Here, it will be payout.
string
The unique identifier linked to the fund account. For example, fa_00000000000001.
string
Contact and fund account details to which the payout was made.
string
The unique identifier linked to the fund account. For example, fa_00000000000001.
string
Here it will be fund_account.
string
The unique identifier linked to the contact. For example, cont_00000000000001.
string
Details of the contact to whom the payout is being made.
string
The unique identifier linked to the contact. For example, cont_00000000000001.
string
The entity being created. Here, it will be contact.
string
The contact’s name. For example, Gaurav Kumar.
string
The contact’s phone number. For example, 9000090000.
string
The contact’s email address. For example, gaurav.kumar@example.com.
string
Classification for the contact being created. For example, employee. Classifications are available by default:
  • vendor
  • customer
  • employee
  • self
Additional Classifications can be created via the Dashboard and then used in APIs. It is not possible to create new Classifications via API.
string
A reference you entered for the contact. For example, Acme Contact ID 12345.
string
This parameter is populated if the contact was created as part of a bulk upload. For example, batch_00000000000001.
boolean
Possible values:
  • true: active
  • false: inactive
object
User-entered notes for internal reference. This is a key-value pair. You can enter a maximum of 15 key-value pairs. For example, "note_key": "Beam me up Scotty”.
integer
Timestamp, in Unix, when the contact was created. For example, 1545320320.
string
The type of fund account being created. Here, it will be mobile.
object
The contact’s mobile number to which you wish to make a payout.
string
required
Account holder’s mobile number containing 10 digits.
string
The name linked to the mobile number.
string
The contact’s VPA (UPI) details.
string
The user name from the VPA (UPI). For example, gauravkumar.
string
The handle from the VPA (UPI) address. For example, exampleupi.
string
The VPA (UPI) address. For example, gauravkumar@exampleupi.
string
This parameter is populated if the contact was created as part of a bulk upload. For example, batch_00000000000001.
boolean
Possible values:
  • true: active
  • false: inactive
integer
Timestamp, in Unix, when the contact was created. For example, 1545320320.
integer
The payout amount, in paise. For example, if the amount transferred is ₹100, it will display 10000.
This value does not include fees and tax. Fees and tax, if any, are deducted from your account balance.
string
The payout currency. Here, it is INR.
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”.
integer
The fees for the payout. This field is populated only when the payout moves to the processing state. For example, 59
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, 9
string
The payout status. Possible payout states:
string
The purpose of the payout. Classifications available by default:
  • refund
  • cashback
  • payout
  • salary
  • utility bill
  • vendor bill
string
The unique transaction number linked to a payout. For example, UPI2928292020.
string
Here, it is UPI.
string
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.
string
This is a custom note that also appears on the bank statement.

If no value is passed for this parameter, it defaults to the Merchant Billing Label.
string
This parameter is populated if the contact was created as part of a bulk upload. For example, batch_00000000000001
string
The reason why the payout has failed (only in case of a failure, else it will return a null value).
string
This parameter returns the merchant id. For example, Pup4LDLiA1DssX
string
This parameter returns the status id of the payout. For example, R7aA38hQzg5TDj
object
This parameter returns the current status of the payout. For example, IMPS is not enabled on beneficiary account, Retry with different mode.
string
A description for the error. For example, IMPS is not enabled on beneficiary account, please retry with different mode.
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.
string
Reason for the current status. For example, imps_not_allowed. Payout Status Details and Next Steps.
integer
Timestamp, in Unix, when the payout was created. For example, 1545320320.
string
Indicates the fee type charged for the payout. Possible values is free_payout.

Errors

Code: 400No linked VPA (UPI) found for the entered mobile number.Solution: Enter a mobile number which is linked to a VPA.
Code: 400Account holder name is not matching with the name fetched from the bank.Solution: account_holder_name is optional. Enter this only if you are sure of the name linked to the phone number, as per bank records. System will validate the name only if entered.
Code: 400Entered mobile number is not 10-digit long.Solution: Enter the correct 10-digit mobile number, without country code.
Code: 500Server error. Unable to fetch account details from the server.Solution: This is due to the NPCI mapper API being unresponsive. Retry the request after sometime.