Uploads an image of the payment receipt and records it with the UTR as a single evidence submission.
Multipart fields#
| Field | Type | Required | Constraints | Description |
|---|---|---|---|---|
transaction_id | String | Yes | Non-empty | Merchant transaction ID used to create the deposit |
utr | String | Yes | Exactly 12 characters | UTR shown in the screenshot |
upi_id | String | No | Must match the deposit payment slot | Omit it for automatic slot selection |
screenshot | Image file | Yes | image/*, maximum 10 MB | Payment receipt screenshot |
Request example
Server-side
curl -X POST https://api.niripay.com/api/v1/merchant/deposits/submit-screenshot \
-H "Authorization: Bearer YOUR_API_KEY" \
-F "transaction_id=TXN123456789" \
-F "utr=123456789012" \
-F "screenshot=@payment-receipt.png"const form = new FormData();
form.append("transaction_id", "TXN123456789");
form.append("utr", "123456789012");
form.append("screenshot", screenshotFile);
const response = await fetch(
"https://api.niripay.com/api/v1/merchant/deposits/submit-screenshot",
{
method: "POST",
headers: { Authorization: Bearer <span class="hljs-subst">${API_KEY}</span> },
body: form
}
);
const screenshotResult = await response.json();
if (!response.ok || screenshotResult.status !== "success") {
throw new Error(screenshotResult.message || "Screenshot submission failed");
}
Success response#
JSON
{
"status": "success",
"message": "Screenshot submitted successfully",
"data": {
"transaction_id": "TXN123456789",
"internal_transaction_id": "abc123internal456",
"submission_type": "screenshot",
"manual_verification_status": "need_pdf_video"
}
}An accepted screenshot changes manual_verification_status to need_pdf_video. Submit the PDF and video through the next endpoint.