Request a payment directly from a bank account to a beneficiary. One endpoint serves all three payout kinds — which kind a request is depends on the fields populated inside payment:
- UPI/VPA payout —
payment.txnTypeisUPI, withbenVpaset. - Account number payout —
payment.benCodeis not sent andtxnTypeis notUPI;benIFSCandbenAcctNoare set. - Beneficiary code payout —
payment.benCodeis sent; the registered beneficiary's IFSC, account number, email and mobile are used instead of any values sent in the request.
valueDate must always be the current date.
Every response is HTTP 200 OK, success or error alike — the outcome is in the response body's status and code fields. A different HTTP status is only returned when the API Gateway rejects the request before the Payout API runs (see the Gateway-level responses below).
| Time | Status | User Agent | |
|---|---|---|---|
Retrieving recent requests… | |||
Error Groups
| code | message | Meaning | “field” in errors? |
|---|---|---|---|
| PAS400 | Bad request | The request is wrong: a field is missing, has a wrong format, or contains unsafe characters. Correct the request and send it again. | Yes, except PAY188 (body could not be read) and PAY196 (wrong Content Type), which have no field |
| PAS403 | Not authorised | The maker could not be verified for the entity and program. For PAY191, PAY192 and PAY193 the error message ends with the value that failed (e.g. “Entity not found with this entityId: ENT001”). For PAY175 it is the reason given by the platform, or “User is not linked to the given entity and program” when no reason is given. | No |
| PAS409 | Duplicate request | custTxnRefNo was already used. Payout API V3 only. | Yes (custTxnRefNo) |
| PAS422 | Request could not be processed | The request is valid but a business rule or the configuration does not allow the payout. In the Payout Status Enquiry API: the program does not have payout access (PAY157) or no payout was found (PAY118). | No |
| PAS500 | Internal Server Error | Unexpected or configuration error; no errors list is returned. In the Payout API V3, if data.lastUpdatedPayoutStatus is present, the payout was already created before the error and may still be processed: check its status and do not send it again with a new custTxnRefNo. Sending the same custTxnRefNo again returns PAS409. | No errors list |
Error Codes
| Group | Code | Field | Message | Scenario(s) |
|---|---|---|---|---|
| PAS400 | PAY02 | bankCode | Bank code is required | Missing bankCode |
| PAS400 | PAY03 | bankCode | Invalid bank code | Invalid bankCode |
| PAS400 | PAY04 | debitAcctNo | Debit account number is required | Missing debitAcctNo; Several field errors together |
| PAS400 | PAY05 | debitAcctNo | Debit account number must be alphanumeric with no space | Invalid debitAcctNo |
| PAS400 | PAY08 | customerId | Customer Id is required | Missing customerId |
| PAS400 | PAY10 | custTxnRefNo | Cust Txn Ref No is required | Missing custTxnRefNo |
| PAS400 | PAY12 | custTxnRefNo | Cust Txn Ref No must be alphanumeric with no space | Invalid custTxnRefNo; Several field errors together |
| PAS400 | PAY14 | externalReferenceNumb er | External reference number is required | Missing externalReferenceNumber |
| PAS400 | PAY15 | externalReferenceNumb er | External reference number must be alphanumeric with no space | Invalid externalReferenceNumber |
| PAS400 | PAY16 | payment.valueDate | Value date is required | Missing valueDate |
| PAS400 | PAY17 | payment.valueDate | Value Date not as per specified format | valueDate in wrong format |
| PAS400 | PAY18 | payment.valueDate | Back or Future dated transaction not allowed | valueDate is not today |
| PAS400 | PAY19 | payment.benName | Beneficiary name is required | Missing benName |
| PAS400 | PAY20 | payment.benName | Beneficiary name must be alphanumeric | Invalid benName |
| PAS400 | PAY22 | payment.amount | Amount is required | Missing amount |
| PAS400 | PAY23 | payment.amount | Amount must be greater than or equal to ₹1 | Amount below 1 (NEFT); IFT: amount below IFT minimum |
| PAS400 | PAY24 | payment.amount | Invalid transaction amount | Amount is not a number; Amount with more than 2 decimals; Several field errors together |
| PAS400 | PAY25 | payment.amount | RTGS transfers require a minimum amount of 2,00,000 | RTGS amount below minimum |
| PAS400 | PAY26 | payment.amount | Range for IMPS is from 1 to 500000 | IMPS amount outside range |
| PAS400 | PAY27 | payment.amount | Minimum amount for NEFT is 1 | Amount below 1 (NEFT) |
| PAS400 | PAY28 | payment.benIFSC | IFT transactions are only valid for accounts within the same bank | IFT: beneficiary in another bank |
| PAS400 | PAY29 | payment.benAcctNo | Invalid beneficiary account for IFT | IFT: beneficiary account is the debit account |
| PAS400 | PAY30 | payment.amount | Minimum amount for IFT is 1 | IFT: amount below IFT minimum |
| PAS400 | PAY31 | payment.benIFSC | Beneficiary IFSC is required | IFT: beneficiary IFSC missing; Account payout: IFSC missing |
| PAS400 | PAY32 | payment.amount | Maximum amount for UPI based payout is 100000 | UPI amount above maximum |
| PAS400 | PAY33 | payment.amount | Amount exceeds the maximum limit of 999,999,999 | Amount above overall maximum |
| PAS400 | PAY35 | payment.txnType | Transaction type is invalid or required | Missing txnType |
| PAS400 | PAY36 | payment.benIFSC | Beneficiary IFSC format is not valid | IFT: beneficiary IFSC invalid; Account payout: IFSC invalid |
| PAS400 | PAY37 | payment.benAcctNo | Beneficiary account number is required | Account payout: account number missing |
| PAS400 | PAY38 | payment.benAcctNo | Invalid beneficiary account number | Account payout: account number invalid |
| PAS400 | PAY39 | payment.benCode | Beneficiary code is required | benCode contains only spaces |
| PAS400 | PAY43 | payment.benVpa | Beneficiary VPA is required | UPI: VPA missing |
| PAS400 | PAY44 | payment.benVpa | Beneficiary VPA is invalid | UPI: VPA invalid |
| PAS400 | PAY45 | payment.benEmail | Beneficiary email is required | Beneficiary email required by the bank |
| PAS400 | PAY46 | payment.benEmail | Invalid beneficiary email | Invalid beneficiary email |
| PAS400 | PAY47 | payment.benMobile | Beneficiary mobile number is required | Beneficiary mobile required by the bank |
| PAS400 | PAY48 | payment.benMobile | Beneficiary mobile number should have 10 digits only | Invalid beneficiary mobile |
| PAS400 | PAY49 | payment | Payout information not present | Missing payment object |
| PAS400 | PAY182 | Path of each text field that contains an HTML tag or control character (e.g. payment.benName) | Special characters are not allowed | HTML tag in a field; Control character in a field |
| PAS400 | PAY186 | callbackUrl | Invalid callback url | Invalid callbackUrl |
| PAS400 | PAY187 | Path of the field whose value could not be read (e.g. programId, payment.txnType); “payment” for a JSON syntax error inside the payment object | Invalid value or format | Malformed JSON inside payment; Field with a value of the wrong type; Unknown transaction type |
| PAS400 | PAY188 | - | Malformed request body | Malformed JSON body; Missing request body |
| PAS400 | PAY189 | entityId | Entity id is required | Missing entityId |
| PAS400 | PAY190 | programId | Program id is required | Missing programId |
| PAS400 | PAY194 | makerEmail | Maker email is required | Missing makerEmail |
| PAS400 | PAY195 | makerEmail | Invalid maker email | Invalid makerEmail |
| PAS400 | PAY196 | - | Content-Type must be application/json | Wrong Content-Type header |
| PAS400 | PAY197 | entityId | Entity id must not exceed 36 characters | entityId too long |
| PAS400 | PAY198 | custTxnRefNo | Cust Txn Ref No must not exceed 20 characters | custTxnRefNo too long |
| PAS403 | PAY175 | - | Reason given by the platform; “User is not linked to the given entity and program” when no reason is given | Maker not linked to entity and program |
| PAS403 | PAY191 | - | Entity not found with this entityId: <entityId> | Entity not found |
| PAS403 | PAY192 | - | Program not found with this programId: <programId> | Program not found |
| PAS403 | PAY193 | - | User not found with this email: <makerEmail> | Maker email not registered |
| PAS409 | PAY13 | custTxnRefNo | Customer Transaction No. already exists. | custTxnRefNo already used |
| PAS422 | BPS001 | - | Invalid Debit Account | Debit account not in payout configuration |
| PAS422 | PAY06 | - | Debit account number, entity id and bank code mapping does not exist in the system | Bank configuration missing |
| PAS422 | PAY07 | - | Debit account does not exist in the system | Debit account not found |
| PAS422 | PAY09 | - | Customer Id is not mapped with debit account number | customerId not mapped to the debit account; Several business errors together |
| PAS422 | PAY19 | - | Beneficiary name is required | Registered beneficiary has no name |
| PAS422 | PAY21 | - | Debit account number does not have permission for payout due to invalid beneficiary details | Payout method not enabled for the debit account; Several business errors together |
| PAS422 | PAY28 | - | IFT transactions are only valid for accounts within the same bank | IFT: registered beneficiary in another bank |
| PAS422 | PAY29 | - | Invalid beneficiary account for IFT | IFT: registered beneficiary account is the debit account |
| PAS422 | PAY34 | - | Amount exceeds the allowed transaction limits | Amount outside program transaction limits |
| PAS422 | PAY40 | - | Beneficiary code does not exist in the system | Beneficiary code not found |
| PAS422 | PAY41 | - | Invalid transaction type | Beneficiary not allowed for this transaction type |
| PAS422 | PAY42 | - | Beneficiary name is not mapped with beneficiary | Beneficiary name does not match |
| PAS422 | PAY50 | - | Payout amount exceeds the available threshold limit | Threshold limit not available or exceeded |
| PAS422 | PAY55 | - | You do not have the authority of a payout. Please contact admin | Maker user not authorised |
| PAS422 | PAY68 | - | Threshold limit validity date is expired | Threshold limit validity expired |
| PAS422 | PAY118 | - | Payout record is not present | Payout not found. Received only in the Payout Status Enquiry API |
| PAS422 | PAY120 | - | The current entity does not have permission to process payouts. | Entity not permitted to make payouts |
| PAS422 | PAY157 | - | Program does not have access to the payout service | Program has no payout access |
| PAS422 | PAY183 | - | Invalid program id | Program configuration not found |
| PAS422 | PAY184 | - | Debit account is not configured for this payout type | Debit account not configured for this payout type |
| PAS422 | PAY185 | - | Payout type is not supported by the bank | Payout type not supported by the bank |

