Skip to content
Robnu
Live for Ajio

Claims that file themselves with the evidence already attached.

Robnu owns the data, the slip, the invoice, the manifest, the AWB, the scan event. Filing a claim is a button. The state machine is auditable. The won path closes the loop into reconciliation automatically. Free during early access, no card.

Free during early access · Forever free under 25 orders/day
app.robnu.com/claims/CLM-7891Claim lifecyclereturn_claims state machine, auditable + idempotentPending60d sweepFiledauto-evidenceAcknowledgedAjio readsWon→ adjustmentEvidence packetPacking slip · pre-attachedCustomer invoiceVendor invoiceManifest PDF + AWBScan event auditResolution₹4,127recovered to MarketplacePayoutadjustment · type=chargeback
TL;DR
  • Returns that aren't received within 60 days auto-promote to claim_pending via the daily sweeper.
  • Filing is one click. The evidence packet is built from the document pipeline + the receive-scan trail.
  • Won claims write a recovery Adjustment to the same MarketplacePayout, closing the loop.

Claims sub-pages.

The state machine

Five states. Append-only audit trail.

return_claims walks five states: pending, filed, acknowledged, resolved-won, resolved-lost. Every transition is a row in return_claim_events with the actor, the reason, and the timestamp. Cancellation and reopening are first-class transitions, the audit log captures them just like the happy path.

  • · The claim sweeper runs at 0 2 * * * (BullMQ).
  • · All seller-realm DB operations stay inside withSellerScope.
  • · return_claim_evidences references StorageObject rows in S3, never inline blobs.
  • · The kill switch WORKER_ENABLE_CLAIM_SWEEPER guards startup.
app.robnu.com/claims/CLM-7891Claim lifecyclereturn_claims state machine, auditable + idempotentPending60d sweepFiledauto-evidenceAcknowledgedAjio readsWon→ adjustmentEvidence packetPacking slip · pre-attachedCustomer invoiceVendor invoiceManifest PDF + AWBScan event auditResolution₹4,127recovered to MarketplacePayoutadjustment · type=chargeback
FAQ

Honest answers about the claim flow.

The claim sweeper is a daily BullMQ job (queue 'robnu-claim-sweeper') that promotes any OrderReturn with claim_due_at past now and internal_status not in ('received','cancelled') to claim_pending. From there, you (or RobnuAI agents, when enabled) file the claim.

return_claims has a 1:1 link to OrderReturn. return_claim_events is the append-only state-transition log. return_claim_evidences holds the S3-backed evidence attachments. Every transition row carries actor_user_id (or actor_super_admin_id + impersonation_session_id) and the reason.

Packing slip + customer invoice + vendor invoice + manifest PDF + AWB trail + scan event. All of these come straight from the document pipeline and the receive-scan audit, no re-keying, no upload-from-email gymnastics.

claim-service writes a recovery Adjustment of type=chargeback against the original MarketplacePayout. The reconciliation engine re-runs and the payout flips back to RECONCILED. The recovery shows up on the next CSV export to your accountant.

The Adjustment stays in place with type=deduction and is_disputed=true. The lost reason is logged on the return_claim_event row. Reconciliation surfaces lost claims in the periodic ledger so you can spot patterns (e.g., a deduction reason where you're losing 80% of disputes is probably worth accept-loss as a default).

File the next claim with the evidence already attached.

Sign up free. Connect Ajio. Hit File on the next overdue return.

build fba03d73452a892f2461c7ae52979487cbd65f55 · 2026-09-09T17:59:30Z