Payout Fintech API is organized around REST. Our API has predictable resource-oriented URLs, accepts JSON request and returns response, and uses standard HTTP response codes, authentication, and verbs.
You can use our API in the sandbox and production environment. We provide two different API urls and tokens for sandbox and production(Live).
Pass API token and content-type for all the requests in header, token will be shared to you in an email.
HTTP Status Code
Always check the HTTP status code, for successful requests we return HTTP status as 200, incase of any error in request we return the HTTP status as 400, assume if you are receiving 400 the request is not accepted.
Get the current available balance from the Payout Fintech Payout account.
Parameters | Datatype | Description |
---|---|---|
availableBalance | number | Returns the available balance |
{
"code" : 200,
"message" : "success",
"data" : {
"availableBalance" : 7015773.70
}
}
Initiate the fund transfer to the given account number.
Parameters | Range | Datatype | Required | Description |
---|---|---|---|---|
requestId | Max 36 | string | Y | Unique identifier to identify request, it should be unique to avoid duplicate transactions |
beneficiaryName | Max 35 | string | Y | Beneficiary name.Regular expression:[a-zA-Z0-9_-., ] |
accountNo | Max 30 | string | Y | Beneficiary account number |
ifscCode | Exact 11 characters | string | Y | Beneficiary ifsc code |
amount | Minimum 1 | number | Y | Amount to be transferred, Minimum and maximum amount vary by mode IMPS - Min 1 & Max 5,00,000 NEFT - Min 1 & Max 250,000,000 RTGS - Min 2,00,000 & Max 250,000,000 |
mode | IMPS/NEFT/RTGS | string | Y | Only the three modes allowed |
purpose | Max 25 | string | Y | Purpose of the fund transfer. E.g payout, refund,reward, etc… |
Parameters | Datatype | Description |
---|---|---|
requestId | string | Returns the request value |
referenceNo | string | Reference number generated for the transaction. |
beneficiaryName | string | Returns the request value |
accountNo | string | Returns the request value |
ifscCode | string | Returns the request value |
amount | number | Returns the request value |
fee | number | Returns the fee for the payout |
tax | number | Returns the tax for the fee |
totalFee | number | Returns the sum of fee and tax |
mode | string | Returns the request value |
purpose | string | Returns the request value |
{
"requestId" : "pfin202008260002",
"beneficiaryName" : "Demo Company",
"accountNo" : "900900900900",
"ifscCode" : "UTIB0002951",
"amount" : 5000,
"mode" : "IMPS",
"purpose" : "Payout"
}
{
"code" : 200,
"message" : "success",
"data" : {
"requestId" : "pfin202008260002",
"referenceNo" : "PFBAgMlRcOO8nC86ccMj8awdL92eqR",
"beneficiaryName" : "Demo Company",
"accountNo" : "900900900900",
"ifscCode" : "UTIB0002951",
"amount" : 5000,
"fee" : 3.50,
"tax" : 0.63,
"totalFee" : 4.13,
"mode" : "IMPS",
"purpose" : "Payout"
}
}
{
"code" : 400,
"errorCode" : 5060,
"message" : "Insufficient balance"
}
{
"code" : 400,
"errorCode" : 5001,
"message" : "accountNo is required"
}
Get the fund transfer status by requestId.
Parameters | Datatype | Description |
---|---|---|
requestId | string | Unique value to identify the fund transfer request |
beneficiaryName | string | Returns the beneficiaryName for the requestId |
accountNo | string | Returns the accountNo for the requestId |
ifscCode | string | Returns the ifscCode for the requestId |
amount | number | Returns the amount for the requestId |
mode | string | Returns the mode for the requestId |
purpose | string | Returns the purpose for the requestId |
utrNumber | string | Unique transaction reference number returned by bank for the fund transfer |
referenceNo | string | Reference number generated for the fund transfer. |
statusCode | string | Returns the fund transfer statusCode |
status | string | Returns the fund transfer status, such as initiated, success and failure. |
errorDescription | string | Returns error description for the FAILURE/ ERROR / RETURNED_FROM_BENEFICIARY statuses Empty for other statuses |
{
"code" : 200,
"message" : "success",
"data" : {
"requestId" : "pfin202008260002",
"referenceNo" : "PFBAgMlRcOO8nC86ccMj8awdL92eqR",
"beneficiaryName" : "Demo Company",
"accountNo" : "900900900900",
"ifscCode" : "UTIB0002951",
"amount" : 5000,
"fee" : 3.50,
"tax" : 0.63,
"totalFee" : 4.13,
"mode" : "IMPS",
"purpose" : "Payout",
"utrNumber" : "CB0001997620",
"statusCode" : "SUCCESS",
"status" : "Success",
"errorDescription" : ""
}
}
{
"code" : 200,
"message" : "success",
"data" : {
"requestId" : "pfin202008260003",
"referenceNo" : "PFBAgMlRcOO8nC86ccMj8bwdL92eqR",
"beneficiaryName" : "Demo Company",
"accountNo" : "900900900900",
"ifscCode" : "UTIB0002952",
"amount" : 3000,
"fee" : 10,
"tax" : 1.8,
"totalFee" : 11.8,
"mode" : "IMPS",
"purpose" : "Payout",
"utrNumber" : " ",
"statusCode" : "RETURNED_FROM_BENEFICIARY",
"status" : "Returned from beneficiary",
"errorDescription" : "RETURN - ACCOUNT CLOSED"
}
}
status_code | Status | Meaning |
---|---|---|
READY | ready | In queue not yet initiated |
INITIATED | initiated | Payment Initiated |
FAILURE | failure | Fund transfer failed |
ERROR | error | Fund transfer error |
SUCCESS | success | Fund transfer completed successfully |
PENDING | pending | Temporary status, it may change |
INSUFFICIENT_BALANCE | Insufficient balance | Unable to process the transaction due to Insufficient balance |
RETURNED_FROM_BENEFICIARY | Returned from beneficiary | Amount returned from beneficiary |
OTHER | Other | Miscellaneous status, usually it does not occur |
Note: Failure, Success,Insufficient balance and returned from beneficiary are final statuses.
Our system will call your webhook url and post the payment status when payment is transferred. In case your webhook does not respond, our system will call your url for maximum four times in a 15 minutes interval if all four attempts failed, you will receive email notification about the issue.
Parameters | Datatype | Description |
---|---|---|
tranType | string | Returns DEBIT / CREDIT / RECREDIT For fund transfer status DEBIT - For every debit transaction CREDIT - For every credit transaction, After loading funds via virtual account, RECREDIT - For every failure transaction after the re-credit, recredit webhook will fire |
requestId | string | Unique value to identify the fund transfer request |
referenceNo | string | Reference number generated for the fund transfer. |
beneficiaryName | string | Returns the beneficiaryName for the requestId |
accountNo | string | Returns the accountNo for the requestId |
ifscCode | string | Returns the ifscCode for the requestId |
amount | number | Returns the amount for the requestId |
fee | number | Fee for the transaction |
tax | number | Tax for the transaction fee |
totalFee | number | Sum of fee and tax |
mode | string | Returns the mode for the requestId |
purpose | string | Returns the purpose for the requestId |
utrNumber | string | Unique transaction reference number returned by bank for the fund transfer |
statusCode | string | Returns the fund transfer statusCode as SUCCESS |
status | string | Returns the fund transfer status as Success |
errorDescription | string | N/A |
attemptCount | number | Number of times the webhook invoked |
Parameters | Datatype | Description |
---|---|---|
tranType | string | Returns DEBIT / CREDIT / RECREDIT For fund transfer status DEBIT - For every debit transaction CREDIT - For every credit transaction, After loading funds via virtual account, RECREDIT - For every failure transaction after the re-credit, recredit webhook will fire |
requestId | string | Unique value to identify the fund transfer request |
referenceNo | string | Reference number generated for the fund transfer. |
beneficiaryName | string | Returns the beneficiaryName for the requestId |
accountNo | string | Returns the accountNo for the requestId |
ifscCode | string | Returns the ifscCode for the requestId |
amount | number | Returns the amount for the requestId |
fee | number | Fee for the transaction |
tax | number | Tax for the transaction fee |
totalFee | number | Sum of fee and tax |
mode | string | Returns the mode for the requestId |
purpose | string | Returns the purpose for the requestId |
utrNumber | string | Unique transaction reference number returned by bank for the fund transfer |
statusCode | string | Returns the fund transfer statusCode FAILURE/ ERROR / RETURNED_FROM_BENEFICIARY |
status | string | Returns the fund transfer status, such as failure error,returned_from_beneficiary. |
errorDescription | string | Returns error description |
attemptCount | number | Number of times the webhook invoked |
{
"tranType" : "DEBIT",
"requestId" : "pfin202008260002",
"referenceNo" : "PFBAgMlRcOO8nC86ccMj8awdL92eqR",
"beneficiaryName" : "Demo Company",
"accountNo" : "900900900900",
"ifscCode" : "UTIB0002951",
"amount" : 5000,
"fee" : 3.5,
"tax" : 0.63,
"totalFee" : 4.13,
"mode" : "IMPS",
"purpose" : "Payout",
"utrNumber" : "CB0001997620",
"statusCode" : "SUCCESS",
"status" : "Success",
"errorDescription" : "",
"attemptCount" : 1
}
{
"code" : 200,
"message" : "success"
}
{
"tranType" : "DEBIT",
"requestId" : "pfin202008260005",
"referenceNo" : "PFBAgMlRcOO8nC86cdMj8awdL92eqR",
"beneficiaryName" : "Demo Company",
"accountNo" : "900900900901",
"ifscCode" : "UTIB0002953",
"amount" : 5000,
"fee" : 3.5,
"tax" : 0.63,
"totalFee" : 4.13,
"mode" : "IMPS",
"purpose" : "payout",
"utrNumber" : "CB0001987620",
"statusCode" : "FAILURE",
"status" : "Failure",
"errorDescription" : "REJECTED - Incorrect beneficiary account detail",
"attemptCount" : 1
}
{
"code" : 200,
"message" : "success"
}
Optional call back, notified after fund loaded to account via virtual account
{
"tranType" : "CREDIT",
"requestId" : "DEPTf559961bff3f96960bd125906b5970b6",
"referenceNo" : "DEPTf559961bff3f96960bd125906b5970b6",
"beneficiaryName" : "Demo Company",
"accountNo" : "900900900901",
"ifscCode" : "UTIB0002953",
"amount" : 5000,
"fee" : 0,
"tax" : 0,
"totalFee" : 0,
"mode" : "IMPS",
"purpose" : "Bank Transfer",
"utrNumber" : "CB0001987621",
"statusCode" : "SUCCESS",
"status" : "Success",
"errorDescription" : "",
"attemptCount" : 1
}
{
"code" : 200,
"message" : "success"
}
Optional call back notified after the amount re-credited for the failure transaction
{
"tranType" : "RECREDIT",
"requestId" : "pfin202008260005",
"referenceNo" : "PFBAgMlRcOO8nC86cdMj8awdL92eqR",
"beneficiaryName" : "Demo Company",
"accountNo" : "900900900901",
"ifscCode" : "UTIB0002953",
"amount" : 5000,
"fee" : 0,
"tax" : 0,
"totalFee" : 0,
"mode" : "NEFT",
"purpose" : "Recredit",
"utrNumber" : "REV-CB0001987621",
"statusCode" : "SUCCESS",
"status" : "Success",
"errorDescription" : "",
"attemptCount" : 1
}
{
"code" : 200,
"message" : "success"
}
Http Status Code
200 - Success
400 - Error
{
"code" : 400,
"errorCode" : 5002,
"message" : "requestId already exists. Duplicate not allowed"
}
Error code 5001 is same for all validation errors
Error Messages |
---|
requestId is mandatory |
requestId maximum length should not exceed 36 characters |
beneficiaryName is mandatory |
beneficiaryName maximum length should not exceed 35 characters |
beneficiaryName should contains only [a-zA-Z0-9_-., ] character sets |
accountNo is mandatory |
accountNo maximum length should not exceed 30 characters |
ifscCode is mandatory |
ifscCode format is invalid |
amount is mandatory |
amount should not be less than INR 1 |
mode is mandatory |
mode is invalid, mode should be IMPS / NEFT / RTGS |
purpose is mandatory |
purpose length should not be more than 25 |
Error Codes | Error Messages |
---|---|
5002 | requestId already exists. Duplicate not allowed |
5004 | requestId not found |
5011 | Payout not allowed to nodal account |
5012 |
The bank does not exist so payments to this IFSC code is not allowed. For the following IFSC Codes payment is not allowed as per RBI notice, because the banks merged with some other banks. ANDB0,ALLA0,ORBC0,UTBI0,CORP0,SYNB0,VIJB0,BKDN0 |
5013 | Payout is not allowed to this account due to your black list policy |
5033 | For IMPS amount should be less than or equal to 500000. |
5034 | For RTGS amount should be greater than 200000 |
5035 | Your maximum per transaction limit is 9,90,000 as per your account policy. Amount should not exceed the maximum per transaction limit |
5060 | Insufficient balance |
Login to your Sandbox / Production environment and Fund Transfer API Postman Collection download from the dashboard.