Razorpay AI Buildathon · Revenue Recovery

When is it worth retrying
a failed payment — and
when is refusing better?

Recovery Loop evaluates retry timing against a documented day-one, day-two, day-three baseline. The UPI retry allowance applies to each mandate execution sequence, not its entire lifetime. Razorpay also offers intelligent retries, which this experiment does not benchmark.

+₹10,68,274net revenue · 10 of 10 held-out seeds
scroll

The problem

Retry timing, limited attempts, and issuer health.

Recovery Loop investigates whether failure reasons and issuer health can improve a fixed-calendar retry baseline. Public documentation does not establish every signal Razorpay uses internally.

01

A documented baseline

Razorpay's Subscriptions retry model lists T+1, T+2 and T+3 for UPI and cards; the subscription enters halted if all fail. This is our evaluation baseline, not a description of every Razorpay product. Razorpay also advertises intelligent UPI retries, which we have not benchmarked.

02

A per-execution limit

The NPCI guideline limits UPI AutoPay to one original attempt plus three retries per mandate execution sequence. It is not a lifetime limit across every recurring debit. Our evaluation models one failed debit per mandate with its own remaining allowance; saved retries are not pooled across customers. Provider-specific execution windows also apply.

03

A routing limitation

Razorpay's Priority-based Routing documentation describes temporary gateway downtimes lasting twenty minutes when success rates drop, with traffic routed to another gateway. This is a downtime duration, not a response-time guarantee. Its Recurring Payments warning says Optimizer rules apply to registration, not subsequent debits.

The finding

One parameter decides whether refusing pays.

How long the agent may defer before it is forced to act. Drag it. Every number below is measured on 10 held-out seeds the cap was never chosen on.

Maximum deferral14days
3d7d14d21d28d30d35d

At 14 days, deferral first spans a salary cycle. The agent can wait for the credit that actually funds the payment — this is the frozen, validated cap.

UPI AutoPaywins 10/10
+₹10,68,274

Grey figures compare against Razorpay's fixed T+1 / T+2 / T+3 ladder.

Attempts spent
4,491.4vs 5,406.3
Payments recovered
1,230.4vs 838.5
Net per attempt
₹636vs ₹331
Attempts stranded
57.8

Counts are means across 10 seeds, so they carry a decimal.

Cardsinconclusive 6/10
+₹20,767

Grey figures compare against Razorpay's fixed T+1 / T+2 / T+3 ladder.

Attempts spent
2,674.1vs 3,527.4
Payments recovered
1,071.4vs 1,065.2
Net per attempt
₹906vs ₹681
Attempts stranded
1,783.8

Counts are means across 10 seeds, so they carry a decimal.

Reported as inconclusive — the seed range crosses zero.

How it was measured

Six ways this result could have been wrong.

Each was found, documented, and corrected. The numbers before and after are in the repository.

  1. 1
    Circular ground truth

    Success was defined as a random draw falling below the model's own prediction — the agent graded its own homework. Rebuilt so outcomes come from hidden world state the model never sees. The advantage collapsed from 2.5× to nothing.

  2. 2
    Silent schema break

    The simulator emitted an old field shape after the diagnosis layer changed. Every policy silently recovered ₹0. A generator assertion now fails loudly instead.

  3. 3
    Discarded deferrals

    Deferred retries were scheduled with a valid time and then thrown away by a one-line filter. Recovery was being deleted, not measured.

  4. 4
    Pooled vs per-mandate

    The budget was modelled as one shared pool. NPCI's cap is per mandate and non-transferable — a category error that inverted the result.

  5. 5
    Zero-attempt artifact

    Real NPCI baselines were fed to a gate designed for outage spikes, so it read every bank as permanently down and made 0 attempts. A policy that never acts has not been measured.

  6. 6
    Refuse / wait conflation

    Economic refusals were treated as terminal, so 98% of mandates were abandoned at t=0 and never revisited. Separating hard stops from deferrals is what exposed the deferral cap itself.

Honest limits

What this does not prove.

Open it and press the outage button.

The console runs the same policy on a live decision stream. Take a bank down and watch pending retries turn into deferrals.

Recovery Loop · Razorpay AI Buildathon, Track 03 ·Test mode only · every figure from committed evidence: results · limitations · repo