Client Usage
Demo Video
This video shows the complete PeSIT Wizard Client workflow: adding a server, file transfer, favorites, calendar and scheduling.
Web Interface
The web interface allows you to:
- Manage target PeSIT servers
- Send and receive files
- View transfer history
- Manage favorites and schedules
- Test connections

Send a File (SEND)
- Go to Transfer
- Select SEND as the direction
- Select the target server
- Fill in:
- Partner ID: Your client identifier
- Local File Path: Full path of the file to send
- Virtual File ID: Virtual file identifier (provided by the bank)
- Click Start Transfer

Receive a File (RECEIVE)
- Go to Transfer
- Select RECEIVE as the direction
- Select the source server
- Fill in:
- Partner ID: Your client identifier
- Save To Path: Destination path (supports placeholders)
- Virtual File ID: Virtual file identifier
- Click Start Transfer

Path Placeholders
For RECEIVE transfers, you can use dynamic placeholders in the destination path:
| Placeholder | Description |
|---|---|
${partner} | Partner ID |
${virtualFile} | Virtual file name (PI 12) |
${server} | Server ID |
${serverName} | Server name |
${timestamp} | Timestamp (yyyyMMdd_HHmmss) |
${date} | Date (yyyyMMdd) |
${time} | Time (HHmmss) |
${year}, ${month}, ${day} | Date components |
${uuid} | Unique UUID |
Example: /data/received/${partner}/${virtualFile}_${timestamp}.dat
Result: /data/received/PARTNER01/DATA_FILE_20251211_213000.dat
PeSIT Note
The PeSIT protocol does not transmit the physical filename, only the virtual file identifier (PI 12). The placeholders ${file}, ${basename}, ${ext} are therefore not available.
REST API
Send a File
curl -X POST http://localhost:8080/api/transfers/send \
-H "Content-Type: multipart/form-data" \
-F "file=@payment.xml" \
-F "serverId=1" \
-F "remoteFilename=PAYMENT_20250110.XML" \
-F "partnerId=MY_COMPANY" \
-F "virtualFile=PAYMENTS"Response:
{
"id": "550e8400-e29b-41d4-a716-446655440000",
"status": "COMPLETED",
"direction": "SEND",
"filename": "PAYMENT_20250110.XML",
"size": 15234,
"startTime": "2025-01-10T10:30:00Z",
"endTime": "2025-01-10T10:30:05Z"
}Receive a File
curl -X POST http://localhost:8080/api/transfers/receive \
-H "Content-Type: application/json" \
-d '{
"serverId": 1,
"remoteFilename": "STATEMENT_20250110.XML",
"partnerId": "MY_COMPANY",
"virtualFile": "STATEMENTS"
}'Response:
{
"id": "550e8400-e29b-41d4-a716-446655440001",
"status": "COMPLETED",
"direction": "RECEIVE",
"filename": "STATEMENT_20250110.XML",
"localPath": "/data/received/STATEMENT_20250110.XML",
"size": 8542
}Download a Received File
curl -O http://localhost:8080/api/transfers/550e8400-e29b-41d4-a716-446655440001/downloadTransfer History
curl http://localhost:8080/api/transfersResponse:
{
"content": [
{
"id": "550e8400-e29b-41d4-a716-446655440000",
"status": "COMPLETED",
"direction": "SEND",
"filename": "PAYMENT_20250110.XML",
"serverName": "BNP Paribas",
"startTime": "2025-01-10T10:30:00Z"
}
],
"totalElements": 1,
"totalPages": 1
}Filter History
# By status
curl "http://localhost:8080/api/transfers?status=FAILED"
# By direction
curl "http://localhost:8080/api/transfers?direction=SEND"
# By date
curl "http://localhost:8080/api/transfers?from=2025-01-01&to=2025-01-31"
# By server
curl "http://localhost:8080/api/transfers?serverId=1"Favorites
Favorites allow you to save transfer configurations for easy reuse.

Create a Favorite
- Perform a transfer from the Transfer or History page
- Click the star icon to add to favorites
- Give the favorite a name
Edit a Favorite
- Go to Favorites
- Click the pencil icon
- Modify the parameters:
- Name and description
- Target server
- Partner ID
- Virtual File
- Local path (with placeholders for RECEIVE)
- Click Save Changes

Schedule Synchronization
When you modify a favorite, all linked schedules are automatically updated.
Execute a Favorite
Click the Execute button to immediately start the transfer.
Schedules
Schedules allow you to automate transfers at specific times.

Create a Schedule
- From the Favorites page, click the calendar icon
- Choose the schedule type:
- Daily: Every day at a specific time
- Weekly: Each week on a specific day and time
- Monthly: Each month on a specific day
- Hourly: Every hour
- Interval: Every N minutes
- Once: A single time at a specific date/time
- Cron: Custom cron expression
- Configure the options:
- Working days only: Skip weekends and holidays
- Business Calendar: Use a custom calendar
- Click Create Schedule

Business Calendars
Business calendars allow you to define working days and holidays for schedules.

Create a Calendar
- Go to Calendars
- Click New Calendar
- Configure:
- Name: Calendar name (e.g., "France")
- Timezone: Time zone
- Working Days: Working days (click to enable/disable)
- Holidays: Add holidays
- Click Create Calendar

Use a Calendar
When creating a schedule, select the calendar in the Business Calendar field. Transfers will be automatically postponed to the next working day if the scheduled date falls on a holiday or weekend.
Automation via Scripts
Bash Script
#!/bin/bash
# send-payments.sh
API_URL="http://localhost:8080"
SERVER_ID=1
PARTNER_ID="MY_COMPANY"
VIRTUAL_FILE="PAYMENTS"
for file in /data/outbox/*.xml; do
filename=$(basename "$file")
echo "Sending $filename..."
response=$(curl -s -X POST "$API_URL/api/transfers/send" \
-F "file=@$file" \
-F "serverId=$SERVER_ID" \
-F "remoteFilename=$filename" \
-F "partnerId=$PARTNER_ID" \
-F "virtualFile=$VIRTUAL_FILE")
status=$(echo "$response" | jq -r '.status')
if [ "$status" = "COMPLETED" ]; then
echo "OK: $filename sent successfully"
mv "$file" /data/sent/
else
echo "FAIL: Failed to send $filename"
echo "$response"
fi
doneCron Job
# Retrieve statements every day at 7am
0 7 * * * /opt/scripts/receive-statements.sh >> /var/log/pesitwizard.log 2>&1
# Send payments every hour
0 * * * * /opt/scripts/send-payments.sh >> /var/log/pesitwizard.log 2>&1Error Codes
| Code | Description | Action |
|---|---|---|
CONNECTION_REFUSED | Server unreachable | Check host/port |
AUTH_FAILED | Authentication failed | Check clientId/password |
PARTNER_UNKNOWN | Partner not recognized | Check partnerId |
FILE_NOT_FOUND | File not found | Check virtualFile/filename |
TIMEOUT | Timeout exceeded | Retry or increase timeout |