API Test Keys
Make a Request Idempotent
POST/v1/payoutsClick to copy
To make a request idempotent, add the header X-Payout-Idempotency to the request and pass an idempotency key against it. Currently, idempotency is supported only on the Create Payout API and the Composite APIs.
Watch Out!
Idempotency key has been made mandatory for all payout requests since March 15, 2025
Points to Consider:
- An idempotency key is a unique value generated by you. Our servers use this key to recognise subsequent retries of the same request.
- The idempotency key (4-36 characters) can only contain alphabets, numbers, hyphens, underscores and space. For example,
53cda91c-8f81-4e77-bbb9-7388f4ac6bf4is an idempotency key. - When retrying a request, the request body must be the same as the first request for idempotency to work. A different payload will be rejected as a
BAD_REQUEST. - The idempotency key in retries must be the same as the original request.
- Use unique idempotency keys for each unique request.
We recommend you generate the key using a version 4 (random) UUID generator.
Is this page helpful?
1curl -u [YOUR_KEY_ID]:[YOUR_KEY_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"fund_account_id": "fa_00000000000001",8"amount": 1000000,9"currency": "INR",10"mode": "IMPS",11"purpose": "refund",12"queue_if_low_balance": true,13"reference_id": "Acme Transaction ID 12345",14"narration": "Acme Corp Fund Transfer",15"notes": {16"notes_key_1":"Tea, Earl Grey, Hot",17"notes_key_2":"Tea, Earl Grey… decaf."18}19}'
Success
Failure
1{2"id": "pout_00000000000001",3"entity": "payout",4"fund_account_id": "fa_00000000000001",5"amount": 1000000,6"currency": "INR",7"notes": {8"notes_key_1":"Tea, Earl Grey, Hot",9"notes_key_2":"Tea, Earl Grey… decaf."10},11"fees": 0,12"tax": 0,13"status": "queued",14"utr": null,15"mode": "IMPS",16"purpose": "refund",17"reference_id": "Acme Transaction ID 12345",18"narration": "Acme Corp Fund Transfer",19"batch_id": null,20"status_details": null,21"created_at": 154538303722}
Request Parameters
account_number*
string The account from which you want to make the payout. 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.
fund_account_id*
string The unique identifier linked to a fund account. For example, fa_00000000000001.
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*
stringThe mode to be used to create the payout. Available modes:
NEFTRTGSIMPScard
The payout modes are case-sensitive. When creating payouts using APIs, ensure payout modes are entered in upper case.
purpose*
stringThe purpose of the payout that is being created. The following classifications are available in the system by default:
refundcashbackpayoutsalaryutility billvendor 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.queue_if_low_balancebooleanPossible 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_idstring A user-generated reference given to the payout. Maximum length is 40 characters. For example, Acme Transaction ID 12345. You can use this field to store your own transaction ID, if any.
narrationstring Custom note that also appears on the bank statement. Maximum length 30 characters. Allowed characters: a-z, A-Z, 0-9 and space.
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.
notesarray of objects Multiple key-value pairs 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
idstring The unique identifier of the order. For example, pout_00000000000001.
entitystring The entity being created. Here, it will be payout.
fund_account_idstring The unique identifier linked to the fund account. For example, fa_00000000000001.
amountinteger The payout amount, in paise. For example, if you want to transfer ₹10,000, pass 1000000. Minimum value 100. The value passed here does not include fees and tax. Fees and tax, if any, are deducted from your account balance.
currencystring The payout's currency. Here, it is INR.
notesarray 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”.
feesinteger The fees for the payout. This value is returned only when the payout moves to the processing state. For example, 5.
taxinteger The tax applicable for the fee being charged. This value is returned only when the payout moves to the processing state. For example, 1.
statusstringThe status of the payout. Possible payout states:
queuedpending(if you have enabled)rejected(if you have enabled)processingprocessedcancelledreversedfailed
Know more about
and .utrstring The unique transaction number linked to a payout. For example, HDFCN00000000001.
modestringThe mode used to make the payout. Available modes:
NEFTRTGSIMPScard
The payout modes are case-sensitive.
purposestringThe purpose of the payout that is being created. The following classifications are available in the system by default:
refundcashbackpayoutsalaryutility billvendor bill
reference_idstring A user-generated reference given to the payout. Maximum length is 40 characters. For example, Acme Transaction ID 12345. You can use this field to store your own transaction ID, if any.
narrationstring This is a custom note that also appears on the bank statement. Maximum length 30 characters. Allowed characters: a-z, A-Z, 0-9 and space.
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_idstring This value is returned if the Contact was created as part of a bulk upload. For example, batch_00000000000001.
status_detailsobject 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_atintegerIndicates the Unix timestamp when this order was created.
fee_typestring Indicates the fee type charged for the payout. Possible values is free_payout.
Errors
Idempotency key is missing. Include idempotency header and key in the request.
Error Status: 400
Idempotency key is mandatory.
Solution
Make a Request Idempotent
POST/v1/payoutsClick to copy
To make a request idempotent, add the header X-Payout-Idempotency to the request and pass an idempotency key against it. Currently, idempotency is supported only on the Create Payout API and the Composite APIs.
Watch Out!
Idempotency key has been made mandatory for all payout requests since March 15, 2025
Points to Consider:
- An idempotency key is a unique value generated by you. Our servers use this key to recognise subsequent retries of the same request.
- The idempotency key (4-36 characters) can only contain alphabets, numbers, hyphens, underscores and space. For example,
53cda91c-8f81-4e77-bbb9-7388f4ac6bf4is an idempotency key. - When retrying a request, the request body must be the same as the first request for idempotency to work. A different payload will be rejected as a
BAD_REQUEST. - The idempotency key in retries must be the same as the original request.
- Use unique idempotency keys for each unique request.
We recommend you generate the key using a version 4 (random) UUID generator.
Is this page helpful?
Request Parameters
account_number*
string The account from which you want to make the payout. 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.
fund_account_id*
string The unique identifier linked to a fund account. For example, fa_00000000000001.
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*
stringThe mode to be used to create the payout. Available modes:
NEFTRTGSIMPScard
The payout modes are case-sensitive. When creating payouts using APIs, ensure payout modes are entered in upper case.
purpose*
stringThe purpose of the payout that is being created. The following classifications are available in the system by default:
refundcashbackpayoutsalaryutility billvendor 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.queue_if_low_balancebooleanPossible 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_idstring A user-generated reference given to the payout. Maximum length is 40 characters. For example, Acme Transaction ID 12345. You can use this field to store your own transaction ID, if any.
narrationstring Custom note that also appears on the bank statement. Maximum length 30 characters. Allowed characters: a-z, A-Z, 0-9 and space.
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.
notesarray of objects Multiple key-value pairs 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
idstring The unique identifier of the order. For example, pout_00000000000001.
entitystring The entity being created. Here, it will be payout.
fund_account_idstring The unique identifier linked to the fund account. For example, fa_00000000000001.
amountinteger The payout amount, in paise. For example, if you want to transfer ₹10,000, pass 1000000. Minimum value 100. The value passed here does not include fees and tax. Fees and tax, if any, are deducted from your account balance.
currencystring The payout's currency. Here, it is INR.
notesarray 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”.
feesinteger The fees for the payout. This value is returned only when the payout moves to the processing state. For example, 5.
taxinteger The tax applicable for the fee being charged. This value is returned only when the payout moves to the processing state. For example, 1.
statusstringThe status of the payout. Possible payout states:
queuedpending(if you have enabled)rejected(if you have enabled)processingprocessedcancelledreversedfailed
Know more about
and .utrstring The unique transaction number linked to a payout. For example, HDFCN00000000001.
modestringThe mode used to make the payout. Available modes:
NEFTRTGSIMPScard
The payout modes are case-sensitive.
purposestringThe purpose of the payout that is being created. The following classifications are available in the system by default:
refundcashbackpayoutsalaryutility billvendor bill
reference_idstring A user-generated reference given to the payout. Maximum length is 40 characters. For example, Acme Transaction ID 12345. You can use this field to store your own transaction ID, if any.
narrationstring This is a custom note that also appears on the bank statement. Maximum length 30 characters. Allowed characters: a-z, A-Z, 0-9 and space.
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_idstring This value is returned if the Contact was created as part of a bulk upload. For example, batch_00000000000001.
status_detailsobject 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_atintegerIndicates the Unix timestamp when this order was created.
fee_typestring Indicates the fee type charged for the payout. Possible values is free_payout.
Errors
Idempotency key is missing. Include idempotency header and key in the request.
Error Status: 400
Idempotency key is mandatory.
Solution
1curl -u [YOUR_KEY_ID]:[YOUR_KEY_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"fund_account_id": "fa_00000000000001",8"amount": 1000000,9"currency": "INR",10"mode": "IMPS",11"purpose": "refund",12"queue_if_low_balance": true,13"reference_id": "Acme Transaction ID 12345",14"narration": "Acme Corp Fund Transfer",15"notes": {16"notes_key_1":"Tea, Earl Grey, Hot",17"notes_key_2":"Tea, Earl Grey… decaf."18}19}'
Success
Failure
1{2"id": "pout_00000000000001",3"entity": "payout",4"fund_account_id": "fa_00000000000001",5"amount": 1000000,6"currency": "INR",7"notes": {8"notes_key_1":"Tea, Earl Grey, Hot",9"notes_key_2":"Tea, Earl Grey… decaf."10},11"fees": 0,12"tax": 0,13"status": "queued",14"utr": null,15"mode": "IMPS",16"purpose": "refund",17"reference_id": "Acme Transaction ID 12345",18"narration": "Acme Corp Fund Transfer",19"batch_id": null,20"status_details": null,21"created_at": 154538303722}