When Razorpay says the id provided does not exist, check your modes before anything else: orders belong to one mode only, so a live order_id is unknown to test keys and vice versa. In test mode you can remove the order_id from the checkout options entirely. Never mix a test key with a live order id, or a live key with a test order id, or Razorpay will not find the order.

Context: Stack Overflow #53511347 (answer score 45): A React + Node.js Razorpay integration fails at payment time with "The id provided does not exist" when the checkout options include an order_id. The accepted answer is that in test mode the order_id must match the mode: an order created under live keys does not exist under test keys, and in test mode the order_id parameter can simply be dropped from the checkout object.