diff --git a/packages/component-manuscript/src/components/ReviewerReportForm.js b/packages/component-manuscript/src/components/ReviewerReportForm.js
index 4ec7c32476a16eaab4b13f2da8ac8711149492a9..d006b6d88ce239a76b440948425e0c75457a075f 100644
--- a/packages/component-manuscript/src/components/ReviewerReportForm.js
+++ b/packages/component-manuscript/src/components/ReviewerReportForm.js
@@ -215,7 +215,7 @@ export default compose(
       changeForm('reviewerReport', field, value)
     },
     addFile: ({ formValues = {}, uploadFile, changeForm, version }) => file => {
-      uploadFile(file, 'review', version.id)
+      uploadFile(file, 'review', version)
         .then(file => {
           const files = formValues.files || []
           const newFiles = [...files, file]
diff --git a/packages/component-manuscript/src/components/SubmitRevision.js b/packages/component-manuscript/src/components/SubmitRevision.js
index e1fd229e148f5d5313d23dced8a2bb1e27c6fb68..a962668fb2bbb1537795e8057505a23526e109ad 100644
--- a/packages/component-manuscript/src/components/SubmitRevision.js
+++ b/packages/component-manuscript/src/components/SubmitRevision.js
@@ -183,7 +183,7 @@ export default compose(
   ),
   withHandlers({
     addFile: ({ formValues = {}, uploadFile, changeForm, version }) => file => {
-      uploadFile(file, 'responseToReviewers', version.id)
+      uploadFile(file, 'responseToReviewers', version)
         .then(file => {
           const { files } = formValues
           const newFiles = files.responseToReviewers
diff --git a/packages/components-faraday/src/components/Files/Files.js b/packages/components-faraday/src/components/Files/Files.js
index b225acbabea7d6188800d23957eb4c630c228c30..281fa44d1069cfd429712806328208fd602de6d5 100644
--- a/packages/components-faraday/src/components/Files/Files.js
+++ b/packages/components-faraday/src/components/Files/Files.js
@@ -145,7 +145,7 @@ export default compose(
       changeForm,
       parentForm = 'wizard',
     }) => type => file => {
-      uploadFile(file, type, version.id)
+      uploadFile(file, type, version)
         .then(file => {
           const newFiles = {
             ...files,
diff --git a/packages/components-faraday/src/redux/files.js b/packages/components-faraday/src/redux/files.js
index 63a616ed58a0ccf5b58cc023cd4917b07661c484..1ece0f82225f80925ba13bf47f60439de76c7d02 100644
--- a/packages/components-faraday/src/redux/files.js
+++ b/packages/components-faraday/src/redux/files.js
@@ -32,10 +32,11 @@ const uploadSuccess = () => ({
   type: UPLOAD_SUCCESS,
 })
 
-const createFileData = (file, type, fragmentId) => {
+const createFileData = ({ file, type, fragmentId, newName }) => {
   const data = new FormData()
   data.append('fileType', type)
   data.append('fragmentId', fragmentId)
+  data.append('newName', newName)
   data.append('file', file)
 
   return {
@@ -47,6 +48,26 @@ const createFileData = (file, type, fragmentId) => {
   }
 }
 
+const setFileName = (file, { files }) => {
+  let newFilename = file.name
+  const fileCount = Object.values(files)
+    .reduce((acc, f) => [...acc, ...f], [])
+    .map(f => f.originalName)
+    .reduce((count, name) => {
+      if (file.name === name) {
+        count += 1
+      }
+      return count
+    }, 0)
+  if (fileCount > 0) {
+    const ext = file.name.split('.').reverse()[0]
+    const filename = file.name.replace(`.${ext}`, '')
+    newFilename = `${filename} (${fileCount}).${ext}`
+  }
+
+  return newFilename
+}
+
 const removeRequest = () => ({
   type: REMOVE_REQUEST,
 })
@@ -66,9 +87,13 @@ export const getRequestStatus = state => state.files.isFetching
 export const getFileError = state => state.files.error
 
 // thunked actions
-export const uploadFile = (file, type, fragmentId) => dispatch => {
+export const uploadFile = (file, type, fragment) => dispatch => {
   dispatch(uploadRequest(type))
-  return request('/files', createFileData(file, type, fragmentId)).then(
+  const newName = setFileName(file, fragment)
+  return request(
+    '/files',
+    createFileData({ file, type, fragmentId: fragment.id, newName }),
+  ).then(
     r => {
       dispatch(uploadSuccess())
       return r
diff --git a/packages/xpub-faraday/config/validations.js b/packages/xpub-faraday/config/validations.js
index b376584a5ddaaee1104667a0e08eedf0b19c1b86..57f879433bb28902b67fe957e106049ae03c39bc 100644
--- a/packages/xpub-faraday/config/validations.js
+++ b/packages/xpub-faraday/config/validations.js
@@ -41,6 +41,7 @@ module.exports = {
           Joi.object({
             id: Joi.string(),
             name: Joi.string().required(),
+            originalName: Joi.string(),
             type: Joi.string(),
             size: Joi.number(),
             url: Joi.string(),
@@ -51,6 +52,7 @@ module.exports = {
           Joi.object({
             id: Joi.string(),
             name: Joi.string().required(),
+            originalName: Joi.string(),
             type: Joi.string(),
             size: Joi.number(),
             url: Joi.string(),
@@ -61,6 +63,7 @@ module.exports = {
           Joi.object({
             id: Joi.string(),
             name: Joi.string().required(),
+            originalName: Joi.string(),
             type: Joi.string(),
             size: Joi.number(),
             url: Joi.string(),
@@ -71,6 +74,7 @@ module.exports = {
           Joi.object({
             id: Joi.string(),
             name: Joi.string().required(),
+            originalName: Joi.string(),
             type: Joi.string(),
             size: Joi.number(),
             url: Joi.string(),