Skip to main content
POST
Verify a Razorpay checkout payment and settle the invoice
Public endpoint called by the hosted checkout’s Razorpay success handler with the fields Checkout.js returns.
Verification is two-step and never client-trusted:
  1. Signature — the HMAC-SHA256 of order_id|payment_id is checked against the key secret, proving a genuine Razorpay payment.
  2. Binding — the order is fetched from Razorpay and its notes.invoice_id must match this invoice, so a genuine payment for a different invoice can’t be replayed here.
Settlement then goes through the same idempotent ledger path as the payment.captured webhook (the authoritative backstop) — replays report paid without double-posting.

Request Body

Example

Errors

See Errors for the error envelope and the full code taxonomy.

Authorizations

Authorization
string
header
required

Path Parameters

id
string<uuid>
required

Body

application/json
razorpay_order_id
string
required
razorpay_payment_id
string
required
razorpay_signature
string
required

Response

Invoice settled (idempotent — already-paid invoices report paid).

data
object