diff --git a/packages/components-faraday/src/components/Reviewers/InviteReviewers.js b/packages/components-faraday/src/components/Reviewers/InviteReviewers.js
index 272a4c02ddb7501491e342ed9a3fd6dc1909a205..bd8722dc070371a724e8511b9b1512349267b61a 100644
--- a/packages/components-faraday/src/components/Reviewers/InviteReviewers.js
+++ b/packages/components-faraday/src/components/Reviewers/InviteReviewers.js
@@ -71,6 +71,7 @@ const InviteReviewersModal = compose(
         collectionId={collectionId}
         getReviewers={getReviewers}
         isFetching={fetchingInvite}
+        reviewers={reviewers}
       />
 
       <Row>
diff --git a/packages/components-faraday/src/components/Reviewers/ReviewerForm.js b/packages/components-faraday/src/components/Reviewers/ReviewerForm.js
index 923c669e1b543d86fa691aae0b0f6ba529d9f624..8234bcad106f141eb1a5873889b150822fc742c3 100644
--- a/packages/components-faraday/src/components/Reviewers/ReviewerForm.js
+++ b/packages/components-faraday/src/components/Reviewers/ReviewerForm.js
@@ -1,9 +1,9 @@
 import React from 'react'
-import { get, pick } from 'lodash'
 import { connect } from 'react-redux'
 import styled from 'styled-components'
 import { compose, withHandlers } from 'recompose'
 import { th, Button, Spinner } from '@pubsweet/ui'
+import { get, pick, differenceWith } from 'lodash'
 import { reduxForm, change as changeForm, initialize } from 'redux-form'
 
 import { ReviewersSelect } from './'
@@ -16,10 +16,11 @@ const ReviewerForm = ({
   handleSubmit,
   users,
   isFetching,
+  filteredUsers,
 }) => (
   <Root>
     <Row>
-      <ReviewersSelect onSelect={selectReviewer} values={users} />
+      <ReviewersSelect onSelect={selectReviewer} values={filteredUsers()} />
       <ValidatedTextField isRequired label="Last name*" name="lastName" />
     </Row>
     <Row>
@@ -76,6 +77,12 @@ export default compose(
     clearForm: ({ reset }) => () => {
       reset()
     },
+    filteredUsers: ({ users, reviewers }) => () =>
+      differenceWith(
+        users,
+        reviewers.filter(r => r.status !== 'pending'),
+        (user, reviewer) => user.email === reviewer.email,
+      ),
   }),
 )(ReviewerForm)
 
diff --git a/packages/components-faraday/src/components/Reviewers/ReviewerList.js b/packages/components-faraday/src/components/Reviewers/ReviewerList.js
index 4dcf29933a27a91ebbea68b29c7ce8b69f71518d..1e6e44fcdbaaa46724c3c5c8ad2880e89324a870 100644
--- a/packages/components-faraday/src/components/Reviewers/ReviewerList.js
+++ b/packages/components-faraday/src/components/Reviewers/ReviewerList.js
@@ -3,8 +3,8 @@ import moment from 'moment'
 import { pick } from 'lodash'
 import { connect } from 'react-redux'
 import { th, Icon } from '@pubsweet/ui'
-import { compose, withHandlers } from 'recompose'
 import styled, { withTheme } from 'styled-components'
+import { compose, withHandlers, withProps } from 'recompose'
 
 import { revokeReviewer, inviteReviewer } from '../../redux/reviewers'
 
@@ -24,6 +24,7 @@ const ResendRevoke = withTheme(
 )
 
 const ReviewersList = ({
+  renderAcceptedLabel,
   reviewers,
   showConfirmResend,
   showConfirmRevoke,
@@ -38,7 +39,9 @@ const ReviewersList = ({
               <div>
                 <ReviewerName>{r.name}</ReviewerName>
                 {r.status === 'accepted' && (
-                  <AcceptedReviewer>{`Reviewer ${index + 1}`}</AcceptedReviewer>
+                  <AcceptedReviewer>
+                    {renderAcceptedLabel(index)}
+                  </AcceptedReviewer>
                 )}
               </div>
               <ReviewerEmail>{r.email}</ReviewerEmail>
@@ -47,7 +50,7 @@ const ReviewersList = ({
               <StatusText>{r.status}</StatusText>
               <DateText>{renderTimestamp(r.timestamp)}</DateText>
             </Column>
-            {r.status !== 'accepted' ? (
+            {r.status === 'pending' ? (
               <ResendRevoke
                 showConfirmResend={showConfirmResend(r)}
                 showConfirmRevoke={showConfirmRevoke(r.invitationId)}
@@ -64,6 +67,9 @@ const ReviewersList = ({
 
 export default compose(
   connect(null, { inviteReviewer, revokeReviewer }),
+  withProps(({ reviewers = [] }) => ({
+    firstAccepted: reviewers.findIndex(r => r.status === 'accepted'),
+  })),
   withHandlers({
     renderTimestamp: () => timestamp => {
       const today = moment()
@@ -84,6 +90,8 @@ export default compose(
         },
       })
     },
+    renderAcceptedLabel: ({ firstAccepted }) => index =>
+      `Reviewer ${index - firstAccepted + 1}`,
   }),
   withHandlers({
     showConfirmResend: ({
diff --git a/packages/components-faraday/src/redux/reviewers.js b/packages/components-faraday/src/redux/reviewers.js
index 7f5795c31c0b0e3148692c58b725eb3d6ac6d031..51d559637995a1280ca6955a8467058c6b063ed2 100644
--- a/packages/components-faraday/src/redux/reviewers.js
+++ b/packages/components-faraday/src/redux/reviewers.js
@@ -1,4 +1,4 @@
-import { get } from 'lodash'
+import { get, orderBy } from 'lodash'
 import { selectCurrentUser } from 'xpub-selectors'
 import {
   get as apiGet,
@@ -6,6 +6,7 @@ import {
   remove,
   update,
 } from 'pubsweet-client/src/helpers/api'
+import { orderReviewers } from './utils'
 
 const GET_REVIEWERS_REQUEST = 'GET_REVIEWERS_REQUEST'
 const GET_REVIEWERS_ERROR = 'GET_REVIEWERS_ERROR'
@@ -86,7 +87,7 @@ export const selectInvitation = (state, collectionId) => {
 export const getCollectionReviewers = collectionId => dispatch => {
   dispatch(getReviewersRequest())
   return apiGet(`/collections/${collectionId}/invitations?role=reviewer`).then(
-    r => dispatch(getReviewersSuccess(r)),
+    r => dispatch(getReviewersSuccess(orderBy(r, orderReviewers))),
     err => dispatch(getReviewersError(err)),
   )
 }
diff --git a/packages/components-faraday/src/redux/utils.js b/packages/components-faraday/src/redux/utils.js
new file mode 100644
index 0000000000000000000000000000000000000000..2f7f9cdca4a2f3b65a248f0ad1bb67d4fe300f04
--- /dev/null
+++ b/packages/components-faraday/src/redux/utils.js
@@ -0,0 +1,11 @@
+export const orderReviewers = r => {
+  switch (r.status) {
+    case 'pending':
+      return -1
+    case 'accepted':
+      return 0
+    case 'refused':
+    default:
+      return 1
+  }
+}