diff --git a/packages/components-faraday/src/components/Files/FileDropzone.js b/packages/components-faraday/src/components/Files/FileDropzone.js
deleted file mode 100644
index 8fe3b9a53d3810be6b77aa68a94613289a816643..0000000000000000000000000000000000000000
--- a/packages/components-faraday/src/components/Files/FileDropzone.js
+++ /dev/null
@@ -1,12 +0,0 @@
-import React from 'react'
-import classnames from 'classnames'
-
-import classes from './FileDropzone.local.scss'
-
-const FileDropzone = ({ label }) => (
-  <div className={classnames(classes.dropzone)}>
-    <span>{label}</span>
-  </div>
-)
-
-export default FileDropzone
diff --git a/packages/components-faraday/src/components/Files/FileDropzone.local.scss b/packages/components-faraday/src/components/Files/FileDropzone.local.scss
deleted file mode 100644
index fccfe9120bf2a32e4721e44813a3d7ab21d4d705..0000000000000000000000000000000000000000
--- a/packages/components-faraday/src/components/Files/FileDropzone.local.scss
+++ /dev/null
@@ -1,12 +0,0 @@
-.dropzone {
-  align-items: center;
-  display: flex;
-  height: 60px;
-  justify-content: center;
-  margin: 10px 0;
-
-  span {
-    color: #888;
-    font-size: 14px;
-  }
-}
diff --git a/packages/components-faraday/src/components/Files/FileSection.js b/packages/components-faraday/src/components/Files/FileSection.js
index f495196cc460ea3493e08b689ef16626aa30973a..45fc23817d9f03f62f5fa9a37d4119e8a2913bce 100644
--- a/packages/components-faraday/src/components/Files/FileSection.js
+++ b/packages/components-faraday/src/components/Files/FileSection.js
@@ -12,7 +12,6 @@ import {
 
 import FileItem from './FileItem'
 import FilePicker from './FilePicker'
-import FileDropzone from './FileDropzone'
 import classes from './FileSection.local.scss'
 
 const DragHandle = () => (
@@ -92,7 +91,9 @@ const FileSection = ({
           previewFile={previewFile}
           removeFile={removeFile}
         />
-        <FileDropzone label="Drag files here or use the add button." />
+        <div className={classnames(classes.dropzone)}>
+          <span>Drag files here or use the add button.</span>
+        </div>
       </div>,
     ),
   )
diff --git a/packages/components-faraday/src/components/Files/FileSection.local.scss b/packages/components-faraday/src/components/Files/FileSection.local.scss
index 709f425a064251d4bf60391f3517e96d2e4bb7a9..fc117bfe4ca24af391116fa7e7bc2e0a8deb6b07 100644
--- a/packages/components-faraday/src/components/Files/FileSection.local.scss
+++ b/packages/components-faraday/src/components/Files/FileSection.local.scss
@@ -60,3 +60,16 @@
 .is-over {
   background-color: #ddd;
 }
+
+.dropzone {
+  align-items: center;
+  display: flex;
+  height: 60px;
+  justify-content: center;
+  margin: 10px 0;
+
+  span {
+    color: #888;
+    font-size: 14px;
+  }
+}
diff --git a/packages/components-faraday/src/components/Files/Files.js b/packages/components-faraday/src/components/Files/Files.js
index f61eaca9b74c0e6dc61161f5300acf1a80d817d8..57fff441e933cc4fc41b9276d336e59f138728e1 100644
--- a/packages/components-faraday/src/components/Files/Files.js
+++ b/packages/components-faraday/src/components/Files/Files.js
@@ -1,6 +1,7 @@
 import React from 'react'
 import { get } from 'lodash'
 import PropTypes from 'prop-types'
+import classnames from 'classnames'
 import { connect } from 'react-redux'
 import { withRouter } from 'react-router-dom'
 import { change as changeForm } from 'redux-form'
@@ -15,12 +16,14 @@ import {
 import { SortableList } from 'pubsweet-components-faraday/src/components'
 
 import FileSection from './FileSection'
+import classes from './Files.local.scss'
 
 import {
   uploadFile,
   deleteFile,
   getRequestStatus,
   getSignedUrl,
+  getFileError,
 } from '../../redux/files'
 
 const Files = ({
@@ -31,9 +34,20 @@ const Files = ({
   changeList,
   dropSortableFile,
   previewFile,
+  error,
   ...rest
 }) => (
   <div>
+    {error && (
+      <div
+        className={classnames({
+          [classes['error-container']]: true,
+          [classes.hidden]: !error,
+        })}
+      >
+        Error uploading file, please try again.
+      </div>
+    )}
     <FileSection
       addFile={addFile('manuscripts')}
       allowedFileExtensions={['pdf', 'doc', 'docx']}
@@ -83,6 +97,7 @@ export default compose(
   connect(
     state => ({
       isFetching: getRequestStatus(state),
+      error: getFileError(state),
     }),
     {
       changeForm,
@@ -142,14 +157,16 @@ export default compose(
       changeForm,
       version,
     }) => type => file => {
-      uploadFile(file, type, version.id).then(fileResponse => {
-        const newFiles = {
-          ...files,
-          [type]: [...files[type], fileResponse],
-        }
-        setFiles(newFiles)
-        changeForm('wizard', 'files', newFiles)
-      })
+      uploadFile(file, type, version.id)
+        .then(file => {
+          const newFiles = {
+            ...files,
+            [type]: [...files[type], file],
+          }
+          setFiles(newFiles)
+          changeForm('wizard', 'files', newFiles)
+        })
+        .catch(e => console.error(`Couldn't upload file.`, e))
     },
     moveItem: ({ moveFiles, files, setFiles }) => type => (
       dragIndex,
diff --git a/packages/components-faraday/src/components/Files/Files.local.scss b/packages/components-faraday/src/components/Files/Files.local.scss
index 5e6d16ca97f87741459a3d88f0f3a1a6c11cdc94..a51a8ec0d659977a609fc3018b52fc636f5640d8 100644
--- a/packages/components-faraday/src/components/Files/Files.local.scss
+++ b/packages/components-faraday/src/components/Files/Files.local.scss
@@ -1,30 +1,10 @@
-.file-item {
-  align-items: center;
-  border: 1px solid black;
+.error-container {
+  color: firebrick;
   display: flex;
-  margin: 5px;
-
-  .info {
-    border-right: 1px solid black;
-    display: flex;
-    flex: 1;
-    padding: 2px 0;
-  }
-
-  .buttons {
-    align-items: center;
-    display: flex;
-    justify-content: center;
-    margin: 0 5px;
-
-    button {
-      border: none;
-      cursor: pointer;
+  justify-content: flex-end;
+  margin: 5px 0;
+}
 
-      &:active,
-      &:focus {
-        outline: none;
-      }
-    }
-  }
+.hidden {
+  opacity: 0;
 }
diff --git a/packages/components-faraday/src/redux/files.js b/packages/components-faraday/src/redux/files.js
index 9c319f1b348f6bc21d6b294f4a361c5b1f3b6271..e2679c4df83195999a3d98cc7b773f25d91c092c 100644
--- a/packages/components-faraday/src/redux/files.js
+++ b/packages/components-faraday/src/redux/files.js
@@ -56,22 +56,28 @@ const removeFailure = error => ({
   error,
 })
 
-const removeSuccess = () => ({
+const removeSuccess = file => ({
   type: REMOVE_SUCCESS,
+  file,
 })
 
 // selectors
 export const getRequestStatus = state => state.files.isFetching
+export const getFileError = state => state.files.error
 
 // thunked actions
 export const uploadFile = (file, type, fragmentId) => dispatch => {
   dispatch(uploadRequest(type))
-  return request('/aws', createFileData(file, type, fragmentId))
-    .then(r => {
+  return request('/aws', createFileData(file, type, fragmentId)).then(
+    r => {
       dispatch(uploadSuccess())
       return r
-    })
-    .catch(err => dispatch(uploadFailure(err.message)))
+    },
+    error => {
+      dispatch(uploadFailure(error))
+      throw error
+    },
+  )
 }
 
 export const deleteFile = fileId => dispatch => {