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 |
Request example
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"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 <span class="hljs-subst">${API_KEY}</span> },
body: form
}
);
const documentsResult = await response.json();
if (!response.ok || documentsResult.status !== "success") {
throw new Error(documentsResult.message || "Document submission failed");
}
Success response#
{
"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.