Skip to content

[Feature]: Missing Invoice Payment Signature Verification in Docs/SDK #450

@AxatSachani

Description

@AxatSachani

The current Razorpay Node.js SDK and documentation only cover order-based payment verification. However, many of us are using the Invoice API to create invoices and collect payments (especially for tax/compliance reasons and downloadable PDFs).

After payment, Razorpay returns these fields:

{
  razorpay_payment_id: "pay_XXXX",
  razorpay_invoice_id: "inv_XXXX",
  razorpay_invoice_status: "paid",
  razorpay_invoice_receipt: "receipt_XXXX",
  razorpay_signature: "generated_signature"
}

Suggested Solution

The correct payload format (after testing and verifying manually) is:

razorpay_invoice_id | razorpay_invoice_receipt | razorpay_invoice_status | razorpay_payment_id

You can verify the signature like this in Node.js:

const crypto = require("crypto");

const secret = "YOUR_KEY_SECRET";
const data = "inv_XXXX|receipt_XXXX|paid|pay_XXXX";

const expectedSignature = crypto
  .createHmac("sha256", secret)
  .update(data)
  .digest("hex");

// Compare expectedSignature with razorpay_signature

Alternatives

No response

Additional Information

Please consider:

  • Adding a utility method in the SDK for validatePaymentVerification().

  • Updating the docs (paymentVerification.md) to include invoice verification as well.

PR

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions