Virtual Files
Virtual files define the storage paths and naming rules for exchanged files.

Concept
A virtual file is an abstraction that allows you to:
- Define where to store received files
- Define where to look for files to send
- Apply naming rules
- Organize exchanges by type
Create a Virtual File
Via the Interface
- Select your cluster
- Go to Virtual Files
- Click Add Virtual File
- Fill in the virtual file information
- Click Create

Via API
bash
curl -X POST http://localhost:8080/api/v1/clusters/{clusterId}/virtual-files \
-u admin:admin \
-H "Content-Type: application/json" \
-d '{
"fileId": "TRANSFERS",
"name": "SEPA transfer files",
"sendDirectory": "/data/send/transfers",
"receiveDirectory": "/data/received/transfers",
"filenamePattern": "*.xml"
}'Parameters
| Parameter | Description |
|---|---|
fileId | Unique identifier (PI_12) |
name | Display name |
sendDirectory | Directory for files to send |
receiveDirectory | Directory for received files |
receiveFilenamePattern | Naming pattern with placeholders |
overwrite | Overwrite existing files |
direction | RECEIVE, SEND or BOTH |
Naming Pattern with Placeholders
For received files, you can define a dynamic naming pattern using placeholders.
Available Placeholders
| Placeholder | Description |
|---|---|
${partner} | Partner ID (PI 3 - Requester) |
${virtualFile} | Virtual file name (PI 12) |
${transferId} | Transfer ID (PI 13) |
${timestamp} | Timestamp (yyyyMMdd_HHmmss) |
${date} | Date (yyyyMMdd) |
${time} | Time (HHmmss) |
${year}, ${month}, ${day} | Date components |
${uuid} | Unique UUID |
Pattern Examples
${partner}/${virtualFile}_${timestamp}Result: PARTNER01/TRANSFERS_20251211_213000
${date}/${partner}_${transferId}Result: 20251211/PARTNER01_12345
PeSIT Wizard Note
The PeSIT protocol does not transmit the physical source filename, only the virtual file identifier (PI 12). Placeholders like ${file}, ${basename}, ${ext} are therefore not available.
Recommended Organization
/data
├── send/
│ ├── transfers/ # TRANSFERS - files to send
│ ├── direct-debits/ # DIRECT_DEBITS
│ └── misc/ # MISC
│
└── received/
├── statements/ # STATEMENTS - received files
├── ack/ # ACK - acknowledgements
└── misc/ # MISCConfiguration Examples
SEPA Transfers
json
{
"fileId": "TRANSFERS",
"name": "SEPA Transfers",
"sendDirectory": "/data/send/transfers",
"receiveDirectory": "/data/received/transfers",
"filenamePattern": "pain.001.*.xml"
}Account Statements
json
{
"fileId": "STATEMENTS",
"name": "Account Statements",
"sendDirectory": "/data/send/statements",
"receiveDirectory": "/data/received/statements",
"filenamePattern": "camt.053.*.xml"
}SEPA Direct Debits
json
{
"fileId": "DIRECT_DEBITS",
"name": "SEPA Direct Debits",
"sendDirectory": "/data/send/direct-debits",
"receiveDirectory": "/data/received/direct-debits",
"filenamePattern": "pain.008.*.xml"
}Directory Permissions
Ensure the PeSIT Wizard server has write permissions:
bash
# Inside the container
chown -R pesitwizard:pesitwizard /data
chmod -R 755 /dataBest Practices
- One virtual file per type: Separate transfers, direct debits, statements
- Explicit naming:
SEPA_TRANSFERSrather thanTRF - Absolute paths: Use
/data/...and not./data/... - Restrictive patterns: Limit accepted extensions