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

# Submit Business Documents

> Upload supporting documents for a business application, and respond to documentation requests raised during KYB review.

## Overview

Some business applications need a supporting document. Upload it to Fluz first, then pass the returned URL in the matching field on [registerBusiness](/business-registration).

There are two document types, and only one of them is mandatory:

| `documentType`        | When you need it                                                                                     |
| --------------------- | ---------------------------------------------------------------------------------------------------- |
| `AUTHORIZED_SIGNER`   | **Required** when the applicant owns less than 25% of the business **and** is not the control person |
| `SOLE_PROPRIETORSHIP` | **Optional** supporting documentation for a sole proprietorship. Registration does not require it    |

<Note>
  The sole-proprietorship document used to be mandatory for `SOLE_PROPRIETORSHIP` businesses. It no longer is — send it only if you have it.
</Note>

### Authorized signer documents

An authorized signer is someone submitting on the business's behalf without being a beneficial owner or the control person. Upload the document that grants them that authority — a corporate resolution, power of attorney, or equivalent — and pass its URL as `authorizedSignerDocumentUrl`.

## Required scopes

| Property        | Value                                                           |
| --------------- | --------------------------------------------------------------- |
| Endpoint        | REST — `POST /api/v1/file-upload/business-application-document` |
| Authentication  | OAuth Bearer Token                                              |
| Content-Type    | `multipart/form-data`                                           |
| Required Scopes | `REGISTER_BUSINESS`                                             |

<Info>
  Unlike the KYB GraphQL operations, this endpoint enforces no scope and no account type — any valid application credential is accepted. Use the applicant's consumer token for consistency.
</Info>

## Parameters

Sent as `multipart/form-data` fields:

| Field          | Type     | Required | Description                                                        |
| -------------- | -------- | -------- | ------------------------------------------------------------------ |
| `file`         | `File`   | Yes      | `application/pdf`, `image/jpeg`, or `image/png`. Maximum size 5 MB |
| `documentType` | `String` | Yes      | `AUTHORIZED_SIGNER` or `SOLE_PROPRIETORSHIP`                       |

Upload one file per call. If you are sending both document types, call the endpoint twice and keep both URLs.

## cURL Example

```bash theme={null}
curl -X POST https://transactional-graph.staging.fluzapp.com/api/v1/file-upload/business-application-document \
  -H "Authorization: Bearer <ACCESS_TOKEN>" \
  -F "file=@/path/to/document.pdf" \
  -F "documentType=AUTHORIZED_SIGNER"
```

## Response details

### Success — `200 OK`

| Field | Type     | Description                                                        |
| ----- | -------- | ------------------------------------------------------------------ |
| `url` | `String` | Public URL of the stored document. Pass this to `registerBusiness` |

```json theme={null}
{
  "url": "https://storage.googleapis.com/.../business-applications/9f8e7d6c-..."
}
```

Pass the returned `url` to `registerBusiness` as:

* `authorizedSignerDocumentUrl` — for authorized-signer applicants
* `soleProprietorshipDocumentUrl` — for sole proprietorships

Pass it through unchanged. `registerBusiness` requires an absolute `http`/`https` URL of at most 255 characters and rejects anything else with `ARG-0001`.

### Error — `400 Bad Request`

```json theme={null}
{
  "error": {
    "message": "Invalid arguments received - invalid document type.",
    "code": "ARG-0001"
  }
}
```

## Error Codes

| Code       | Name             | Description                                                                                                       | How to resolve                                                            |
| ---------- | ---------------- | ----------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------- |
| `ARG-0002` | MissingArguments | No `file` was included in the request                                                                             | Send the file as a `multipart/form-data` field named `file`               |
| `ARG-0001` | InvalidArguments | Missing or invalid `documentType`, or the file's MIME type is not `application/pdf`, `image/jpeg`, or `image/png` | Check the `documentType` value and convert the file to a supported format |
| `G-0001`   | InternalError    | Upload to storage failed                                                                                          | Retry once. If it persists, contact support with the timestamp            |

A missing or malformed `Authorization` header returns `401`; an expired Bearer token returns `498`. Files over 5 MB are rejected by the upload layer before the handler runs.

## Documentation requested during review

Any business structure may be asked for additional documentation while its KYB case is under review — commonly formation documents, proof of address, or an ownership chart when an entity holds equity.

These requests are not surfaced through the API. The case remains `PENDING` and your account manager will reach out. Do not resubmit the application in response: a second submission is blocked by `BS-0007` and creates a duplicate case.

<Info>
  Missing beneficial owners is the most common reason a review stalls for extra documentation. Getting the [ownership roster](/business-registration#beneficial-ownership-requirements) complete on the first submission is the best way to avoid this step entirely.
</Info>

## Notes

* This is a single, consolidated endpoint for both document types — pass `documentType` in the form body rather than using a type-specific route.
* The upload is stored immediately and the URL does not expire. It is not tied to any application until you submit `registerBusiness`.
* Nothing verifies that `documentType` matches the URL field you later pass to `registerBusiness`. Keep the two URLs straight on your side.
* Upload immediately before registering, so there is no ambiguity about which document belongs to which application.

## Related pages

<CardGroup cols={2}>
  <Card title="KYB overview" href="/kyb-overview">
    Prerequisites and the end-to-end registration flow.
  </Card>

  <Card title="Register a business" href="/business-registration">
    Where the returned document URL is submitted.
  </Card>
</CardGroup>
