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

# Supplier-held Documents

> Send bank statements, accounts, or photo ID against an enrolled application-level reference, then redirect into Apply.

An enrolled **application-level** agreement can send files the customer already gave you. Tera stores them against the same `external_reference` as the submission. Create still returns `arrival_screen_url` immediately. Redirect after the files you intend to send have been finalized.

This path is **enrolled application-level only**. `basic`, Promotion, and an unenrolled create cannot send files.

Bank statements are the live gate. When a finalized bank statement is already attached, Apply opens on the remaining questions and omits the documents page. Accounts and photo ID are optional at every amount. There is no £100,000 accounts or photo ID rule.

## 1. Create the submission

`POST /v1/supplier-submissions` still returns **202** `received` and `arrival_screen_url`. See [Application-level submissions](/guides/application-submission).

Do not wait for accept before requesting upload URLs. Key every document call with the same `external_reference`.

## 2. Presign

`POST /v1/supplier-submissions/documents/upload-url`

```json theme={null}
{
  "external_reference": "harbourview-enq-2001",
  "category": "bank_statements",
  "filename": "harbourview-statements.pdf",
  "content_type": "application/pdf",
  "byte_size": 245760
}
```

`category` is one of `bank_statements`, `accounts`, or `id`. A file without a category is rejected.

A **200** returns `document_id` and `upload_url`. PUT the bytes to that URL. Do not send the file body to Tera.

Unenrolled credentials receive **403**:

```json theme={null}
{
  "error": {
    "code": "forbidden",
    "message": "Document-first enrolment is required for this operation"
  }
}
```

## 3. Finalize

`POST /v1/supplier-submissions/documents/finalize`

```json theme={null}
{
  "external_reference": "harbourview-enq-2001",
  "document_id": "11111111-1111-4111-8111-111111111111"
}
```

A file counts only after finalize. Scan status on success is `pending_scan`. A pending scan still satisfies the bank-statement gate. A blocked file does not.

Once a finalized bank statement exists for that reference, further presigns are rejected. A finalize that had already started still completes.

## 4. Redirect

Send the Applicant to `arrival_screen_url` from create after the files you intend to send are finalized. Tera attaches those files during the Arrival decision, before Apply opens.

Poll GET is for your records. `handoff.customer_journey_url` is not required for the hop. See [Status polling](/guides/status-polling).

## Limits

The same size, type, and file-count limits as the client portal apply. Unattached files are deleted after seven days. A refused submission deletes unattached files.
