NiriPayDocs
Dashboard
DocumentationAPI referenceGuidesMerchant API v1 / v2

Payment lifecycle

Understand request acceptance, payment confirmation, and evidence review.

Two statuses, two different questions#

The top-level status tells you whether the API request succeeded. The transaction’s data.status tells you whether the payment is pending, successful, or failed. Manual verification is a separate workflow.

ValueMeaning
status: "success"The API request was accepted or processed successfully
data.status: "pending"Payment has not reached a final successful state
data.status: "success"The transaction is recorded as successful
manual_verification_statusThe current evidence review state; not proof of funds

Hosted checkout flow#

  1. 1
    Create an orderYour server → NiriPay
  2. 2
    Open checkoutYour customer pays
  3. 3
    Confirm paymentVerify & reconcile

After the customer pays, checkout may request a screenshot, a UTR, or additional documents. Browser OCR helps read details; it cannot confirm receipt of money.

Evidence matching#

The evidence workflow compares UTRs and recipient UPI details with eligible orders. Missing, conflicting, masked, or ambiguous details can require manual review. A screenshot can match an order without the payment being confirmed.

Use the v2 evidence endpoint for its documented evidence contract. The v1 screenshot endpoint remains a distinct compatibility flow with different fields and responses.

Complete the order once#

Verify callbacks, query status where needed, and enforce idempotency in your own ledger and fulfillment logic. A duplicate webhook or a repeated status check must not credit a customer twice.

Handle missing notifications#

Use the recovery guide to reconcile records when your server is unavailable or delivery is delayed.

NiriPay developer documentationSource reviewed · 27 Oct 2026