diff --git a/sage_validation/file_validator/views.py b/sage_validation/file_validator/views.py
index a041fbc9320d00dbeb8826c7150ddf95358ff5a0..5eb98dddf158d5597bdad04b41b256d7b491aaad 100644
--- a/sage_validation/file_validator/views.py
+++ b/sage_validation/file_validator/views.py
@@ -53,16 +53,9 @@ class CSVUploadAPIView(APIView):
 
         updated_data = self.update_fields(csv_data)
         request.session["validated_csv"] = updated_data
+        request.session["input_file_hash"] = UserActivityLog.generate_file_hash(csv_file)
         request.session.modified = True
-        # Log the user activity
-        UserActivityLog.objects.create(
-            user=request.user,
-            action="upload",
-            name=csv_file.name,
-            input_file_hash=UserActivityLog.generate_file_hash(csv_file),
-            output_file_hash=UserActivityLog.generate_file_hash(updated_data),
-            timestamp=timezone.now()
-        )
+
         return Response({
             "status": "success",
             "message": "File successfully uploaded and processed.",
@@ -111,16 +104,25 @@ class CSVExportAPIView(APIView):
     def get(self, request: Request) -> Response:
         """Return processed CSV as a downloadable response."""
         csv_data: list[dict[str, str]] = request.session.get("validated_csv", [])
+        input_file_hash: str = request.session.get("input_file_hash", "")
 
         if not csv_data:
             return Response({"status": "error", "message": "No data available for export."},
                             status=status.HTTP_400_BAD_REQUEST)
-
+        file_name = f"Validated_{csv_data[0].get('TransactionReference', 'file')}.csv"
         response = HttpResponse(content_type="text/csv")
-        response["Content-Disposition"] = 'attachment; filename="updated_file.csv"'
+        response["Content-Disposition"] = f"attachment; filename={file_name}"
 
         writer = csv.DictWriter(response, fieldnames=csv_data[0].keys())
         writer.writeheader()
         writer.writerows(csv_data)
-
+        # Log the user activity
+        UserActivityLog.objects.create(
+            user=request.user,
+            action="download",
+            name=file_name,
+            input_file_hash=input_file_hash,
+            output_file_hash=UserActivityLog.generate_file_hash(csv_data),
+            timestamp=timezone.now()
+        )
         return response
diff --git a/test/conftest.py b/test/conftest.py
index 9f0053be849e1cbdc23e7e0e584c33d0517f7260..94a62ed9ada92e49af102a8213b29e3866eb9b90 100644
--- a/test/conftest.py
+++ b/test/conftest.py
@@ -36,6 +36,7 @@ def sample_input_file() -> SimpleUploadedFile:
         "TaxValue",
         "SYSTraderGenerationReasonType",
         "GoodsValueInBaseCurrency",
+        "TransactionReference",
 
         # NominalAnalysis repeating columns (Example: /1 for first occurrence)
         "NominalAnalysisTransactionValue/1",
@@ -77,6 +78,7 @@ def sample_input_file() -> SimpleUploadedFile:
         "10",  # TaxValue
         "1000",  # SYSTraderGenerationReasonType
         "1200",  # GoodsValueInBaseCurrency
+        "BK123",  # TransactionReference(Batch Number)
 
         # NominalAnalysis repeating values (Example: /1)
         "500.75",  # NominalAnalysisTransactionValue/1
diff --git a/test/test_file_validator/test_file_validator_endpoints.py b/test/test_file_validator/test_file_validator_endpoints.py
index ac78502a4b0eb99b30dbc4454863273b288cbae2..7eb76d15d5c52ebeaf1d8df2db3dc59af24662e9 100644
--- a/test/test_file_validator/test_file_validator_endpoints.py
+++ b/test/test_file_validator/test_file_validator_endpoints.py
@@ -49,13 +49,15 @@ def test_csv_export_with_data(api_client: APIClient) -> None:
     # Simulate session data
     session = api_client.session
     session["validated_csv"] = [
-        {"AccountNumber": "12345", "TransactionDate": "01/03/2024", "NominalAnalysisNominalAccountNumber/1": "N100"}
+        {"AccountNumber": "12345", "TransactionDate": "01/03/2024", "TransactionReference": "BK1234"},
     ]
+    session["input_file_hash"] = "123456"
+
     session.save()
 
     response = api_client.get(url)
 
     assert response.status_code == 200
-    assert response["Content-Disposition"] == 'attachment; filename="updated_file.csv"'
-    assert b"AccountNumber,TransactionDate,NominalAnalysisNominalAccountNumber/1" in response.content
-    assert b"12345,01/03/2024,N100" in response.content
+    assert response["Content-Disposition"] == "attachment; filename=Validated_BK1234.csv"
+    assert b"AccountNumber,TransactionDate,TransactionReference" in response.content
+    assert b"12345,01/03/2024,BK1234" in response.content