In this article, you will learn how to correctly configure statement identifiers in Duco. This step is essential for the accurate grouping of balances and transactions in your cash reconciliation processes.
Getting this configuration right prevents statement validation errors, ensures your statements are complete, and is particularly vital when handling complex data feeds, such as multiple custodians or SWIFT messages.
What is a statement identifier
A Statement identifier is a field level value that links a balance record to its corresponding transaction records.
When Duco ingests raw data, it sees individual rows of data—some represent a balance (e.g., an opening balance for the day), and others represent transactions (e.g., a payment made). A statement identifier is a unique key that tells the system which specific transactions belong to which specific balance.
Using statement identifiers is critical when:
- Using Data Prep: We recommend using a Data Prep process to feed your cash process. The statement identifier is configured within Data Prep to organise raw data before it is submitted to the matching engine of your cash reconciliation process.
- Managing Multiple Sources: If you receive data from multiple custodians or systems (e.g., Custodian A and Custodian B), a "one-size-fits-all" approach often fails. Statement identifiers allow you to create specific logic for each source, ensuring that data from different systems is not mixed up or incorrectly grouped (which can cause incorrect statements to be generated by the Duco cash module)
Why it is important
If statement identifiers are missing or incorrect, Duco cannot determine which transactions belong to which balance. This breaks the structure of the statement.
The goal is to have one unified statement containing both the balance information and all associated transaction activity for a specific account and currency.
The consequence of incorrect configuration is that Duco may treat the data as two separate, incomplete events:
Statement A: Contains only the balance data (with no transactions).
Statement B: Contains only the transaction data (with no balance).
This will cause validation errors as Duco will flag these incomplete statements as invalid because they do not look like a standard bank statement.
In addition, your accounts will be out of proof, as the system cannot verify that the opening balance + movements = closing balance.
To ensure Duco automatically constructs valid statements, you must configure the statement identifier within your Data Prep process. This is specifically done using a predefined field within the balances configuration.
Note: If you cannot find the statement identifier option in the Map & Transform settings menu, please contact your Client Success representative or email support@du.co to get this field enabled.
Configuration Steps
Follow these steps to add the identifier to your balance data:
- Navigate to the Balances section of your Data Prep process.
- Select Map & transform.
- Click on New field.
- From the dropdown list, select the statement identifier.
This action creates a new field in the balance data output fields. You can now apply a Natural Rule Language (NRL) rule to this field to define how the statement identifier is constructed.
To add the rule:
- Ensure you are still in the Balances ‘Map & transform’ section.
- Click on the name of the new field (Statement Identifier).
- This will open the field-level editor where you can enter your NRL logic.
- Select 'Add mapping/ rule'.
The NRL rule should define the unique key needed for each statement by concatenating (joining) specific data points together.
In most cases, the rule will look like this: Account + "-" + Currency, but please note that additional fields may be required for complex data, such as specific SWIFT message types.
When configuring Statement Identifiers for Balance records in Data Prep, you have to include a hyphen "-" between each identifying field (e.g. Account + "-" + Currency).
Duco uses this specific separator to recognise the relationship between the Balance and the Transactions. If this separator is missing, the system will fail to group the records correctly, resulting in fragmented statements.
This configuration sets the statement identifiers for the balance records within Data Prep.
Configuring transactions statement identifiers
You have two options for configuring statement identifiers for transaction records. While this can be done directly within the Cash process settings, we strongly recommend configuring them within Data Prep (see option 1 below).
Setting the identifiers in Data Prep offers greater flexibility. It allows you to apply different logic (NRL) to different data sources (e.g., handling SWIFT messages differently than flat files) before the data reaches the cash process.
Option 1: Configuring transaction identifiers in Data Prep (recommended)
In this method, you build the statement identifier string in Data Prep and simply select that single field in the cash process.
Step 1 - configuring statement identifiers for transactions in Data Prep
- Navigate to the transactions Map & transform page in your Data Prep process.
- Create a new field by clicking on New field and rename it to "Statement Identifier" (or any other preferred name), by clicking on the blue pencil icon.
- Add mapping/ rule that concatenates your identifying fields using the same hyphenated logic used for your balances Field1 + "-" + Field2 + "-" + Field3 etc...
Note that the field names used could well be different, as the column headers could be different between the balances and transactions files.
Step 2 - configuring statement identifiers for transactions in cash
- Navigate to the statement identification section in your cash process
- Click + Add identifier
- Select the newly created field for statement identification
Option 2: Transaction statement identifiers configuration in cash process
In this method you configure the value directly in the cash process, skipping the configuration in Data Prep described in the previous option.
- Navigate to the statement identification section in your cash process
- Select the reconciliation side for which the identifier needs to be configured
- Click + Add identifier
- Configure the transaction statement identifier(s) using the same fields as what's been configured for the balances in Data Prep and ensure the fields are in the same order as what was configured for the balance records. In this case: ‘Real bank account’ and ‘Currency’
- Go through the same steps for both sides of the cash reconciliation.
Note: Regardless of which option you choose for transactions, the statement identifier for balances is always configured in Data Prep (Balances 'Map & transform' page), as described in the previous section.
Considerations for SWIFT messages
Handling Duplicates and Multiple Message Types (MT940 vs. MT950)
Duco's cash process has built-in mechanisms to detect duplicate statements. It does this by checking if a statement identifier has already been loaded.
If you receive the same statement data in different files (e.g., one file as an MT940 and another as an MT950), Duco might flag the second file as a "Duplicate".
To successfully load both files and treat them as distinct statements, you must ensure their statement identifiers are unique. You can achieve this by including the message type as part of your identifier logic in Data Prep.
- Follow the steps described in Option 1 to create a new field and add the NRL to construct the statement identifier for transactions.
Construct your statement identifier using: Message Type + Account + Currency + Statement Number + Sequence Number.
You can use an IF statement in your NRL rule to correctly configure the balance records in Data Prep. This ensures that the specific message type is included in the unique key.
This logic must be applied consistently to both the balance records and the transaction records within Data Prep.
Another typical set of statement identifiers for SWIFTs are as follows:
Set to "MT" + Block2_MessageType + "-" + Block1_LTAddress_IdCode + "-" + text portion of
Block2_MIR from 7 to 18 + "-" + Block4_StatementNumber + "-" + Block4_SequenceNumbe
r + "-" + Block4_TransactionReferenceNumber + "-" + Block1_SessionNumber + "-" + Block1
_SequenceNumber
- Navigate to the statement identification section in your cash process
- Select the reconciliation side for which the identifier needs to be configured
- Click + Add identifier
- Add the appropriate fields to construct the identifier
Note that the fields need to be in the same order as configured for the Balance records in Data Prep. This ensures that transaction records and balance records are grouped together properly by Duco when automatically producing statements.
What if balances and transactions for the same account + currency appear on separate statements?
You may encounter a scenario where, for the same account and currency, you see two separate statements: one containing only balances and another containing only transactions.
This issue occurs when statement identifiers are missing or configured incorrectly. For Duco to combine records into a single logical statement, two conditions must be met:
- Balances and transactions must have the same statement identifier value.
- They must be loaded in the same snapshot/submission.
If these conditions are not met, the data is not grouped together, and the system splits them into separate statements. This separation leads to proofing errors due to how the system sees the data:
- The system uses the statement with the highest statement order number to populate the balances in the global accounts proofing screen.
- If the statement with the highest order number is the one containing only transactions (e.g., statement order number 3 in the below example), the system will incorrectly represent the balance as zero.
To bring these together the statement identifier needs to be set on both the balances and transactions and it should be the same. This can be done in Data Prep for the balances and transactions as per the instructions earlier in this article.
Handling Multi-Page SWIFT Statements
When using SWIFTs that have multiple statement pages the correct fields need to be used depending on what data is populated and if it’s an intermediate statement, similar to the below. This ensures that there will be a minimal amount of submission errors when loading data from Data Prep into a cash process.
Special care is required when processing SWIFT messages that span multiple statement pages (intermediate statements).
To avoid submission errors when loading data from Data Prep into a cash process, you must use the correct combination of fields. The fields you select will depend on:
- Which fields are populated in the specific message;
- Whether the message represents an intermediate page of a larger statement or the statement is just a single page.
Ensuring these fields are correctly captured in your statement identifier logic is critical for minimising load errors.