IOSOR Panduan

Undelivered vs rejected vs expired: kamus status untuk produk dan billing

Berhenti bertengkar soal screenshot: selaraskan produk, dukungan, dan billing prabayar pada undelivered, rejected, dan expired — plus tindakan yang benar-benar diizinkan setiap status.

Saat keterkiriman turun, produk menyalahkan pipa, dukungan menempel screenshot, dan keuangan bertanya mengapa dompet prabayar bergerak. Sebagian besar panas adalah kegagalan kosakata.

IOSOR ingin tim B2B menjalankan messaging sebagai white-label prabayar: isi sekali, baca event status tahan lama, jaga bahasa error yang aman merek. Kamus ini adalah kontrak operasional antara UX produk, ops, dan ledger.

Mengapa kata status menimbulkan lebih banyak insiden daripada outage

Kelas Contoh Produk harus…
Intermediate queued, submitted, sent Tampilkan progres; jangan rayakan sukses handset
Terminal success delivered Buka UX berikutnya; hentikan auto-resend
Terminal fail undelivered, rejected, expired (jika terminal) Pilih tindakan berlisensi; jangan pernah retry tak terbatas

Jika UI meruntuhkan segalanya menjadi X merah, pukul 02:00 tidak ada yang bertindak benar.

Kamus status: definisi yang disepakati produk dan billing

Undelivered biasanya berarti job masuk jalur messaging live tetapi sinyal hilir mengatakan handset tidak mendapat hasil sukses. Pemicu tipikal: handset mati, kotak masuk penuh, kemacetan koridor sementara, pelanggan tak terjangkau.

Tindakan berlisensi:

  1. Auto-retry terbatas hanya jika kebijakan dan bukti koridor mendukung
  2. “Coba lagi nanti” terlihat pengguna tanpa implikasi penipuan
  3. Dompet menurut aturan debit/refund yang dipublikasikan — jangan menciptakan refund diam di utas obrolan

Jangan anggap setiap undelivered sebagai “platform down”. Iris per koridor sebelum memanggil dunia.

Undelivered vs rejected: kelas gagal berbeda, perbaikan berbeda

Rejected adalah gagal kebijakan atau penerimaan: filter konten, identitas pengirim, gerbang kepatuhan, tujuan rusak, dana tidak cukup, atau catalog-not-live untuk kapabilitas itu. Job tidak pernah mendapat peluang adil untuk pengiriman handset.

Tindakan berlisensi:

  • Perbaiki gerbang (template, registrasi, saldo, kejujuran katalog)
  • Tampilkan reason code yang usable dan aman merek bagi operator
  • Jangan pernah retry payload yang sama mengharapkan alam semesta lain

Badai rejected pertama-tama masalah kepatuhan dan katalog — bukan “lebih banyak throughput”.

Expired: TTL, antrean, dan jendela timing OTP

Expired berarti jendela validitas tertutup sebelum sukses terminal. Umum pada OTP (TTL), job antrean melewati SLA, atau jendela validitas jaringan. Produk harus memisahkan user expired (pengguna macet) dari network expired (pipa tidak mengantar tepat waktu).

Tindakan berlisensi:

  • Tawarkan kirim ulang terkendali dengan cooldown
  • Batalkan kode sebelumnya di alur Verify
  • Atribusi spend jelas saat percobaan baru mendebit lagi

OTP kedaluwarsa yang auto-kirim ulang tanpa cooldown adalah penguat penipuan dan spend.

Bendera merah

  • Hanya “failed” yang ada
  • Screenshot sebagai satu-satunya sistem status
  • Badai auto-retry pada rejected
  • Gerakan dompet tanpa jejak status
  • Teks merek asing di alasan gagal sisi klien

Mulai dengan IOSOR

Petakan callback status Anda di konsol IOSOR agar integrasi penagihan Anda memisahkan penolakan dini dari peristiwa yang tidak terkirim di hilir serta kedaluwarsa antrean. Periksa webhook aktif Anda untuk memastikan kode status DLR terminal meneruskan kelas galat eksplisit ke buku besar internal Anda alih-alih status kegagalan generik.

Intisari IOSOR

Panduan ini menunjukkan bahwa ambiguitas status adalah masalah desain produk dan akuntansi, bukan sekadar kegagalan jaringan sederhana.

Apakah panduan ini membantu?

Panduan terkait