curl -X POST https://api.razorpay.com/v2/accounts \
-u [YOUR_KEY_ID]:[YOUR_SECRET] \
-H "Content-Type: application/json" \
-H "Idempotency-Key: 53cda91c-8f81-4e77-bbb9-7388f4ac6bf4" \
-d '{
"type": "route",
"tnc_accepted": true,
"reference_id": "Vendor_lvr_88421",
"legal_business_name": "Ravi Kumar",
"business_type": "individual",
"email": "ravi.kumar@example.com",
"phone": "+919876543210",
"legal_info": {
"pan": "AAACL1234C"
},
"notes": {
"property_id": "BLR_HSR_42B",
"city": "Bengaluru"
},
"settlement_accounts": [
{
"method": "upi",
"upi": {
"vpa": "ravi.kumar@okhdfcbank",
"beneficiary_name": "Ravi Kumar",
"currency": "INR",
"is_default": true
}
}
]
}'
curl -X POST https://api.razorpay.com/v2/accounts \
-u [YOUR_KEY_ID]:[YOUR_SECRET] \
-H "Content-Type: application/json" \
-H "Idempotency-Key: 7a3e1f9c-22ab-4d11-8e9a-3c8b91d6f201" \
-d '{
"type": "route",
"tnc_accepted": true,
"reference_id": "Vendor_lvr_88422",
"legal_business_name": "Priya Sharma",
"business_type": "individual",
"email": "priya@example.com",
"phone": "+919812345678",
"legal_info": {
"pan": "BCEDP5678Q"
},
"notes": {
"property_id": "BLR_KOR_17A",
"city": "Bengaluru"
},
"settlement_accounts": [
{
"method": "bank_account",
"bank_account": {
"account_number": "1234567890123456",
"beneficiary_name": "Priya Sharma",
"code_type": "ifsc",
"code": "HDFC0000317",
"currency": "INR",
"is_default": true
}
}
]
}'
{
"id": "acc_GLGeLkU2JUeyDZ",
"entity": "linked_account",
"type": "route",
"reference_id": "Vendor_lvr_88421",
"status": "created",
"business_type": "individual",
"legal_business_name": "Ravi Kumar",
"customer_facing_business_name": "Ravi Kumar",
"email": "ravi.kumar@example.com",
"phone": "+919876543210",
"legal_info": {
"pan": "AAACL1234C"
},
"product_config": {
"id": "acc_prd_K1eopFF8G21tux",
"entity": "product",
"product_name": "route",
"activation_status": "activated",
"active_configuration": {
"settlement_accounts": [
{
"id": "sa_M1a2b3c4d5e6f7g8",
"entity": "settlement_account",
"method": "upi",
"upi": {
"vpa": "ravi.kumar@okhdfcbank",
"beneficiary_name": "Ravi Kumar",
"currency": "INR",
"is_default": true
},
"verification_status": "verified",
"verified_at": 1708445520,
"active": true
}
]
}
},
"tnc": {
"id": "tnc_K1eopApuHyBE7D",
"accepted": true,
"accepted_at": 1708445500
},
"notes": {},
"created_at": 1708445500
}
{
"id": "acc_GLGeognbHVDkDZ",
"entity": "linked_account",
"type": "route",
"reference_id": "Vendor_lvr_88422",
"status": "created",
"business_type": "individual",
"legal_business_name": "Priya Sharma",
"customer_facing_business_name": "Priya Sharma",
"email": "priya@example.com",
"phone": "+919812345678",
"legal_info": {
"pan": "BCEDP5678Q"
},
"product_config": {
"id": "acc_prd_K1eopGG9H32uvy",
"entity": "product",
"product_name": "route",
"activation_status": "activated",
"active_configuration": {
"settlement_accounts": [
{
"id": "sa_M1a2b3c4d5e6f7g9",
"entity": "settlement_account",
"method": "bank_account",
"bank_account": {
"account_number": "XXXXXXXXXXXXXX56",
"beneficiary_name": "Priya Sharma",
"code_type": "ifsc",
"code": "HDFC0000317",
"currency": "INR",
"is_default": true
},
"verification_status": "pending",
"active": true
}
]
}
},
"tnc": {
"id": "tnc_K1eopBqvIzCF8E",
"accepted": true,
"accepted_at": 1708445600
},
"notes": {
"property_id": "BLR_KOR_17A",
"city": "Bengaluru"
},
"created_at": 1708445600
}
{
"error": {
"code": "BAD_REQUEST_ERROR",
"description": "Invalid VPA. Please enter a valid Virtual Payment Address",
"source": "api",
"step": "validation",
"reason": "invalid_vpa_format",
"field": "settlement_accounts[0].upi.vpa",
"metadata": {
"reference_id": "Vendor_lvr_88421",
"idempotency_key": "53cda91c-8f81-4e77-bbb9-7388f4ac6bf4"
}
}
}
Create a Linked Account (Composite)
Create a Linked Account with settlement destination in a single atomic API call using Razorpay Route Composite API.
curl -X POST https://api.razorpay.com/v2/accounts \
-u [YOUR_KEY_ID]:[YOUR_SECRET] \
-H "Content-Type: application/json" \
-H "Idempotency-Key: 53cda91c-8f81-4e77-bbb9-7388f4ac6bf4" \
-d '{
"type": "route",
"tnc_accepted": true,
"reference_id": "Vendor_lvr_88421",
"legal_business_name": "Ravi Kumar",
"business_type": "individual",
"email": "ravi.kumar@example.com",
"phone": "+919876543210",
"legal_info": {
"pan": "AAACL1234C"
},
"notes": {
"property_id": "BLR_HSR_42B",
"city": "Bengaluru"
},
"settlement_accounts": [
{
"method": "upi",
"upi": {
"vpa": "ravi.kumar@okhdfcbank",
"beneficiary_name": "Ravi Kumar",
"currency": "INR",
"is_default": true
}
}
]
}'
curl -X POST https://api.razorpay.com/v2/accounts \
-u [YOUR_KEY_ID]:[YOUR_SECRET] \
-H "Content-Type: application/json" \
-H "Idempotency-Key: 7a3e1f9c-22ab-4d11-8e9a-3c8b91d6f201" \
-d '{
"type": "route",
"tnc_accepted": true,
"reference_id": "Vendor_lvr_88422",
"legal_business_name": "Priya Sharma",
"business_type": "individual",
"email": "priya@example.com",
"phone": "+919812345678",
"legal_info": {
"pan": "BCEDP5678Q"
},
"notes": {
"property_id": "BLR_KOR_17A",
"city": "Bengaluru"
},
"settlement_accounts": [
{
"method": "bank_account",
"bank_account": {
"account_number": "1234567890123456",
"beneficiary_name": "Priya Sharma",
"code_type": "ifsc",
"code": "HDFC0000317",
"currency": "INR",
"is_default": true
}
}
]
}'
{
"id": "acc_GLGeLkU2JUeyDZ",
"entity": "linked_account",
"type": "route",
"reference_id": "Vendor_lvr_88421",
"status": "created",
"business_type": "individual",
"legal_business_name": "Ravi Kumar",
"customer_facing_business_name": "Ravi Kumar",
"email": "ravi.kumar@example.com",
"phone": "+919876543210",
"legal_info": {
"pan": "AAACL1234C"
},
"product_config": {
"id": "acc_prd_K1eopFF8G21tux",
"entity": "product",
"product_name": "route",
"activation_status": "activated",
"active_configuration": {
"settlement_accounts": [
{
"id": "sa_M1a2b3c4d5e6f7g8",
"entity": "settlement_account",
"method": "upi",
"upi": {
"vpa": "ravi.kumar@okhdfcbank",
"beneficiary_name": "Ravi Kumar",
"currency": "INR",
"is_default": true
},
"verification_status": "verified",
"verified_at": 1708445520,
"active": true
}
]
}
},
"tnc": {
"id": "tnc_K1eopApuHyBE7D",
"accepted": true,
"accepted_at": 1708445500
},
"notes": {},
"created_at": 1708445500
}
{
"id": "acc_GLGeognbHVDkDZ",
"entity": "linked_account",
"type": "route",
"reference_id": "Vendor_lvr_88422",
"status": "created",
"business_type": "individual",
"legal_business_name": "Priya Sharma",
"customer_facing_business_name": "Priya Sharma",
"email": "priya@example.com",
"phone": "+919812345678",
"legal_info": {
"pan": "BCEDP5678Q"
},
"product_config": {
"id": "acc_prd_K1eopGG9H32uvy",
"entity": "product",
"product_name": "route",
"activation_status": "activated",
"active_configuration": {
"settlement_accounts": [
{
"id": "sa_M1a2b3c4d5e6f7g9",
"entity": "settlement_account",
"method": "bank_account",
"bank_account": {
"account_number": "XXXXXXXXXXXXXX56",
"beneficiary_name": "Priya Sharma",
"code_type": "ifsc",
"code": "HDFC0000317",
"currency": "INR",
"is_default": true
},
"verification_status": "pending",
"active": true
}
]
}
},
"tnc": {
"id": "tnc_K1eopBqvIzCF8E",
"accepted": true,
"accepted_at": 1708445600
},
"notes": {
"property_id": "BLR_KOR_17A",
"city": "Bengaluru"
},
"created_at": 1708445600
}
{
"error": {
"code": "BAD_REQUEST_ERROR",
"description": "Invalid VPA. Please enter a valid Virtual Payment Address",
"source": "api",
"step": "validation",
"reason": "invalid_vpa_format",
"field": "settlement_accounts[0].upi.vpa",
"metadata": {
"reference_id": "Vendor_lvr_88421",
"idempotency_key": "53cda91c-8f81-4e77-bbb9-7388f4ac6bf4"
}
}
}
settlement_accounts array is present in the request body, the endpoint runs in composite mode and atomically creates the linked account, product configuration (Route), and settlement account. If any part fails, nothing is persisted — there is no half-onboarded state to reconcile.
curl -X POST https://api.razorpay.com/v2/accounts \
-u [YOUR_KEY_ID]:[YOUR_SECRET] \
-H "Content-Type: application/json" \
-H "Idempotency-Key: 53cda91c-8f81-4e77-bbb9-7388f4ac6bf4" \
-d '{
"type": "route",
"tnc_accepted": true,
"reference_id": "Vendor_lvr_88421",
"legal_business_name": "Ravi Kumar",
"business_type": "individual",
"email": "ravi.kumar@example.com",
"phone": "+919876543210",
"legal_info": {
"pan": "AAACL1234C"
},
"notes": {
"property_id": "BLR_HSR_42B",
"city": "Bengaluru"
},
"settlement_accounts": [
{
"method": "upi",
"upi": {
"vpa": "ravi.kumar@okhdfcbank",
"beneficiary_name": "Ravi Kumar",
"currency": "INR",
"is_default": true
}
}
]
}'
curl -X POST https://api.razorpay.com/v2/accounts \
-u [YOUR_KEY_ID]:[YOUR_SECRET] \
-H "Content-Type: application/json" \
-H "Idempotency-Key: 7a3e1f9c-22ab-4d11-8e9a-3c8b91d6f201" \
-d '{
"type": "route",
"tnc_accepted": true,
"reference_id": "Vendor_lvr_88422",
"legal_business_name": "Priya Sharma",
"business_type": "individual",
"email": "priya@example.com",
"phone": "+919812345678",
"legal_info": {
"pan": "BCEDP5678Q"
},
"notes": {
"property_id": "BLR_KOR_17A",
"city": "Bengaluru"
},
"settlement_accounts": [
{
"method": "bank_account",
"bank_account": {
"account_number": "1234567890123456",
"beneficiary_name": "Priya Sharma",
"code_type": "ifsc",
"code": "HDFC0000317",
"currency": "INR",
"is_default": true
}
}
]
}'
{
"id": "acc_GLGeLkU2JUeyDZ",
"entity": "linked_account",
"type": "route",
"reference_id": "Vendor_lvr_88421",
"status": "created",
"business_type": "individual",
"legal_business_name": "Ravi Kumar",
"customer_facing_business_name": "Ravi Kumar",
"email": "ravi.kumar@example.com",
"phone": "+919876543210",
"legal_info": {
"pan": "AAACL1234C"
},
"product_config": {
"id": "acc_prd_K1eopFF8G21tux",
"entity": "product",
"product_name": "route",
"activation_status": "activated",
"active_configuration": {
"settlement_accounts": [
{
"id": "sa_M1a2b3c4d5e6f7g8",
"entity": "settlement_account",
"method": "upi",
"upi": {
"vpa": "ravi.kumar@okhdfcbank",
"beneficiary_name": "Ravi Kumar",
"currency": "INR",
"is_default": true
},
"verification_status": "verified",
"verified_at": 1708445520,
"active": true
}
]
}
},
"tnc": {
"id": "tnc_K1eopApuHyBE7D",
"accepted": true,
"accepted_at": 1708445500
},
"notes": {},
"created_at": 1708445500
}
{
"id": "acc_GLGeognbHVDkDZ",
"entity": "linked_account",
"type": "route",
"reference_id": "Vendor_lvr_88422",
"status": "created",
"business_type": "individual",
"legal_business_name": "Priya Sharma",
"customer_facing_business_name": "Priya Sharma",
"email": "priya@example.com",
"phone": "+919812345678",
"legal_info": {
"pan": "BCEDP5678Q"
},
"product_config": {
"id": "acc_prd_K1eopGG9H32uvy",
"entity": "product",
"product_name": "route",
"activation_status": "activated",
"active_configuration": {
"settlement_accounts": [
{
"id": "sa_M1a2b3c4d5e6f7g9",
"entity": "settlement_account",
"method": "bank_account",
"bank_account": {
"account_number": "XXXXXXXXXXXXXX56",
"beneficiary_name": "Priya Sharma",
"code_type": "ifsc",
"code": "HDFC0000317",
"currency": "INR",
"is_default": true
},
"verification_status": "pending",
"active": true
}
]
}
},
"tnc": {
"id": "tnc_K1eopBqvIzCF8E",
"accepted": true,
"accepted_at": 1708445600
},
"notes": {
"property_id": "BLR_KOR_17A",
"city": "Bengaluru"
},
"created_at": 1708445600
}
{
"error": {
"code": "BAD_REQUEST_ERROR",
"description": "Invalid VPA. Please enter a valid Virtual Payment Address",
"source": "api",
"step": "validation",
"reason": "invalid_vpa_format",
"field": "settlement_accounts[0].upi.vpa",
"metadata": {
"reference_id": "Vendor_lvr_88421",
"idempotency_key": "53cda91c-8f81-4e77-bbb9-7388f4ac6bf4"
}
}
}
Request Parameters
route.true/false.+<country code>. For example, +919876543210.- This is a 10-digit alphanumeric code. For example,
AVOJB1111K. - The 4th digit should be either of ‘C’, ‘H’, ‘F’, ‘A’, ‘T’, ‘B’, ‘J’, ‘G’, ‘L’.
- The regex for Company PAN is
/^[a-zA-z]{5}\d{4}[a-zA-Z]{1}$/. - The
business_typeis validated against the PAN type.
- This is a 15-digit PAN-based unique identification number.
- The Regex for GSTIN is
/^[0123][0-9][a-z]{5}[0-9]{4}[a-z][0-9][a-z0-9][a-z0-9]$/gi.
legal_business_name.primary and secondary).stakeholder object is supplied.registered, residential).400 BAD_REQUEST with reason: feature_not_enabled.upi, bank_account.method is upi.username@psp. The VPA must be validated and active on the vendor’s UPI app before submission.INR.true. We currently support only 1 method per settlement account.method is bank_account.ifsc.AAAA0XXXXXX.INR.true. We currently support only 1 method per settlement account.Response Parameters
acc_GLGeLkU2JUeyDZ.linked_account.route.created. Transfers can be initiated immediately once the account is in created status.stakeholder object was supplied in the request.stakeholder.product.route.sa_M1a2b3c4d5e6f7g8.settlement_account.upi, bank_account. Bank account numbers are returned masked, showing only the last 2 characters. For example, XXXXXXXXXXXXXX56.verified in the response. For bank accounts, verification happens asynchronously via penny drop (10–15 minutes) and the status starts as pending.verification_status is verified.true.Errors
The input field is required.
The input field is required.
400This error occurs when a mandatory field is absent in the request body.Solution: Check the metadata.missing_fields array in the error response to identify and add the missing field.The settlement_accounts array is required.
The settlement_accounts array is required.
400This error occurs when the settlement_accounts array is absent from the request body.Solution: Add exactly one settlement account object to the array.The settlement_accounts array must contain at least one destination.
The settlement_accounts array must contain at least one destination.
400This error occurs when settlement_accounts is present but is an empty array.Solution: Add exactly one settlement account object to the array.More than one entry was provided in settlement_accounts.
More than one entry was provided in settlement_accounts.
400This error occurs when more than one settlement destination is provided. We currently support only 1 method per settlement account.Solution: Send exactly one entry in settlement_accounts.Invalid business_type.
Invalid business_type.
400This error occurs when the business_type value is not one of the supported enum values.Solution: Use one of the supported business_type values.PAN is not 10 characters or has an invalid format.
PAN is not 10 characters or has an invalid format.
400This error occurs when the legal_info.pan value does not match the expected 10-character alphanumeric format.Solution: Validate the PAN format on your side before submission.The business_type does not match the entity type derived from the PAN.
The business_type does not match the entity type derived from the PAN.
400This error occurs when the 4th character of the PAN (which encodes the entity type) conflicts with the provided business_type.Solution: Align the business_type with the entity encoded in the PAN.The Terms and Conditions have not been accepted.
The Terms and Conditions have not been accepted.
400This error occurs when tnc_accepted is missing or set to false.Solution: Set tnc_accepted to true.The reference_id format is invalid.
The reference_id format is invalid.
400This error occurs when the reference_id is shorter than 1 character or longer than 512 characters.Solution: Ensure reference_id is between 1 and 512 characters.The reference_id is already associated with another Linked Account.
The reference_id is already associated with another Linked Account.
409This error occurs when the provided reference_id maps to an existing Linked Account under the same parent merchant.Solution: Check your mapping table. If the vendor was onboarded earlier, fetch the account using GET /v2/accounts/:account_id.The PAN is already linked to another Linked Account under this merchant.
The PAN is already linked to another Linked Account under this merchant.
409This error occurs when the PAN has already been used to create a Linked Account.Solution: This is likely a previous onboarding attempt. Reconcile and reuse the existing account.Invalid GSTIN format.
Invalid GSTIN format.
400This error occurs when legal_info.gst is not a valid 15-character GSTIN.Solution: Validate the GSTIN format on your side before submission.GST is required for this business type.
GST is required for this business type.
400This error occurs when legal_info.gst is not provided for a vendor company whose declared turnover is above ₹20 lakh.Solution: Pass a valid legal_info.gst value for the vendor company.Invalid phone number format.
Invalid phone number format.
400This error occurs when phone is not 8–15 digits, optionally prefixed with + and a country code.Solution: Validate the phone number format on your side before submission.legal_business_name length is out of range.
legal_business_name length is out of range.
400This error occurs when legal_business_name is shorter than 4 characters or longer than 200 characters.Solution: Ensure legal_business_name is between 4 and 200 characters.Stakeholder PAN is required when the stakeholder block is supplied.
Stakeholder PAN is required when the stakeholder block is supplied.
400This error occurs when a stakeholder object is passed without kyc.pan.Solution: Include a valid stakeholder.kyc.pan whenever the stakeholder object is supplied, or omit the stakeholder object entirely.Stakeholder PAN format is invalid.
Stakeholder PAN format is invalid.
400This error occurs when stakeholder.kyc.pan does not match the expected 10-character alphanumeric PAN format.Solution: Validate the stakeholder PAN format on your side before submission.Invalid method.
Invalid method.
400This error occurs when settlement_accounts[].method is not one of the supported values.Solution: Use bank_account or upi as the settlement method.The bank account number length is invalid.
The bank account number length is invalid.
400This error occurs when settlement_accounts[].bank_account.account_number is shorter than 5 or longer than 20 characters.Solution: Ensure the account number is between 5 and 20 characters.The VPA format is invalid.
The VPA format is invalid.
400This error occurs when the VPA is not in the username@psp format.Solution: Validate the VPA format on your side before submission.Invalid IFSC Code.
Invalid IFSC Code.
400This error occurs when the IFSC code is not 11 characters or does not match the expected format.Solution: Validate the IFSC code on your side before submission.Currency is not supported.
Currency is not supported.
400This error occurs when settlement_accounts[].upi.currency or settlement_accounts[].bank_account.currency is not INR.Solution: Pass INR as the currency value.Only one default value is allowed per method.
Only one default value is allowed per method.
400This error occurs when more than one settlement destination for the same method is marked is_default: true.Solution: Ensure only one settlement destination per method has is_default set to true.The VPA does not exist or is inactive on the UPI registry.
The VPA does not exist or is inactive on the UPI registry.
422This error occurs when the VPA cannot be found or has not been activated on the vendor’s UPI app.Solution: Prompt the vendor to verify and activate the VPA on their UPI app before resubmitting.The beneficiary name does not match the name registered with the VPA or bank account.
The beneficiary name does not match the name registered with the VPA or bank account.
422This error occurs when the beneficiary_name provided does not match the name registered with the VPA or bank account.Solution: Re-confirm the exact name with the vendor and update the beneficiary_name accordingly.Bank account verification failed.
Bank account verification failed.
422This error occurs asynchronously when the penny drop verification on settlement_accounts[].bank_account fails.Solution: Verify the account number and IFSC code with the vendor, then update the settlement account.The Route product is not enabled on the parent merchant account.
The Route product is not enabled on the parent merchant account.
403This error occurs when the Route product has not been enabled on the parent platform account.Solution: Contact your Razorpay Integration Manager to enable Route on your parent account.The API key/secret provided is invalid.
The API key/secret provided is invalid.
401This error occurs when the API credentials passed do not match the parent platform account’s credentials.Solution: Ensure you are using the parent platform account’s Key ID and Key Secret, not the Linked Account’s credentials.The same Idempotency-Key was reused with a different request body.
The same Idempotency-Key was reused with a different request body.
409This error occurs when a previously used Idempotency-Key is sent again with a request body that does not match the original.Solution: Generate a new Idempotency-Key for a different request, or resend the exact original request body to get the cached response.Rate limit exceeded.
Rate limit exceeded.
429This error occurs when the number of onboarding requests exceeds the allowed rate.Solution: Throttle requests on your side and retry after the duration specified in the Retry-After header.Internal server error.
Internal server error.
500This error occurs due to a transient failure on Razorpay’s servers. Nothing is persisted for this request.Solution: Retry the request using the same Idempotency-Key.Was this page helpful?