> ## Documentation Index
> Fetch the complete documentation index at: https://docs.wepayout.co/llms.txt
> Use this file to discover all available pages before exploring further.

# List Documents

> Read the documents linked to an onboarding solicitation, including each document's upload/review state and its immutable decision history. Read-only — does not change the solicitation status.

<Info>
  Part of the [Onboarding Documents flow](/account/onboarding-documents-flow). This endpoint reflects the current state and history of each document — uploads, resends and compliance decisions. It returns **only** the documents linked to the given solicitation and never alters its status.
</Info>

## Path Parameters

<ParamField path="uuid" type="string" required>
  UUID of the solicitation (the `id` returned by [Create Company](/api-reference/account/create)).

  * Format: UUID
  * Example: `339074a8-1834-49c5-af94-4a044248d88d`
</ParamField>

## Response

<ResponseField name="id" type="string">
  UUID of the solicitation.
</ResponseField>

<ResponseField name="status" type="string">
  Current status of the solicitation (e.g. `pending_documents`, `documents_under_review`).
</ResponseField>

<ResponseField name="documents" type="array">
  Documents linked to the solicitation.

  <Expandable title="document object">
    <ResponseField name="name" type="string">
      Human-readable name of the document.
    </ResponseField>

    <ResponseField name="tag" type="string">
      Machine-readable identifier of the document type — the value used to upload it.
    </ResponseField>

    <ResponseField name="description" type="string">
      Description of what the document is.
    </ResponseField>

    <ResponseField name="required" type="boolean">
      Whether the document is mandatory for the onboarding to proceed.
    </ResponseField>

    <ResponseField name="upload_status" type="string">
      Upload state, owned by the client. One of `pending`, `sent`.
    </ResponseField>

    <ResponseField name="review_status" type="string">
      Compliance review state. One of `pending`, `approved`, `rejected`.
    </ResponseField>

    <ResponseField name="created_at" type="string | null">
      When the document was attached to the solicitation. ISO 8601.
    </ResponseField>

    <ResponseField name="updated_at" type="string | null">
      Last time the document state changed. ISO 8601.
    </ResponseField>

    <ResponseField name="sent_at" type="string | null">
      When the document was last sent. `null` if never uploaded.
    </ResponseField>

    <ResponseField name="reviewed_at" type="string | null">
      When the last review decision was taken. Always reflects the **latest** decision. `null` if not reviewed yet.
    </ResponseField>

    <ResponseField name="review_history" type="array">
      Immutable list of review decisions, ordered by date **descending** (newest first). Empty until the first decision.

      <Expandable title="event object">
        <ResponseField name="action" type="string">
          The decision. One of `approved`, `rejected`.
        </ResponseField>

        <ResponseField name="timestamp" type="string">
          When the decision was taken. ISO 8601.
        </ResponseField>

        <ResponseField name="reason" type="string">
          Reason for the decision. Present only on `rejected` events.
        </ResponseField>
      </Expandable>
    </ResponseField>
  </Expandable>
</ResponseField>

<ResponseExample>
  ```json 200 OK theme={null}
  {
    "id": "1234-5678-90ab-cdef-1234567890ab",
    "status": "documents_under_review",
    "documents": [
      {
        "name": "Articles of Incorporation",
        "tag": "articles_of_incorporation",
        "description": "Company's current articles of incorporation",
        "required": true,
        "upload_status": "sent",
        "review_status": "approved",
        "created_at": "2024-01-10T10:00:00.000000Z",
        "updated_at": "2024-01-18T10:00:00.000000Z",
        "sent_at": "2024-01-17T10:00:00.000000Z",
        "reviewed_at": "2024-01-18T10:00:00.000000Z",
        "review_history": [
          {
            "action": "approved",
            "timestamp": "2024-01-18T10:00:00.000000Z"
          },
          {
            "action": "rejected",
            "timestamp": "2024-01-16T10:00:00.000000Z",
            "reason": "Illegible document"
          }
        ]
      },
      {
        "name": "Proof of Address",
        "tag": "proof_of_address",
        "description": "Updated proof of address",
        "required": true,
        "upload_status": "sent",
        "review_status": "rejected",
        "created_at": "2024-01-10T10:00:00.000000Z",
        "updated_at": "2024-01-16T10:00:00.000000Z",
        "sent_at": "2024-01-15T11:00:00.000000Z",
        "reviewed_at": "2024-01-16T10:00:00.000000Z",
        "review_history": [
          {
            "action": "rejected",
            "timestamp": "2024-01-16T10:00:00.000000Z",
            "reason": "Address mismatch"
          }
        ]
      },
      {
        "name": "Balance Sheet",
        "tag": "balance_sheet",
        "description": "Financial balance sheet",
        "required": false,
        "upload_status": "pending",
        "review_status": "pending",
        "created_at": "2024-01-10T10:00:00.000000Z",
        "updated_at": "2024-01-10T10:00:00.000000Z",
        "sent_at": null,
        "reviewed_at": null,
        "review_history": []
      }
    ]
  }
  ```

  ```json 403 Access denied theme={null}
  {
    "message": "Access denied to this solicitation"
  }
  ```

  ```json 404 Not found theme={null}
  {
    "message": "Solicitation not found"
  }
  ```
</ResponseExample>

## Errors

| Status | When                                                                          |
| ------ | ----------------------------------------------------------------------------- |
| `404`  | Solicitation does not exist.                                                  |
| `403`  | Solicitation exists but is not accessible with the authenticated credentials. |

## Download a document file

To retrieve the **latest uploaded file** of a specific document, call:

```
GET /v2/register/companies/{uuid}/documents/{tag}/file
```

<ParamField path="tag" type="string" required>
  The `tag` of the document whose file you want to download (e.g. `articles_of_incorporation`).
</ParamField>

The response streams the file as a binary download (with its original file name). If the solicitation has no file for that tag yet, it returns `404`.

| Status | When                                                            |
| ------ | --------------------------------------------------------------- |
| `200`  | File returned as a download.                                    |
| `404`  | Solicitation not found, or no file uploaded for that tag.       |
| `403`  | Solicitation not accessible with the authenticated credentials. |

```bash cURL theme={null}
curl -X GET "https://api.sandbox.wepayout.com.br/v2/register/companies/339074a8-1834-49c5-af94-4a044248d88d/documents/articles_of_incorporation/file" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -o articles_of_incorporation.pdf
```

## Related Resources

<CardGroup cols={2}>
  <Card title="Onboarding Documents Integration" icon="file-arrow-up" href="/account/onboarding-documents-flow">
    Understand the full flow
  </Card>

  <Card title="Upload Document" icon="file-arrow-up" href="/api-reference/account/documents/upload-document">
    Send the required files by tag
  </Card>
</CardGroup>
