Vasooli

Batch 42 · Synthetic · n=100 · 2026-09-02

Rulebook

Seven reasons not to spend an attempt.

Checked in this order, cheapest and most certain refusals first, so no work is done on a record that was never eligible. Whatever survives all seven is scheduled by rule 8 at the best moment inside its legal window.

Every count and rupee figure below is computed from the same batch file the rest of this site reads. The cost of removing a rule is measured by switching it off and re-running 40 seeds, not estimated.

  1. 01

    Retry budget exhausted

    Physical

    Basis

    Razorpay Subscriptions retry limit. The debit is rejected on presentation. Attempting it cannot work.

    The condition

    The subscription has already used all three of its retries. A fourth attempt does not fail politely — it moves the subscription to halted, which stops automatic charging. It is not unrecoverable: Razorpay returns a halted subscription to active once the customer updates the payment method themselves. But the invoices it accrues meanwhile are never auto-charged, and the budget does not come back.

    rec.attempts_remaining <= 0

    STOP_EXHAUSTED · WINBACK_CAMPAIGN

    In this batch

    Records stopped
    13
    Value withheld
    ₹21,587
    Attempts preserved
    0

    Cost of removing it

    No extra attempts — the money-side breaker catches these instead, refusing 5.9 debits per batch at the action boundary. The cost moves one layer down rather than disappearing.

    See the 13 records
  2. 02

    Terminal failure class

    Physical

    Basis

    Mandate lifecycle; issuer behaviour. The debit is rejected on presentation. Attempting it cannot work.

    The condition

    The bank told us why it failed, and the reason is one no retry can fix: the mandate was revoked, expired or paused, or the amount is above a limit registered on it. The money cannot move until something changes.

    is_terminal(failure_class)

    STOP_TERMINAL · RE_MANDATE_LINK / MANDATE_UPGRADE

    In this batch

    Records stopped
    20
    Value withheld
    ₹77,147
    Attempts preserved
    44

    Cost of removing it

    +4.9 attempts per batch, averaged over 40 seeds.

    See the 20 records
  3. 03

    Mandate not active

    Physical

    Basis

    Mandate lifecycle. The debit is rejected on presentation. Attempting it cannot work.

    The condition

    The mandate itself is dead, whatever the error text said. A failure that reads as a low balance against a mandate the customer cancelled last week is still a debit that will be rejected.

    rec.mandate_status is not MandateStatus.ACTIVE

    STOP_TERMINAL · RE_MANDATE_LINK

    In this batch

    Records stopped
    5
    Value withheld
    ₹3,495
    Attempts preserved
    11

    Cost of removing it

    Nothing measurable on this data, and that is reported rather than dropped. See the note below.

    See the 5 records
  4. 04

    Failure unclassified

    Our policy

    Basis

    Vasooli design constraint. Our choice. A merchant could reasonably set this differently.

    The condition

    Neither the code dictionary nor the language model could say what went wrong. We refuse to spend a scarce attempt on a guess, so it goes to a person with the bank's own words attached.

    failure_class is FailureClass.UNKNOWN

    HUMAN_REVIEW · HUMAN_REVIEW

    In this batch

    Records stopped
    3
    Value withheld
    ₹1,497
    Attempts preserved
    5

    Cost of removing it

    +5.4 attempts per batch, averaged over 40 seeds.

    See the 3 records
  5. 05

    Above the mandate's own cap

    Physical

    Basis

    Per-mandate maximum registered at authorisation. The debit is rejected on presentation. Attempting it cannot work.

    The condition

    The customer authorised debits up to a ceiling and this invoice is above it — usually because the plan price rose after the mandate was signed. The issuer rejects it on presentation every time.

    rec.amount_paise > rec.mandate_max_amount_paise

    HUMAN_REVIEW · MANDATE_UPGRADE

    In this batch

    Records stopped
    1
    Value withheld
    ₹299
    Attempts preserved
    3

    Cost of removing it

    +7.3 attempts per batch, averaged over 40 seeds.

    See the 1 record
  6. 06

    Above the RBI AFA-free cap

    Regulation

    Basis

    RBI e-mandate framework, ₹15,000 AFA threshold. Imposed from outside. Breaking it is non-compliance, not a trade-off.

    The condition

    Above ₹15,000 a recurring debit requires additional factor authentication. An unattended presentation is not merely against the rules — it is declined, so the attempt is spent for nothing. The right answer is not to give up but to ask the customer.

    rec.amount_paise > RBI_STANDARD_CAP_PAISE

    HUMAN_REVIEW · AFA_PAYMENT_LINK

    In this batch

    Records stopped
    2
    Value withheld
    ₹73,653
    Attempts preserved
    2

    Cost of removing it

    No extra attempts — the money-side breaker catches these instead, refusing 4.8 debits per batch at the action boundary. The cost moves one layer down rather than disappearing.

    See the 2 records
  7. 07

    No lawful window before expiry

    Regulation

    Basis

    RBI pre-debit notice (24h) vs mandate validity. Imposed from outside. Breaking it is non-compliance, not a trade-off.

    The condition

    A debit must be preceded by a pre-debit notification. If the mandate expires before that notice period can elapse, there is no moment at which this debit would be lawful, so none is scheduled.

    earliest_legal_retry(rec, now) > rec.mandate_valid_until

    STOP_TERMINAL · RE_MANDATE_LINK

    In this batch

    Records stopped
    0
    Value withheld
    ₹0
    Attempts preserved
    0

    Cost of removing it

    Nothing measurable on this data, and that is reported rather than dropped. See the note below.

Which of these are law, and which are ours

Rules 6 and 7 come from the RBI e-mandate framework. They are not tunable: a merchant who relaxes them is non-compliant, and in the case of rule 6 the debit is declined anyway, so relaxing it buys nothing but a wasted attempt.

Rules 1, 2, 3 and 5 are physical. They describe debits the network rejects on presentation. A merchant could attempt them and would simply lose the attempt.

Rule 4 is the only one that is genuinely our policy. A merchant with a higher appetite could guess at unclassified failures instead of routing them to a person. Switching it off costs +5.4 attempts per batch and recovers nothing extra, which is the argument for keeping it — but it is an argument, not a regulation.

Rules 3 and 7 stop nothing measurable in the ablation, for different reasons. Rule 3 is redundant with the pre-flight mandate check at the action boundary, deliberately — the rule is what produces the re-mandate escalation, the boundary check is what survives the world changing after the decision was made. Rule 7 never fires on this generated data at all: no record here has a mandate expiring inside the notice window. It is kept because an audit found the scheduler placing a retry six days past a mandate’s expiry, and a rule guarding a rare and expensive mistake still earns its place. Both facts are reported rather than quietly dropped.