# Submit PDF & video

Uploads a bank-statement PDF and verification video for a deposit whose `manual_verification_status` is `need_pdf_video`. Both files must be submitted in the same request.

## Multipart fields

| Field | Type | Required | Constraints | Description |
| --- | --- | --- | --- | --- |
| `transaction_id` | String | Yes | Merchant or NiriPay internal ID | The merchant transaction ID is recommended |
| `pdf` | PDF file | Yes | `application/pdf`, maximum 250 MB | Bank statement or payment proof |
| `video` | Video file | Yes | `video/*`, maximum 250 MB | Verification video |
| `pdf_password` | String | No | Required when PDF is encrypted | Password used to open the PDF |

## cURL example

```bash
curl -X POST https://api.niripay.com/api/v1/merchant/deposits/submit-pdf-video \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -F "transaction_id=TXN123456789" \
  -F "pdf=@bank-statement.pdf;type=application/pdf" \
  -F "video=@verification.mp4;type=video/mp4" \
  -F "pdf_password=OPTIONAL_PASSWORD"
```

## JavaScript example

```js
const form = new FormData();
form.append("transaction_id", "TXN123456789");
form.append("pdf", pdfFile);
form.append("video", videoFile);

if (pdfPassword) {
  form.append("pdf_password", pdfPassword);
}

const response = await fetch(
  "https://api.niripay.com/api/v1/merchant/deposits/submit-pdf-video",
  {
    method: "POST",
    headers: { Authorization: `Bearer ${API_KEY}` },
    body: form
  }
);

const documentsResult = await response.json();

if (!response.ok || documentsResult.status !== "success") {
  throw new Error(documentsResult.message || "Document submission failed");
}
```

## Success response

```json
{
  "status": "success",
  "message": "Documents submitted successfully",
  "data": {
    "pdf_url": "uploads/documents/TXN123456789_statement.pdf",
    "video_url": "uploads/documents/TXN123456789_verification.mp4"
  }
}
```

After acceptance, the deposit's `manual_verification_status` changes to `pdf_video_submitted`.
