Frequently Asked Questions

Q: When is request considered successfully completed?
A: Request can be considered successfully completed when status is done in the response

Q: What is a difference between AccessCode vs AccessToken?
A: Access tokens allow your app to access the Dapi API. They are permanent for the user. Therefore once it is obtained it does not need to be refreshed, unless the token has been delinked.

Meanwhile, Access Code is only valid for 30 minutes. It can't be used to interact with Dapi API. It is only used to obtain user Access Token. Read more about authentication process with the API on Authentication Documentation

Q: Why and how to exchange AccessCode for AccessToken?
A: Access Code is temporary code, valid for 30 minutes, that can only be used to obtain user's permanent Access Token.

To obtain a Access Token, you need to generate Exchange Token request. To read more about token exchange process read Authentication Documentation or visit Exchange Token Endpoint

Q: How to specify currency during transaction initiation?
A: Dapi automatically performs transaction in the currency of user account specified in senderID. In other words, currency is automatically set from the currency of whichever account is used to initiate a transfer.

Q: What is user input and how it works?
A: Banks might request confirmation of the operation from the user. In this case, API responds with userInputs object, that defines what input is requested from the user.

When user input is requested, the same userInputs object with populated answer parameter that was received in the response, must be sent as request body to the same endpoint that requested it.

For example: If the response from Get Balance endpoint was following:

{
    "jobID": "47204fa6-dca6-44a5-8111-6c6489a232a2",
    "success": true,
    "status": "user_input_required",
    "userInputs": [
    {
      "answer": "",
      "id": "otp",
      "index": 0,
      "query": "Please enter a Smart Pass Token from your ENBD mobile application"
    }
    ]
}

Then the same userInputs object, with answer populated with user input must be sent to Get Balance endpoint.

{ 
   "userInputs": [
    {
      "answer": "123456",
      "id": "otp",
      "index": 0,
      "query": "Please enter a Smart Pass Token from your ENBD mobile application"
    }
    ]
}

You can read more about how user inputs work on Specify User Input

Q: What transactions are returned by Get Transactions endpoint?
A: Endpoint returns all the transactions performed within a specified time range, from the account specified in the request. It does not apply any additional filter to the transactions.

Q: What is cool down period?
A: Some of the banks require cool-down period before allowing you to transfer amount to newly added beneficiary. In other words, if cool-down period is required by the bank, you will have to wait until it is over to initiate a payment to newly added beneficiary. Cool-down countdown starts as soon as you register new beneficiary.

Q: When does cool-down period countdown start?
A: If cool-down period is required by the bank, its countdown will start immediately once you register new beneficiary.

Q: How to obtain information if bank required cool-down period?
A: You can obtain information about bank requirements of the user from Metadata endpoint of the API. To read more, please visit Metadata

Q: What is a BundleID?
A: BundleID or Bundle Identifier is unique identifier of your application. In order to use Dapi Client SDK, you must first register all your BundleID's in Dapi Dashboard. You can read more details about registering and configuring BundleIDs on Configure BundleID

Q: Why am I receiving INVALID_ACCOUNT_ID error?
A: Receiving this error means that the account ID that you are passing in is wrong or that it is outdated. accountIDs can change over time. Hence, in order to handle this issue, you should upon receiving the INVALID_ACCOUNT_ID error call getAccounts endpoint to get up to date accountIDs and retry the endpoint you got the error for initially