Challanwala logo
Challanwala
Challanwala API Docs
Testing

Reserved Scenarios

Fixed RC numbers for deterministic staging responses and webhook flows.

Why these RC numbers exist

The staging replica uses reserved RC numbers to make error handling and lifecycle testing predictable. Use them when you want to validate a specific branch in your integration without waiting for random data.

StatusMeaningNotes
STG409DELETDDeleted vehicle conflictChallan search returns 409 with a deleted-vehicle style message.
STG409FOREGNOrganization mismatch conflictChallan search returns 409 and indicates the vehicle belongs elsewhere.
STG502UPSTRMUpstream fetch failureChallan search returns 502 and emits challan_search.failed.
STG429LIMITDaily limit simulationSearch and payment-link generation return a daily-limit style 429.
STG409PAYBLKNon-payable challansSearch generates non-payable challans so payment-link creation returns 409.
STGPAYEXPIREImmediate expired payment resultPayment-link create returns ACTIVE, then status becomes EXPIRED and payment_link.expired is emitted.
STGPAYFAILEDImmediate failed payment resultPayment-link create returns ACTIVE, then status becomes FAILED and payment_link.failed is emitted.

Common testing pattern

  1. Generate a staging key.
  2. Search a normal RC number once with rcType and cityId.
  3. Create a payment link and verify the default PAID flow.
  4. Repeat with one reserved RC number to verify your error handling or alternate webhook branch.

First-search reminder

Even in staging, a brand new RC search still requires:

  • rcNumber
  • rcType
  • cityId

After the first successful search, the staging replica reuses the stored dummy vehicle and challans for that API key.

Webhook expectations

  • STG502UPSTRM triggers challan_search.failed
  • Standard successful searches trigger challan_search.completed
  • Standard payment links emit payment_link.created followed by payment_link.paid
  • STGPAYEXPIRE emits payment_link.created then payment_link.expired
  • STGPAYFAILED emits payment_link.created then payment_link.failed

On this page