NiriPayDocs
Dashboard
DocumentationAPI referenceGuidesMerchant API v1 / v2

Payment evidence v2

Submit screenshots for asynchronous OCR and payment-order matching.

POST/api/v2/merchant/deposits/evidence
Bearer authentication•Server-side only

Accepts merchant-owned payment evidence. This endpoint is separate from the v1 screenshot submission API.

Multipart fields#

FieldTypeRequiredDescription
transaction_idStringYesYour merchant transaction ID
utrStringYesExactly 12 digits
screenshotsImage fileYesOne or two images; maximum 10 MB per file
upi_idStringNoCustomer-supplied recipient UPI ID
frontend_ocrJSON stringNoArray of { "utr": string, "upi_ids": string[] } hints; backend OCR remains authoritative for evidence matching

Request example

Server-side
curl -X POST https://api.niripay.com/api/v2/merchant/deposits/evidence \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -F "transaction_id=ORDER-2026-001" \
  -F "utr=123456789012" \
  -F "screenshots=@payment-receipt.png"

Accepted response#

HTTP 201 indicates acceptance. These example IDs are illustrative. Read the actual returned code and ocr_state; processing can still be in progress.

JSON
{
  "status": "success",
  "message": "Payment evidence accepted",
  "data": {
    "evidence_id": "EXAMPLE_EVIDENCE_ID",
    "code": "ANALYZING",
    "message": {
      "en": "Screenshot accepted. We are checking the payment details.",
      "hi": "स्क्रीनशॉट मिल गया है। हम भुगतान विवरण जाँच रहे हैं।"
    },
    "requested_transaction_id": "EXAMPLE_INTERNAL_TRANSACTION_ID",
    "matched_transaction_id": null,
    "ocr_state": "pending"
  }
}

Response transaction identifiers describe resolved internal order references. Retain your original merchant transaction ID for the merchant status API.

Evidence outcomes#

CodeMeaning
ANALYZINGScreenshot processing is pending
MATCHED_CURRENT_ORDEREvidence matches the current order
MATCHED_OTHER_ORDEREvidence matches another eligible recent order
MASKED_RECIPIENTRecipient information is hidden; review is needed
MISSING_UTR / MISSING_RECIPIENTRequired details could not be read
OCR_CONFLICT / AMBIGUOUS_ORDERDetails conflict or more than one order may match
UPI_NOT_OURSRecipient does not match eligible payment instructions
DUPLICATE_PENDING / DUPLICATE_SUCCESSThe transaction reference is already associated with a payment
MANUAL_REVIEWEvidence needs operator review
VERIFIEDScreenshot UTR and recipient match; not a final payment success status
NATIVE_SCREENSHOT_UNSUPPORTEDThis flow does not apply to a native payment order

Confirm the payment separately#

Never credit an order on evidence acceptance or OCR verification alone. Query deposit status with the original merchant transaction ID and reconcile the final payment status.

Validation failures return HTTP 400; classified conflicts may return HTTP 409 with details under data.code and data.message.

NiriPay developer documentationSource reviewed · 27 Oct 2026