Cash Sweeping
Treasurers, as part of their daily activity, need to optimize their liquidities by managing many accounts in different banks, while minimizing fees (like overdrafts and commissions) and moving excess amounts to accounts which offer the best conditions.
Banks can also provide similar facilities to their clients and offer automatic DDA (Direct) transfers depending on pre-defined rules. Those transfers can be done automatically through the scheduled task TARGET_BALANCE (cash sweeping on account basis) or through the scheduled task ACC_BOOK_SWEEPING (cash sweeping on book basis).
Both activities are managed through the Account Sweeping Configuration window and the scheduled tasks which provide:
• | The ability to automatically move cash from one/several account(s) or book(s) to another |
• | A completely automated process via a scheduled task |
• | The ability to partially automate the process (i.e. a scheduled task/report which allows modifying account sweeping choices) |
This process is based on the Inventory position. The result is the generation of:
• | Transfer Agent trades (for Nostro Sweep) |
• | Simple Transfer trades (for Client Account Sweep) |
• | Customer Transfer trades (Call Accounts) |
1. Setup
1.1 Domain Values
Add value ACCOUNT_SWEEPING to domain "flowType".
1.2 Account Sweeping Configuration
From the Calypso Navigator, navigate to Configuration
> Accounting > Sweeping (menu action refdata.AccountSweepingConfigWindow
), or
from the Account window choose Utilities > Sweeping.
In the Config Detail section:
» | You can select a config type - Config types are defined in domain "AccountSweepingRuleType". |
For Active Sweeping configs (triggered manually from the Inventory Position), set Config Type = Internal.
For Passive Sweeping configs (triggered by the incoming statement MT940), set Config Type = External.
» | Use the Priority field to manage “cascades” of sweepings. The lowest priority is 0. |
» | Use the Active From/To fields to indicate that the rule is available between these dates. It allows you to manage changes in the rules and to enter new rules in advance. |
» | The Balance Type is only available for "By Book" with Usage = Target Balance. It allows sweeping custom balances between a source account and its sweeping sub-account. |
See Custom Position Type for information on defining custom balances.
See Inter PO Sweeping below for more details.
» | Select the transfer type ACCOUNT_SWEEPING - Transfer types are defined in domain "flowType". |
Intraday Config
You can check "Intraday Config" to define a kickoff time and a cutoff time in a given timezone.
» | Select a timezone, enter a kick-off time, and a cut-off time as needed. |
The configuration will only be applicable within the Kick Off / Cut Off period.
If multiple configurations apply to the same account, the Kick Off Time / Cut Off Time must be exclusive, and expressed in the same timezone. For example:
• | Account A swept to Account B - Kick Off Time = 00:01AM / Cut Off Time = 04:00PM TimeZone = Europe/London |
• | Account A swept to Account C - Kick Off Time = 04:01PM / Cut Off Time = 00:00AM TimeZone = Europe/London |
Ⓘ [NOTE: The PO must be the same for the source account and the destination account, except for Inter PO Sweeping, see below]
Source Section
» | Click ![]() |
Note that you cannot add an account which is part of another sweeping rule.
You can double-click an account to open the Account Definition window.
If you select multiple accounts, you can check Aggregate to generate one sweep transfer for all the selected accounts. Otherwise, one sweep transfer is generated for each account.
If you check "By Book", you can select a book and book attributes to sweep only the related cash. When "By Book" is checked, you can also select the Usage:
– | "Target Balance" - To use the TARGET_BALANCE scheduled task to process the sweeping (see TARGET_BALANCE scheduled task below). It generates simple transfer trades on the source book and the destination book rather than transfer agent trades. |
– | "Acc Book Sweeping" - To use the ACC_BOOK_SWEEPING scheduled task to process the sweeping |
Destination Section
» | Click ... next to the Account field and select a Settle Account using the Account Browser. It will be the destination account of the sweeping transfer. |
This Account cannot be part of the Source Account(s) if the rule is related to single Account(s) e.g. single sweeping account or rule to “Apply to each account” (checkbox). Click the heading (displayed in blue) to reset the field.
» | Select a book as needed for the transfer trades. |
The destination book is used only if its legal entity is the same as the Account Processing Org. But it is not used if its legal entity is a child of the Account Processing Org.
You can set book attribute CheckParentForSweeping = true on the destination book - In this case, the book legal entity can be a child of the Account Processing Org.
» | Select a pivot account as needed - This only applies if the sweeping rule is related to a group of accounts. The pivot account must be one of the selected accounts. |
Threshold Section
» | Enter the maximum and minimum limits and amounts you wish to achieve. You need to specify at least a minimum balance or a maximum balance. |
» | Enter the rounding base of the transfer amount in the Tick field so that: |
Rounded transfer amount = ceil(transfer amount / tick) * tick
(ceil rounds the decimal value to the next upper integer)
Note that the tick cannot be signed.
Example - If you want to round to the next 50 dollars, set tick = 50. 243 will be rounded to 250.
» | Enter the minimum transfer amount. This amount cannot be signed. |
When a Sweeping rule is set up for a group of accounts, the following scenarios may apply:
• | If "Aggregate" is checked, the process applies the rule to the aggregated position of all the accounts: |
– | If a Pivot account is selected, the transfer is generated with this account, regardless of the balance of each account. |
– | If no Pivot account is selected, the transfer is generated with the account which has the most “interesting” amount: greatest creditor balance in case of maximum to apply or greatest debtor balance in case of minimum to apply. |
• | If "Aggregate" is not checked, the process applies the rule to each account individually: |
– | If a Pivot account is selected, several transfers can be generated between all the accounts composing the group. The final transfer is generated between the Pivot account and the Destination account. |
– | If no Pivot account is selected, all the transfers are generated with the Destination account. |
Intra PO Sweeping
The PO is the same but the accounts and books are different.
The recommended setup to perform Intra PO Sweeping is "By Book" with Usage = Target Balance.
It performs sweeping between the source account / source book and destination account / destination book using two simple transfer trades on the source book and the destination book.
The TargetAccountId and RelatedAccountId trade keywords are populated and allow selecting specific SDIs.
Inter PO Sweeping
The POs, accounts and books are different.
The recommended setup to perform Inter PO Sweeping is "By Book" with Usage = Target Balance, and Balance Type = <custom balance>.
It performs sweeping between the source account / source book and destination account / destination book using two simple transfer trades on the source book and the destination book.
The TargetAccountId and RelatedAccountId trade keywords are populated and allow selecting specific SDIs.
If the domain "ProcessingConfig" contains Value = Sweeping.SweepSubAccount.IsActive and Comment = true, a transfer is generated for the custom balance between the source account and its sweeping sub account.
The sub account must be defined with PO = Destination PO, Legal Entity = Source PO, Role = Client and must be set on the source account in the field Sweep SubAccount:
You also need to set INVENTORY_POSITION_CUSTODY_MODE = true so that the ClientAccount trade keyword can be set to the sweeping sub account on the Simple Transfer trade of the destination book, in order to generate a transfer on the sweeping sub account for the custom balance.
1.3 Access Permission and Authorization
The access permissions relating to account sweeping are: AddModifyAccountSweeping and RemoveAccountSweeping. For further details on access permissions, please refer to the Calypso Security User Guide.
In order for Authorization mode to apply to sweeping configs, you need to add “AccountSweepingConfig” to the domain “classAuthMode”.
2. Account Sweeping Process
2.1 Account Sweeping by Account
The scheduled task TARGET_BALANCE creates a series of Transfer Agent trades to rearrange money across a set of nostro accounts. The Scheduled Tasks window is accessed using Configuration > Scheduled Tasks from the Calypso Navigator (menu action scheduling.ScheduledTaskListWindow
).
It can also be used for sweeping configurations by book with usage "Target Balance" to create two Simple Transfer trades: one for the source book / source account and one for the destination book / destination account.
The Account Sweeping rules will be applied by this Scheduled Task which will do the following:
• | Retrieve the available Sweeping Account rules and order them by priority from the highest to the lowest |
• | Retrieve the balances of all accounts concerned |
• | Priority by priority and starting by the highest, calculate the amounts to apply |
• | Create trades Transfer Agent or Simple Transfer |
• | When an account is concerned with transfers coming from sweeping rules that have highest priority, these transfers are taken into account in the calculated balance, before applying the sweeping rule. |
Select a trade filter, a user, a pricing environment, and a processing organization.
Specify the following attributes as applicable:
• | Config Type – Select a sweeping config type as needed, or NONE. |
• | Retroactivity – Select true or false. Setting this field to true means that in case of back valued transfers, the sweeping process will generate Trade transfers related to the back valued amounts and dates, instead of the process date. |
• | Position Source - Select "Inventory Position" for account sweeping. |
• | Position Type – Select the type of position to retrieve the balances: ACTUAL, THEORETICAL, FAILED. |
• | Position Class – Select in the list the Position Class: INTERNAL, EXTERNAL, CLIENT. |
• | Position Date – Select the type of position in the list: TRADE, SETTLE, VALUE, AVAILABLE. |
• | Context Position Filter - Only applies to context position sweeping. |
• | Legal Entity – Enter the name of the Legal Entity or leave it blank for all Agents. The process will retrieve the sweeping rules that have accounts with this legal entity only. |
• | Lock Accounts - True or false. |
If “Lock Accounts” = true, the accounts used in the scheduled task cannot be used in manual sweeping. If another process is already using those accounts, the scheduled task cannot use them, and an exception task is generated for those accounts.
If “Lock Accounts” = false, there is no check for locked accounts.
• | By Book - Only applies for sweeping configurations by book with usage "Target Balance". Select True for such configurations. |
In this case, it creates two Simple transfers: One trade for the source book / source account and one trade for the destination book / destination account.
The transfer amount is calculated as follows:
• | If a tolerance amount is set-up, no transfer is generated when the balance is between the Minimum Balance or Maximum Balance and its Tolerance amount. |
• | If the Balance is greater than the Maximum Balance + Tolerance, then |
Transfer Amount = Maximum Balance – ABS(Balance)
• | If the Balance is less than the Minimum Balance + Tolerance, then |
Transfer Amount = Minimum Balance – ABS(Balance)
• | The amounts are rounded to the nearest taking into account the Minimum and the Tick. |
This process is based on the Inventory position. The result is the generation of:
• | Transfer agent trades for Nostro Sweep |
• | Simple transfer trades for Client Account Sweep |
• | Customer transfer trades for Call Accounts |
From the Calypso Navigator, navigate to Processing > Accounting Operations > Transfer Agent > Trade > Open to view the Transfer Agent trade.
It opens the trade selector.
» | Click Show Trades to view all transfer agent trades. |
» | Double-click a trade to view its details. |
The transfer type is ACCOUNT_SWEEPING and the linked Id is the Account Sweeping Configuration.
2.2 Context Position Sweeping
Sweeping context positions is only supported for sweeping configurations by account.
The scheduled task TARGET_BALANCE allows sweeping context positions using the following attributes:
• | Position Source - Select "Context Position" for context position sweeping. |
• | Context Position Filter - Enter the name of a context position filter. |
It generates Transfer Agent trades between the accounts defined in the sweeping configuration. The transfer type is ACCOUNT_SWEEPING and the linked Id is the Account Sweeping Configuration.
Additionally, context position sweeping can be done via the Calypso Workstation from a Cash Ladder report. Up to two accounts may be selected. Right-click on the row to choose between Actual and Theoretical sweeping, then click Sweep.
2.3 Account Sweeping by Book
The scheduled task ACC_BOOK_SWEEPING will select all sweeping configurations flagged "By Book" and process them in two steps:
• | The system will first create Transfer Agent trades to put all account/book positions to 0, using the trading book of the position. |
• | Then the system will maintain the min/max defined on the sweeping configuration using the destination book. |
Select a trade filter, a user, a pricing environment, and a processing organization.
Specify the following attributes as applicable:
• | Config Type – Select a sweeping config type as needed. |
• | Book Position Type – Select the position type (ACTUAL or THEORETICAL for example) that needs to be set to 0. |
• | Position Type –Select the position type (ACTUAL or THEORETICAL for example) to be used to maintain the min/max amounts. |
• | Book Position Date – Select the position date (TRADE or SETTLE for example) to be used to put the book/account balance to 0. |
• | Position Date – Select the position date (TRADE or SETTLE for example) to be used to maintain the min/max amounts. |
• | Legal Entity – Enter the name of the Legal Entity or leave it blank for all Agents. The process will retrieve the sweeping rules that have accounts with this legal entity only. |
• | Config Id – you can select a config id to run the scheduled task for a single config. |
It is possible to define a specific trade workflow (or workflow transition) for the transfer agent trades created from the account sweeping process using a static data filter based on the attribute "KEYWORD.TradeSource" IN AccountSweeping.
3. Active Sweeping vs. Passive Sweeping
Active Sweeping configs (triggered manually from the Inventory Position) have to be defined using the Config Type = Internal.
Passive Sweeping configs (triggered by the incoming statement MT940) have to be defined using the Config Type = External.
An example is presented below. Please note that when the same account belongs to two account sweeping configs (one active/one passive), you must set a higher priority for Config Type = External.
Example with the following scenario:
• | GUARFEES-EUR account is passively (External) swept to LOCAL-EUR account - Since LOCAL-EUR account is involved in another sweeping config, the priority set on the External sweeping config is higher than the one defined as Internal. |
• | LOCAL-EUR account is actively (Internal) swept to MASTER-EUR account. |
• | B2-EUR account and B2LOCAL-EUR account are passively swept (External) to MASTER-EUR account |
You can perform manual sweeping from the Inventory Position report.
Configure the columns as follows:
• | Add the columns "Sweeping Hierarchy.1" and "Sweeping Hierarchy.2" to the display. |
• | Add those columns to the sort columns and to the grouping columns. |
• | Display the results by Aggregation (View > Set Table > Aggregation). |
• | Set subtotals by Dates. |
To sweep an aggregation node, select the node's subtotal, right-click and choose Process > Pool Consolidation.
You will be prompted to select an account sweeping configuration:
» | Select a configuration and click Next. |
The Account Pooling Consolidation window is displayed.
Check "Apply Sweeping" for the account sweepings you want to process.
You can check "LastSweeping" to prevent the creation of additional sweeping trades for the same accounts and the same date, including from the scheduled task TARGET_BALANCE. It sets the trade keyword LastSweeping=true on the sweeping trades.
Click Next to process the account sweeping.
You can view the sweeping trades from the Trade Browser.