Before you start
You need the following before you build and submit a V-file:- SFTP credentials and GPG encryption keys, configured through security setup.
- A three-character submitter identifier assigned by Fexco during onboarding.
- Boarded merchants with merchant IDs and terminal IDs that match the IDs in your file.
If you do not have your submitter identifier or SFTP location,
contact Fexco DCC Support at DCCSupport@fexco.com.
V-file structure overview
Every V-file follows the same record order. Each record occupies a single line in the file, with fields at fixed positions. The following table describes the record types in the order they must appear:
The V-file has two levels of integrity checking. A failure in
either check causes the entire file to be rejected.
- Financial integrity: transaction records must total into summary records, summary records must total into claim records, and claim records must total into the trailer.
- Logical integrity: every record must have a sequence
number starting at
0000001and incrementing by one, and the record count in the UTL must equal the highest sequence number.
File naming convention
Name your V-file using the following format (all uppercase):
For example:
Build the file
Your system must produce each record type in the correct order. The following sections describe what each record must contain and how to verify it. To follow along, download the sample V-file and open it in a code editor with column view (such as UltraEdit or GNU Emacs) to verify your field positions against the column ruler.1
Start with the volume header (line 1)
The volume header (VOL1) is the first line. It identifies the file and contains a six-digit file sequence number that must match thennnnnn in the filename.The sequence number is a counter that you maintain. Start
at 000001 for your first file and increment by one each
time Fexco accepts or partially accepts a file. If Fexco
rejects the file entirely, do not increment. Resubmit
with the same sequence number.Your system must place the following fields at exact
positions. The line must be exactly 90 characters long,
with space-fill or zero-fill in all unused positions:2
Add the user header (line 2)
The user header (UHL1) is the second line. It contains the file creation date and a fixed work code that identifies this as a submission file.When the three-digit sequence number rolls over from
999 to 000, the full six-digit sequence number in
the filename and volume header is not affected.3
Add transaction records (lines 3+)
Each transaction occupies a single line in the body of the file. Your system must produce one line for every card transaction in the reporting period, including both DCC and domestic transactions.Transaction codes
The transaction code at positions 20–21 identifies the card type and whether the transaction is a sale or refund. The following table lists the supported codes:DCC is not permitted on cash advance (
J3) transactions
per compliance requirements.4
Include subrecords if needed
Some transactions need an additional line of data immediately after the transaction line to carry type-specific information. Common subrecord types include:- MCP (
07): offered currency code and detection method for Multi-Currency Pricing transactions. - ICC addendum (
10): the application currency code read from the card’s chip during a chip transaction (EMV Tag 9F42). Your payment terminal captures this value. - Contactless (
39): contactless-specific data captured by the payment terminal during a tap transaction.
Only one subrecord of each type is permitted per
transaction. A transaction can have multiple subrecords
of different types (for example, both
07 and 39),
each on its own line with its own sequence number.5
Calculate summary and claim totals
After all transaction lines, your system must produce totals that Fexco uses to verify the file has not been corrupted or truncated. If the totals do not match the transactions, the entire file is rejected.There are two types:- Summary records: one for each combination of merchant, terminal, and currency. The record code varies depending on whether sales exceed refunds or vice versa, and whether the summary covers cash advances.
- Claim records: one per merchant. The record code varies depending on whether the merchant’s total sales exceed total refunds or vice versa.
6
Close the file with the user trailer (last line)
The user trailer (UTL1) is the last line (90 characters). It contains the grand totals of all claim records and a count of records in the file. Fexco checks this count against the sequence numbers. If they do not match, the file is rejected.Your system must place the following fields at exact positions:The record count in the trailer must match the highest
sequence number. If it does not, the file is rejected.
See
Troubleshoot transaction import
for rejection codes and resubmission steps.
Submit empty files
If no transactions occurred during the reporting period, you must still submit a V-file. An empty V-file contains only the volume header (VOL1), user header (UHL1), and user trailer (UTL1) with all monetary totals and record counts set to zero. The empty file must follow the same naming convention and sequence numbering as a regular file.Encrypt and submit the file
Follow the steps below to encrypt and upload your file to Fexco:1
Check the confirmation files
After Fexco processes your file, three confirmation files appear in theOutgoing folder on your SFTP server. The following table
describes each file:
Read the confirmation text file
Open the confirmation text file to check the result:- Completely accepted: all transactions were processed. Increment the file sequence number for your next submission.
- Rejected entirely: the entire file was rejected. The UHL
line contains an
Rfollowed by a two-digit rejection code. Fix the rejection cause and resubmit with the same sequence number. Do not increment. - Partially rejected: some transactions were rejected. The
UHL line contains a
P. Accepted transactions are processed. Fix the rejected transactions and resubmit them in a new file with the next sequence number.
The confirmation text file shows “completely accepted.” If the
file was rejected or partially rejected, see
Troubleshoot transaction import
for the full list of rejection codes and resubmission steps.
Next steps
After you have submitted your V-file and verified the confirmation, use the following resources for troubleshooting or to learn more:- V-file format specification: the complete field-by-field reference for all segments and subrecords.
- Troubleshoot transaction import: file-level and transaction-level rejection codes.
- Settlement and commission: learn how V-file data feeds into settlement and commission calculation.
