API Test Keys

Create a Payout to VPA Using Composite API

POST
/v1/payouts

Click to copy

Watch Out!

Payout APIs are not available in Malaysia.

Use this endpoint to create a payout to VPA using Composite API.

Watch Out!

Ensure you

and pass the to make a successful payout.


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 and 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 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 and 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

.

Is this page helpful?

Curl

1
curl -u <YOUR_KEY>:<YOUR_SECRET> \
2
-X POST https://api.razorpay.com/v1/payouts \
3
-H "Content-Type: application/json" \
4
-H "X-Payout-Idempotency: 53cda91c-8f81-4e77-bbb9-7388f4ac6bf4" \
5
-d '{
6
"account_number": "7878780080316316",
7
"amount": 1000000,
8
"currency": "INR",
9
"mode": "UPI",
10
"purpose": "refund",
11
"fund_account": {
12
"account_type": "vpa",
13
"vpa": {
14
"address": "gauravkumar@exampleupi"
15
},
16
"contact": {
17
"name": "Gaurav Kumar",
18
"email": "gaurav.kumar@example.com",
19
"contact": "9876543210",
20
"type": "self",
21
"reference_id": "Acme Contact ID 12345",
22
"notes": {
23
"notes_key_1": "Tea, Earl Grey, Hot",
24
"notes_key_2": "Tea, Earl Grey… decaf."
25
}
26
}
27
},
28
"queue_if_low_balance": true,
29
"reference_id": "Acme Transaction ID 12345",
30
"narration": "Acme Corp Fund Transfer",
31
"notes": {
32
"notes_key_1": "Beam me up Scotty",
33
"notes_key_2": "Engage"
34
}
35
}'

Success

1
{
2
"id": "pout_F6891rdxBLZ6AN",
3
"entity": "payout",
4
"fund_account_id": "fa_F6891pR3KFnaY2",
5
"fund_account": {
6
"id": "fa_F6891pR3KFnaY2",
7
"entity": "fund_account",
8
"contact_id": "cont_F681qmU11CfPDl",
9
"contact": {
10
"id": "cont_F681qmU11CfPDl",
11
"entity": "contact",
12
"name": "Gaurav Kumar",
13
"contact": "9876543210",
14
"email": "gaurav.kumar@example.com",
15
"type": "employee",
16
"reference_id": "Acme Contact ID 12345",
17
"batch_id": null,
18
"active": true,
19
"notes": {
20
"notes_key_1": "Tea, Earl Grey, Hot",
21
"notes_key_2": "Tea, Earl Grey… decaf."
22
},
23
"created_at": 1592929016
24
},
25
"account_type": "vpa",
26
"batch_id": null,
27
"vpa": {
28
"username": "gauravkumar",
29
"handle": "exampleupi",
30
"address": "gauravkumar@exampleupi"
31
},
32
"active": true,
33
"created_at": 1592929424
34
},
35
"amount": 1000000,
36
"currency": "INR",
37
"notes": {
38
"notes_key_1": "Beam me up Scotty",
39
"notes_key_2": "Engage"
40
},
41
"fees": 590,
42
"tax": 90,
43
"status": "processed",
44
"purpose": "payout",
45
"utr": null,
46
"mode": "UPI",
47
"reference_id": "Acme Transaction ID 12345",
48
"narration": "Acme Corp Fund Transfer",
49
"batch_id": null,
50
"status_details": null,
51
"created_at": 1592929424,
52
"fee_type": "",
53
"error": {
54
"description": null,
55
"source": null,
56
"reason": null
57
}
58
}
Request Parameters
account_number

*

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 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 and go to My Account & Settings → Banking → Customer Identifier.
  • This value is different for Test Mode and Live Mode.

amount

*

integer

The payout amount, in paise. For example, pass 1000000 to transfer an amount of ₹10,000. Minimum value 100.
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.

mode

*

string

Here, it has to be UPI.

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

purpose

*

string

The purpose of the payout. Classifications available by default:

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

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

*

object

Details of the contact and fund account to which the payout should be made.

Show child parameters (3)

queue_if_low_balance
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.

reference_id
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.

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. 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.

notes
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
id
string

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

entity
string

The entity being created. Here, it will be payout.

fund_account_id
string

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

fund_account
object

Contact and fund account details to which the payout was made.

Show child parameters (8)

amount
integer

Minimum value 100. The payout amount, in paise. For example, if you want to transfer ₹10,000, pass 1000000.
The value passed here does not include fees and tax. Fee and tax, if any, is deducted from your account balance.

currency
string

The payout currency. Here, it is INR.

notes
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”.

fees
integer

The fees for the payout. This value is returned 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 value is returned only when the payout moves to the processing state. For example, 1.

status
string

The payout status. Possible payout states:

purpose
string

The purpose of the payout. Classifications available by default:

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

utr
string

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

mode
string

The mode used to make the payout. Refer to the

for more details. Available modes:
  • NEFT
  • RTGS
  • IMPS
  • UPI
  • card

reference_id
string

A reference you entered for the payout. For example, Acme Transaction ID 12345. You can use this field to store your own transaction ID, if any.

narration
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.

batch_id
string

This value is returned 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.

Show child parameters (3)

created_at
integer

Timestamp, in Unix, at which the payout was created. For example, 1545320320.

fee_type
string

Indicates the fee type charged for the payout. Possible value is free_payout.

Create a Payout to VPA Using Composite API

POST
/v1/payouts

Click to copy

Watch Out!

Payout APIs are not available in Malaysia.

Use this endpoint to create a payout to VPA using Composite API.

Watch Out!

Ensure you

and pass the to make a successful payout.


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 and 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 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 and 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

.

Is this page helpful?

Request Parameters
account_number

*

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 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 and go to My Account & Settings → Banking → Customer Identifier.
  • This value is different for Test Mode and Live Mode.

amount

*

integer

The payout amount, in paise. For example, pass 1000000 to transfer an amount of ₹10,000. Minimum value 100.
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.

mode

*

string

Here, it has to be UPI.

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

purpose

*

string

The purpose of the payout. Classifications available by default:

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

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

*

object

Details of the contact and fund account to which the payout should be made.

Show child parameters (3)

queue_if_low_balance
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.

reference_id
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.

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. 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.

notes
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
id
string

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

entity
string

The entity being created. Here, it will be payout.

fund_account_id
string

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

fund_account
object

Contact and fund account details to which the payout was made.

Show child parameters (8)

amount
integer

Minimum value 100. The payout amount, in paise. For example, if you want to transfer ₹10,000, pass 1000000.
The value passed here does not include fees and tax. Fee and tax, if any, is deducted from your account balance.

currency
string

The payout currency. Here, it is INR.

notes
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”.

fees
integer

The fees for the payout. This value is returned 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 value is returned only when the payout moves to the processing state. For example, 1.

status
string

The payout status. Possible payout states:

purpose
string

The purpose of the payout. Classifications available by default:

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

utr
string

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

mode
string

The mode used to make the payout. Refer to the

for more details. Available modes:
  • NEFT
  • RTGS
  • IMPS
  • UPI
  • card

reference_id
string

A reference you entered for the payout. For example, Acme Transaction ID 12345. You can use this field to store your own transaction ID, if any.

narration
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.

batch_id
string

This value is returned 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.

Show child parameters (3)

created_at
integer

Timestamp, in Unix, at which the payout was created. For example, 1545320320.

fee_type
string

Indicates the fee type charged for the payout. Possible value is free_payout.

Curl

1
curl -u <YOUR_KEY>:<YOUR_SECRET> \
2
-X POST https://api.razorpay.com/v1/payouts \
3
-H "Content-Type: application/json" \
4
-H "X-Payout-Idempotency: 53cda91c-8f81-4e77-bbb9-7388f4ac6bf4" \
5
-d '{
6
"account_number": "7878780080316316",
7
"amount": 1000000,
8
"currency": "INR",
9
"mode": "UPI",
10
"purpose": "refund",
11
"fund_account": {
12
"account_type": "vpa",
13
"vpa": {
14
"address": "gauravkumar@exampleupi"
15
},
16
"contact": {
17
"name": "Gaurav Kumar",
18
"email": "gaurav.kumar@example.com",
19
"contact": "9876543210",
20
"type": "self",
21
"reference_id": "Acme Contact ID 12345",
22
"notes": {
23
"notes_key_1": "Tea, Earl Grey, Hot",
24
"notes_key_2": "Tea, Earl Grey… decaf."
25
}
26
}
27
},
28
"queue_if_low_balance": true,
29
"reference_id": "Acme Transaction ID 12345",
30
"narration": "Acme Corp Fund Transfer",
31
"notes": {
32
"notes_key_1": "Beam me up Scotty",
33
"notes_key_2": "Engage"
34
}
35
}'

Success

1
{
2
"id": "pout_F6891rdxBLZ6AN",
3
"entity": "payout",
4
"fund_account_id": "fa_F6891pR3KFnaY2",
5
"fund_account": {
6
"id": "fa_F6891pR3KFnaY2",
7
"entity": "fund_account",
8
"contact_id": "cont_F681qmU11CfPDl",
9
"contact": {
10
"id": "cont_F681qmU11CfPDl",
11
"entity": "contact",
12
"name": "Gaurav Kumar",
13
"contact": "9876543210",
14
"email": "gaurav.kumar@example.com",
15
"type": "employee",
16
"reference_id": "Acme Contact ID 12345",
17
"batch_id": null,
18
"active": true,
19
"notes": {
20
"notes_key_1": "Tea, Earl Grey, Hot",
21
"notes_key_2": "Tea, Earl Grey… decaf."
22
},
23
"created_at": 1592929016
24
},
25
"account_type": "vpa",
26
"batch_id": null,
27
"vpa": {
28
"username": "gauravkumar",
29
"handle": "exampleupi",
30
"address": "gauravkumar@exampleupi"
31
},
32
"active": true,
33
"created_at": 1592929424
34
},
35
"amount": 1000000,
36
"currency": "INR",
37
"notes": {
38
"notes_key_1": "Beam me up Scotty",
39
"notes_key_2": "Engage"
40
},
41
"fees": 590,
42
"tax": 90,
43
"status": "processed",
44
"purpose": "payout",
45
"utr": null,
46
"mode": "UPI",
47
"reference_id": "Acme Transaction ID 12345",
48
"narration": "Acme Corp Fund Transfer",
49
"batch_id": null,
50
"status_details": null,
51
"created_at": 1592929424,
52
"fee_type": "",
53
"error": {
54
"description": null,
55
"source": null,
56
"reason": null
57
}
58
}