Niffler is an AI revenue recovery agent, built to find and act on lost revenue opportunities.
When a customer tries to pay and the payment fails, that money is not always gone. Sometimes a second chance is all it takes. NIFFLER is an AI agent that looks at each failed payment, works out why it failed, and decides what to do about it.
The AI never moves money on its own. Whatever it decides is checked against a fixed set of rules first. If the rules say no, nothing happens.
One failed order becomes one recovery case. Both words mean the same payment. It is an order before NIFFLER picks it up, and a case after.
Niffler is a personal project and runs entirely on Razorpay Test Mode. All payments and transactions are simulated, so no real money moves anywhere here.
Some actions give an answer straight away. If NIFFLER captures a payment, it asks Razorpay and knows at once whether it worked.
A payment link is different. The customer might pay it in five minutes or in three days, long after the agent has finished. So for this last step, NIFFLER does not ask Razorpay. Razorpay calls NIFFLER instead. That message is called a webhook.
A message like that cannot be trusted on sight, so three things are checked first. Is it really from Razorpay, proven by its signature? Has this payment already been counted? Does the case allow this change? Only if all three pass does the case move from link sent to recovered.
The duplicate check earns its place. Razorpay sends the same message again if it does not hear back, which I found out by accident while setting this up.