Introduction to Transaction Recycler
The Transaction Recycler provides the ability to retry failed financial transactions again at regular intervals. This is a generic retry mechanism which can be consumed by any Temenos Transact application. The Transaction Recycler is available for Arrangement Architecture (AA) and Interest and Charged (IC) modules (R13 release and above). Read Transaction Cycler section under Settlement Property Class for more information related to Arrangement Architecture.
The Transaction Recycler service handles the retry of failed transactions. This service will run as a COB job at a specific stage during both End of Day (EOD) and online phases. This job will retry the transactions on scheduled dates until the transaction is settled or number of retry attempts allowed have been exhausted or retry end date is reached.
During each retry, the Transaction Recycler will take the amount available in the settlement account for settling the transaction amount in full or partial, based on the Transaction Recycler retry configuration. The RC can retry the settlement based on pre-defined priority order as defined by the bank. In case of an AA loan repayment, the RC.CONTRACT.PRIORITY application allows the user to define sorting priority criteria based on custom values - the bill type or the aging status of bill.
The transactions handed over to Recycler (RC), if settled outside the RC framework are not excluded from further processing by RC and is marked with a specific status.
The following chart shows the transaction recycler process:
The Transaction Recycler acts as a framework and the processing required for retrying an AA payment or IC charges is built as a plug-in. In the above flow chart, the core plug-ins are generally represented as the payment processor, and the RC processes further, when there is an AA payment or an IC payment pending. The Transaction Recycler recognises that two different types of payments should be processed and the respective payment processor invoked is parameterised. This design enables the addition of new activity types (including any client-specific local activities) to be retried while using the same Transaction Recycler framework to orchestrate the recycling.
Product Configuration
The following chart shows the Transaction Recycler module components:


The RC.TYPE
application allows the definition of application interfaces to the Transaction Recycler. These application interfaces defined using this table drive the business logic and help the Transaction Recycler carry out the retry processing. For every retry attempt on a settlement account, the transaction recycler transits through different stages (prioritisation, processing, and post process). It is possible to build an application interface for each of the states, as applicable.
Using this application, it is possible to define core and local routines. These routines are triggered by the transaction recycler service to perform transaction-specific processing. A link to the RC.CONDITION
table is specified, which defines the processing conditions for corresponding transaction.
RC.TYPE
record is created for IC.CHARGE
application and is linked to the RC.CONDITION
DAILY. The following fields (in RC.TYPE
) are used to determine whether a core routine or a local routine is required to do the processing:
These fields may be set to Yes or No. If set to Yes, System checks to ensure the routine exists.
Core Routine Fields | Description | Routine Name |
---|---|---|
Pre processor | Used to define whether a message specific core routine needs to be called to pre-process a message. | RC.PREP.RC.TYPE – For example, RC.PREP.IC.CHARGE |
Prioritise | Used to define the message-specific core routine called by the Transaction Recycler to perform transaction grouping and sorting. | RC.PRTY.RC.TYPE – For example, RC.PRTY.IC.CHARGE |
Processor | Used to define the message-specific core routine called by the Transaction Recycler to process the Transaction Recycler transaction, or transactions if they are grouped. | RC.PROC.RC.TYPE – For example, RC.PROCE.IC.CHARGE |
Post process | Defines the message-specific API routine called by the Transaction Recycler to perform processing after the transaction has been completed. | RC.POST.RC.TYPE – For example, RC.POST.IC.CHARGE |
The following fields are used to determine if any local routines are invoked. These fields may be set to Yes or No. If set to Yes, system checks to ensure the routine exists:
Field | Description | Routine Name |
---|---|---|
Loc pre process | Used to define whether a message-specific local routine needs to be called to pre-process a message. | RC.PREP.RC.TYPE.LOC – For example, RC.PREP.IC.CHARGE.LOC |
Loc prioritise | Used to define the message-specific local routine called by the Transaction Recycler to perform transaction grouping and sorting. | RC.PRTY.RC.TYPE.LOC – For example, RC.PRTY.IC.CHARGE.LOC |
Loc processor | Used to define the message-specific local routine called by the Transaction Recycler to process the Transaction Recycler transaction, or transactions if they are grouped. | RC.PROC.RC.TYPE.LOC – For example, RC.PROCE.IC.CHARGE.LOC |
Loc post process | Defines the message-specific local API routine called by the Transaction Recycler to perform processing after the transaction has been completed. | RC.POST.RC.TYPE.LOC – For example, RC.POST.IC.CHARGE.LOC |
The Loc Cap Chk Rtn field facilitates the application or local routines to decide if the capture of a transaction is allowed. This is an optional field.
- If the value is set to Yes, during RC capture processing, the system will check if a routine with the name RC.CAPTURE.CHK. <RC.TYPE.ID>.LOC exists in the system. If the routine exists, the system invokes this routine to decide if the transaction is eligible for capture or not. If this returns (determined using the return parameter value) CAPTURE.FLAG=FALSE), then this would override core’s capture flag and the transaction will not be captured.
- If the value is set to No or null, the local capture check routine is not invoked.
The Transaction Recycler Framework provides flexibility for the applications to choose if the recycler should recover the available funds by posting a funds transfer or the applications to perform the recovery process using the application interfaces configured in the respective Processor or Local Processor routines. For example, ACFA is used for AC.FUNDS.AUTHORISATION.
The Settlement Type field in the RC.TYPE
application can be used with one of the following options to enable this feature.
- Funds Transfer — Recycler generates a funds transfer to settle the recovered funds.
- Processor — Recycler does not settle the recovered funds, instead the respective Processor or Local Processor routines are in charge of the settlement of the recovered funds.
- GAI — Recycler settlement is processed through Generic Accounting Interface (OFS Clearing).
- Null — If this field is not configured, recycler generates a funds transfer to settle the recovered funds.

This application is used to define the accounting entries needed for recycling.
The typical entries captured are:
- Debit entries against a customer account, where funds are unavailable and the account would move into debit.
- Funds authorisation requests sent by TPH in case of insufficient funds and or posting restricts.
- Payment order in case of insufficient funds.
Certain types of customer account or certain transaction types require capturing.
- All transactions against a savings account that is legally not allowed to go into debit, including COB-based periodic changes.
- Some types of account may go into debit for periodic charges but not for loan repayments or payments into savings accounts.
The record ID is a valid code on EB.PRODUCT
application. If different options at lead company level are required, in addition to the EB.PRODUCT
ID, the lead company code is added.
When an RC.CAPTURE
record is defined for a specific business application, it is possible to specify different retry conditions for different types of requests sent by the business application. For instance, the system accepts any system ID, that is, business application identified by the ID of the record followed by a sub-type.
Using the optional Prod Cat Start and Prod Cat End fields, it is possible to define category ranges of the entries that are to be included. Only entries belonging to the defined category range are considered and rest are excluded.
Therefore, a record with ID as IC is configured to capture entries for the category range 1001 to 1002.
It is possible to use the Txn Code field to configure the system to capture the entries for specific transaction codes. If the field is left blank, the system captures all the entries raised for that System Id. For instance, in the above example, a transaction code is entered in the Txn Code field. Therefore, only those entries matching this code are captured. This field can be sub-valued to include multiple transaction codes.
The System Id and Rc Type fields are mandatory. System Id must be a valid ID in the EB.SYSTEM.ID
application belonging to the ACCCSM product, Rc Type and Rc Condition are valid records in the RC.TYPE
and RC.CONDITON
applications respectively.
Based on Rc Type and Rc Condition, the system processes the settlement of transaction. System performs the below validation when Rc Type and Rc Condition are defined.
Settlement Type (RC.TYPE application) |
Txn Type
(RC.CONDITION application)
|
Processing |
---|---|---|
FUNDS.TRANSFER
|
FT.TXN.TYPE.CONDITION
|
ALLOWED |
FUNDS.TRANSFER
|
Not valid FT.TXN.TYPE.CONDITION |
ERROR |
GAI | AC.ENTRY.PARAM
|
ALLOWED |
GAI | Not valid AC.ENTRY.PARAM |
ERROR |
PROCESSOR | - | ALLOWED |
Not defined | Not defined | ALLOWED |
Not defined | FT.TXN.TYPE.CONDITION
|
ALLOWED |
Not defined | AC.ENTRY.PARAM
|
ERROR |

This application allows the user to define recycling rules, with each record containing details of a particular set of retry conditions. Various records are created to determine multiple sets of retry conditions.
It is possible to set number of retry attempts in the Retry Attempts field for the Transaction Recycler to try for recovery of the charge. Otherwise, a period may be specified in the Retry Period field. Either the Retry Attempts field or Retry Period field should be specified (both the fields cannot be specified). In the above example, the frequency has been setup as ‘Every working day’ in the Retry Fqu field and a period of one month is specified in the Retry Period field. This means that the Transaction Recycler will try to recover the cost every day for a period of one month.
The Retry Options field determines whether partial repayment is allowed or not. There are two options:
- Partial – Each time the system attempts to settle the outstanding amount, if the full amount is not available, the system considers the funds to the extent available for settlement.
- End Partial – Each time the system attempts to settle the outstanding amount, if the full amount is not available, then the system does not consider anything until the final attempt. For the final attempt, if the full amount is not available, the system considers funds to the extent available for settlement.
This is applicable for IC application.
The Txn Type field is used to refer the record ID from the FT.TXN.TYPE.CONDITION
and AC.ENTRY.PARAM
applications. Transaction Recycler uses this record to perform the settlement of the transaction through Funds Transfer or GAI.
TRANSACTION.RETRY record of AC.ENTRY.PARAM
is used as Txn Type to process the settlement through GAI.
The StartDt Option field is an optional field. The field specifies a relative date or a specific day of a month. This is used to offset the START.DATE of the retry process with base date set to capture date. The value of this field can either be given as NN, that is, the actual day of the month or +NN, that is, number of days added to the capture date. Otherwise, it can be set as any numeric value between 1 to 99 when preceded by + character. If the field is blank, by default the START.DATE is assumed as the date on which the transaction is captured within the RC framework.
- The starting date is set to 15th day of the month, the transaction will be captured by RC on this day. The starting date is set to 31st day or last day of the month, the transaction will be captured by RC on this day
- If the transaction was captured in the month of January, the START.DATE would be 31-Jan-2018.
- If the transaction capture month is February, the START.DATE would be 28-Feb-2018.
- If the capture month is September, the START.DATE would be 30-Sep-2018
- If the capture month is February of a leap year say 2016, START.DATE would be 29-Feb-2016.
- +20 – This means to add 20 calendar days from the capture date. This would then be the START.DATE.
The Date Convention field decides the action for the system when RC date (start, end or next retry date) falls on a holiday. It moves the date to next working date or to the previous working date. The valid values are Forward or Backward and the default value is Forward.
The Online Retry Attempts field provides the ability to setup the system to increase the retry attempt or not to, every time the recycler process is run online. As the online recycler retries the requests based on new triggers (new credit on the account, posting restrict set or lifted) or cut off time, it is ideal to set this field as No.


The RC.PRIORITY application is a highest level prioritisation parameter that allows to setup priority of transactions at the company level by EB.SYSTEM.ID or AA.PRODUCT.GROUP. This application is used in conjunction with RC.PRODUCT.PRIORITY and RC.CONTRACT.PRIORITY to create the rules regarding which type of transaction takes priority when there is more than one outstanding transaction against a settlement account. It ranks by EB.SYSTEM.ID, by AA.PRODUCT.GROUP or by a custom RC.PRODUCT.PRIORITY record and the ID to this application can be either a master or a lead company.
In the RC.PRIORITY application, the order of priorities are defined in the descending order (for example, the first definition has the highest priority and so on).
- In the above screenshot, the system is set up to consider the transactions in the following order, if multiple retry requests are posted against the same account:First: Products defined in the RC.PRODUCT.PRIORITY application in the PRIORITY+ONE record (direct debits sent by TPH with transaction code 125).
- Second: Products defined in the RC.PRODUCT.PRIORITY application in the MORTAGES record (MORTGAGE AA Product and then MORTGAGE.CASHBACK AA Product).
- Third: Products defined in the RC.PRODUCT.PRIORITY application in the PRIORITY +TPH record (direct debits sent by TPH with transaction code 213).
- Fourth: Request posted by the PAYMENT.ORDER application, irrespective of the request type.
When using as a priority, either a System ID (an EB.SYSTEM.ID record), the system does not require a correspondent RC.PRODUCT.PRIORITY record. If the RC.PRODUCT.PRIORITY record is not defined, it will process all retry transaction requests posted by the application in a default order, considering the oldest one received by the recycler first.
Def Prev Settle is a filtering rule that means if, out of a list of ‘n’ pending transactions, one of transactions could not be settled (during retry), then all subsequent pending transactions in that list will be abandoned. It could be set to either Yes or No or left blank. If selected, it is applicable for EB.SYSTEM.ID, AA.PRODUCT.GROUP or Product Priority. This field is mutually exclusive with Prev Settle field.
The Prev Settle field can be set as Yes or No. If set to Yes, during retry of ‘n’ transactions, all transactions must be settled. Even if one of the transactions fail for some reason, then none of the remaining transactions will be considered for settlement.

The RC.CONTRACT.PRIORITY application is used in conjunction with RC.PRIORITY and RC.PRODUCT.PRIORITY to create the rules regarding the type of transaction that takes priority when there is more than one outstanding transaction against a settlement account. The RC.CONTRACT.PRIORITY is used to set the ranks at transaction level for the same type of retry request. It is used to set priority by value date, transaction amount or by a custom setting, for example by bills overdue status sent to Recycler by Arrangement Architecture (AA).
For example, if there are several transactions for the same product type against the settlement account, then the transactions have to be prioritised.
- The oldest transactions are processed first.
- If there are more than one transaction due for the same date and type, then prioritise by the largest amount first.
The RC.CONTRACT.PRIORITY application allows the user to define sorting priority criteria based on custom values. For example, based on the bills’ status issued by AA in case of loans repayments. To perform this, set:
- Due Type - Sort By Priority Attribute
- Due Rule - Custom
The Priority Rank Type field in RC.CONTRACT.PRIORITY accepts the following three options:
- Aging Status - Enables prioritisation based on the aging status of bills generated for each arrangement.
- Bill Type - Enables prioritisation of bill (RC.DETAIL) records based on the bill type of the arrangements.
- Blank – The value is used if the prioritization is by Aging Status of the bills.
It is not possible to set the prioritization by both Aging Status /Blank and Bill Type in the same record.
The multi-valued Custom Priority Rank field must contain custom values in the order which they must be sorted. Based on the Custom Priority Rank the Custom Priority Rank field must contain valid EB.LOOKUP record values from AA.OVERDUE.STATUS or from AA.BILL.TYPE.
In the example below, the custom values represent the overdue bill’s status based on aging / bill type as they are sent by AA to Recycler, to process the retry requests.


The overdue status is shown in the RC.DETAIL record after the request is settled.
For example, if the Payment Rules are setup to consider the oldest bill first for an AA Product, and for the same AA Product, the contract priority rule is setup to consider the largest amount first (different setup than in Payment Rules), the system works as follows:
- If two bills are issued for the same contract on the same date, the system settles the bills by date (oldest one first) ignoring the ‘By amount’ setup in the recycler.
- If two bills are issued for the same contract on different dates, the system settles the bills considering the ‘By amount’ setup in the recycler.
- If two bills are issued for different contracts on different dates, the system settles the bills considering the ‘By amount’ setup in the recycler.
- If two bills are issued for different contracts on the same date, the system settles the bills by date (oldest one first) ignoring the ‘By amount’ setup in the recycler.

The user can define product priorities based on contract custom criteria using the RC.PRODUCT.PRIORITY application. If the user wants to define such priority, the Rank Based Priority field must be defined with the RC.CONTRACT.PRIORITY custom name. If this is set, the order defined in RC.CONTRACT.PRIORITY is applied to all products setup in RC.PRODUCT.PRIORITY. For example, it is possible to define custom priority criteria based on bills overdue status and based on product type. The bills overdue status should be setup first in the RC.CONTRACT.PRIORITY application as a custom record (read the RC.CONTRACT.PRIORITY for more details).
In order to sort the retry request based on the setup in RC.CONTRACT.PRIORITY and the one in the product order defined in RC.PRODUCT.PRIORITY, Priority Execution field must be defined. The values in this field are ’Rank Then Product’ and ’Product Then Rank’.
If the value ’Rank Then Product’ is selected, if more than one retry request is posted against the same account, the system orders requests based on the rank (status) defined in RC.CONTRACT.PRIORITY first and then by the product as defined in RC.CONTRACT.PRIORITY. If the value ’Product Then Rank’ is selected, the system orders the requests by product first and then by their rank from the RC.CONTRACT.PRIORITY application.

The following screenshot shows the RC.PRODUCT.PRIORITY is created with the value ’Rank Then Product’.
The RC.CONTRACT.PRIORITY custom record ‘MORTGAGELOANS’ has the setup as shown in the below screenshot.
The RC.PRODUCT.PRIORITY record is setup to order the requests according to the rank (status) first and then according to the product order (MORTGAGE.LOANS.USD and then MORTGAGE.LOANS.1Y), if more than one request has the same rank (status).
In case the RC.PRODUCT.PRIORITY record has a custom ID and if the Priority Execution field is defined with the value ’Rank Then Product’, the Aa Product Group field will become multivalued, allowing the definition of priorities based on products which are part of different AA PRODUCT GROUPS in the same record.
The input of Aa Product Group field is mandatory in case any Aa Product are defined. The Aa Product definition is not mandatory if the Aa Product Group is entered. If only the Aa Product Group is defined, the system considers all the retry requests posted by any product type within the product group and orders them by date (the oldest one is considered first). It is not possible to define a duplicate combination of Aa Product Group and Aa Product of the same type in the same record.

The online recycler checks for the following:
- New triggers on the accounts with active retry requests.
- Retry request for which the cut off time has passed.
The RC.PARAMETER
application controls the retry trigger and the Create Retry Trigger field can have one of the following options:
- Any Credit – The system creates a retry trigger (
RC.RETRY.TRIGGER
table application) for any credit posted on the account. - Credit Balance – The system creates a retry trigger only if the new credit makes the account balance positive.

In the OVERRIDE
record, ACCT.UNAUTH.OD, the Susp Appln field and Fwd Acct Mode should to be configured, as shown in the example below:

Before posting a transaction, the Transaction Recycler checks the value date of when the settlement account received the funds and posts the transaction using the value date, rather than the system's current date. In case the value date of receiving the funds is a date prior to the system's current date, the Transaction Recycler posts the transaction respecting the value date rather than the system current date (backdated).
An instalment bill for a loan arrangement is made due on Tuesday. On Tuesday, the settlement account that has been configured has zero balance and hence, the bill is not settled.
In the example, it is assumed that on Wednesday, the settlement account still has zero balance. Therefore the Recycler retries to settle the bill on Wednesday, but because of the zero balance in the settlement account the bill remains unsettled.
On Thursday, the settlement account is credited backdated with effective date on Wednesday. The online RC service retries to settle the bill on Thursday, with Wednesday's date, respecting the value date of receiving the funds, instead of settling the bill using the system's current date.
Since the Transaction Recycler is a service that runs on COB, it posts transactions only on working days. The financial institution or bank can set the Transaction Recycler to treat holidays as working days using the Attribute Type and Attribute Value fields in AA.PARAMETER, to post back value dated transactions on non-working days.
Configuring AA.PARAMETER
The following fields in AA.PARAMETER application are used to define whether the Transaction Recycler can post a transaction on a holiday.
- Attribute Type - Defines whether the RC can post a transaction on a non-working day
- Null
- SCHEDULE.INITIATION.ON.HOLIDAY
- Attribute Value - Defines the value of the Attribute Type field.
- Null
- CALENDAR
If the fields are configured as SCHEDULE.INITIATION.ON.HOLIDAY and CALENDAR respectively, the system updates the initiation type treating the holiday as a working day. Also for backdated activities, the system allows to calculate the penalty interest for transactions by,
- Reversing any activities post value date.
- Applying the payment.
- Replaying, if necessary, any activities for calculating penalty interest until the system’s current date.
If the values of these fields are Null, the Transaction Recycler reverses the Age Overdue activity (Age Overdue is a scheduled activity that the system executes considering the configuration in the Overdue Property Class), but does not apply any replay, when posting a transaction with a back value date.
Transaction Recycler is available for various product lines including Accounts, Lending, and Deposits. For Accounts, the value of the parameter does not affect the behavior of the RC since the scheduled activities are executed during EOD and not SOD like Lending and Deposits product lines, which means that no replay of the activities is applicable.

Consider an example when a bill in a loan contract is generated for installment on Friday. On the same day, the settlement account has no funds available to settle the bill.
When COB is executed on Friday, the system's date moves to Monday. For the contract, the scheduled Age Overdue activity is executed and three days of penalty interest is applied to the contract (from Friday to Monday).
On Monday, the settlement account receives sufficient funding to fully settle the bill with the value date on Saturday.
The following scenarios illustrate the behavior of the transaction recycler based on the system configuration.
Scenario 1
|
Scenario 2
|
---|---|
|
|
Business Events
When the Emit Business Event field in MS.PARAMETER is set as ‘Yes’, the business events representing the state change are emitted.
The following business events are emitted for Transaction Recycler.
Business Event | Description |
---|---|
settlementService.transactionRetry.currentRetry | Event to be emitted when the transaction retry is moved to current status |
settlementService.transactionRetry.fundRecovered | Event to be emitted for a transaction retry when the funds are recovered successfully |
settlementService.transactionRetry.fundReserved | Event to be emitted for a transaction retry when the funds are reserved successfully |
settlementService.transactionRetry.manuallyApproved | Event to be emitted when a transaction is manually approved |
settlementService.transactionRetry.retryCancelled | Event to be emitted when the transaction retry is cancelled |
settlementService.transactionRetry.retryCompleted | Event to be emitted when the transaction retry is completed |
settlementService.transactionRetry.retryCreated | Event to be emitted when the transaction retry is created |
In this topic