Initiate Payout

🙌

Important Note

Please use only Staging Credentials on each API Reference page to test the APIs directly from our Documentation.

API Endpoints

Overview

This API allows you to facilitate money transfers to/from the linked virtual bank accounts or the consumer URN from within your application.

Flow

Below is the flow for using the Initiate Payout flow through Decentro

  1. The platform can use the provided "Consumer URN" or the "Virtual Account" to initiate a payout
    1. Consumer URN: Decentro will select the suitable provider and virtual account, and perform the payout
    2. From account: The Platform is specifying that a particular virtual account must be used for payout.
  2. The platform can provide the transfer type, amount, and beneficiary details. Once these details are provided, the payout can be initiated.
  3. The payout is an asynchronous process, wherein the request for the payout is initiated and pending for processing. This applies to NEFT and RTGS. IMPS and UPI provide synchronous responses.
  4. Decentro will trigger Transaction Status Callback: when the transaction reaches its final status.
  5. Decentro will trigger Account Balance Callback: whenever there is a debit/credit from the virtual account.
  6. If the platform wants to check the status of any transaction. Get Transaction Status: can be used to check the status of any transaction on demand. Decentro recommends using this functionality as a fallback mechanism to check the status of the transaction.

Key Points

Below are the key points about the initiate payout workflow.

  • If the consumer URN is used by the platform, the provider selection will take place from the most suitable provider at the time of the request, removing the dependency on the platform to implement a provider selection rule. The platform must ensure that all the virtual accounts across a consumer URN have sufficient funds to be processed.
  • The "api_status" must not be confused with the "transaction_status". Even if the "api_status" is success, it does not mean the actual "transaction_status" is success. Please ensure this is handled during the implementation of the payout API to your platform.
  • Decentro recommends platforms to handle the response of all possible transaction status. For details on the statuses, please refer to this section here.

API Specifications

Request Payload


Request ParameterMandatory (M) / Optional (O) / Conditional Mandatory (CM)Description
reference_idMA URN to be passed by the user for each API request. Alphanumeric values are allowed. Special characters such as “@ # $ % ^ & * ! ; : ~ ` ? = + ) ( apostrophe, double quotes” are not allowed
purpose_messageM1. The narration/remarks that will be displayed in the beneficiaries bank statement.

2. Only Alphanumeric values are allowed, special characters such as “@ # $ % ^ & * ! ; : ~ ` ? = + ) ( apostrophe, double quotes” are not allowed.

3. Minimum length is 5 characters and Maximum length is 35 characters
consumer_urnMA URN created for a consumer must be passed here.
from_accountOThe virtual account against which the payout must be performed. This is an optional field and is only to be used if the platform wants to perform a payout from a specific virtual account.
transfer_typeMUPI/IMPS/NEFT/RTGS are the available transfer type
transfer_amountMThe Amount to be transferred.Minimum amount is INR 1 (2 Decimal values are allowed Ex: 1.00)
beneficiary_detailsCMAn object that contains all the beneficiary details to which the platform will perform payout to.
to_accountCMThe Beneficiary Account to be added.

1. "to_account" is mandatory if the intended transfer type is IMPS/NEFT/RTGS.

2. "ifsc_code" parameter is required for IMPS/NEFT/RTGS transfers.

3. If the transfer type is set as UPI, this parameter is not required.
to_upiCMBeneficiary UPI ID to be passed. 'to_upi’ is mandatory if the intended transfer type is UPI.

1. ‘ifsc’ parameter is not required for UPI transfer.

2. Special characters such as dot(.) are accepted for values after (@) sign.

3. The UPI ID must follow the NPCI format (Ex: name@bankName or mobilenumber@bankName).

4. If the transfer type is selected as IMPS/NEFT/RTGS, this parameter is not required
payee_nameMBeneficiary name to be added.

Note: Decentro sanitises special characters for passing through banking APIs validations. Please ensure no special characters are passed, only Alphabetical values are passed.
ifsc_codeCMBeneficiary IFSC code to be added.

1. Alphanumeric values are allowed as per the IFSC code assigned to the beneficiary bank.

2. If the transfer type is UPI, this parameter is not required.

3. Maximum length is 11 characters
email_addressOBeneficiary Email Address to be added.
Alphanumeric and special characters are allowed but after (@), only dot(.) is allowed. Sample email format ([email protected])
mobile_numberOMobile numbers have to be strictly 10 digits long and start with one of 9, 8, 7 or 6. Only numeric characters are allowed. Country code is not required.

Response Payload

Response ParameterMandatory (M) / Optional (O) / Conditional Mandatory (CM)Description
decentro_txn_idMA URN generated by Decentro against the API request
api_status MThe status of the payout API request. Decentro recommends not using this parameter to mark the transaction status
Here are the values that will be propagated.

1. Success
2. Failure
messageMThe message of the API will be propagated here. This message is not related to the transaction message. These messages are based on the actions of the API.
response_keyMResponse key documenting the status of the API hit and various errors as mentioned below.
dataCMThe object that contains the details of the transaction. This object will not be present if there is an API failure.
transaction_statusMThe status of the payout transactions. These are the following values available. For more refer, please refer to this section here

1. Success
2. Failure
3. Pending
4. Unknown
transfer_typeMThe transfer type of the payout transaction.
UPI, IMPS, NEFT, and RTGS are the values propagated
bank_reference_numberCMThe bank reference number of the transaction. This parameter will be generated when the status is "Success" or "Failure."
beneficiary_nameCMThe name of the beneficiary account holder. This parameter will be generated when the status is "Success."
transaction_status_descriptionCMThe message on the status of the transaction. This parameter will be generated when the status is "Success" or "Failure."

Payout Response Keys

Response KeyMessage
success_transaction_request_initiatedRequest was successfully initiated
error_amount_below_minimumTransfer amount cannot be less than zero. Enter a correct value.
error_duplicate_reference_idThe provided reference_id has already been used for another transaction. Kindly choose a different value.
error_amount_exceeded_impsYour amount exceeds the maximum amount that can be sent via IMPS. Please note that the amount should be <= INR 500000 per transaction.
error_invalid_reference_idRequest reference id is not of type string.
error_missing_reference_idRequest reference id cannot be null or empty. Hint: reference_id (string)
error_amount_exceeded_neftYour amount exceeds the maximum amount that can be sent via NEFT. Please note that the amount should be <= INR 1000000 per transaction.
error_amount_exceeded_upiYour amount exceeds the maximum amount that can be sent via UPI. Please note that the amount should be <= INR 100000 per transaction.
error_malformed_requestRequest body is empty/ malformed. Kindly check the payload and retry.
error_ifsc_codeSince beneficiary details are being passed, ifsc_code is mandatory.
error_amount_invalidTransfer amount is not a parseable positive float value. Enter a correct value
error_empty_transfer_amountRequest body does not contain the transfer amount.
error_transfer_type_invalidProvided transfer_type is invalid. Allowed transfer types are NEFT, RTGS, IMPS and UPI
error_empty_transfer_typeTransfer type cannot be null or empty. Hint: transfer_type (string).
error_empty_to_accountRequest body does not contain the target account number.
error_transfer_type_not_allowedTransfer type UPI is not allowed for the given source account.
error_invalid_format_upiTo UPI Address has to be in the NPCI specified format
error_from_account_invalidRequest body does not contain the source account number.
error_empty_purpose_messageRequest body does not contain the purpose message.
error_empty_from_accountSource account number does not exist. Kindly retry with a valid value.
error_empty_reference_idRequest body does not contain the reference_id.
error_amount_exceededTransaction amount (plus applied taxes and commission) is more than the balance available in the source account.
error_unsanitized_valuesUnsanitized values detected for key(s): payee_name. Kindly sanitize the corresponding values by removing special characters such as . @ # $ % ^ & * ! ; : ~ ` ? = + ) ( apostrophe, double quotes and retry
error_ifsc_code_incorrectIFSC length should be 11
error_email_address_incorrectThe provided email address did not pass the validity check. Kindly enter a correct value
error_mobile_number_incorrectBeneficiary mobile number has to be strictly 10 digits long and start with one of 9, 8, 7 or 6
error_provider_errorUnexpected response received from underlying provider.
error_exceeded_decimal_in_amountTransfer amount with precision upto only two decimal places is allowed.
error_amount_incorrect_formatTransfer amount has to be an integer
error_empty_client_secretClient Secret cannot be empty. Hint: client_secret (string)
error_ise_errorInternal Server Error. Please check the status of the transaction and then retry if failed.
Language
Click Try It! to start a request and see the response here!