Does Yodlee gather the time of a transaction from the financial sites for transactions that are posted on their sites?

No, most sites do not provide the time stamp for a transaction.

How many transactions does Yodlee pull on account addition?

On account addition Yodlee will only pull a maximum of 90 days of transactions.

Does Yodlee provide merchant name in the transaction?

Yes, Yodlee provides merchant name in the transaction.

Is the transactionId for each transaction always the same and unique?

Yes, the transactionId is the unique identifier for a transaction.

How do I retrieve transaction based on transaction status - posted or pending?

To get transactions specific to a particular status you can set the TransactionStatus as a parameter in TransactionSearchFilter while using executeUserSearchRequest API.

Below is the code snippet to set search filter in REST:

  • To get posted transactions:
    transactionSearchRequest.searchFilter.transactionStatus.description=posted
    transactionSearchRequest.searchFilter.transactionStatus.statusId=1
  • To get pending transactions:
    transactionSearchRequest.searchFilter.transactionStatus.description=pending
    transactionSearchRequest.searchFilter.transactionStatus.statusId=2

Below is the code snippet to set search filter in SOAP:

  • To get posted transactions:
    TransactionSearchFilter txSearchFilter = new TransactionSearchFilter();
    TransactionStatus postedStatus = new TransactionStatus();
    postedStatus.setStatusId(1L);
    postedStatus.setDescription("posted");
    txSearchFilter.setTransactionStatus(postedStatus);
  • To get pending transactions:
    TransactionSearchFilter txSearchFilter = new TransactionSearchFilter();
    TransactionStatus postedStatus = new TransactionStatus();
    postedStatus.setStatusId(2L);
    postedStatus.setDescription("pending");
    txSearchFilter.setTransactionStatus(postedStatus);

How far back does the transaction search on the consumers' transaction history go? Is there a limit?

There is no limit to how far back a transaction search can go in the Yodlee platform. However, it depends on when the consumer has added his or her account on Yodlee platform. At the time of account addition, 90 days of transactions is pulled and as the consumer continues to access the Yodlee platform his or her transaction history is built in the Yodlee’s database. For example, a consumer may have an account at a bank for five years, but has added his or her account to the Yodlee platform a year ago. In this case, only a year and 90 days of transactions will be present in Yodlee’s database and the executeTransactionSearch API can retrieve these transactions.

Is there a reconciliation logic to handle duplicate transactions?

Yes, for more information, refer to Reconciling Duplicate Transactions.

Is there a limit on how many transactions can be retrieved using the transaction search API - executeTransactionSearch?

Yes there is a limit, the executeTransactionSearch API will return only 500 transactions at once. If a consumer has more than 500 transactions present in the Yodlee database, then there are two approaches to retrieve those transactions, as mentioned below:

APPROACH 1: Using the executeUserSearchRequest and getUserTransactions APIs together to fetch transactions

Based on the fetch limit, the executeUserSearchRequest API cache the data on the Yodlee server and then this data can be retrieved. As the executeUserSearchRequest API has a limitation of returning only 500 transactions at once, to get more than 500 transactions it should always be used in tandem with the getUserTransactions API.

Logic:

  • Pass LowerFetchLimit = 1 and HigherFetchLimit = a very large number in executeUserSearchRequest API.
  • The value of the countOfAllTransaction field in the TransactionSearchExecInfo object provides the number of transactions present for the account.
  • The value of the NumberOfHits field provides how many transactions are cached on the Yodlee server.
  • If NumberOfHits is less than countOfAllTransaction, then call the executeUserSearchRequest API again with LowerFetchLimit = 1 and HigherFetchLimit=countOfAllTransaction
  • Use getUserTransactions API to get all transactions by passing the startNumber = 1 and EndNumber = NumberOfHits.

The getUserTransactions API can be used for pagination. For example, If NumberOfHits = 1200 from the executeUserSearchRequest API, then call getUserTransactions in loop with the following values:

First call: StartNumber = 1 and EndNumber = 500

Second call: StartNumber = 501 and EndNumber = 1000

Third call: StartNumber = 1001 and EndNumber = 1200

APPROACH 2: Using only executeUserSearchRequest API

Logic:

  • Create TransactionSearchRequest object
  • Create appropriate TransactionSearchFilter and add it to TransactionSearchRequest
  • Create TransactionSearchResultRange

First call:

Make the executeUserSearchRequest API call by setting the following values:

  • TransactionSearchResultRange.StartNumber=1
  • TransactionSearchResultRange.EndNumber=500
  • TransactionSearchRequest.LowerFetchLimit=1
  • TransactionSearchRequest.HigherFetchLimit=500
  • TransactionSearchRequest.setFirstCall=true

This API call will return the TransactionSearchExecInfo object containing TransactionSearchResult - that has all the transactions and CountOfAllTransaction.

Based on CountOfAllTransaction value, determine the number of subsequent calls needs to be made. If CountOfAllTransaction is more than 500, then make the second call.

Second and for all further calls:

Begin loop.
TransactionSearchRequest.setFirstCall=false
TransactionSearchResultRange.StartNumber=Transacti onSearchResultRange.StartNumber+500
TransactionSearchResultRange.EndNumber=Transaction SearchResultRange.EndNumber+500
TransactionSearchRequest.LowerFetchLimit=Transacti onSearchRequest.LowerFetchLimit+500
TransactionSearchRequest.HigherFetchLimit=Transact ionSearchRequest.HigherFetchLimit+500
TransactionSearchService.executeUserSearchRequest
End loop.