Skip to content

Events Webhook

Berikut adalah daftar lengkap semua event (kejadian) yang bisa ter-trigger dan payload JSON yang akan Anda terima via Webhook.

Daftar Event Tersedia

EventKapan Triggered
payment.paidPembayaran sukses dan uang berhasil diterima dari pelanggan.
payment.failedTransaksi gagal di sisi provider.
payment.expiredTagihan tidak dibayar hingga melewati batas waktu (expiry).
payment.cancelledTransaksi dibatalkan secara manual melalui API /cancel.
payment.challengedTransaksi dalam status dispute/di-review oleh provider (Fraud Detection).
payment.refund_initiatedProses refund dimulai.
payment.refund_completedRefund penuh selesai dikirim kembali ke pelanggan.
payment.partially_refundedSebagian nominal (tidak full) berhasil direfund.

Catatan: Event payment.created TIDAK diforward via webhook.


Struktur Envelope Universal

Setiap event memiliki struktur utama (envelope) yang sama. Yang membedakannya adalah isi di dalam field data.

json
{
  "event_id": "11111111-2222-3333-4444-555555555555",
  "event_type": "payment.paid",
  "version": 1,
  "occurred_at": "2026-07-21T11:05:32Z",
  "tenant_id": "b6a3b2b8-f09d-4767-8fa0-68153c30a91f",
  "data": { ... } // Payload aslinya ada di sini
}

Contoh Event data

Field data di bawah ini merupakan standar Unified Callback Payload milik Gerbang Pay, terlepas dari provider (Midtrans/Winpay) apa yang merespons.

1. payment.paid

Paling sering digunakan. Ini sinyal bahwa Anda sudah bisa mengirimkan barang/jasa ke pelanggan.

json
{
  "event_id": "...",
  "event_type": "payment.paid",
  ...
  "data": {
    "provider_order_id": "WP-998877",  // ID di sistem internal provider
    "status": "paid",                  // Status canonical dari Gerbang Pay
    "amount_paid": 10000000,           // Jumlah dana yang masuk
    "paid_at": "2026-07-21T11:05:32Z", // Waktu pembayaran
    "raw_payload": { ... }             // Payload asli/mentah dari callback provider (bisa bervariasi)
  }
}

2. payment.expired

Dikirim ketika tagihan melewati batas waktu.

json
{
  "event_id": "...",
  "event_type": "payment.expired",
  ...
  "data": {
    "provider_order_id": "WP-998877",
    "status": "expired",
    "amount_paid": 0,
    "paid_at": null,
    "raw_payload": { ... }
  }
}

3. payment.failed

Dikirim ketika transaksi gagal diproses oleh bank/provider.

json
{
  "event_id": "...",
  "event_type": "payment.failed",
  ...
  "data": {
    "provider_order_id": "WP-998877",
    "status": "failed",
    "amount_paid": 0,
    "paid_at": null,
    "raw_payload": { ... }
  }
}

4. payment.cancelled

Dikirim ketika sistem (atau Anda sendiri) membatalkan transaksi yang masih berstatus pending.

json
{
  "event_id": "...",
  "event_type": "payment.cancelled",
  ...
  "data": {
    "provider_order_id": "WP-998877",
    "status": "cancelled",
    "amount_paid": 0,
    "paid_at": null,
    "raw_payload": { ... }
  }
}

Gerbang Pay API Documentation